Qwen2: Qwen is the large language model and large multimodal model series of the Qwen Team, Alibaba Group. Now the large language models have been upgraded to Qwen2.
一
背景
云端大模型,端側(cè)小模型,端云協(xié)同進(jìn)提升用戶體驗已成為今年大模型(LLM)產(chǎn)品化落地的一個熱點(diǎn)話題。今年以來,各大手機(jī)廠家紛紛推出了端側(cè)小模型版本,例如Google的Gemini-nano(1.8B)、VIVO的藍(lán)星大模型(1B)、以及國內(nèi)“小鋼炮”MiniCPM(1B)等等均已在各自/客戶手機(jī)上部署落地,進(jìn)一步增加了手機(jī)智能屬性和便捷性。那么在設(shè)備數(shù)量更多的IoT領(lǐng)域是否也能部署經(jīng)濟(jì)實用的LLM呢?例如實現(xiàn)本地人機(jī)問答、AI Agent、Function Call等等功能?
本文將分享如何將最新的端側(cè)大語言模型部署到超高性價比SoC上,向業(yè)界對端側(cè)大模型部署的開發(fā)者提供一種新的思路。
二
Qwen2介紹
Qwen是阿里巴巴集團(tuán)Qwen團(tuán)隊研發(fā)的大語言模型和大型多模態(tài)模型系列。目前,大語言模型已升級至Qwen2版本。無論是語言模型還是多模態(tài)模型,均在大規(guī)模多語言和多模態(tài)數(shù)據(jù)上進(jìn)行預(yù)訓(xùn)練,并通過高質(zhì)量數(shù)據(jù)進(jìn)行后期微調(diào)以貼近人類偏好。Qwen具備自然語言理解、文本生成、視覺理解、音頻理解、工具使用、角色扮演、作為AI Agent進(jìn)行互動等多種能力。
●官方文檔:
https://qwen.readthedocs.io/zh-cn/latest/index.html
●Github項目:
https://github.com/QwenLM/Qwen2
最新版本Qwen2有以下特點(diǎn):
●5種模型規(guī)模,包括0.5B、1.5B、7B、57B-A14B和72B;
●針對每種尺寸提供基礎(chǔ)模型和指令微調(diào)模型,并確保指令微調(diào)模型按照人類偏好進(jìn)行校準(zhǔn);
●基礎(chǔ)模型和指令微調(diào)模型的多語言支持;
●所有模型均穩(wěn)定支持32K長度上下文;
●支持工具調(diào)用、RAG(檢索增強(qiáng)文本生成)、角色扮演、AI Agent等。
最近Hugging Face聯(lián)合創(chuàng)始人兼首席執(zhí)行Clem Delangue于6月26日在X平臺發(fā)布推文,表示阿里云開源的通義千問(Qwen)指令微調(diào)模型Qwen2-72B在開源模型排行榜上榮登榜首。
來自HuggingFace獨(dú)立、客觀、第三方的認(rèn)可,從側(cè)面再次證明了Qwen2的技術(shù)先進(jìn)性。同時也分享下在端側(cè)芯片AX650N上部署效果。
三
芯片介紹
3.1 AX650N
愛芯元智第三代高能效比智能視覺芯片AX650N。集成了八核Cortex-A55 CPU,高能效比NPU,支持8K@30fps的ISP,以及H.264、H.265編解碼的 VPU。接口方面,AX650N支持64bit LPDDR4x,多路MIPI輸入,千兆Ethernet、USB、以及HDMI 2.0b輸出,并支持32路1080p@30fps解碼內(nèi)置高算力和超強(qiáng)編解碼能力,滿足行業(yè)對高性能邊緣智能計算的需求。通過內(nèi)置多種深度學(xué)習(xí)算法,實現(xiàn)視覺結(jié)構(gòu)化、行為分析、狀態(tài)檢測等應(yīng)用,高效率支持基于Transformer結(jié)構(gòu)的視覺大模型和語言類大模型。提供豐富的開發(fā)文檔,方便用戶進(jìn)行二次開發(fā)。
3.2AX630C
愛芯元智第四代智能視覺芯片AX630C,該芯片集成新一代智眸4.0AI-ISP,最高支持4K@30fps實時真黑光,同時集成新一代通元4.0高性能、高能效比 NPU引擎,使得產(chǎn)品在低功耗、高畫質(zhì)、智能處理和分析等方面行業(yè)領(lǐng)先。提供穩(wěn)定易用的SDK軟件開發(fā)包,方便用戶低成本評估、二次開發(fā)和快速量產(chǎn)。幫助用戶在智能家居應(yīng)用和其他AIoT項目中發(fā)揮更大的價值。
結(jié)合AX630C的產(chǎn)品規(guī)格,我們選擇最合適的Qwen2 0.5B-Instruct作為本次示例模型。
四
LLM編譯
4.1Pulsar2
Pulsar2是新一代AI工具鏈,包含模型轉(zhuǎn)換、離線量化、模型編譯、異構(gòu)調(diào)度四合一超強(qiáng)功能,進(jìn)一步強(qiáng)化了網(wǎng)絡(luò)模型高效部署的需求。在針對第三代、第四代NPU架構(gòu)進(jìn)行了深度定制優(yōu)化的同時,也擴(kuò)展了算子&模型支持的能力及范圍,對Transformer結(jié)構(gòu)的網(wǎng)絡(luò)也有較好的支持。
最新釋放的Pulsar2 3.0-temp版本新增llm build模塊。在該版本中已經(jīng)可編譯出能在AX650N上運(yùn)行的大模型版axmodel(AX630C的llm build Release版加班開發(fā)中……當(dāng)然我們在網(wǎng)盤中提供了預(yù)編譯體驗版本,感興趣的朋友可以先試試效果)
https://pulsar2-docs.readthedocs.io/zh-cn/latest/appendix/build_llm.html
4.2 下載ax-llm-build項目
默認(rèn)用戶已經(jīng)按照Pulsar2 v3.0-temp版本文檔中《開發(fā)環(huán)境準(zhǔn)備》章節(jié)完成docker鏡像安裝并已進(jìn)入pulsar2的docker環(huán)境。
git clone https://github.com/AXERA-TECH/ax-llm-build.git
4.3 下載Qwen2-0.5B-Instruct
cd ax-llm-build pip install -U huggingface_hub huggingface-cli download --resume-download Qwen/Qwen2-0.5B-Instruct --local-dir Qwen/Qwen2-0.5B-Instruct
4.4 編譯執(zhí)行
pulsar2 llm_build --input_path Qwen/Qwen2-0.5B-Instruct/ --output_path Qwen/Qwen2-0.5B-w8a16/ --kv_cache_len 1023 --model_config config/qwen2-0.5B.json --hidden_state_type bf16 --weight_type s8
●log參考信息
root@gpux2:/data/ax-llm-build# pulsar2 llm_build --input_path Qwen/Qwen2-0.5B-Instruct/ --output_path Qwen/Qwen2-0.5B-w8a16/ --kv_cache_len 1023 --model_config config/qwen2-0.5B.json --hidden_state_type bf16 --weight_type s8 Config( model_name='Qwen/Qwen2-0.5B-Instruct', model_type='qwen', num_hidden_layers=24, num_attention_heads=14, num_key_value_heads=2, hidden_size=896, intermediate_size=4864, vocab_size=151936, rope_theta_base=1000000.0, max_position_embedings=32768, rope_partial_factor=1.0, norm_eps=1e-06, norm_type='rms_norm', hidden_act='silu' ) 2024-07-01 1108.009 | SUCCESS | yamain.command.llm_build85 - prepare llm model done! building llm decode layers ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24/24 059 building llm post layer ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1/1 024 2024-07-01 1131.941 | SUCCESS | yamain.command.llm_build128 - build llm model done! 2024-07-01 1156.925 | SUCCESS | yamain.command.llm_build277 - check llm model done!
●embed提取和優(yōu)化
python tools/extract_embed.py --input_path Qwen/Qwen2-0.5B-Instruct/ --output_path Qwen/Qwen2-0.5B-w8a16/ python tools/embed-process.py --input Qwen/Qwen2-0.5B-w8a16/model.embed_tokens.weight.npy --output Qwen/Qwen2-0.5B-w8a16/model.embed_tokens.weight.float32.bin chmod +x ./tools/fp32_to_bf16 ./tools/fp32_to_bf16 Qwen/Qwen2-0.5B-w8a16/model.embed_tokens.weight.float32.bin Qwen/Qwen2-0.5B-w8a16/model.embed_tokens.weight.bfloat16.bin
4.5輸出文件說明
root@xxx:/data/ax-llm-build# tree Qwen/Qwen2-0.5B-w8a16 Qwen/Qwen2-0.5B-w8a16 ├── model.embed_tokens.weight.bfloat16.bin ├── model.embed_tokens.weight.float32.bin ├── model.embed_tokens.weight.npy ├── qwen_l0.axmodel ├── qwen_l10.axmodel ├── qwen_l11.axmodel ├── qwen_l12.axmodel ├── qwen_l13.axmodel ...... ├── qwen_l7.axmodel ├── qwen_l8.axmodel ├── qwen_l9.axmodel └── qwen_post.axmodel
其中,
model.embed_tokens.weight.bfloat16.bin、qwen_l0.axmodel ~ qwen_l23.axmodel、qwen_post.axmodel,
是上板運(yùn)行需要的。
五
開發(fā)板運(yùn)行
5.1 ax-llm項目
ax-llm項目用于探索業(yè)界常用LLM(Large Language Model)在AXERA已有芯片平臺上落地的可行性和相關(guān)能力邊界,方便社區(qū)開發(fā)者進(jìn)行快速評估和二次開發(fā)自己的LLM應(yīng)用。
https://github.com/AXERA-TECH/ax-llm
同時,我們在網(wǎng)盤中已經(jīng)提供好了分別基于AX650N和AX630C平臺預(yù)編譯好的部分LLM示例。
https://pan.baidu.com/s/1_LG-sPKnLS_LTWF3Cmcr7A?pwd=ph0e
5.2 執(zhí)行過程(基于AX650N開發(fā)板)
root@ax650:/mnt/qtang/llama_axera_cpp# ./run_qwen2_0.5B.sh [I][ Init][ 71]: LLM init start 3% | ██ | 1 / 27 [0.28s<7.48s, 3.61 count/s] tokenizer init ok [I][ ? ? ? ? ? ? ? ? ? ? ? ? ? ?Init][ ?26]: LLaMaEmbedSelector use mmap 100% | ████████████████████████████████ | ?27 / ?27 [7.40s<7.40s, 3.65 count/s] init post axmodel okremain_cmm(11583 MB) [I][ ? ? ? ? ? ? ? ? ? ? ? ? ? ?Init][ 180]: max_token_len : 1023 [I][ ? ? ? ? ? ? ? ? ? ? ? ? ? ?Init][ 185]: kv_cache_size : 128, kv_cache_num: 1023 [I][ ? ? ? ? ? ? ? ? ? ? ? ? ? ?Init][ 199]: LLM init ok Type "q" to exit, Ctrl+c to stop current running >> who are you? I am a large language model created by Alibaba Cloud. I am called Qwen. [N][ Run][ 388]: hit eos,avg 24.51 token/s
5.3 視頻示例(基于AX630C開發(fā)板)
5.4 性能統(tǒng)計
AX650N、AX630C目前均采用W8A16量化方案(性能優(yōu)化會持續(xù)進(jìn)行)
●AX650N:
模型名稱 | 參數(shù)量 | 速度(token/s) |
TinyLlama-1.1 | 1.1B | 16.5 |
Qwen2.0 | 0.5B | 29.0 |
Qwen2.0 | 1.5B | 11.2 |
MiniCPM | 2.4B | 6.0 |
Phi3Qwen2.0 | 3.8B | 5.0 |
Llama3 | 8B | 2.5 |
●AX630C:
模型名稱 | 參數(shù)量 | 速度(token/s) |
TinyLlama-1.1 | 1.1B | 5.8 |
Qwen2.0 | 0.5B | 10.7 |
六
結(jié)束語
隨著大語言模型小型化的快速發(fā)展,越來越多有趣的多模態(tài)AI應(yīng)用將逐漸從云端服務(wù)遷移到邊緣側(cè)設(shè)備和端側(cè)設(shè)備。我們會緊跟行業(yè)最新動態(tài),歡迎大家持續(xù)關(guān)注。
7月4日-7日,愛芯元智@2024WAIC,上海世博展覽館2號館C1525(H2-C1525),歡迎大家現(xiàn)場交流。
-
愛芯元智
+關(guān)注
關(guān)注
1文章
78瀏覽量
4830 -
大模型
+關(guān)注
關(guān)注
2文章
2423瀏覽量
2640 -
LLM
+關(guān)注
關(guān)注
0文章
286瀏覽量
327
原文標(biāo)題:愛芯分享 | 基于AX650N/AX630C部署Qwen2
文章出處:【微信號:愛芯元智AXERA,微信公眾號:愛芯元智AXERA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論