作者:
近期智譜發(fā)布了其最新的GLM-Edge系列SLM模型,GLM-Edge 系列是智譜在面向端側(cè)真實(shí)落地使用的場景下的一次嘗試,由兩種尺寸的大語言對(duì)話模型和多模態(tài)理解模型組成( GLM-Edge-1.5B-Chat,GLM-Edge-4B-Chat,GLM-Edge-V-2B,GLM-Edge-V-5B)。其中,1.5B / 2B模型主要面向手機(jī)、車機(jī)等平臺(tái), 4B / 5B 模型主要面向PC等平臺(tái)。
英特爾AI PC可以幫助用戶利用人工智能技術(shù)提高工作效率、創(chuàng)意、游戲、娛樂和安全等性能。它搭載 CPU、GPU 和 NPU,可在本地更高效地處理 AI 任務(wù)。其中我們可以依靠CPU來運(yùn)行較小的工作負(fù)載并實(shí)現(xiàn)低延遲,而GPU則非常適合需要并行吞吐量的大型工作負(fù)載,例如大預(yù)言模型推理任務(wù),NPU能夠以低功耗處理持續(xù)運(yùn)行 AI 工作負(fù)載,提高效率。開發(fā)者可以利用英特爾OpenVINO工具套件充分激活這些AI處理單元,更高效地部署深度學(xué)習(xí)模型,其中GLM-Edge就是一個(gè)非常適合運(yùn)行在AIPC上的端側(cè)模型系列。本文將分享如何利用OpenVINO 在本地部署最新glm-edge-chat與glm-edge-v模型。
環(huán)境安裝與配置
以下為示例環(huán)境的快速部署方式,詳細(xì)過程可以參考示例倉庫中的README文檔。
1.下載示例倉庫
git clone
https://github.com/openvino-dev-samples/glm-edge.openvino.git
2.安裝環(huán)境依賴
cd glm-edge.openvino python3 -m venv openvino_env source openvino_env/bin/activate pip install -r requirements.txt
glm-edge-chat轉(zhuǎn)化與部署
1. 模型轉(zhuǎn)換與量化
由于glm-edge-chat的預(yù)訓(xùn)練模型是基于PyTorch框架的,因此我們可以利用Optimum-intel快速將safetensor格式的預(yù)訓(xùn)練模型轉(zhuǎn)化為OpenVINO的IR格式,并通過NNCF工具對(duì)模型進(jìn)行權(quán)重量化壓縮,以此提升推理性能,降低資源占用。
python3 glm-edge-chat/convert.py --model_id ZhipuAI/glm-edge-1.5b-chat --precision int4 --output {your_path}/glm-edge-1.5b-chat-ov --modelscope
其中:
`--model_id` - 用于設(shè)定 Huggngface/ModelScope的 模型id,或者也可以是原始模型的本地路徑。
`--output` - 轉(zhuǎn)換后模型保存的地址。
`--modelscope` - 是否通過魔搭社區(qū)下載模型。
2. Optimum-intel部署
為了方便Transformers庫用戶體驗(yàn)OpenVINO,開發(fā)者可以利用Optimum-intel所提供的類Transformers API進(jìn)行模型任務(wù)的部署。在不改變?cè)敬a邏輯的前提下,只需要將AutoModelForCausalLM對(duì)象切換為OVModelForCausalLM,便可以輕松實(shí)現(xiàn)對(duì)于推理后端的遷移,利用OpenVINO 來加速glm-edge-chat原有的pipeline。
from optimum.intel.openvino import OVModelForCausalLM from transformers import AutoConfig, AutoTokenizer ov_model = OVModelForCausalLM.from_pretrained( llm_model_path, device='GPU', config=AutoConfig.from_pretrained(llm_model_path, trust_remote_code=True), trust_remote_code=True, ) tokenzier = AutoTokenizer.from_pretrained(llm_model_path, trust_remote_code=True) input_tokens = tokenzier(prompt, return_tensors="pt", **tokenizer_kwargs) answer = ov_model.generate(**input_tokens, max_new_tokens=1024) tokenzier.batch_decode(answer, skip_special_tokens=True)[0]
在這個(gè)示例中,開發(fā)者可以通過運(yùn)行chat.py腳本來構(gòu)建一個(gè)簡答的聊天機(jī)器人,并支持流式輸出。使用方法如下:
python3 glm-edge-chat/chat.py --model_path {your_path}/glm-edge-1.5b-chat-ov --max_sequence_length 4096 --device GPU
其中:
`--model_path` - OpenVINO IR 模型所在目錄的路徑。
`--max_sequence_length` - 輸出標(biāo)記的最大大小。
`--device` - 運(yùn)行推理的設(shè)備。例如:"CPU","GPU"。
3. 效果展示
以下視頻將展示該示例在英特爾 酷睿 Ultra 處理器(第二代)上的運(yùn)行效果:
glm-edge-v轉(zhuǎn)化與部署
1.模型轉(zhuǎn)換與量化
目前glm-edge-v的推理任務(wù)還沒有被完全集成進(jìn)Optimum工具中,因此我們需要手動(dòng)搭建模型的轉(zhuǎn)換和量化任務(wù),其中包含語言模型language_model,圖像編碼模型vision_model,和文本編碼模型embedding_model。
為了簡化轉(zhuǎn)化步驟,我們提前對(duì)這些轉(zhuǎn)化任務(wù)行進(jìn)行了封裝,開發(fā)者只需要調(diào)用示例中提供的函數(shù)便可完成這些模型的轉(zhuǎn)換,并對(duì)其中負(fù)載最大的語言模型進(jìn)行量化。
python3 glm-edge-v/convert.py --model_id ZhipuAI/glm-edge-v-2b --output {your_path}/glm-edge-v-5b-ov –modelscope
其中:
`--model_id` - 用于設(shè)定 Huggngface/ModelScope的 模型id,或者也可以是原始模型的本地路徑。
`--output` - 轉(zhuǎn)換后模型保存的地址。
`--modelscope` - 是否通過魔搭社區(qū)下載模型。
2.圖片內(nèi)容理解
此外在該示例中,我們也對(duì)模型的推理任務(wù)進(jìn)行封裝,通過導(dǎo)入OvGLMv對(duì)象變可以可快速部署圖像理解任務(wù)。通過以下示例腳本可以快速對(duì)模型效果進(jìn)行驗(yàn)證。
python3 qa.py --model_path {your_path}/glm-edge-v-2b-ov --query "Please describe this picture" --image_path {your_path}/your_test_image.jpg --max_sequence_length 4096 --device CPU
其中:
`--model_path` - OpenVINO IR 模型所在目錄的路徑。
`--query` - 用戶輸入的問題文本。
`--image` - 待識(shí)別的圖片文件路徑。
`--max_sequence_length` - 輸出標(biāo)記的最大大小。
`--device` - 運(yùn)行推理的設(shè)備。例如:"CPU","GPU"。
3.效果展示
以下為經(jīng)過OpenVINO 量化后的glm-edge-v-2b模型輸出結(jié)果。
文字輸入:
“請(qǐng)描述這張圖片”
模型輸出:
“這是一張照片,顯示了一輛停在一棟紅色磚墻前白色欄桿的建筑物旁邊的白色皮卡車,有四個(gè)黑色的輪胎和一個(gè)帶頂篷的駕駛室。在圖片中間可以看到停著的一輛白色皮卡車。這輛車停在路邊,其尾部有一個(gè)梯形托盤,看起來結(jié)構(gòu)堅(jiān)固,適合裝載或卸載重物。它的車頂是白色的,帶有黑色的輪胎和黑色的框架。車身顏色為白色,帶有黑色的邊框窗戶和把手。駕駛室有透明的玻璃,可以看到內(nèi)部的司機(jī)座椅。車尾部有一個(gè)梯形形狀的拖車。汽車旁邊是灰色的地磚。”
總結(jié)
通過OpenVINO封裝后的API函數(shù),開發(fā)者可以非常便捷地對(duì)預(yù)訓(xùn)練模型進(jìn)行轉(zhuǎn)化壓縮,并實(shí)現(xiàn)本地化的推理任務(wù)部署。同時(shí)基于GLM-Edge 在小語言模型場景下強(qiáng)大的文本與圖像理解能力,我們僅在輕薄本上便可以構(gòu)建起一個(gè)完整的語言模型應(yīng)用,在保護(hù)用戶數(shù)據(jù)隱私的同時(shí),降低硬件門檻。
-
處理器
+關(guān)注
關(guān)注
68文章
19432瀏覽量
231255 -
英特爾
+關(guān)注
關(guān)注
61文章
10014瀏覽量
172382 -
cpu
+關(guān)注
關(guān)注
68文章
10908瀏覽量
213084 -
模型
+關(guān)注
關(guān)注
1文章
3329瀏覽量
49245 -
OpenVINO
+關(guān)注
關(guān)注
0文章
97瀏覽量
230
原文標(biāo)題:開發(fā)者實(shí)戰(zhàn)|最新端側(cè)小鋼炮!利用 OpenVINO? 部署 GLM-Edge 全家桶
文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何使用OpenVINO C++ API部署FastSAM模型
![如何使用<b class='flag-5'>OpenVINO</b> C++ API<b class='flag-5'>部署</b>FastSAM<b class='flag-5'>模型</b>](https://file1.elecfans.com/web2/M00/B0/8D/wKgZomVWyHqAW-1yAAALg86hbM0154.png)
為什么無法通過Heroku部署OpenVINO?工具套件?
使用OpenVINO? 部署PaddleSeg模型庫中的DeepLabV3+模型
![使用<b class='flag-5'>OpenVINO</b>? <b class='flag-5'>部署</b>PaddleSeg<b class='flag-5'>模型</b>庫中的DeepLabV3+<b class='flag-5'>模型</b>](https://file.elecfans.com/web2/M00/1F/E9/pYYBAGGbQOCARwojAABbztLQZGE973.png)
在C++中使用OpenVINO工具包部署YOLOv5模型
自訓(xùn)練Pytorch模型使用OpenVINO?優(yōu)化并部署在AI愛克斯開發(fā)板
![自訓(xùn)練Pytorch<b class='flag-5'>模型</b>使用<b class='flag-5'>OpenVINO</b>?優(yōu)化并<b class='flag-5'>部署</b>在AI愛克斯開發(fā)板](https://file1.elecfans.com/web2/M00/88/B7/wKgZomRwGTiAXwKQAAAbbcpE_UI913.png)
AI愛克斯開發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢測模型
![AI愛克斯開發(fā)板上使用<b class='flag-5'>OpenVINO</b>加速YOLOv8目標(biāo)檢測<b class='flag-5'>模型</b>](https://file1.elecfans.com/web2/M00/88/B7/wKgaomRwIXSAVKmcAAAm8DCq3H4143.png)
如何將Pytorch自訓(xùn)練模型變成OpenVINO IR模型形式
![如何將Pytorch自訓(xùn)練<b class='flag-5'>模型</b>變成<b class='flag-5'>OpenVINO</b> IR<b class='flag-5'>模型</b>形式](https://file1.elecfans.com/web2/M00/89/45/wKgaomR_3sWASVQdAAAiWHF5rcw649.png)
基于OpenVINO Python API部署RT-DETR模型
![基于<b class='flag-5'>OpenVINO</b> Python API<b class='flag-5'>部署</b>RT-DETR<b class='flag-5'>模型</b>](https://file1.elecfans.com/web2/M00/AB/3A/wKgZomUx8TOAWn0nAAAeLGnrxPA058.png)
如何使用OpenVINO Python API部署FastSAM模型
基于OpenVINO C++ API部署RT-DETR模型
![基于<b class='flag-5'>OpenVINO</b> C++ API<b class='flag-5'>部署</b>RT-DETR<b class='flag-5'>模型</b>](https://file1.elecfans.com/web2/M00/AE/1F/wKgZomVElD6AVanCAAAeLGnrxPA930.png)
基于OpenVINO C# API部署RT-DETR模型
![基于<b class='flag-5'>OpenVINO</b> C# API<b class='flag-5'>部署</b>RT-DETR<b class='flag-5'>模型</b>](https://file1.elecfans.com/web2/M00/AD/85/wKgaomVN8U6AJzs_AAAeLGnrxPA246.png)
NNCF壓縮與量化YOLOv8模型與OpenVINO部署測試
![NNCF壓縮與量化YOLOv8<b class='flag-5'>模型</b>與<b class='flag-5'>OpenVINO</b><b class='flag-5'>部署</b>測試](https://file1.elecfans.com/web2/M00/B1/2E/wKgZomVayMiAcyjcAAA9J604guw189.png)
如何在MacOS上編譯OpenVINO C++項(xiàng)目呢?
![如何在MacOS上編譯<b class='flag-5'>OpenVINO</b> C++項(xiàng)目呢?](https://file1.elecfans.com/web2/M00/BD/14/wKgaomWfviqARLjCAAAx_B5at5o265.png)
使用OpenVINO Model Server在哪吒開發(fā)板上部署模型
![使用<b class='flag-5'>OpenVINO</b> Model Server在哪吒開發(fā)板上<b class='flag-5'>部署</b><b class='flag-5'>模型</b>](https://file1.elecfans.com/web1/M00/F4/1E/wKgZoWckc06AE-MqAAA875jNy1A468.png)
在設(shè)備上利用AI Edge Torch生成式API部署自定義大語言模型
![在設(shè)備上<b class='flag-5'>利用</b>AI <b class='flag-5'>Edge</b> Torch生成式API<b class='flag-5'>部署</b>自定義大語言<b class='flag-5'>模型</b>](https://file1.elecfans.com/web2/M00/0C/75/wKgaomc1X5aAKjRYAAAX98PFg94000.png)
評(píng)論