工具介紹
英特爾OpenVINO 工具套件是一款開源AI推理優化部署的工具套件,可幫助開發人員和企業加速生成式人工智能 (AIGC)、大語言模型、計算機視覺和自然語言處理等 AI 工作負載,簡化深度學習推理的開發和部署,便于實現從邊緣到云的跨英特爾 平臺的異構執行。
ChatGLM3是智譜AI和清華大學KEG實驗室聯合發布的對話預訓練模型。ChatGLM3-6B是ChatGLM3系列中的開源模型,在保留了前兩代模型對話流暢、部署門檻低等眾多優秀特性的基礎上,ChatGLM3-6B引入了以下新特性:
1
更強大的基礎模型:
ChatGLM3-6B的基礎模型ChatGLM3-6B-Base采用了更多樣的訓練數據、更充分的訓練步數和更合理的訓練策略。在語義、數學、推理、代碼、知識等不同角度的數據集上測評顯示,ChatGLM3-6B-Base具有在10B以下的預訓練模型中領先的性能。
2
更完整的功能支持:
ChatGLM3-6B采用了全新設計的Prompt格式,除正常的多輪對話外,同時原生支持工具調用 (Function Call)、代碼執行 (Code Interpreter) 和Agent任務等復雜場景。
3
更全面的開源序列:
除了對話模型ChatGLM3-6B外,還開源了基礎模型ChatGLM-6B-Base、長文本對話模型ChatGLM3-6B-32K。以上所有權重對學術研究完全開放,在填寫問卷進行登記后亦允許免費商業使用。
圖:基于Optimum-intel與OpenVINO部署生成式AI模型流程
英特爾為開發者提供了快速部署ChatGLM3-6B的方案支持。開發者只需要在GitHub上克隆示例倉庫,進行環境配置,并將Hugging Face模型轉換為OpenVINO IR模型,即可進行模型推理。由于大部分步驟都可以自動完成,因此開發者只需要簡單的工作便能完成部署,目前該倉庫也被收錄在GhatGLM3的官方倉庫和魔搭社區Model Card中,接下來讓我們一起看下具體的步驟和方法:
示例倉庫:
https://github.com/OpenVINO-dev-contest/chatglm3.openvino
官方倉庫:
https://github.com/THUDM/ChatGLM3?tab=readme-ov-file#openvino-demo
Model Card:
https://www.modelscope.cn/models/ZhipuAI/chatglm3-6b/summary#
1
模型轉換
當你按倉庫中的README文檔完成集成環境配置后,可以直接通過以下命令運行模型轉換腳本:
python3 convert.py --model_id THUDM/chatglm3-6b –output {your_path}/chatglm3-6b-ov
該腳本首先會利用Transformers庫從Hugging Face的model hub中下載并加載原始模型的PyTorch對象,如果開發者在這個過程中無法訪問Hugging Face的model hub,也可以通過配置環境變量的方式,將模型下載地址更換為鏡像網站,并將convert.py腳本的model_id參數配置為本地路徑,具體方法如下:
$env:HF_ENDPOINT = https://hf-mirror.com huggingface-cli download --resume-download --local-dir-use-symlinks False THUDM/chatglm3-6b --local-dir {your_path}/chatglm3-6b python3 convert.py --model_id {your_path}/chatglm3-6b --output {your_path}/chatglm3-6b-ov
當獲取PyTorch的模型對象后,該腳本會利用OpenVINO的PyTorch frontend進行模型格式的轉換,執行完畢后,你將獲取一個由.xml和.bin文件所構成的OpenVINO IR模型文件,該模型默認以FP16精度保存。
2
權重量化
該步驟為可選項,開發者可以通過以下腳本,將生成的OpenVINO模型通過權重量化策略,進一步地壓縮為4-bits或者是8-bits的精度,以獲取更低的推理延時及系統資源占用。
python3 quantize.py --model_path {your_path}/chatglm3-6b-ov --precision int4 --output {your_path}/chatglm3-6b-ov-int4
執行完畢后,你將獲得經過壓縮后的IR模型文件,以INT4對稱量化為例,該壓縮后的模型文件的整體容量大約為4GB左右。
圖:量化后的OpenVINO模型文件
同時在量化結束后,亦會在終端上打印模型的量化比例,如下圖所示。
圖:量化比例輸出
由于OpenVINO NNCF工具的權重壓縮策略只針對于大語言模型中的Embedding和Linear這兩種算子,所以該表格只會統計這兩類算子的量化比例。其中ratio-defining parameter是指我們提前通過接口預設的混合精度比例,也就是21%權重以INT8表示,79%以INT4表示,這也是考慮到量化對ChatGLM3模型準確度的影響,事先評估得到的配置參數,開發者亦可以通過這個示例搜索出適合其他模型的量化參數。此外鑒于第一層Embedding layer和模型最后一層操作對于輸出準確度的影響,NNCF默認會將他們以INT8表示,這也是為何all parameters中顯示的混合精度比例會有所不同。當然開發者也可以通過nncf.compress_weights接口中設置all_layers=True,開關閉該默認策略。
示例:
https://github.com/openvinotoolkit/nncf/tree/develop/examples/llm_compression/openvino/tiny_llama_find_hyperparams
3
模型轉換
最后一步就是模型部署了,這里展示的是一個Chatbot聊天機器人的示例,這也是LLM應用中最普遍,也是最基礎的pipeline,而OpenVINO可以通過Optimum-intel工具為橋梁,復用Transformers庫中預置的pipeline,因此在這個腳本中我們會對ChatGLM3模型再做一次封裝,以繼承并改寫OVModelForCausalLM類中的方法,實現對于Optimum-intel工具的集成和適配。以下為該腳本的運行方式:
python3 chat.py --model_path {your_path}/chatglm3-6b-ov-int4 --max_sequence_length 4096 --device CPU
如果開發者的設備中包含英特爾的GPU產品,例如Intel ARC系列集成顯卡或是獨立顯卡,可以在這個命令中將device參數改為GPU,以激活更強大的模型推理能力。
在終端里運行該腳本后,會生成一個簡易聊天對話界面,接下來你就可以驗證它的效果和性能了。
總結
通過模型轉換、量化、部署這三個步驟,我們可以輕松實現在本地PC上部署ChatGLM3-6b大語言模型,經測試該模型可以流暢運行在最新的Intel Core Ultra異構平臺及至強CPU平臺上,作為眾多AI agent和RAG等創新應用的核心基石,大語言模型的本地部署能力將充分幫助開發者們打造更安全,更高效的AI解決方案。
審核編輯:劉清
-
人工智能
+關注
關注
1792文章
47497瀏覽量
239211 -
計算機視覺
+關注
關注
8文章
1699瀏覽量
46050 -
pytorch
+關注
關注
2文章
808瀏覽量
13282 -
OpenVINO
+關注
關注
0文章
94瀏覽量
214
原文標題:簡單三步使用OpenVINO? 搞定ChatGLM3的本地部署 | 開發者實戰
文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論