在OpenHarmony本地部署大語言模型
本文將第二屆OpenHarmony技術(shù)大會(huì)上展示的《在OpenHarmony本地部署大語言模型》成果開源,開源地址:https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/thirdparty/InferLLM/docs/hap_integrate.md。
實(shí)現(xiàn)思路和步驟
移植輕量級LLM模型推理框架InferLLM到OpenHarmony標(biāo)準(zhǔn)系統(tǒng),編譯出能在OpenHarmony運(yùn)行的二進(jìn)制產(chǎn)物。
InferLLM 是一個(gè)簡單高效的 LLM CPU 推理框架,可以本地部署 LLM 中的量化模型。
使用OpenHarmony NDK來編譯OpenHarmony上的InferLLM可執(zhí)行文件。
具體使用OpenHarmony lycium 交叉編譯框架,然后編寫一些腳本。然后把其存放在tpc_c_cplusplusSIG倉庫。
本地部署大語言模型步驟
編譯獲取InferLLM三方庫編譯產(chǎn)物
下載OpenHarmony sdk,下載地址:http://ci.openharmony.cn/workbench/cicd/dailybuild/dailyList2.
下載本倉庫。
git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1
# 設(shè)置環(huán)境變量
export OHOS_SDK=解壓目錄/ohos-sdk/linux # 請?zhí)鎿Q為你自己的解壓目錄
cd lycium
./build.sh InferLLM
獲取InferLLM三方庫頭文件及生成的庫在tpc_c_cplusplus/thirdparty/InferLLM/目錄下會(huì)生成InferLLM-405d866e4c11b884a8072b4b30659c63555be41d目錄,該目錄下存在已編譯完成的32位和64位三方庫。(相關(guān)編譯結(jié)果不會(huì)被打包進(jìn)入lycium目錄下的usr目錄)。
InferLLM-405d866e4c11b884a8072b4b30659c63555be41d/arm64-v8a-build
InferLLM-405d866e4c11b884a8072b4b30659c63555be41d/armeabi-v7a-build
將編譯產(chǎn)物和模型文件推送至開發(fā)板運(yùn)行
下載模型文件:https://huggingface.co/kewin4933/InferLLM-Model/tree/main。
將編譯InferLLM生成的llama可執(zhí)行文件、OpenHarmony sdk中的libc++_shared.so、下載好的模型文件chinese-alpaca-7b-q4.bin 打包成文件夾 llama_file。
# 將llama_file文件夾發(fā)送到開發(fā)板data目錄
hdc file send llama_file /data
# hdc shell 進(jìn)入開發(fā)板執(zhí)行
cd data/llama_file
# 在2GB的dayu200上加swap交換空間
# 新建一個(gè)空的ram_ohos文件
touch ram_ohos
# 創(chuàng)建一個(gè)用于交換空間的文件(8GB大小的交換文件)
fallocate -l 8G /data/ram_ohos
# 設(shè)置文件權(quán)限,以確保所有用戶可以讀寫該文件:
chmod 777 /data/ram_ohos
# 將文件設(shè)置為交換空間:
mkswap /data/ram_ohos
# 啟用交換空間:
swapon /data/ram_ohos
# 設(shè)置庫搜索路徑
export LD_LIBRARY_PATH=/data/llama_file:$LD_LIBRARY_PATH
# 提升rk3568cpu頻率
# 查看 CPU 頻率
cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq
# 查看 CPU 可用頻率(不同平臺顯示的可用頻率會(huì)有所不同)
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies
# 將 CPU 調(diào)頻模式切換為用戶空間模式,這意味著用戶程序可以手動(dòng)控制 CPU 的工作頻率,而不是由系統(tǒng)自動(dòng)管理。這樣可以提供更大的靈活性和定制性,但需要注意合理調(diào)整頻率以保持系統(tǒng)穩(wěn)定性和性能。
echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
# 設(shè)置rk3568 CPU 頻率為1.9GHz
echo 1992000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
# 執(zhí)行大語言模型
chmod 777 llama
./llama -m chinese-alpaca-7b-q4.bin -t 4
移植InferLLM三方庫在OpenHarmmony設(shè)備rk3568上部署大語言模型實(shí)現(xiàn)人機(jī)對話。最后運(yùn)行效果有些慢,跳出人機(jī)對話框也有些慢,請耐心等待。