作者:
近期智譜發布了其最新的GLM-Edge系列SLM模型,GLM-Edge 系列是智譜在面向端側真實落地使用的場景下的一次嘗試,由兩種尺寸的大語言對話模型和多模態理解模型組成( GLM-Edge-1.5B-Chat,GLM-Edge-4B-Chat,GLM-Edge-V-2B,GLM-Edge-V-5B)。其中,1.5B / 2B模型主要面向手機、車機等平臺, 4B / 5B 模型主要面向PC等平臺。
英特爾AI PC可以幫助用戶利用人工智能技術提高工作效率、創意、游戲、娛樂和安全等性能。它搭載 CPU、GPU 和 NPU,可在本地更高效地處理 AI 任務。其中我們可以依靠CPU來運行較小的工作負載并實現低延遲,而GPU則非常適合需要并行吞吐量的大型工作負載,例如大預言模型推理任務,NPU能夠以低功耗處理持續運行 AI 工作負載,提高效率。開發者可以利用英特爾OpenVINO工具套件充分激活這些AI處理單元,更高效地部署深度學習模型,其中GLM-Edge就是一個非常適合運行在AIPC上的端側模型系列。本文將分享如何利用OpenVINO 在本地部署最新glm-edge-chat與glm-edge-v模型。
環境安裝與配置
以下為示例環境的快速部署方式,詳細過程可以參考示例倉庫中的README文檔。
1.下載示例倉庫
git clone
https://github.com/openvino-dev-samples/glm-edge.openvino.git
2.安裝環境依賴
cd glm-edge.openvino python3 -m venv openvino_env source openvino_env/bin/activate pip install -r requirements.txt
glm-edge-chat轉化與部署
1. 模型轉換與量化
由于glm-edge-chat的預訓練模型是基于PyTorch框架的,因此我們可以利用Optimum-intel快速將safetensor格式的預訓練模型轉化為OpenVINO的IR格式,并通過NNCF工具對模型進行權重量化壓縮,以此提升推理性能,降低資源占用。
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` - 用于設定 Huggngface/ModelScope的 模型id,或者也可以是原始模型的本地路徑。
`--output` - 轉換后模型保存的地址。
`--modelscope` - 是否通過魔搭社區下載模型。
2. Optimum-intel部署
為了方便Transformers庫用戶體驗OpenVINO,開發者可以利用Optimum-intel所提供的類Transformers API進行模型任務的部署。在不改變原本代碼邏輯的前提下,只需要將AutoModelForCausalLM對象切換為OVModelForCausalLM,便可以輕松實現對于推理后端的遷移,利用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]
在這個示例中,開發者可以通過運行chat.py腳本來構建一個簡答的聊天機器人,并支持流式輸出。使用方法如下:
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` - 輸出標記的最大大小。
`--device` - 運行推理的設備。例如:"CPU","GPU"。
3. 效果展示
以下視頻將展示該示例在英特爾 酷睿 Ultra 處理器(第二代)上的運行效果:
glm-edge-v轉化與部署
1.模型轉換與量化
目前glm-edge-v的推理任務還沒有被完全集成進Optimum工具中,因此我們需要手動搭建模型的轉換和量化任務,其中包含語言模型language_model,圖像編碼模型vision_model,和文本編碼模型embedding_model。
為了簡化轉化步驟,我們提前對這些轉化任務行進行了封裝,開發者只需要調用示例中提供的函數便可完成這些模型的轉換,并對其中負載最大的語言模型進行量化。
python3 glm-edge-v/convert.py --model_id ZhipuAI/glm-edge-v-2b --output {your_path}/glm-edge-v-5b-ov –modelscope
其中:
`--model_id` - 用于設定 Huggngface/ModelScope的 模型id,或者也可以是原始模型的本地路徑。
`--output` - 轉換后模型保存的地址。
`--modelscope` - 是否通過魔搭社區下載模型。
2.圖片內容理解
此外在該示例中,我們也對模型的推理任務進行封裝,通過導入OvGLMv對象變可以可快速部署圖像理解任務。通過以下示例腳本可以快速對模型效果進行驗證。
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` - 待識別的圖片文件路徑。
`--max_sequence_length` - 輸出標記的最大大小。
`--device` - 運行推理的設備。例如:"CPU","GPU"。
3.效果展示
以下為經過OpenVINO 量化后的glm-edge-v-2b模型輸出結果。
文字輸入:
“請描述這張圖片”
模型輸出:
“這是一張照片,顯示了一輛停在一棟紅色磚墻前白色欄桿的建筑物旁邊的白色皮卡車,有四個黑色的輪胎和一個帶頂篷的駕駛室。在圖片中間可以看到停著的一輛白色皮卡車。這輛車停在路邊,其尾部有一個梯形托盤,看起來結構堅固,適合裝載或卸載重物。它的車頂是白色的,帶有黑色的輪胎和黑色的框架。車身顏色為白色,帶有黑色的邊框窗戶和把手。駕駛室有透明的玻璃,可以看到內部的司機座椅。車尾部有一個梯形形狀的拖車。汽車旁邊是灰色的地磚。”
總結
通過OpenVINO封裝后的API函數,開發者可以非常便捷地對預訓練模型進行轉化壓縮,并實現本地化的推理任務部署。同時基于GLM-Edge 在小語言模型場景下強大的文本與圖像理解能力,我們僅在輕薄本上便可以構建起一個完整的語言模型應用,在保護用戶數據隱私的同時,降低硬件門檻。
-
處理器
+關注
關注
68文章
19812瀏覽量
233610 -
英特爾
+關注
關注
61文章
10169瀏覽量
173968 -
cpu
+關注
關注
68文章
11038瀏覽量
216040 -
模型
+關注
關注
1文章
3488瀏覽量
50014 -
OpenVINO
+關注
關注
0文章
113瀏覽量
417
原文標題:開發者實戰|最新端側小鋼炮!利用 OpenVINO? 部署 GLM-Edge 全家桶
文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
C#集成OpenVINO?:簡化AI模型部署

如何使用OpenVINO C++ API部署FastSAM模型

是否可以使用OpenVINO?部署管理器在部署機器上運行Python應用程序?
如何部署OpenVINO?工具套件應用程序?
使用OpenVINO? 部署PaddleSeg模型庫中的DeepLabV3+模型

在C++中使用OpenVINO工具包部署YOLOv5模型
自訓練Pytorch模型使用OpenVINO?優化并部署在AI愛克斯開發板

基于OpenVINO Python API部署RT-DETR模型

如何使用OpenVINO Python API部署FastSAM模型
基于OpenVINO C++ API部署RT-DETR模型

基于OpenVINO C# API部署RT-DETR模型

NNCF壓縮與量化YOLOv8模型與OpenVINO部署測試

使用OpenVINO Model Server在哪吒開發板上部署模型

在設備上利用AI Edge Torch生成式API部署自定義大語言模型

評論