背景
InternVL2是由上海人工智能實驗室OpenGVLab發布的一款多模態大模型,中文名稱為“書生·萬象”。該模型在多學科問答(MMMU)等任務上表現出色,并且具備處理多種模態數據的能力。
本文將通過走馬觀花的方式,基于InternVL2家族中最小的InternVL2-1B模型來介紹其技術特點。同時也將分享基于愛芯元智的AX650N、AX630C兩款端側AI芯片適配InternVL2-1B的基本操作方法,向業界對端側多模態大模型部署的開發者提供一種新的思路,促進社區對端側多模態大模型的探索。
技術特性
多模態處理能力:與更大規模的版本一樣,InternVL2-1B支持圖像和文本數據的聯合處理,旨在理解和生成跨模態的內容。
輕量化設計:1B參數規模意味著相對較小的模型尺寸,這使得InternVL2-1B更適合部署在資源受限的環境中,如移動設備或邊緣計算場景中。盡管參數較少,通過精心設計,它仍能保持良好的性能。
漸進式對齊訓練策略:采用從小到大、從粗到精的方式進行訓練,這樣可以利用更少的計算資源達到較高的效果,同時也促進了模型的知識遷移能力。
高效的架構設計:為了在有限的參數下實現最佳性能,InternVL2-1B可能采用了特別優化的網絡結構或注意力機制,確保即使在較低參數量的情況下也能有效地捕捉復雜的視覺語言關聯性。
支持多種下游任務:盡管是較小型號,InternVL2-1B應該仍然能夠執行一系列基本的視覺-語言任務,比如圖像描述生成、視覺問答等,為用戶提供了一定程度的功能多樣性。
開放源代碼與模型權重:如果遵循OpenGVLab的一貫做法,那么InternVL2-1B的代碼及預訓練模型應該也是開源提供的,方便研究者和開發者使用。
性能指標
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解碼內置高算力和超強編解碼能力,滿足行業對高性能邊緣智能計算的需求。通過內置多種深度學習算法,實現視覺結構化、行為分析、狀態檢測等應用,高效率支持基于 Transformer結構的視覺大模型和語言類大模型。提供豐富的開發文檔,方便用戶進行二次開發。
AX630C
愛芯元智第四代智能視覺芯片AX630C,該芯片集成新一代智眸4.0AI-ISP,最高支持4K@30fps實時真黑光,同時集成新一代通元4.0高性能、高能效比NPU引擎,使得產品在低功耗、高畫質、智能處理和分析等方面行業領先。提供穩定易用的SDK軟件開發包,方便用戶低成本評估、二次開發和快速量產。幫助用戶在智能家居應用和其他AIoT項目中發揮更大的價值。
AX630C應該是目前能效比&性價比&能跑LLM/VLM的最佳的端側AI芯片了,因此有客戶基于AX630C出品了LLM Module,歡迎關注/試用。
模型轉換
經常在AI芯片上部署AI算法模型的同學都知道,想要把模型部署到芯片上的NPU中運行,都需要使用芯片原廠提供的NPU工具鏈,這里我們使用的是Pulsar2。
Pulsar2是愛芯元智的新一代NPU工具鏈,包含模型轉換、離線量化、模型編譯、異構調度四合一超強功能,進一步強化了網絡模型高效部署的需求。在針對第三代、第四代NPU架構進行了深度定制優化的同時,也擴展了算子&模型支持的能力及范圍,對Transformer結構的網絡也有較好的支持。
從Pulsar2 3.2版本開始,已經增加了大語言模型編譯的功能,隱藏在pulsar2 llm_build的子命令中。
模型獲取
git clone https://github.com/AXERA-TECH/ax-llm-build.git cd ax-llm-build pip install -U huggingface_hub huggingface-cli download --resume-download OpenGVLab/InternVL2-1B/ --local-dir OpenGVLab/InternVL2-1B/
ax-llm-build:用于暫存編譯LLM、VLM時所依賴的各種輔助小工具、腳本文件(持續更新)。
一鍵編譯
qtang@gpux2:~/huggingface$ pulsar2 llm_build --input_path OpenGVLab/InternVL2-1B/ --output_path OpenGVLab/InternVL2-1B-ax650 --kv_cache_len 1023 --hidden_state_type bf16 --prefill_len 128 --chip AX650 Config( model_name='InternVL2-1B', model_type='qwen2', num_hidden_layers=24, num_attention_heads=14, num_key_value_heads=2, hidden_size=896, intermediate_size=4864, vocab_size=151655, rope_theta=1000000.0, max_position_embeddings=32768, rope_partial_factor=1.0, rms_norm_eps=1e-06, norm_type='rms_norm', hidden_act='silu', hidden_act_param=0.03, scale_depth=1.4, scale_emb=1, dim_model_base=256, origin_model_type='internvl_chat' ) 2024-10-31 0030.400 | SUCCESS | yamain.command.llm_build109 - prepare llm model done! building vision model ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1/1 024 building llm decode layers ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24/24 013 building llm post layer ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1/1 027 2024-10-31 0036.175 | SUCCESS | yamain.command.llm_build185 - build llm model done! 2024-10-31 0051.955 | SUCCESS | yamain.command.llm_build364 - check llm model done!
embed提取和優化
chmod +x ./tools/fp32_to_bf16 chmod +x ./tools/embed_process.sh ./tools/embed_process.sh OpenGVLab/InternVL2-1B/ OpenGVLab/InternVL2-1B-ax650
最終InternVL2-1B-ax650目錄下包含以下內容:
qtang@gpux2:~/huggingface$ tree -lh OpenGVLab/InternVL2-1B-ax650/ [1.6K] OpenGVLab/InternVL2-1B-ax650/ ├── [325M] intervl_vision_part_224.axmodel // vit-l model ├── [259M] model.embed_tokens.weight.bfloat16.bin // embed file ├── [ 16M] qwen2_p128_l0_together.axmodel // llm layer ├── [ 16M] qwen2_p128_l10_together.axmodel ├── [ 16M] qwen2_p128_l11_together.axmodel ├── [ 16M] qwen2_p128_l12_together.axmodel ...... ├── [ 16M] qwen2_p128_l5_together.axmodel ├── [ 16M] qwen2_p128_l6_together.axmodel ├── [ 16M] qwen2_p128_l7_together.axmodel ├── [ 16M] qwen2_p128_l8_together.axmodel ├── [ 16M] qwen2_p128_l9_together.axmodel └── [141M] qwen2_post.axmodel
上板示例
相關材料
為了方便大家快速試用,我們在網盤中已經提供好了預編譯模型和基于AX650N、AX630C兩種芯片平臺的預編譯示例:
大尺寸
基于AX650N,展示輸入圖片尺寸為448*448的示例,圖片信息量大,解讀更詳細,甚至展示了其OCR、中英翻譯的能力。
小尺寸
基于AX630C,展示輸入圖片尺寸為224*224的示例:
目前我們暫時未對Vision Part模塊的ViT-L模型進行量化加速,所以圖片編碼的速度稍微有點慢。但是本身AX650N、AX630C計算ViT模型的效率是非常高的,后續我們會持續優化推理耗時。
部署優化探討
輸入圖片越大,Vision Part(Image Encoder)生成的特征向量越多,計算量越大,即使是InternVL2 Family中最小的1B版本,其Vision Part也是采用的基于ViT-Large規模的圖像編碼模型。
圖片生成的特征向量越多,輸入LLM的prompt就越長,input tokens越多,TTFT耗時越大。
我們順便統計了224與448兩種輸入尺寸采用U8、U16量化后的推理耗時,提升還是很明顯。
結束語
雖然我們只嘗試了最小的InternVL2-1B部署,但能在原本定位于低成本家用攝像頭芯片(AX630C)上本地流暢運行VLM已經是一個重大突破,例如無需聯網(包括藍牙)的智能眼鏡、智能的“拍立得”、以及各種有趣的穿戴設備。
隨著大語言模型小型化的快速發展,越來越多有趣的多模態AI應用已經從云端服務遷移到端側設備。我們會緊跟行業最新動態,適配更多的端側大模型,歡迎大家持續關注。
-
人工智能
+關注
關注
1791文章
46859瀏覽量
237580 -
AI芯片
+關注
關注
17文章
1859瀏覽量
34910 -
愛芯元智
+關注
關注
1文章
75瀏覽量
4820 -
大模型
+關注
關注
2文章
2328瀏覽量
2486
原文標題:愛芯分享 | 基于AX650N/AX630C部署多模態大模型InternVL2-1B
文章出處:【微信號:愛芯元智AXERA,微信公眾號:愛芯元智AXERA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論