<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 智能計算 > 設計應用 > 用 OpenVINO? GenAI解鎖 LLM 極速推理:推測式解碼讓 AI 爆發(fā)潛能

用 OpenVINO? GenAI解鎖 LLM 極速推理:推測式解碼讓 AI 爆發(fā)潛能

作者:武卓 時(shí)間:2025-03-26 來(lái)源:OpenVINO 中文社區 收藏

隨著(zhù) DeepSeek、 GPT 和 Llama 等大語(yǔ)言模型(LLMs)不斷推動(dòng)人工智能的邊界,它們在高效部署方面也帶來(lái)了重大挑戰。這些模型在生成類(lèi)似人類(lèi)的文本方面具有革命性,但每生成一個(gè) token 都需要耗費巨大的計算資源。這不僅導致成本上升、能耗增加,還使響應速度變慢。在實(shí)時(shí)應用場(chǎng)景,如聊天機器人、虛擬助手和創(chuàng )意內容生成工具等場(chǎng)景中,這些挑戰尤為突出。

本文引用地址:http://dyxdggzs.com/article/202503/468645.htm

本文將探討如何利用 ? 的推測式解碼技術(shù)使這一變革性創(chuàng )新成為現實(shí)。借助于簡(jiǎn)化開(kāi)發(fā)和優(yōu)化硬件利用率的工具,? 使開(kāi)發(fā)者能夠在各種實(shí)時(shí)和資源受限的場(chǎng)景中部署高性能的 LLMs。無(wú)論您是在構建響應迅速的聊天機器人、高效的虛擬助手,還是具備可擴展性的創(chuàng )意應用,? 正在重新定義 AI 的可能性。

1. 性能瓶頸

想象這樣一個(gè)場(chǎng)景:聊天機器人響應緩慢,或者創(chuàng )意寫(xiě)作助手難以跟上用戶(hù)的思維節奏。這些并非假設的問(wèn)題,而是當今 AI 開(kāi)發(fā)者和用戶(hù)面臨的現實(shí)挑戰。傳統的大語(yǔ)言模型 (LLMs) 方法按序處理 token,導致計算瓶頸,進(jìn)而影響用戶(hù)體驗。當在計算資源受限的硬件上部署大語(yǔ)言模型,同時(shí)又要保持高性能時(shí),這一問(wèn)題變得更加嚴峻。

2. 推測式解碼:一項顛覆性的解決方案

推測式解碼(Speculative Decoding)作為一種突破性技術(shù),從根本上改變了大語(yǔ)言模型(LLM)的方式。通過(guò)引入一個(gè)較小的草稿模型(draft model)與完整的大模型(main model)協(xié)同工作,推測式解碼大幅加速了 token 生成。該方法最早在論文 “Fast Inference from Transformers via Speculative Decoding”(arXiv:2211.17192)中提出,其核心機制是讓草稿模型提前預測多個(gè) token,并由主模型定期驗證這些預測是否符合預期,必要時(shí)進(jìn)行修正。這種迭代式方法減少了生成 token 所需的完整計算次數,從而在實(shí)時(shí)應用中實(shí)現顯著(zhù)的加速效果。

● Fast Inference from Transformers via Speculative Decoding https://arxiv.org/abs/2211.17192

可以把它類(lèi)比成一個(gè)協(xié)同寫(xiě)作的過(guò)程:草稿模型快速提出建議,而主模型則進(jìn)行仔細審核并優(yōu)化。主模型會(huì )評估這些建議的相關(guān)性和質(zhì)量,并在必要時(shí)進(jìn)行調整。這種協(xié)作方式確保了生成內容的高質(zhì)量,同時(shí)大幅減少主模型從零生成每個(gè) token 的計算負擔。通過(guò)利用草稿模型的高速度和主模型的高準確性,整體推理過(guò)程變得更快且更加高效。

這種迭代式的方法通過(guò)將大部分 token 生成任務(wù)交給草稿模型處理,從而顯著(zhù)減輕主模型的計算負擔。在 LLM 處理中,token 指的是文本的基本單位,如單詞或子詞。推測式解碼通過(guò)同時(shí)使用兩個(gè)模型來(lái)加速 token 生成:

● 輔助模型(草稿模型):快速生成 token 候選項。

● 主模型:驗證并優(yōu)化這些候選項,以確保生成的文本質(zhì)量。

這一方法不僅提高了推理速度,還優(yōu)化了計算資源的利用,使 LLM 部署在計算受限環(huán)境中更加可行。

推測式解碼能夠快速生成高準確度的響應,使其成為對時(shí)延敏感場(chǎng)景的顛覆性技術(shù),尤其適用于以下應用:

● 實(shí)時(shí)聊天機器人:提供流暢的客戶(hù)交互體驗。

● 端側 AI 助手:適用于計算資源受限的環(huán)境。

● 大規模應用的動(dòng)態(tài)內容生成:支持高效且可擴展的內容創(chuàng )作。

3.  OpenVINO? :從創(chuàng )新到落地

盡管推測式解碼的概念極具潛力,但要高效實(shí)現這一技術(shù)并不簡(jiǎn)單。需要協(xié)調預測 token 生成、驗證以及模型優(yōu)化,并確保在不同硬件平臺上高效運行,這對開(kāi)發(fā)者提出了較高的要求。這正是 OpenVINO? API 發(fā)揮作用的地方。

OpenVINO? GenAI 簡(jiǎn)化 AI 開(kāi)發(fā),提供以下關(guān)鍵優(yōu)勢:

● 預優(yōu)化的生成式 AI 模型,簡(jiǎn)化部署,降低開(kāi)發(fā)復雜度。

● 針對 Intel? CPU、NPU 和 GPU 的硬件加速,提升推理性能。

● Optimum CLI 工具,支持模型的便捷導出與優(yōu)化。

通過(guò)無(wú)縫集成推測式解碼,OpenVINO? 讓開(kāi)發(fā)者能夠專(zhuān)注于構建高效、優(yōu)質(zhì)的 AI 體驗,同時(shí)最大程度降低計算負擔。在理想情況下,草稿模型的預測完全符合主模型的預期,使得驗證過(guò)程可以在單次請求內完成。這種協(xié)作方式不僅提升了性能,還有效減少了資源消耗,為 AI 推理帶來(lái)全新優(yōu)化方案。

步驟1: 克隆 OpenVINO? GenAI 倉庫

要使用 OpenVINO? GenAI API 實(shí)現推測式解碼,首先需要克隆 openvino.genai GitHub 倉庫。該倉庫包含推測式解碼的示例實(shí)現,支持 Python 和 C++,可幫助開(kāi)發(fā)者快速上手并部署高效的 LLM 推理方案。

● openvino.genai GitHub 倉庫 https://github.com/openvinotoolkit/openvino.genai/blob/master/samples/python/text_generation/prompt_lookup_decoding_lm.py

圖片

克隆倉庫的步驟:

1. 使用以下命令克隆OpenVINO? GenAI 倉庫:

git clone 
https://github.com/openvinotoolkit/openvino.genai.git
cd openvino.genai/samples/

2. 查看Python或C++代碼:

● Python路徑:

cd python/speculative_decoding_lm/

● C++路徑:

cd python/speculative_decoding_lm/

步驟2: 安裝依賴(lài)項(Python)

要運行 OpenVINO? GenAI的推測式解碼示例,需要配置環(huán)境并安裝必要的工具、庫和相關(guān)依賴(lài)項。請按照以下步驟正確安裝所需組件。

1.創(chuàng )建 Python 虛擬環(huán)境

虛擬環(huán)境可以隔離項目依賴(lài),確保一個(gè)干凈、無(wú)沖突的開(kāi)發(fā)環(huán)境。使用以下命令創(chuàng )建并激活虛擬環(huán)境:

python3 -m venv openvino_env
source openvino_env/bin/activate  # For Windows: openvino_envScriptsactivate

2.安裝必要的庫

為了將模型導出為 OpenVINO? 兼容格式,需要安裝相關(guān)依賴(lài)項。運行以下命令安裝必要的庫:

pip install --upgrade-strategy eager -r ../../export-requirements.txt

此命令確保所有必需的庫都已安裝并可正常使用,包括 OpenVINO? GenAI、Hugging Face 工具 和 Optimum CLI。這些組件將支持推測式解碼 的實(shí)現,使開(kāi)發(fā)者能夠高效導出和優(yōu)化模型,從而加速 LLM 推理過(guò)程。

步驟3: 使用 Optimum CLI 導出模型

為了啟用推測式解碼,需要準備草稿模型(Draft Model)和主模型(Main Model),并將它們導出為OpenVINO 兼容格式。這樣可以確保模型經(jīng)過(guò)優(yōu)化,以便在Intel?硬件上高效運行。

1. 導出 Dolly v2–3B(草稿模型)

Dolly v2–3B 將用作推測式解碼過(guò)程中的草稿模型。請使用以下命令將其導出為 OpenVINO? 兼容格式:

optimum-cli export openvino --trust-remote-code --weight-format fp16 --model databricks/dolly-v2-3b dolly-v2-3b

在導出過(guò)程中,將執行以下關(guān)鍵步驟:

● 從 Hugging Face 下載模型和分詞器:自動(dòng)獲取 Dolly v2–3B 及其對應的 tokenizer。

● 轉換為 OpenVINO? 的中間表示(IR)格式:模型被優(yōu)化為 OpenVINO? 兼容的推理格式,以提高執行效率。

● 降精度至 FP16:模型的精度會(huì )被降低為 FP16,以?xún)?yōu)化計算性能,減少內存占用,并在 Intel 硬件(CPU、GPU、NPU)上獲得更快的推理速度。

2. 導出 Dolly v2–7B(主模型)

Dolly v2–7B 作為主模型(Main Model),負責驗證并優(yōu)化草稿模型生成的token,確保最終輸出的質(zhì)量和準確性。請使用以下命令將其導出為OpenVINO? 兼容格式:

optimum-cli export openvino --trust-remote-code --weight-format fp16 --model databricks/dolly-v2-7b dolly-v2-7b

--trust-remote-code 標志確保在導出過(guò)程中包含模型的自定義實(shí)現,使其能夠正確適配 OpenVINO? 推理管道。只有在信任模型來(lái)源時(shí),才應啟用此標志,以避免潛在的安全風(fēng)險。導出的模型將被轉換為OpenVINO? 的中間表示(IR)格式,并針對Intel硬件進(jìn)行優(yōu)化,以提升推理效率和計算性能。

如果小伙伴不方便從 HuggingFace 的網(wǎng)站直接下載模型的,也可以利用以下命令,直接從魔搭社區OpenVINO? 模型專(zhuān)區下載由 OpenVINO? 預優(yōu)化后的模型:

modelscope download --model OpenVINO/dolly-v2-3b-fp16-ov
modelscope download --model OpenVINO/dolly-v2-7b-fp16-ov

● OpenVINO? 模型專(zhuān)區https://www.modelscope.cn/organization/OpenVINO

步驟4: 在 Python 中運行推測式解碼流程

在成功導出草稿模型(Draft Model)和主模型(Main Model)后,下一步是在 Python 中運行推測式解碼流程,以演示 OpenVINO? 如何利用兩個(gè)模型協(xié)同加速 token 生成。

1. 安裝部署依賴(lài)包

在運行推測式解碼流水線(xiàn)之前,需要安裝必要的運行時(shí)依賴(lài)。請執行以下命令:

pip install -r ../../deployment-requirements.txt

2. 配置并運行推測式解碼流水線(xiàn)

OpenVINO? 提供的 speculative_decoding_lm.py 腳本可用于運行推測式解碼流程。請使用以下命令執行該腳本:

python speculative_decoding_lm.py dolly-v2-7b dolly-v2-3b "Your input prompt here"

在運行推測式解碼流水線(xiàn)時(shí),需要提供以下參數:

● dolly-v2-7b:主模型(Main Model)的路徑,用于驗證和優(yōu)化 token 結果。

● dolly-v2-3b:草稿模型(Draft Model)的路徑,用于快速生成 token 候選項。

● "Your input prompt here":輸入提示詞,模型將根據該文本生成響應。

推測式解碼流水線(xiàn)代碼片段

推測式解碼流水線(xiàn)的配置確保了最佳性能和高準確度。其中,SchedulerConfig 負責定義token 緩存策略以及草稿模型生成的候選 token 數量。

# Specify hardware devices for each model 
main_device = 'CPU' # Optionally, 'GPU' can be used 
draft_device = 'CPU'
 
scheduler_config = openvino_genai.SchedulerConfig()
scheduler_config.cache_size = 2
scheduler_config.num_assistant_tokens = 5
 
draft_model = openvino_genai.draft_model(args.draft_model_dir, draft_device)
pipe = openvino_genai.LLMPipeline(
    args.model_dir, main_device, scheduler_config=scheduler_config, draft_model=draft_model
)
 
config = openvino_genai.GenerationConfig()
config.max_new_tokens = 100
config.num_assistant_tokens = 5
 
pipe.generate(args.prompt, config, streamer)

在推測式解碼過(guò)程中,以下參數對性能優(yōu)化至關(guān)重要:

● cache_size緩存大?。褐付ň彺嬷写鎯Φ膖oken 數量,以便在推測式解碼過(guò)程中復用,減少重復計算。

● num_assistant_tokens:決定草稿模型在每次迭代中生成的 token 候選項 數量。

● assistant_confidence_threshold (可選): 設置一個(gè)置信度閾值,當草稿模型的預測 token 置信度高于此值時(shí),直接接受該 token,而無(wú)需主模型進(jìn)一步驗證。

● main_device 以及draft_device:定義主模型和草稿模型運行的計算設備,可在 CPU 或 GPU 上執行推理。

步驟5: 使用 C++ 構建推測式解碼項目

對于偏好 C++的開(kāi)發(fā)者,OpenVINO? GenAI API 提供了 C++ 版本的推測式解碼實(shí)現,以提高推理性能。

環(huán)境準備:

要設置和構建該項目,可以參考該篇博客中關(guān)于構建OpenVINO GenAI C++應用的通用步驟。這些說(shuō)明涵蓋了常見(jiàn)的設置流程,例如:安裝必需的工具(CMake、Visual Studio、Python),運行 setupvars.bat 文件,導航到適當的目錄。

● How to Build OpenVINO? GenAI APP in C++

https://medium.com/openvino-toolkit/how-to-build-openvino-genai-app-in-c-32dcbe42fa67#e2a3

下面,我們將重點(diǎn)介紹運行 C++ 版推測式解碼示例 的具體步驟。

構建C++項目

環(huán)境設置完成后,導航到 samples/cpp/ 目錄,并運行以下腳本以構建項目:

build_samples_msvc.bat

該腳本會(huì )編譯運行 推測式解碼所需的C++文件。

構建完成后,可執行文件 speculative_decoding.exe 將存放在構建過(guò)程中指定的輸出路徑中。

圖片

運行推測式解碼應用:

現在可以運行生成的可執行文件,使用之前準備好的草稿模型和主模型進(jìn)行推測式解碼。請確保提供正確的模型路徑:

speculative_decoding_lm dolly-v2–3b dolly-v2–7b “Why is the Sun yellow?”

該命令將使用草稿模型和主模型來(lái)加速提供的提示文本的 token 生成過(guò)程。

步驟6: 探索預優(yōu)化模型(Notebook)

通過(guò) FastDraft 和 OpenVINO? 實(shí)現推測式解碼的文本生成 Text Generation via Speculative Decoding Notebook 提供了實(shí)踐演示,展示如何使用預優(yōu)化的OpenVINO? 模型實(shí)現推測式解碼。這些模型使開(kāi)發(fā)者能夠快速評估推測式解碼的優(yōu)勢,而無(wú)需進(jìn)行復雜的手動(dòng)配置。

● Text Generation via Speculative https://github.com/openvinotoolkit/openvino_notebooks/blob/999fb8859e4abc44ad110a28e88ef0800fc23437/notebooks/speculative-sampling/speculative-sampling.ipynbDecoding Notebook

FastDraft 由 Intel Research 在論文 Fast Inference from Transformers via Speculative Decoding 中提出,該方法通過(guò)使用較小的、針對硬件優(yōu)化的草稿模型與完整規模的主模型協(xié)同工作,從而顯著(zhù)加速LLM推理。

● Fast Inference from Transformers via Speculative Decoding

https://arxiv.org/abs/2211.17192

該方法的核心在于草稿模型經(jīng)過(guò)預訓練,并與主模型對齊,確保在詞匯、結構和期望輸出 方面保持兼容性。這種對齊至關(guān)重要,因為只有專(zhuān)門(mén)設計用于配合主模型的草稿模型才能在推測式解碼過(guò)程中發(fā)揮有效作用。

要開(kāi)始使用,OpenVINO? GenAI API 提供了預優(yōu)化模型,以下步驟演示了草稿模型和主模型的設置:

from pathlib import Path
import huggingface_hub as hf_hub
 
draft_model_id = "OpenVINO/Phi-3-mini-FastDraft-50M-int8-ov"
target_model_id = "OpenVINO/Phi-3-mini-4k-instruct-int4-ov"
 
hf_hub.snapshot_download(draft_model_id, local_dir="draft_model")
hf_hub.snapshot_download(target_model_id, local_dir="main_model")

為了直觀(guān)展示推測式解碼的影響,以下是無(wú)推測式解碼與使用推測式解碼進(jìn)行推理的對比。該對比實(shí)驗包含在 OpenVINO? Notebook 教程中,能夠清晰體現推測式解碼對推理速度和計算效率的提升。

● OpenVINO? Notebook 教程

https://github.com/openvinotoolkit/openvino_notebooks/blob/999fb8859e4abc44ad110a28e88ef0800fc23437/notebooks/speculative-sampling/speculative-sampling.ipynb

● 無(wú)推測式解碼:模型完全在CPU上運行,按順序逐個(gè)處理 token,對于大語(yǔ)言模型來(lái)說(shuō),推理速度較慢,延遲較高。

● 使用推測式解碼:草稿模型 利用 GPU 加速 token 生成,通過(guò)預測多個(gè)token候選項,而主模型在CPU上運行,驗證并優(yōu)化這些候選項。這種任務(wù)分配方式 顯著(zhù)降低了推理延遲,同時(shí)提升了計算效率。

雖然預優(yōu)化模型簡(jiǎn)化了推測式解碼的實(shí)現,但要獲得最佳性能,仍需高效利用硬件資源。FastDraft 論文強調了合理分配硬件資源 以匹配草稿模型和主模型計算負載的重要性。

通過(guò)優(yōu)化計算任務(wù)的分配,開(kāi)發(fā)者可以進(jìn)一步降低延遲并提升吞吐量,例如:

● 小規模部署:采用 CPU+GPU 組合,使草稿模型在GPU上加速推理,而主模型 在CPU上執行驗證,提高運行效率。

● 高吞吐場(chǎng)景:使用多GPU部署,讓多個(gè)推測式解碼流程并行運行,實(shí)現實(shí)時(shí)應用的擴展優(yōu)化。

這種硬件協(xié)同優(yōu)化對于實(shí)時(shí)AI應用推測式解碼擴展至關(guān)重要。

推測式解碼通過(guò)將大部分 token 生成任務(wù)卸載至草稿模型,在確保輸出質(zhì)量的同時(shí),顯著(zhù)降低推理延遲并提高吞吐量。OpenVINO? 基于這些原理,提供專(zhuān)為推測式解碼優(yōu)化的預訓練模型,既簡(jiǎn)化了開(kāi)發(fā)流程,又提升了性能和可擴展性。

4 小結

推測式解碼由 OpenVINO? GenAI 提供支持,它不僅僅是一種技術(shù)優(yōu)化,更是智能、響應迅速的 AI 系統未來(lái)發(fā)展的前瞻性探索。隨著(zhù)我們不斷突破 AI 的可能性,像 OpenVINO? 這樣的工具將在將潛力轉化為現實(shí)的過(guò)程中發(fā)揮關(guān)鍵作用。

立即探索 OpenVINO? GenAI API,讓您的 AI 項目煥發(fā)新生,體驗高性能、可擴展性的下一代大語(yǔ)言模型推理。不論是構建實(shí)時(shí)聊天機器人還是擴展創(chuàng )意AI應用,OpenVINO? 都將助力您以前所未有的方式實(shí)現 高效、可擴展的 AI 推理。



關(guān)鍵詞: OpenVINO GenAI 推理

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>