背景介紹
隨著邊緣計(jì)算與實(shí)時(shí)智能需求的快速增長(zhǎng),如何在資源受限的嵌入式設(shè)備上同時(shí)滿足實(shí)時(shí)控制與AI推理能力成為技術(shù)熱點(diǎn)。本文以ROCK 5B開發(fā)板為開發(fā)平臺(tái)(搭載4核Cortex-A76 + 4核Cortex-A55,8GB LPDDR4),通過虛擬化技術(shù)實(shí)現(xiàn)虛擬化Linux+RTOS混合部署,并在Linux環(huán)境中部署輕量化大語言模型DeepSeek-1.5B+語音轉(zhuǎn)文字模型,實(shí)現(xiàn)實(shí)時(shí)語音對(duì)話大模型功能,探索實(shí)時(shí)控制與AI推理的融合方案。
vmRT-Thread
vmRT-Thread是一個(gè)基于虛擬化技術(shù)的嵌入式軟件集成開發(fā)平臺(tái),使得在高性能嵌入式設(shè)備上開發(fā)同時(shí)具備高實(shí)時(shí)性、高安全性和高復(fù)雜度的應(yīng)用更簡(jiǎn)單和高效。整體系統(tǒng)架構(gòu)如下:
1、實(shí)時(shí)/安全虛擬機(jī)(RVM/SVM,Realtime/Safety Virtual Machine) – 運(yùn)行要求高實(shí)時(shí)性、或符合功能安全要求的應(yīng)用,可以使用RT-Thread API或POSIX(PSE51)API,底層操作系統(tǒng)使用標(biāo)準(zhǔn)版ASIL-D認(rèn)證版的RT-Thread或RT-Thread Smart;
2、管理虛擬機(jī)(MVM,Management Virtual Machine) - 運(yùn)行高級(jí)管理服務(wù)(比如:復(fù)雜的監(jiān)控、升級(jí)和日志等功能)和虛擬外設(shè)服務(wù)(比如:網(wǎng)絡(luò)、存儲(chǔ)、圖形和圖像等外設(shè)的虛擬化共享),如果沒有這些功能則不需此虛擬機(jī),可使用Linux、RT-Thread或RT-Thread Smart操作系統(tǒng);普通虛擬機(jī)(NVM,Normal Virtual Machine) – 運(yùn)行多媒體和人工智能等復(fù)雜應(yīng)用,可以使用Android API或POSIX(PSE54) API,底層操作系統(tǒng)可以使用Linux或Android;
3、虛擬機(jī)間通信 – 支持虛擬機(jī)間的高性能共享內(nèi)存,以及易用的套接字通信;vmRT-Thread虛擬機(jī)管理器(Hypervisor/VMM) - 利用硬件虛擬化功能運(yùn)行在虛擬化層,是針對(duì)嵌入式設(shè)備設(shè)計(jì)實(shí)現(xiàn)的輕量級(jí)、高安全性、高性能的Type1虛擬機(jī)管理器。

通過vmRT-Thread我們可以在ROCK 5B上同時(shí)部署RT-Thread系統(tǒng)和Linux系統(tǒng),實(shí)現(xiàn)在Linux上部署大模型,在RT-Thread系統(tǒng)中可以控制小車等硬件設(shè)備。在本文中,我使用vmRT-Thread將ROCK 5B的8個(gè)CPU分為2部分,Linux系統(tǒng)占6核,RT-Thread系統(tǒng)占2核以下是htop查看的Linux系統(tǒng)的CPU信息

部署DeepSeek-R1-Distill-Qwen-1.5B大模型
DeepSeek-R1 是由杭州深度求索公司開發(fā)的大模型,DeepSeek系列模型完全開源且deepseek 通過 DeepSeek-R1蒸餾了 6 個(gè)小模型。rock 5B官方提供了編譯好的 DeepSeek-R1-Distill-Qwen-1.5B 模型和執(zhí)行文件,我們可以直接下載,下載鏈接:模型文件下載:https://docs.radxa.com/rock5/rock5b/app-development/rkllm_deepseek_r1下載文件如下
下載好的模型文件上傳到開發(fā)板上,導(dǎo)入必需的環(huán)境變量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/librkllmrt.so所在文件夾路徑
export RKLLM_LOG_LEVEL=1
測(cè)試模型推理, 128分別是模型輸入的最大token數(shù)量和生成的最大token數(shù)量
./llm_demo DeepSeek-R1-Distill-Qwen-1.5B.rkllm 128 128
部署語音喚醒和語音識(shí)別
語音喚醒使用pyaudio和webrtcvad實(shí)現(xiàn),代碼參考自ASR-LLM-TTS(https://github.com/ABexit/ASR-LLM-TTS/tree/master)。語音識(shí)別為SenseVoiceSmall模型,模型下載鏈接。
語音喚醒
我們主要通過pyaudio實(shí)時(shí)采集音頻數(shù)據(jù),然后將一段時(shí)間內(nèi)采集的音頻數(shù)據(jù)用webrtcvad進(jìn)行VAD檢測(cè),將檢測(cè)到的有語音活動(dòng)的數(shù)據(jù)拼接保存為wav格式的音頻,用于語音識(shí)別。代碼流程圖如下

語音識(shí)別
語音識(shí)別使用的是SenseVoiceSmall模型,比官方提供的語音識(shí)別模型快6倍。他的部署方式與DeepSeek-R1-Distill-Qwen-1.5B一致,下載編譯好的模型文件并上傳到開發(fā)板中即可通過命令行或者代碼部署模型。部署語音識(shí)別模型還需要安裝rknn-toolkit2-lite2和以下依賴
pip install kaldi_native_fbank onnxruntime sentencepiece soundfile pyyaml numpy
運(yùn)行sensevoice_rknn.py測(cè)試識(shí)別效果
python ./sensevoice_rknn.py --audio_file output.wav

實(shí)現(xiàn)實(shí)時(shí)語音與大模型對(duì)話
有了上面的基礎(chǔ),我們已經(jīng)可以實(shí)現(xiàn)實(shí)時(shí)語音與大模型對(duì)話了。只要在語音喚醒和識(shí)別的基礎(chǔ)上,與大模型溝通即可。這里rknn-llm(https://github.com/airockchip/rknn-llm/tree/29a9fb97d14c773b6efa07415dce6ec91c7d8461/examples/rkllm_server_demo)中有example代碼,用Flask實(shí)現(xiàn)大模型服務(wù)。在開發(fā)板上下載rknn-llm代碼。修改flask_server.py中的PROMPT_TEXT_PREFIX和PROMPT_TEXT_POSTFIX為
PROMPT_TEXT_PREFIX = "<|im_start|>system\nYou are a helpful assistant.\n<|im_end|>\n<|im_start|>user\n"
PROMPT_TEXT_POSTFIX = "\n<|im_end|>\n<|im_start|>assistant\n"
然后運(yùn)行以下代碼啟動(dòng)大模型服務(wù)
python flask_server.py --rkllm_model_path ../ds_r1/DeepSeek-R1-Distill-Qwen-1.5B.rkllm --target_platform rk3588
以下是實(shí)時(shí)語音對(duì)話的運(yùn)行效果
總結(jié)
在傳統(tǒng)的嵌入式方案中,往往只能選擇Linux或者RT-Thread一個(gè)系統(tǒng),這種方式使得系統(tǒng)只能用于一般的非實(shí)時(shí)交互環(huán)境。而在當(dāng)前眾多的生產(chǎn)生活環(huán)境中,往往需要滿足交互的情況下,盡可能的提高控制系統(tǒng)的響應(yīng)和實(shí)時(shí)性能。因此,本文從這一出發(fā)點(diǎn),詳細(xì)的介紹了基于vmRT-Thread的虛擬化方案,通過提供虛擬化層,既滿足了人機(jī)交互的可能,同時(shí),又滿足了RT-Thread OS的實(shí)時(shí)性性能,該方案可以廣泛的應(yīng)用在當(dāng)前各種工業(yè)、生產(chǎn)環(huán)境中,為原有嵌入式設(shè)備提供高實(shí)時(shí)性、高穩(wěn)定性的智能化交互解決方案,該方案有潛力運(yùn)用在智能家居、智慧制造等諸多領(lǐng)域。下一期,我們將介紹基于該方案的智能小車解決方案,在該方案中,我們可以更加直觀的理解基于這種基于虛擬化的嵌入式AI方案給設(shè)備智能化開發(fā)帶來的便利。體驗(yàn)了解虛擬化
-
虛擬化
+關(guān)注
關(guān)注
1文章
399瀏覽量
30134 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1372瀏覽量
41570 -
大模型
+關(guān)注
關(guān)注
2文章
3055瀏覽量
3874 -
DeepSeek
+關(guān)注
關(guān)注
1文章
783瀏覽量
1441
發(fā)布評(píng)論請(qǐng)先 登錄
關(guān)于RT-AK開源輕松實(shí)現(xiàn)一鍵部署AI模型至RT-Thread解析

記錄——基于 RT-Thread 實(shí)現(xiàn) USB 虛擬串口

RT-Thread AI kit開源:輕松實(shí)現(xiàn)一鍵部署AI模型至 RT-Thread

2022 RT-Thread全球技術(shù)大會(huì):螢石EZIOT SDK對(duì)RT-Thread的支持

4月10日深圳場(chǎng)RT-Thread線下workshop,探索RT-Thread混合部署新模式!

4月10日深圳場(chǎng)RT-Thread線下workshop,探索RT-Thread混合部署新模式!

【4月10日-深圳-workshop】RT-Thread帶你探索混合部署新模式

4月25日北京站RT-Thread線下workshop,探索RT-Thread混合部署新模式

RT-Thread混合部署Workshop北京站來啦!

5月16日南京站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

6月6日杭州站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

評(píng)論