工具介紹
英特爾 OpenVINO 工具套件是一款開源 AI 推理優(yōu)化部署的工具套件,可幫助開發(fā)人員和企業(yè)加速生成式人工智能 (AIGC)、大語言模型、計(jì)算機(jī)視覺和自然語言處理等 AI 工作負(fù)載,簡化深度學(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 等框架對Qwen1.5的支持。Qwen1.5 顯著提升了聊天模型與人類偏好的一致性,并且改善了它們的多語言能力。所有模型提供了統(tǒ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ā)者只需要簡單的工作便能完成部署,目前該倉庫也被收錄在 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 對象,如果開發(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)完成對模型格式的轉(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)重壓縮策略只針對于大語言模型中的 Embedding 和 Linear 這兩種算子,所以該表格只會(huì)統(tǒng)計(jì)這兩類算子的量化比例。其中 ratio-defining parameter 是指我們提前通過接口預(yù)設(shè)的混合精度比例,也就是 20% 權(quán)重以 INT8 表示,80% 以 INT4 表示,這也是考慮到量化對 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 為選擇是否開啟對稱量化策略,對稱量化會(huì)進(jìn)一步提升模型運(yùn)行速度,但也會(huì)在一定程度上降低模型準(zhǔn)確性。
group_size為共享量化參數(shù)的通道數(shù)量,該值越大,壓縮比也越高,反之,對模型準(zhǔn)確性的影響越小。
ratio 則是 INT4 權(quán)重和 INT8 權(quán)重的混合精度比例。
更多可配置量化參數(shù)也可以參考 OpenVINO 官方文檔[3]。如果遇到新模型,同時(shí)不知道如何選擇量化參數(shù)以獲取性能和準(zhǔn)確度的最大平衡,開發(fā)者也可以通過這個(gè)示例[4]搜索出適合其他模型的量化參數(shù)。此外鑒于 LLM 第一層 Embedding layer 和最后一層操作對于輸出準(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è)簡易聊天對話界面,接下來你就可以驗(yàn)證它的效果和性能了。
Starting conversation
用戶
你好
Qwen2-OpenVINO
你好!有什么我可以幫助你的嗎?
用戶
你是誰?
Qwen2-OpenVINO
我是來自阿里云的超大規(guī)模語言模型,我叫通義千問。
用戶
請給我講一個(gè)故事
Qwen2-OpenVINO
好的,這是一個(gè)關(guān)于一只小兔子和它的朋友的故事。
有一天,小兔子和他的朋友們決定去森林里探險(xiǎn)。他們帶上食物、水和一些工具,開始了他們的旅程。在旅途中,他們遇到了各種各樣的動(dòng)物,包括松鼠、狐貍、小鳥等等。他們一起玩耍、分享食物,還互相幫助解決問題。最后,他們在森林的深處找到了一個(gè)神秘的洞穴,里面藏著許多寶藏。他們帶著所有的寶藏回到了家,慶祝這次愉快的冒險(xiǎn)。
用戶
請為這個(gè)故事起個(gè)標(biāo)題
Qwen2-OpenVINO
"小兔子與朋友們的冒險(xiǎn)之旅"
總結(jié)
通過模型轉(zhuǎn)換量化+部署這兩個(gè)步驟,我們可以輕松實(shí)現(xiàn) 在本地 PC 上部署 Qwen2 大語言模型,經(jīng)測試該模型可以流暢運(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)注
60文章
9880瀏覽量
171482 -
人工智能
+關(guān)注
關(guān)注
1791文章
46845瀏覽量
237535 -
計(jì)算機(jī)視覺
+關(guān)注
關(guān)注
8文章
1696瀏覽量
45927 -
大模型
+關(guān)注
關(guān)注
2文章
2322瀏覽量
2479 -
OpenVINO
+關(guān)注
關(guān)注
0文章
87瀏覽量
181
原文標(biāo)題:簡單兩步使用 OpenVINO? 搞定 Qwen2 的量化與部署任務(wù) | 開發(fā)者實(shí)戰(zhàn)
文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論