工具介紹
英特爾 OpenVINO 工具套件是一款開源 AI 推理優(yōu)化部署的工具套件,可幫助開發(fā)人員和企業(yè)加速生成式人工智能 (AIGC)、大語言模型、計(jì)算機(jī)視覺和自然語言處理等 AI 工作負(fù)載,簡(jiǎn)化深度學(xué)習(xí)推理的開發(fā)和部署,便于實(shí)現(xiàn)從邊緣到云的跨英特爾 平臺(tái)的異構(gòu)執(zhí)行。
模型介紹
近期通義千問團(tuán)隊(duì)發(fā)布了其 Qwen 大模型的第二代架構(gòu) Qwen2,這是一個(gè)基于 Transformer 結(jié)構(gòu) decoder-only 模型,而 Qwen1.5 作為 Qwen2 架構(gòu)的 Beta 版本,已經(jīng)率先在 Hugging Face 及魔搭社區(qū)進(jìn)行了發(fā)布。
Qwen1.5 版本本次開源了包括 0.5B、1.8B、4B、7B、14B 和 72B 在內(nèi)的六種大小的基礎(chǔ)和聊天模型,同時(shí),也開源了量化模型。不僅提供了 Int4 和 Int8 的 GPTQ 模型,還有 AWQ 模型,以及 GGUF 量化模型。為了提升開發(fā)者體驗(yàn),Qwen1.5 的代碼合并到 Hugging Face Transformers 中,開發(fā)者現(xiàn)在可以直接使用 transformers>=4.37.0 而無需 trust_remote_code。此外,Qwen1.5 支持了例如 vLLM、SGLang、AutoGPTQ 等框架對(duì)Qwen1.5的支持。Qwen1.5 顯著提升了聊天模型與人類偏好的一致性,并且改善了它們的多語言能力。所有模型提供了統(tǒng)一的上下文長(zhǎng)度支持,支持 32K 上下文, 基礎(chǔ)語言模型的質(zhì)量也有所改進(jìn)。
圖:基于Optimum-intel與OpenVINO部署生成式AI模型流程
英特爾為開發(fā)者提供了快速部署 Qwen2的方案支持。開發(fā)者只需要在 GitHub 上克隆示例倉庫[1],進(jìn)行環(huán)境配置,并將 Hugging Face 模型轉(zhuǎn)換為 OpenVINO IR 模型,即可進(jìn)行模型推理。由于大部分步驟都可以自動(dòng)完成,因此開發(fā)者只需要簡(jiǎn)單的工作便能完成部署,目前該倉庫也被收錄在 Qwen1.5 的官方倉庫[2]中,接下來讓我們一起看下具體的步驟和方法:
[1] 示例倉庫:
https://github.com/OpenVINO-dev-contest/Qwen2.openvino
[2] 官方倉庫:
https://github.com/QwenLM/Qwen1.5?tab=readme-ov-file#openvino
01
模型轉(zhuǎn)換與量化
當(dāng)您按倉庫中的 README 文檔完成集成環(huán)境配置后,可以直接通過以下命令運(yùn)行模型的轉(zhuǎn)化腳本,這里我們以 0.5B 版本的 Qwen1.5 為例:
python3 convert.py --model_id Qwen/Qwen1.5-0.5B-Chat --output {your_path}/Qwen1.5-0.5B-Chat-ov
這里首先會(huì)基于 Transformers 庫從 Hugging Face 的 model hub 中下載并加載原始模型的 PyTorch 對(duì)象,如果開發(fā)者在這個(gè)過程中無法訪問 Hugging Face 的 model hub,也可以通過配置環(huán)境變量的方式,將模型下載地址更換為鏡像網(wǎng)站或者通過魔搭社區(qū)下載,并將 convert.py 腳本的 model_id 參數(shù)配置為本地路徑,具體方法如下:
$env:HF_ENDPOINT = https://hf-mirror.com huggingface-cli download --resume-download --local-dir-use-symlinks False Qwen/Qwen1.5-0.5B-Chat --local-dir {your_path}/Qwen1.5-0.5B-Chat python3 convert.py --model_id {your_path}/Qwen1.5-0.5B-Chat --output {your_path}/ Qwen1.5-0.5B-Chat-ov
在完成模型下載后,該腳本會(huì)利用 Optimum-intel 庫中的 OVModelForCausalLM .from_pretrained 函數(shù)自動(dòng)完成對(duì)模型格式的轉(zhuǎn)換,同時(shí)該函數(shù)也會(huì)根據(jù)用戶指定的模型精度和配置信息,調(diào)用 NNCF 工具完成模型的權(quán)重量化。執(zhí)行完畢后,你將獲取一個(gè)由 .xml 和 .bin 文件所構(gòu)成的 OpenVINO IR 模型文件,該模型默認(rèn)以 int4+int8 的混合精度保存,此外你也可以通過配置 —precision,來選擇不同的模型精度,例如 —precision int8或者 —precision fp16。
圖:量化前后模型大小比較
可以看到相較原始 PyTorch 模型,經(jīng)過 INT4 量化后的模型大小減少將近3/4。此外在這個(gè)過程中, int4+int8 量化比例也會(huì)自動(dòng)打印在終端界面上,如下圖所示。
圖:量化比例輸出
由于 OpenVINO NNCF 工具的權(quán)重壓縮策略只針對(duì)于大語言模型中的 Embedding 和 Linear 這兩種算子,所以該表格只會(huì)統(tǒng)計(jì)這兩類算子的量化比例。其中 ratio-defining parameter 是指我們提前通過接口預(yù)設(shè)的混合精度比例,也就是 20% 權(quán)重以 INT8 表示,80% 以 INT4 表示,這也是考慮到量化對(duì) Qwen1.5 模型準(zhǔn)確度的影響,事先評(píng)估得到的配置參數(shù),開發(fā)者也可以通過修改 Python 腳本中的默認(rèn)配置調(diào)整量化參數(shù):
compression_configs = { "sym": False, "group_size": 128, "ratio": 0.8, }
其中:
sym 為選擇是否開啟對(duì)稱量化策略,對(duì)稱量化會(huì)進(jìn)一步提升模型運(yùn)行速度,但也會(huì)在一定程度上降低模型準(zhǔn)確性。
group_size為共享量化參數(shù)的通道數(shù)量,該值越大,壓縮比也越高,反之,對(duì)模型準(zhǔn)確性的影響越小。
ratio 則是 INT4 權(quán)重和 INT8 權(quán)重的混合精度比例。
更多可配置量化參數(shù)也可以參考 OpenVINO 官方文檔[3]。如果遇到新模型,同時(shí)不知道如何選擇量化參數(shù)以獲取性能和準(zhǔn)確度的最大平衡,開發(fā)者也可以通過這個(gè)示例[4]搜索出適合其他模型的量化參數(shù)。此外鑒于 LLM 第一層 Embedding layer 和最后一層操作對(duì)于輸出準(zhǔn)確度的影響, NNCF 默認(rèn)會(huì)將他們以 INT8 表示,這也是為何在這個(gè)示例的 log 打印中,all parameters 顯示的混合精度比例會(huì)有所不同。當(dāng)然開發(fā)者也可以通過在量化參數(shù)中設(shè)置 “all_layers”: True,開關(guān)閉該默認(rèn)策略。
[3] OpenVINO 官方文檔
https://docs.openvino.ai/2024/openvino-workflow/model-optimization-guide/weight-compression.html
[4] 示例:
https://github.com/openvinotoolkit/nncf/tree/develop/examples/llm_compression/openvino/tiny_llama_find_hyperparams
02
模型部署
最后一步就是模型部署了,這里展示的是一個(gè) Chatbot 聊天機(jī)器人的示例,這也是 LLM 應(yīng)用中最普遍,也是最基礎(chǔ)的 pipeline,而 OpenVINO 可以通過 Optimum-intel 工具為橋梁,復(fù)用 Transformers 庫中預(yù)置的 pipeline,基于 OVModelForCausalLM 類中的 generate 方法,進(jìn)行文本生成任務(wù)部署,以下為該腳本的運(yùn)行方式:
python3 chat.py --model_path {your_path}/Qwen1.5-0.5B-Chat-ov --max_sequence_length 4096 --device CPU
如果開發(fā)者的設(shè)備中包含 Intel 的GPU產(chǎn)品,例如 Intel ARC 系列集成顯卡或是獨(dú)立顯卡,可以在這個(gè)命令中將 device 參數(shù)改為 GPU,以激活更強(qiáng)大的模型推理能力。
在終端里運(yùn)行該腳本后,會(huì)生成一個(gè)簡(jiǎn)易聊天對(duì)話界面,接下來你就可以驗(yàn)證它的效果和性能了。
Starting conversation
用戶
你好
Qwen2-OpenVINO
你好!有什么我可以幫助你的嗎?
用戶
你是誰?
Qwen2-OpenVINO
我是來自阿里云的超大規(guī)模語言模型,我叫通義千問。
用戶
請(qǐng)給我講一個(gè)故事
Qwen2-OpenVINO
好的,這是一個(gè)關(guān)于一只小兔子和它的朋友的故事。
有一天,小兔子和他的朋友們決定去森林里探險(xiǎn)。他們帶上食物、水和一些工具,開始了他們的旅程。在旅途中,他們遇到了各種各樣的動(dòng)物,包括松鼠、狐貍、小鳥等等。他們一起玩耍、分享食物,還互相幫助解決問題。最后,他們?cè)谏值纳钐幷业搅艘粋€(gè)神秘的洞穴,里面藏著許多寶藏。他們帶著所有的寶藏回到了家,慶祝這次愉快的冒險(xiǎn)。
用戶
請(qǐng)為這個(gè)故事起個(gè)標(biāo)題
Qwen2-OpenVINO
"小兔子與朋友們的冒險(xiǎn)之旅"
總結(jié)
通過模型轉(zhuǎn)換量化+部署這兩個(gè)步驟,我們可以輕松實(shí)現(xiàn) 在本地 PC 上部署 Qwen2 大語言模型,經(jīng)測(cè)試該模型可以流暢運(yùn)行在最新的 Intel Core Ultra 異構(gòu)平臺(tái)及至強(qiáng) CPU 平臺(tái)上,作為眾多 AI agent 和 RAG 等創(chuàng)新應(yīng)用的核心基石,大語言模型的本地部署能力將充分幫助開發(fā)者們打造更安全,更高效的 AI 解決方案。
審核編輯:劉清
-
英特爾
+關(guān)注
關(guān)注
61文章
10082瀏覽量
172906 -
人工智能
+關(guān)注
關(guān)注
1800文章
48107瀏覽量
242267 -
計(jì)算機(jī)視覺
+關(guān)注
關(guān)注
8文章
1703瀏覽量
46251 -
大模型
+關(guān)注
關(guān)注
2文章
2796瀏覽量
3440 -
OpenVINO
+關(guān)注
關(guān)注
0文章
108瀏覽量
298
原文標(biāo)題:簡(jiǎn)單兩步使用 OpenVINO? 搞定 Qwen2 的量化與部署任務(wù) | 開發(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)先 登錄
相關(guān)推薦
如何使用OpenVINO C++ API部署FastSAM模型

如何部署OpenVINO?工具套件應(yīng)用程序?
如何排除深度學(xué)習(xí)工作臺(tái)上量化OpenVINO?的特定層?
基于keras利用cv2自帶兩步檢測(cè)法進(jìn)行實(shí)時(shí)臉部表情檢測(cè)
三菱FX2N通過PLC網(wǎng)關(guān)兩步即可接入MQTT平臺(tái)

NNCF壓縮與量化YOLOv8模型與OpenVINO部署測(cè)試

簡(jiǎn)單三步使用OpenVINO?搞定ChatGLM3的本地部署

阿里通義千問Qwen2大模型發(fā)布
阿里通義千問Qwen2大模型發(fā)布并同步開源
Qwen2強(qiáng)勢(shì)來襲,AIBOX支持本地化部署

基于Qwen-Agent與OpenVINO構(gòu)建本地AI智能體

評(píng)論