工具介紹
英特爾OpenVINO 工具套件是一款開(kāi)源AI推理優(yōu)化部署的工具套件,可幫助開(kāi)發(fā)人員和企業(yè)加速生成式人工智能 (AIGC)、大語(yǔ)言模型、計(jì)算機(jī)視覺(jué)和自然語(yǔ)言處理等 AI 工作負(fù)載,簡(jiǎn)化深度學(xué)習(xí)推理的開(kāi)發(fā)和部署,便于實(shí)現(xiàn)從邊緣到云的跨英特爾 平臺(tái)的異構(gòu)執(zhí)行。
ChatGLM3是智譜AI和清華大學(xué)KEG實(shí)驗(yàn)室聯(lián)合發(fā)布的對(duì)話預(yù)訓(xùn)練模型。ChatGLM3-6B是ChatGLM3系列中的開(kāi)源模型,在保留了前兩代模型對(duì)話流暢、部署門(mén)檻低等眾多優(yōu)秀特性的基礎(chǔ)上,ChatGLM3-6B引入了以下新特性:
1
更強(qiáng)大的基礎(chǔ)模型:
ChatGLM3-6B的基礎(chǔ)模型ChatGLM3-6B-Base采用了更多樣的訓(xùn)練數(shù)據(jù)、更充分的訓(xùn)練步數(shù)和更合理的訓(xùn)練策略。在語(yǔ)義、數(shù)學(xué)、推理、代碼、知識(shí)等不同角度的數(shù)據(jù)集上測(cè)評(píng)顯示,ChatGLM3-6B-Base具有在10B以下的預(yù)訓(xùn)練模型中領(lǐng)先的性能。
2
更完整的功能支持:
ChatGLM3-6B采用了全新設(shè)計(jì)的Prompt格式,除正常的多輪對(duì)話外,同時(shí)原生支持工具調(diào)用 (Function Call)、代碼執(zhí)行 (Code Interpreter) 和Agent任務(wù)等復(fù)雜場(chǎng)景。
3
更全面的開(kāi)源序列:
除了對(duì)話模型ChatGLM3-6B外,還開(kāi)源了基礎(chǔ)模型ChatGLM-6B-Base、長(zhǎng)文本對(duì)話模型ChatGLM3-6B-32K。以上所有權(quán)重對(duì)學(xué)術(shù)研究完全開(kāi)放,在填寫(xiě)問(wèn)卷進(jìn)行登記后亦允許免費(fèi)商業(yè)使用。

圖:基于Optimum-intel與OpenVINO部署生成式AI模型流程
英特爾為開(kāi)發(fā)者提供了快速部署ChatGLM3-6B的方案支持。開(kāi)發(fā)者只需要在GitHub上克隆示例倉(cāng)庫(kù),進(jìn)行環(huán)境配置,并將Hugging Face模型轉(zhuǎn)換為OpenVINO IR模型,即可進(jìn)行模型推理。由于大部分步驟都可以自動(dòng)完成,因此開(kāi)發(fā)者只需要簡(jiǎn)單的工作便能完成部署,目前該倉(cāng)庫(kù)也被收錄在GhatGLM3的官方倉(cāng)庫(kù)和魔搭社區(qū)Model Card中,接下來(lái)讓我們一起看下具體的步驟和方法:
示例倉(cāng)庫(kù):
https://github.com/OpenVINO-dev-contest/chatglm3.openvino
官方倉(cāng)庫(kù):
https://github.com/THUDM/ChatGLM3?tab=readme-ov-file#openvino-demo
Model Card:
https://www.modelscope.cn/models/ZhipuAI/chatglm3-6b/summary#
1
模型轉(zhuǎn)換
當(dāng)你按倉(cāng)庫(kù)中的README文檔完成集成環(huán)境配置后,可以直接通過(guò)以下命令運(yùn)行模型轉(zhuǎn)換腳本:
python3 convert.py --model_id THUDM/chatglm3-6b –output {your_path}/chatglm3-6b-ov
該腳本首先會(huì)利用Transformers庫(kù)從Hugging Face的model hub中下載并加載原始模型的PyTorch對(duì)象,如果開(kāi)發(fā)者在這個(gè)過(guò)程中無(wú)法訪問(wèn)Hugging Face的model hub,也可以通過(guò)配置環(huán)境變量的方式,將模型下載地址更換為鏡像網(wǎng)站,并將convert.py腳本的model_id參數(shù)配置為本地路徑,具體方法如下:
$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
當(dāng)獲取PyTorch的模型對(duì)象后,該腳本會(huì)利用OpenVINO的PyTorch frontend進(jìn)行模型格式的轉(zhuǎn)換,執(zhí)行完畢后,你將獲取一個(gè)由.xml和.bin文件所構(gòu)成的OpenVINO IR模型文件,該模型默認(rèn)以FP16精度保存。
2
權(quán)重量化
該步驟為可選項(xiàng),開(kāi)發(fā)者可以通過(guò)以下腳本,將生成的OpenVINO模型通過(guò)權(quán)重量化策略,進(jìn)一步地壓縮為4-bits或者是8-bits的精度,以獲取更低的推理延時(shí)及系統(tǒng)資源占用。
python3 quantize.py --model_path {your_path}/chatglm3-6b-ov --precision int4 --output {your_path}/chatglm3-6b-ov-int4
執(zhí)行完畢后,你將獲得經(jīng)過(guò)壓縮后的IR模型文件,以INT4對(duì)稱量化為例,該壓縮后的模型文件的整體容量大約為4GB左右。

圖:量化后的OpenVINO模型文件
同時(shí)在量化結(jié)束后,亦會(huì)在終端上打印模型的量化比例,如下圖所示。

圖:量化比例輸出
由于OpenVINO NNCF工具的權(quán)重壓縮策略只針對(duì)于大語(yǔ)言模型中的Embedding和Linear這兩種算子,所以該表格只會(huì)統(tǒng)計(jì)這兩類算子的量化比例。其中ratio-defining parameter是指我們提前通過(guò)接口預(yù)設(shè)的混合精度比例,也就是21%權(quán)重以INT8表示,79%以INT4表示,這也是考慮到量化對(duì)ChatGLM3模型準(zhǔn)確度的影響,事先評(píng)估得到的配置參數(shù),開(kāi)發(fā)者亦可以通過(guò)這個(gè)示例搜索出適合其他模型的量化參數(shù)。此外鑒于第一層Embedding layer和模型最后一層操作對(duì)于輸出準(zhǔn)確度的影響,NNCF默認(rèn)會(huì)將他們以INT8表示,這也是為何all parameters中顯示的混合精度比例會(huì)有所不同。當(dāng)然開(kāi)發(fā)者也可以通過(guò)nncf.compress_weights接口中設(shè)置all_layers=True,開(kāi)關(guān)閉該默認(rèn)策略。
示例:
https://github.com/openvinotoolkit/nncf/tree/develop/examples/llm_compression/openvino/tiny_llama_find_hyperparams
3
模型轉(zhuǎn)換
最后一步就是模型部署了,這里展示的是一個(gè)Chatbot聊天機(jī)器人的示例,這也是LLM應(yīng)用中最普遍,也是最基礎(chǔ)的pipeline,而OpenVINO可以通過(guò)Optimum-intel工具為橋梁,復(fù)用Transformers庫(kù)中預(yù)置的pipeline,因此在這個(gè)腳本中我們會(huì)對(duì)ChatGLM3模型再做一次封裝,以繼承并改寫(xiě)OVModelForCausalLM類中的方法,實(shí)現(xiàn)對(duì)于Optimum-intel工具的集成和適配。以下為該腳本的運(yùn)行方式:
python3 chat.py --model_path {your_path}/chatglm3-6b-ov-int4 --max_sequence_length 4096 --device CPU
如果開(kāi)發(fā)者的設(shè)備中包含英特爾的GPU產(chǎn)品,例如Intel ARC系列集成顯卡或是獨(dú)立顯卡,可以在這個(gè)命令中將device參數(shù)改為GPU,以激活更強(qiáng)大的模型推理能力。
在終端里運(yùn)行該腳本后,會(huì)生成一個(gè)簡(jiǎn)易聊天對(duì)話界面,接下來(lái)你就可以驗(yàn)證它的效果和性能了。
總結(jié)
通過(guò)模型轉(zhuǎn)換、量化、部署這三個(gè)步驟,我們可以輕松實(shí)現(xiàn)在本地PC上部署ChatGLM3-6b大語(yǔ)言模型,經(jīng)測(cè)試該模型可以流暢運(yùn)行在最新的Intel Core Ultra異構(gòu)平臺(tái)及至強(qiáng)CPU平臺(tái)上,作為眾多AI agent和RAG等創(chuàng)新應(yīng)用的核心基石,大語(yǔ)言模型的本地部署能力將充分幫助開(kāi)發(fā)者們打造更安全,更高效的AI解決方案。
審核編輯:劉清
-
人工智能
+關(guān)注
關(guān)注
1817文章
50098瀏覽量
265372 -
計(jì)算機(jī)視覺(jué)
+關(guān)注
關(guān)注
9文章
1715瀏覽量
47628 -
pytorch
+關(guān)注
關(guān)注
2文章
813瀏覽量
14852 -
OpenVINO
+關(guān)注
關(guān)注
0文章
118瀏覽量
767
原文標(biāo)題:簡(jiǎn)單三步使用OpenVINO? 搞定ChatGLM3的本地部署 | 開(kāi)發(fā)者實(shí)戰(zhàn)
文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
CANDTU設(shè)備上云實(shí)戰(zhàn):兩步完成接入,三步玩轉(zhuǎn)數(shù)據(jù)
本地部署Stable Diffusion實(shí)現(xiàn)AI文字生成高質(zhì)量矢量圖片應(yīng)用于電子商務(wù)
工業(yè)物聯(lián)網(wǎng)平臺(tái)適合私有本地部署還是云端部署?
工程師整理:UPS電源選購(gòu)“三步法”,從看懂參數(shù)到下單不出錯(cuò)
能源監(jiān)測(cè)管理平臺(tái)是本地化部署好還是云端部署好?
如何本地部署NVIDIA Cosmos Reason-1-7B模型
無(wú)法將Openvino? 2025.0與onnx運(yùn)行時(shí)Openvino? 執(zhí)行提供程序 1.16.2 結(jié)合使用,怎么處理?
本地服務(wù)器部署怎么選?一招搞定企業(yè)IT成本、性能與安全問(wèn)題!
ElfBoard技術(shù)實(shí)戰(zhàn)|ELF 2開(kāi)發(fā)板本地部署DeepSeek大模型的完整指南
Intel OpenVINO? Day0 實(shí)現(xiàn)阿里通義 Qwen3 快速部署
工廠設(shè)備總故障?諧波治理新國(guó)標(biāo)解讀,3步搞定省電又保生產(chǎn)
簡(jiǎn)單三步使用OpenVINO?搞定ChatGLM3的本地部署
評(píng)論