0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenVINO 2024.2版本亮點解析

英特爾中國 ? 來源:英特爾中國 ? 2024-08-16 15:26 ? 次閱讀

對我們來說,這是非常忙碌的幾周,因為我們正在努力根據(jù)您的反饋改進(jìn)我們的產(chǎn)品特性,并擴(kuò)展生態(tài)系統(tǒng)以涵蓋其它場景和用例。

讓我們看看我們所做的最重要的更改。有關(guān)更詳細(xì)的列表,您可以隨時參考我們的完整 [新版本說明]。

隆重推出 OpenVINO.GenAI 軟件包和 LLM特定 API

生成式 AI 正在被應(yīng)用程序設(shè)計人員快速地使用著。這不僅體現(xiàn)在使用來自商業(yè)云服務(wù)模型的傳統(tǒng)REST API形式上,而且還發(fā)生在客戶端和邊緣。越來越多的數(shù)據(jù)正在客戶端處理,通過AIPC,我們?yōu)榇碎_始看到更多的機(jī)會。其中一種場景是人工智能助手,它能夠生成文本(郵件草稿、文檔摘要、文檔內(nèi)容的答案等等)。這一切都由 LLM(大型語言模型)和不斷增長的 SLM(小型語言模型)系列提供支持。

我們引入了新的軟件包 openvino-genai,它使用OpenVINO 以及其中的openvino_tokenizers,因此如果您打算運行 LLM,安裝此軟件包就足夠了。經(jīng)典的 OpenVINO API 也支持其它類型的模型,因此現(xiàn)在流水線構(gòu)建變得更加容易。我們的安裝選項也進(jìn)行了更新,以便反映并指導(dǎo)使用新軟件包,因此請在那里查看您最合適的選項。經(jīng)典的 OpenVINO 軟件包仍然存在,如果您暫時不打算使用生成式 API,請繼續(xù)使用 openvino 軟件包。

為了通過 LLM 生成結(jié)果,應(yīng)用程序需要執(zhí)行整個操作流水線:執(zhí)行輸入文本的分詞,處理輸入上下文,迭代生成模型答案的后續(xù)輸出分詞,最后將答案從分詞解碼為純文本。每個分詞的生成都是推理調(diào)用,然后是后續(xù)邏輯來選擇分詞本身。邏輯可以是貪婪搜索的形式,也就是選擇最可能的分詞,也可以是波束搜索的形式,即保持很少的序列并選擇其中最好的。

雖然OpenVINO在推理方面大放異彩,但正如我們剛才所討論的,這還不足以涵蓋整個文本生成的流水線。在 2024.2 版本之前,我們提供了幫助程序(分詞器和示例)來實現(xiàn)這一點,但應(yīng)用程序必須使用這些組件實現(xiàn)整個生成邏輯。現(xiàn)在這種情況正在發(fā)生改變。

在 24.2 版本中,我們引入了特定于 LLM 的 API,這些 API 隱藏了內(nèi)部生成循環(huán)的復(fù)雜性,并顯著減少了需要在應(yīng)用程序中編寫的代碼量。通過使用特定于 LLM 的 API,您可以加載模型,向其傳遞上下文,并通過幾行代碼返回響應(yīng)。在內(nèi)部,OpenVINO將對輸入文本進(jìn)行分詞化,在您選擇的設(shè)備上執(zhí)行生成循環(huán),并為您提供答案。讓我們一步一步地看看這是如何使用PythonC++完成的。

第一步

通過Hugging Face Optimum-Intel導(dǎo)出

LLM 模型(我們使用了針對聊天微調(diào)的 Tiny Llama)

以下是將OpenVINO IR格式的LLM模型導(dǎo)出為FP16或INT4精度的兩種方式。為了使LLM推理性能更高,我們建議對模型權(quán)重使用較低的精度,即INT4,并在模型導(dǎo)出過程中直接使用神經(jīng)網(wǎng)絡(luò)壓縮框架(NNCF)壓縮權(quán)重,如下所示。

FP16:

optimum-cli export openvino --model "TinyLlama/TinyLlama-1.1B-Chat-v1.0" --weight-format fp16 --trust-remote-code

INT4:

optimum-cli export openvino --model "TinyLlama/TinyLlama-1.1B-Chat-v1.0" --weight-format int4 --trust-remote-code

第二步

使用C++或Python進(jìn)行生成

通過新的C++ API進(jìn)行LLM生成

#include "openvino/genai/llm_pipeline.hpp"
#include 


int main(int argc, char* argv[]) {
    std::string model_path = argv[1];
    ov::LLMPipeline pipe(model_path, "CPU");//target device is CPU
    std::cout << pipe.generate("The Sun is yellow bacause"); //input context
}

通過新的 Python API 進(jìn)行生成

import openvino_genai as ov_genai
pipe = ov_genai.LLMPipeline(model_path, "CPU")
print(pipe.generate("TheSunisyellowbacause"))

如您所見,只需要幾行代碼就能建立一個LLM生成的流水線。這是因為,從 Hugging Face Optimum-Intel 導(dǎo)出模型后,它已經(jīng)存儲了執(zhí)行所需的所有信息,包括分詞器/反分詞器和生成配置,從而能夠獲得與 Hugging Face 生成匹配的結(jié)果。我們提供 C++ 和 Python API 來運行 LLM、最少的依賴項列表和對應(yīng)用程序的添加。

為了實現(xiàn)生成式模型更具交互性的UI界面,我們添加了對模型輸出分詞流式處理的支持。在下面的示例中,我們使用簡單的 lambda 函數(shù)在模型生成單詞后立即將單詞輸出到控制臺:

#include "openvino/genai/llm_pipeline.hpp"
#include 


int main(int argc, char* argv[]) {
    std::string model_path = argv[1];
    ov::LLMPipeline pipe(model_path, "CPU");
        
    auto streamer = [](std::string word) { std::cout << word << std::flush; };
    std::cout << pipe.generate("The Sun is yellow bacause", streamer);
}

您也可以創(chuàng)建自定義流處理器進(jìn)行更復(fù)雜的處理,這在我們的 [文檔] 中進(jìn)行了描述。

最后,我們還研究了聊天場景,其中輸入和輸出代表對話,并且有機(jī)會以在輸入之間保留 KV緩存 的形式進(jìn)行優(yōu)化。為此,我們引入了聊天特定方法 start_chat 和 finish_chat,它們用于標(biāo)記會話的開始和結(jié)束。下面是一個非常簡單的 C++ 示例:

int main(int argc, char* argv[]) {
    std::string prompt;


    std::string model_path = argv[1];
    ov::LLMPipeline pipe(model_path, "CPU");
    
    pipe.start_chat();
    for (;;) {
        std::cout << "question:
";
        std::getline(std::cin, prompt);
        if (prompt == "Stop!")
            break;


        std::cout << "answer:
";
        auto answer = pipe(prompt);
        std::cout << answer << std::endl;
    }
    pipe.finish_chat();
}

在上面的所有示例中,我們都使用 CPU 作為目標(biāo)設(shè)備,但 GPU 也同樣是支持的。請記住,GPU 將為 LLM 本身運行推理,分詞選擇邏輯和分詞化/去分詞化將保留在 CPU 上,因為這更有效率。內(nèi)置的分詞器以單獨的模型形式表示,并通過我們的推理功能在 CPU 上運行。

這個 API 使我們能夠更靈活、更優(yōu)化地實現(xiàn)生成邏輯,并不斷擴(kuò)展。請繼續(xù)關(guān)注后續(xù)發(fā)布版本中的更多功能!

同時,請務(wù)必查看我們的 [文檔] [示例] 以獲取新的 API,嘗試后告訴我們你的想法。

通過OpenVINO擴(kuò)展模型服務(wù)

通過服務(wù)化部署模型是一個非常成熟的方法論,并且隨著基于微服務(wù)的部署不僅在傳統(tǒng)的云環(huán)境中擴(kuò)展,同時也在向邊緣計算領(lǐng)域擴(kuò)展,這一需求日益增長。更多的應(yīng)用被開發(fā)為微服務(wù),并部署在智能邊緣和云中。在2024.2 版本中,我們引入了對服務(wù)場景的額外支持。讓我們來看看最重要的變化。

OpenVINO模型服務(wù)器是我們長期開發(fā)的模型服務(wù)解決方案,它被應(yīng)用程序廣泛采用,以最有效的方式為模型提供服務(wù)。在此版本中,我們引入了通過稱為連續(xù)批處理的機(jī)制為LLM提供高效服務(wù)的能力。

從本質(zhì)上講,連續(xù)批處理允許我們通過將多個請求合并到批處理中來以最有效的方式實現(xiàn)推理服務(wù)。由于生成過程中上下文大小的差異,傳統(tǒng)批處理文本生成方案的方式非常有限。實際上,不可能找到兩個相同長度的不同請求并生成相同長度的輸出來執(zhí)行傳統(tǒng)的請求批處理。為了解決這個問題,我們采用了分頁注意力方法,就像在 vLLM 實現(xiàn)中的那樣。這使我們能夠?qū)⒍鄠€請求合并到同一模型中,并提高硬件利用率。不過,調(diào)度請求的內(nèi)部邏輯是不同的,我們考慮了 CPU 在設(shè)計時使其更高效的細(xì)節(jié),結(jié)合了高吞吐量和低延遲,使其更高效。

為了以最適應(yīng)應(yīng)用程序的方式部署 LLM,我們在文本生成的使用場景實現(xiàn)了 OpenAI 兼容的API。我們的實現(xiàn)包括 連續(xù)批處理和分頁注意力算法,因此文本生成可以在高并發(fā)負(fù)載下快速高效。這使得您可以允許在云中或本地(如果需要的話)創(chuàng)建自己的類似 OpenAI 的 LLM 服務(wù)端點。

盡管 LLM 備受矚目,但傳統(tǒng)的深度學(xué)習(xí)模型作為獨立解決方案或大型流程的一部分仍有著高度需求。OVMS 可以長時間高效地部署這些模型,但對其它部署解決方案的需求非常高,因此我們?yōu)榉?wù)場景引入了一些額外的 OpenVINO 集成:通過 TorchServe 和 Nvidia Triton 提供服務(wù)。

OpenVINO 長期以來一直為 Triton Serving 提供后端,我們最近與 Nvidia 工程師合作,重新設(shè)計了它的附加功能,例如支持動態(tài)輸入。您可以在我們的博客文章中查看有關(guān)如何在 Triton 中使用 OpenVINO 的更多詳細(xì)信息。

服務(wù)功能的另一個重要補(bǔ)充是通過使用 torch.compile 的 OpenVINO 后端,使用 TorchServe 為模型提供服務(wù)。在引入 torch.compile 之后,TorchServe 引入了通過不同后端加速服務(wù)的功能。這正是OpenVINO現(xiàn)在發(fā)生的事情,我們提供了在TorchServe中指定OpenVINO作為后端的功能。有關(guān)更多詳細(xì)信息,您可以查看示例,這些示例非常簡單且不言自明。

性能提升

我們?nèi)匀粚W⒂?AI 模型的性能表現(xiàn)。盡管 AIPC 的出現(xiàn),LLM 在客戶端的采用仍然對底層硬件產(chǎn)生壓力。我們的優(yōu)化工作覆蓋了不同的支持目標(biāo),包括 CPU、GPU 和 NPU。

AIPC與傳統(tǒng)PC的不同在于它集成了專門的硬件加速器,隨著AI應(yīng)用場景從云端轉(zhuǎn)向個人計算領(lǐng)域,其重要性日益增加。英特爾酷睿Ultra處理器提供了更強(qiáng)大的GPU以及NPU。從性能和效率的角度來看,這些都讓加速解決方案更具吸引力。

如果平臺性能不足,我們始終能夠通過添加我們的ARC系列獨立顯卡進(jìn)行加速,來實現(xiàn)進(jìn)一步的性能提升。為了幫助實現(xiàn)LLM部署特性,我們一直專注于加速GPU的LLM的推理性能,覆蓋了集成顯卡和獨立顯卡。將負(fù)載卸載到 GPU 不僅是因為它的特性適宜處理這類工作負(fù)載,還因為需要保持 CPU 可用。因此,推理期間的 CPU 負(fù)載對于此類情況至關(guān)重要。我們一直在努力優(yōu)化 CPU 端負(fù)載并減少主機(jī)代碼延遲至少一半。這也使我們能夠?qū)崿F(xiàn)更好的 GPU 特性,因為內(nèi)核調(diào)度現(xiàn)在更加高效。

此外,我們還致力于少數(shù)GPU基本操作的更高效實現(xiàn),包括 Scaled Dot Product Attention 和 Positional Embeddings 的融合版本。這不僅改善了延遲,還減少了推理期間的主機(jī)開銷和整體內(nèi)存消耗,這對于在筆記本電腦上運行 LLM 等場景至關(guān)重要。

獨立顯卡上一些LLM的延遲已經(jīng)降低,我們正與oneDNN團(tuán)隊的合作伙伴一起,繼續(xù)我們的優(yōu)化之旅。

雖然我們經(jīng)常談?wù)?GPU,但 CPU 等其他目標(biāo)設(shè)備的性能也有所改進(jìn)。在CPU上,第二個分詞延遲的性能得到了明顯改善,以及在基于AVX2(13代英特爾酷睿處理器)和AVX512(第三代至強(qiáng)可擴(kuò)展處理器)的CPU平臺上,F(xiàn)P16權(quán)重的LLM的內(nèi)存占用情況也得到了明顯改善,尤其是在小批量的情況下。更不用說,我們還在 Optimum-Intel 集成中持續(xù)增加了對新模型的覆蓋。

新模型和notebooks示例

在每次發(fā)布的新版本中,我們都會繼續(xù)擴(kuò)大對新模型的支持,以及增加新的Notebook代碼示例,展示如何在這些使用用例中利用OpenVINO。對于新模型,我們增加了對TensorFlow*Hub的mil-nce和openimages-v4-sd-mobilent-v2的支持,以及Phi-3-mini:這是一個AI模型家族,利用小語言模型的力量實現(xiàn)更快、更準(zhǔn)確和更具成本效益的文本處理。

Notebooks代碼示例可以成為用戶學(xué)習(xí)和體驗的寶貴內(nèi)容。在這個版本中,我們添加了幾個新的Notebooks。最值得注意的是用于動畫圖像的DynamiCrafter notebook,用于轉(zhuǎn)換和優(yōu)化YOLOv10為OpenVINO的notebook,以及在現(xiàn)有LLMChatbot notebook中添加Phi-3-mini模型,以便用戶可以嘗試更多的LLM模型。

總結(jié)

在此,我們興奮地宣布OpenVINO 2024.2最新版本現(xiàn)已開放下載!

我們的團(tuán)隊一直致力于各項新特性和性能提升的研發(fā)。一如既往,我們努力不斷優(yōu)化用戶體驗,拓寬OpenVINO的功能邊界。我們的開發(fā)路線圖上已經(jīng)規(guī)劃了下一版本的諸多特性,迫不及待在未來與您分享。感謝大家的支持與厚愛!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 英特爾
    +關(guān)注

    關(guān)注

    61

    文章

    9964

    瀏覽量

    171773
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84689
  • LLM
    LLM
    +關(guān)注

    關(guān)注

    0

    文章

    288

    瀏覽量

    335
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    202

原文標(biāo)題:OpenVINO? 2024.2 發(fā)布--推出LLM專屬API !服務(wù)持續(xù)增強(qiáng),提升AI生成新境界

文章出處:【微信號:英特爾中國,微信公眾號:英特爾中國】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    OpenVINO2022版本Python API演示

    OpenVINO2022 版本的SDK在使用比之前版本簡單,而且功能比較豐富,特別是支持動態(tài)輸入設(shè)置,一次可以推理多張圖像;
    的頭像 發(fā)表于 07-22 09:18 ?2275次閱讀
    <b class='flag-5'>OpenVINO</b>2022<b class='flag-5'>版本</b>Python API演示

    C語言要點解析PDF下載

    C語言要點解析(含便于理解的備注)C語言要點解析(含便于理解的備注).pdf 2016-10-27 17:59 上傳 點擊文件名下載附件 1.08 MB, 下載次數(shù): 8
    發(fā)表于 07-19 09:15

    對視頻圖像及其顯示的知識點解析,看完你就懂了

    對視頻圖像及其顯示的知識點解析,看完你就懂了
    發(fā)表于 06-04 06:59

    SPI_NSS的知識點解析,絕對實用

    SPI_NSS的知識點解析,絕對實用
    發(fā)表于 02-17 08:08

    subdev/video列表的知識點解析,絕對實用

    subdev/video列表的知識點解析,絕對實用
    發(fā)表于 03-10 06:25

    為什么無法使用PyPI安裝OpenVINO trade開發(fā)工具2022.1版本?

    已安裝OpenVINO?開發(fā)工具 2022.1 版,采用 PyPI: pip install openvino-dev==2022.1.0 遇到錯誤消息: ERROR: \"Could
    發(fā)表于 08-15 07:58

    WiMAX技術(shù)的特點解析

    WiMAX技術(shù)的特點解析 802.16標(biāo)準(zhǔn)是為在各種傳播環(huán)境(包括視距、近視距和非視距)中獲得最優(yōu)性能而設(shè)計的。即
    發(fā)表于 05-21 01:18 ?599次閱讀

    Android開發(fā)中難點解析及幫助

    根本說講述的是Android 開發(fā)中難點解析及幫助,希望對各位工程師朋友有所幫助。
    發(fā)表于 09-14 20:24 ?1次下載

    comsol5.3版本亮點_comsol5.3安裝_comsol5.3安裝教程

    COMSOL Multiphysics 5.3 版本與 5.2a 和更低的版本相比,性能得到了大幅提升,下面我們將來詳細(xì)comsol 5.3版本亮點、comsol5.3破解安裝、com
    的頭像 發(fā)表于 12-21 16:48 ?5.8w次閱讀
    comsol5.3<b class='flag-5'>版本</b><b class='flag-5'>亮點</b>_comsol5.3安裝_comsol5.3安裝教程

    iPhoneX亮點解

    iPhone X亮點解析 原來9688元買到了這些
    的頭像 發(fā)表于 01-21 11:22 ?3659次閱讀

    OPPOReno亮點解析

    4月10日,OPPO正式發(fā)布了旗下全新系列新機(jī)OPPO Reno,亮點頗多。
    的頭像 發(fā)表于 04-11 09:25 ?2719次閱讀

    OpenVINO場景文字檢測與文字識別教程

    OpenVINO是英特爾推出的深度學(xué)習(xí)模型部署框架,當(dāng)前最新版本OpenVINO2023版本OpenVINO2023自帶各種常見視覺任務(wù)
    的頭像 發(fā)表于 09-24 15:31 ?1604次閱讀
    <b class='flag-5'>OpenVINO</b>場景文字檢測與文字識別教程

    三行代碼完成生成式AI部署

    OpenVINO2024.2版本跟之前版本最大的不同是OpenVINO2024.2分為兩個安裝包分別是基礎(chǔ)包與生成式AI支持包,新發(fā)布的GenAI開發(fā)包支持C++與Python語言接口
    的頭像 發(fā)表于 08-30 16:49 ?421次閱讀
    三行代碼完成生成式AI部署

    AMD Vitis Unified Software Platform 2024.2發(fā)布

    近日,全新 AMD Vitis Unified Software Platform 2024.2 版本推出。
    的頭像 發(fā)表于 11-27 15:47 ?232次閱讀

    全新AMD Vitis統(tǒng)一軟件平臺2024.2版本發(fā)布

    全新 AMD Vitis 統(tǒng)一軟件平臺 2024.2 版本已于近期推出。
    的頭像 發(fā)表于 12-11 15:06 ?292次閱讀