精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用OpenVINO GenAI API的輕量級生成式AI

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

隨著 ChatGPT 等聊天機器人的風暴席卷全球,生成式預訓練 Transformers (GPT) 在開發者中正在成為家喻戶曉的新名字。生成式 AI(GenAI) 的發展,尤其是大語言模型和聊天機器人的進步很快、變化不斷,很難預測接下來會有什么突破,開發者應該關注什么。我們知道生成式AI將繼續存在,開發人員希望看到在本地開發、維護和部署 AI 應用程序的更簡潔明了的方法。

盡管生成式AI 令人興奮,但對這些模型運行推理仍面臨重大挑戰,尤其是在邊緣設備和 AI PC 上。

OpenVINO

英特爾硬件上當前最先進的生成式AI

如今,為了在 Intel 硬件上獲得 生成式AI 的最佳性能,開發人員可以使用 Optimum Intel 和 OpenVINO 后端優化的 Hugging Face 流水線來運行 生成式AI 模型。OpenVINO 可以在 CPUGPU或NPU 上啟用優化,這些可以顯著減少延遲并提高運行效率。此外,我們可以利用量化和權重壓縮等模型優化技術來最小化內存占用(減少 2-3 倍的內存使用量)。這通常是模型部署中的主要瓶頸,因為客戶端或邊緣設備僅配備 32GB 或更少的 內存。

圖 1:借助新的 OpenVINO 生成式AI API (GenAI API),我們可以在代碼編寫方面做得更好!如上圖所示,推理代碼僅減少到3行代碼!這種新的工作流程為開發者提供了一個低得多的的學習曲線,從而開始生成式AI 應用程序的開發之旅。

不僅代碼行數大大減少了,而且安裝的依賴項只有寥寥幾個,從而形成了一個簡潔緊湊的環境,運行生成式AI 推理僅需216Mb!

圖 2:使用 OpenVINO GenAI API 部署解決方案不僅可以減少磁盤使用量,還可以簡化構建生成式 AI 應用的依賴性要求。這通常是開發人員開始維護 生成式AI 應用程序時面臨的最大挑戰之一。

OpenVINO生成式AI API Optimum-Intel
附加的依賴項 非常輕 許多依賴項,包括 PyTorch 等
推理代碼 非常輕的編碼 基于Hugging Face
API Python, C++ Python
模型支持 大語言模型(其它生成式模型即將推出) 廣泛的模型集
采樣方法 貪心、波束搜索以及多項式解碼 全部
并行生成優化 是的* (比如 Continues-batching, Paged-attention…) 不支持
分詞 通過 OpenVINO tokenizer模型完成 通過 Hugging Face tokenizer 完成(僅針對Python)
*特性持續開發中

表 1:OpenVINO GenAI API 與 Optimum-Intel 軟件包的比較

與 Optimum-Intel 相比,GenAI API 僅集成了最常用的采樣方法,包括貪心和波束搜索。同時,開發者還可以通過多項式解碼 來自定義采樣參數,例如 Top-k、Temperature等。

考慮到多用戶的場景,GenAI API 僅原生實現了 Continues-batching、Paged-attention。在文本生成過程中,這些技術可以幫助提高性能并優化在進行多批次推理時的內存消耗。

由于 Hugging Face 的分詞器只能與 Python 配合使用,為了與 OpenVINO C++ 運行時的輸入/輸出張量格式保持一致,GenAI API 將分別通過推理 2 個 OpenVINO 模型來對輸入文本分詞并對輸出解分詞。在這種方法之前,開發人員可以使用 Optimum-Intel CLI 將 Hugging Face 的分詞器轉換為 OpenVINO IR 模型。

到目前為止,我們已經強調了使用新的 OpenVINO GenAI API 的一些關鍵優勢。在下一節中,我們將更深入地了解如何逐步運行演示。

OpenVINO

使用 OpenVINO GenAI API 的輕量級生成式AI

安裝

設置新的 OpenVINO GenAI API 以在生成式 AI 和 LLM 上運行推理,設計簡單明了。安裝過程可以通過 PyPI 或下載存檔來執行,讓您可以靈活地選擇最適合您需求的方法。例如,您可以使用以下內容進行 PyPI 安裝,該安裝包含在我們最新的 OpenVINO 2024.2 版本中:

python-mpipinstallopenvino-genai

關于安裝的更多信息可以在 https://docs.openvino.ai/2024/get-started/install-openvino/install-openvino-genai.html 找到。

運行推理

安裝 OpenVINO 后,您可以開始在 GenAI 和 LLM 模型上運行推理。通過利用此 API,您可以加載模型,向其傳遞上下文,并僅使用幾行代碼接收響應。

在內部,OpenVINO 處理輸入文本的標記化,在您選擇的設備上執行生成循環,并提供最終響應。讓我們根據 openvino.genai(https://github.com/openvinotoolkit/openvino.genai/tree/master/samples/cpp/chat_sample) 存儲庫中提供的chat_sample(https://github.com/openvinotoolkit/openvino.genai/tree/master/samples/cpp/chat_sample)范例,在 Python 和 C++ 中逐步探索這個過程。

第一步: 必須使用 Hugging Face Optimum-Intel(在本例中,我們使用聊天調優的 Tiny Llama)下載 LLM 模型并將其導出為 OpenVINO IR 格式。對于此步驟,建議創建一個單獨的虛擬環境,以避免任何依賴項沖突。例如

python-mvenvopenvino_venv

激活它,

openvino_venvScriptactivate

并安裝依賴項,這是模型導出過程所必需的。這些要求可在 openvino.genai 倉庫中找到

python-mpipinstall–upgrade-strategyeager-rrequirements.txt

要下載和導出模型,請使用以下命令。

optimum-cliexportopenvino--trust-remote-code--
modelTinyLlama/TinyLlama-1.1B-Chat-v1.0TinyLlama-1.1B-Chat-v1.0

為了提高 LLM 推理期間的性能,我們建議對模型權重使用較低的精度,例如 INT4。在模型導出過程中,您可以使用神經網絡壓縮框架 (NNCF) 壓縮權重,如下所示。

optimum-cliexportopenvino--trust-remote-code--
modelTinyLlama/TinyLlama-1.1B-Chat-v1.0-–weight-formatint4TinyLlama-
1.1B-Chat-v1.0

此步驟中安裝的虛擬環境和依賴項不再需要,因為模型只需導出一次。請隨意從磁盤中刪除此虛擬環境。

第二步:通過 Python 或 C++ API 運行LLM文本生成的推理

通過新的 Python API 設置流水線:

pipe=ov_genai.LLMPipeline(model_path,"CPU")
print(pipe.generate("TheSunisyellowbecause"))

通過新的 C++ API 設置流水線:

intmain(intargc,char*argv[]){
std::stringmodel_path=argv[1];
ov::LLMPipelinepipe(model_path,"CPU");//targetdeviceisCPU
std::cout<

如上所示,構建 LLM 生成流水線現在只需要幾行代碼。這種簡單性是由于從 Hugging Face Optimum-Intel 導出的模型已經包含執行所需的所有信息,包括 tokenizer/detokenizer 和生成配置,確保結果與 Hugging Face 生成一致。我們提供 C++ 和 Python API 來運行 LLM,對應用程序的依賴性和添加性最少。

提供的代碼在 CPU 上運行,但通過將設備名稱替換為“GPU”,可以很容易地使其在 GPU 上運行:

pipe=ov_genai.LLMPipeline(model_path,"GPU")

為了創建更具交互性的用戶界面,我們添加了對流式模型輸出標記的支持,以便在模型生成輸出詞后立即提供輸出詞,也可以通過從流處理器返回 True 來隨時停止令牌生成。

此外,有狀態模型(https://docs.openvino.ai/2024/openvino-workflow/running-inference/stateful-models.html)在內部運行,用于推理文本生成,從而加快生成速度并減少由于數據表示轉換而產生的開銷。因此,在輸入之間保持 KV緩存被證明可能是有益的。用針對聊天的特定方法 start_chat 和 finish_chat標記對話會話來加以實現,如以下示例所示。

Python:

importargparse
importopenvino_genai




defstreamer(subword):
print(subword,end='',flush=True)
#Returnflagcorrespodswhethergenerationshouldbestopped.
#Falsemeanscontinuegeneration.
returnFalse
model_path=TinyLlama-1.1B-Chat-v1.0


device='CPU'#GPUcanbeusedaswell
pipe=openvino_genai.LLMPipeline(args.model_dir,device)


config=openvino_genai.GenerationConfig()
config.max_new_tokens=100


pipe.start_chat()
whileTrue:
prompt=input('question:
')
if'Stop!'==prompt:
break
pipe.generate(prompt,config,streamer)


print('
----------')
pipe.finish_chat()

C++:

#include"openvino/genai/llm_pipeline.hpp"


intmain(intargc,char*argv[])try{
if(2!=argc){
throwstd::runtime_error(std::string{"Usage:"}+argv[0]+"");
}
std::stringprompt;
std::stringmodel_path=argv[1];


std::stringdevice="CPU";//GPUcanbeusedaswell
ov::LLMPipelinepipe(model_path,"CPU");

ov::GenerationConfigconfig;
config.max_new_tokens=100;
std::functionstreamer=[](std::stringword){
std::cout<

最后,以下是我們在 AI PC 上運行上述示例時得到的結果:

圖 3:在 AI PC 上本地運行的基于 Llama 的聊天機器人的現場演示

總而言之 ,GenAI API 包括以下 API,可實現輕量級部署和代碼編寫:

generation_config – 用于啟用生成過程自定義的配置,例如生成文本的最大長度、是否忽略句尾標記以及解碼策略(貪心、波束搜索或多項式采樣)的細節。

llm_pipeline - 提供用于文本生成的類和實用程序,包括用于處理輸入、生成文本和使用可配置選項管理輸出的流水線。

streamer_base - 用于創建 Streamer 的抽象基類。

tokenizer - 用于文本編碼和解碼的 Tokenizer 類。

visibility - 控制 生成式AI 庫的可見性。

OpenVINO

總結

最新 OpenVINO 2024.2 版本中的新 OpenVINO 生成式AI API 提供了顯著的優勢和功能,使其成為開發人員創建 生成式AI 和大語言模型應用程序的強大工具。憑借其簡單的設置過程和最小的依賴性,該 API 降低了代碼復雜性,使您能夠僅使用幾行代碼快速構建高效的 生成式 AI 推理流水線。此外,對流式模型輸出分詞的支持有助于創建交互式用戶界面,從而增強用戶體驗。

我們歡迎您試用新的 生成式AI API,并在你的項目中探索更多功能!我們可以一起突破生成式AI通過開源可以實現的界限!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 英特爾
    +關注

    關注

    60

    文章

    9722

    瀏覽量

    170503
  • ChatGPT
    +關注

    關注

    28

    文章

    1515

    瀏覽量

    6716
  • OpenVINO
    +關注

    關注

    0

    文章

    73

    瀏覽量

    130

原文標題:如何使用 OpenVINO? 生成式AI API (GenAI API) 以更少的代碼構建更快的生成式AI 應用

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

收藏 人收藏

    評論

    相關推薦

    如何使用OpenVINO C++ API部署FastSAM模型

    象的位置和邊界。本文將介紹如何使用 OpenVINO C++ API 部署 FastSAM 模型,以實現快速高效的語義分割。在前文中我們發表了《基于 OpenVINO Python API
    的頭像 發表于 11-17 09:53 ?703次閱讀
    如何使用<b class='flag-5'>OpenVINO</b> C++ <b class='flag-5'>API</b>部署FastSAM模型

    創建51輕量級操作系統

    創建51輕量級操作系統
    發表于 09-29 09:58

    10個輕量級框架

    這些輕量級框架使用HTML5和CSS3標準來幫助您快速開發跨平臺的Web移動應用和網站。
    發表于 07-17 08:25

    輕量級Agent平臺怎么測試?

    跨平臺的語言成功應用于嵌入設備中,同時也方便了嵌入環境下的輕量Agent(Lightweight Agent)的實現。本文在ARM嵌入環境下測試輕量級Agent平臺。
    發表于 09-27 06:26

    輕量級深度學習網絡是什么

    輕量級深度學習網絡概覽
    發表于 04-23 14:53

    輕量級的ui框架如何去制作

    原創分享:自制輕量級單片機UI框架框架元素用戶接口代碼開源平時常看csdn,但是從來沒有自己寫過。正好這幾天需要用單片機做一個簡易的ui界面,于是自己寫了一個輕量級的ui框架。發個csdn分享給大家
    發表于 07-14 07:39

    Dllite_micro (輕量級AI 推理框架)

    DLLite-Micro 是一個輕量級AI 推理框架,可以為 OpenHarmony OS 的輕量設備和小型設備提供深度模型的推理能力DLLite-Micro 向開發者提供清晰、易上手的北向接口
    發表于 08-05 11:40

    介紹一款輕量級ARM AI智能網關產品

    用戶需求國內某工業網關設備制造商計劃推出一款輕量級AI智能網關產品,可應用于工業設備監控、工業現場動環監控、遠程巡檢等多種場景。在主控平臺選型階段,該用戶主要面臨高算力和功能接口豐富的疊加需求。其
    發表于 06-06 16:39

    谷歌開源TFGAN輕量級的工具庫 目的是讓訓練和評估GAN變得更加簡單

    三年前,蒙特利爾大學 Ian Goodfellow 等學者提出「生成對抗網絡」(Generative Adversarial Networks,GANs)的概念,并逐漸引起 AI 業內人士的注意
    的頭像 發表于 01-02 15:31 ?4801次閱讀

    輕量級AI智能網關產品概述及應用優勢

    國內某工業網關設備制造商計劃推出一款輕量級AI智能網關產品,可應用于工業設備監控、工業現場動環監控、遠程巡檢等多種場景。在主控平臺選型階段,該用戶主要面臨高算力和功能接口豐富的疊加需求。其主控不但
    的頭像 發表于 05-31 12:05 ?1904次閱讀
    <b class='flag-5'>輕量級</b><b class='flag-5'>AI</b>智能網關產品概述及應用優勢

    測評分享 | 如何在先楫HPM6750上運行輕量級AI推理框架TinyMaix

    本期內容由先楫開發者社區大咖@xusiwei1236分享基于先楫HPM6750的輕量級AI推理框架,趕緊來瞧瞧~一、TinyMaix是什么?TinyMaix是國內sipeed團隊開發一個輕量級
    的頭像 發表于 12-12 17:57 ?1384次閱讀
    測評分享 | 如何在先楫HPM6750上運行<b class='flag-5'>輕量級</b><b class='flag-5'>AI</b>推理框架TinyMaix

    輕量級數據庫有哪些

    數據庫系統由于其小巧、快速、易用等優勢,越來越受到人們的青睞。那么,輕量級數據庫有哪些?本文將為大家介紹幾種常見的輕量級數據庫系統。 1. SQLite SQLite被廣泛應用于各種移動應用程序、Web應用程序和嵌入系統中。它
    的頭像 發表于 08-28 16:41 ?5604次閱讀

    OpenVINO? C# API詳解與演示

    OpenVINO C# API 支持 NuGet 程序包安裝方式,這與 OpenVINO C++ 庫的安裝過程相比,更加簡單。如果使用 Visual Studio 開發 AI 項目,則
    的頭像 發表于 10-13 16:39 ?584次閱讀
    <b class='flag-5'>OpenVINO</b>?  C# <b class='flag-5'>API</b>詳解與演示

    2024年科技爆點:GenAI加入芯片設計與驗證

    Gartner 2023 年新興技術成熟度曲線顯示,生成AIGenAI)在不到一年的時間里就達到期望膨脹期。
    的頭像 發表于 03-26 10:36 ?403次閱讀
    2024年科技爆點:<b class='flag-5'>GenAI</b>加入芯片設計與驗證

    三行代碼完成生成AI部署

    OpenVINO2024.2版本跟之前版本最大的不同是OpenVINO2024.2分為兩個安裝包分別是基礎包與生成AI支持包,新發布的
    的頭像 發表于 08-30 16:49 ?127次閱讀
    三行代碼完成<b class='flag-5'>生成</b><b class='flag-5'>式</b><b class='flag-5'>AI</b>部署