【啟動AI Maker世代 】2024 MAI 開發者社群大會(5/16-17)
|

OpenVINO 2023.2版本發佈:讓生成式AI在實際場景中更易用

   

作者: Yury Gorbachev,Intel 院士、OpenVINO 產品架構師

譯者:武卓

在過去的一年裡,人工智慧正以越來越快的速度發展,這得益於生成式AI模型的導入和從中受益的場景的演變。我們承認這一點,並決定比平時更快地發佈新版本OpenVINO,以幫助你獲得新功能!

與之前的版本一樣,在提高性能、增加對新AI模型的支援,以及構建基礎設施和模型快取等不同元件方面,我們做了大量工作。對於我們最新的2023.2版本,我們做出了一些重大改進,我們將在下面概述。

邊緣文字生成模型的附加性能

在我們的上一個版本2023.1中,我們導入了一些更改,以在英特爾(Intel) CPU和GPU上運作大語言模型(LLM)。開發者們能夠量化權重為int8格式,並將其作為初始步驟在CPU上運作。

在2023.2版本中,我們進一步最佳化此工作流程,並導入在CPU和整合顯卡上運作權重量化為int8和int4精度的LLM的能力。權重量化直接影響記憶體頻寬,並能助力模型更快、更高效地執行推理,因為模型消耗的記憶體更少了,所需的磁碟空間也更少,因此整體上需要的記憶體頻寬也更少了!

此外,我們的模型轉換和最佳化工具已經更新,可以幫助你處理模型準備流程。要壓縮模型權重為int8和int4格式,你可以使用我們的神經網路壓縮框架(NNCF)工具,該工具適用於OpenVINO格式或中間表示(Intermediate Representation,IR)檔。

還有,為了獲得具有int4壓縮權重的模型,你可以透過GPTQ (Generative Pretrained Transformers Quantization,生成式預訓練Transformers量化)演算法來最佳化轉換模型。實現此一過程的一種方法是透過Hugging Face AutoGPTQ實現。

如果你將Hugging Face作為模型的來源,你可以使用我們的optimum-Intel,它整合了OpenVINO的優勢;此整合允許你自動壓縮和轉換模型,如以下所示。

要將模型壓縮到int8精度:

1
2
3
4
5
6
7
#make use of optimum-intel
from optimum.intel import OVModelForCausalLM
#load pretrained model, convert to OpenVINO representation
#and compress weights
model = OVModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b", use_cache=True, export=True, load_in_8bit=True)
#store OpenVINO IR in a folder
model.save_pretrained("./Llama-2-7b"

請注意「load_in_8bit」選項,該選項指定應將原始模型壓縮到int8精度。對於大於1B的模型,預設情況下會啟用此選項。

要將模型壓縮到int4精度:

1
2
3
4
5
6
7
8
9
10
#make use of optimum-intel
from optimum.intel import OVModelForCausalLM
#explicitly use NNCF for compression
from nncf import compress_weights, CompressWeightsMode
#load pretrained model, convert to OpenVINO representation
model = OVModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b", use_cache=True, export=True, load_in_8bit=False)
#perform weights compression using NNCF
model.model = compress_weights(model.model, mode=CompressWeightsMode.INT4_SYM, group_size=128, ratio=0.8)
#store OpenVINO IR in a folder
model.save_pretrained("./Llama-2-7b")

請注意,這一次我們沒有使用HF API功能,而是直接調用NNCF將權重壓縮到int4。根據模型的不同,你可以更改壓縮參數以獲得更準確的結果。在這種情況下,我們使用對稱量化,群組大小為128個元素,int4與int8的權重之比為0.8。你可以查看我們的權重壓縮檔案,以獲得更多詳細資訊和壓縮提示。

要轉換使用AutoGPTQ最佳化為int4精度的模型,請執行以下操作:

1
2
3
4
5
6
7
#make use of optimum-intel
from optimum.intel import OVModelForCausalLM
#load pretrained model, convert to OpenVINO representation
#with keeping weights in int4
model = OVModelForCausalLM.from_pretrained("TheBloke/Llama-2-7B-GPTQ", use_cache=True, export=True)
#store OpenVINO IR in a folder
model.save_pretrained("./Llama-2-7B-GPTQ")

最佳化模型就是這麼簡單!更詳細的資訊請點擊此連結

新的生成式AI 以及更多的Notebooks程式碼範例

我們知道,親身體驗最新功能和最先進模型是最好的學習方式。因此,我們的OpenVINO團隊非常專注於為OpenVINO Notebooks程式碼範例帶來新的及備受關注的模型。我們希望展示並鼓勵你立即在你的設備上進行本地實驗,以獲得你所需的性能。以下是我們最近更新或新發佈的一些Notebooks程式碼範例,能幫助你更快地將想法付諸生產。


OpenVINO更多的新功能陸續問世!新版本將新增對新硬體以及更多生成式AI模型的支援,在2024年的新開始,讓我們一起透過免費線上講座「掌握OpenVINO在生成式AI最新功能, 並實現Model Server創新應用」來探索這套越來越強大的工具,讓您的專案開發更如虎添翼,名額有限快來報名

一些Jupyter Notebooks已經更新,以展示PyTorch模型在沒有ONNX轉換的情況下的轉換和最佳化,包括以下內容:

我們還加入了一些notebooks程式碼範例,展示如何轉換和最佳化模型,包括來自TensorFlow Hub、 TorchVision與Hugging Face Hub的模型。

圖 1: 文件視覺問答。

圖 1: 文件視覺問答。

最後,我們還提供了幾個具有開箱即用、最佳化性能的流行的生成式AI的notebooks程式碼範例。

 圖2:使用 OpenVINO最佳化基於大語言模型的聊天機器人。

圖2:使用 OpenVINO最佳化基於大語言模型的聊天機器人。

 

圖3:ControlNet 二維碼Monster以及OpenVINO。

圖3:ControlNet 二維碼Monster以及OpenVINO。

新的發行管道

在這個版本中,我們繼續改善你存取和使用OpenVINO進行AI應用程式開發的方式,我們已經開發了一個Conan套裝軟體管理器。Conan允許你為大型專案執行套件管理,我們很高興看到已經有開發者對此做出的積極回應。有關如何使用OpenVINO Conan套裝軟體的更多詳細資訊,請點擊此連結

OpenVINO是以開放源碼形式開發的,一旦在我們的初步測試中驗證了這些功能,我們的最新功能就可以在我們的主分支上獲得。因此,如果你想嘗試新功能,你可以隨時從原始程式碼自行構建我們的套件。對於pip用戶,我們透過導入openvino-nightly套件來簡化這一點;你可以使用這個每日構建的套件來嘗試最新的功能,並在我們的下一個官方版本中進行預覽!

開源貢獻對我們來說很重要!

OpenVINO已經是一個超過5年的開源專案了。最近,我們準備了一系列貢獻任務,透過對OpenVINO做出貢獻,可以更進一步幫助開發者社群圍繞AI生態系統和開源專案構建知識。這包括支援新的編譯選項和添加更多需要注意的操作等任務。歡迎查看我們在GitHub上的連結,看看有沒有你感興趣的任務。

如上所述,我們非常感謝迄今為止我們看到所有被納入的開源貢獻;我們還要公開感謝我們最近的一些貢獻者,他們是Siddhant Chauhan、rsa-10、Santhosh Mamidisetti和Mahimai Raja J.;由於你們的幫助,這個產品變得更好!

其他資源

(參考原文:Introducing OpenVINO 2023.2,by Yury Gorbachev — Intel Fellow, OpenVINO Product Architecture)

武卓

Author: 武卓

武卓博士現任英特爾AI軟體佈道師

Share This Post On
468 ad

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *