No Code AI(肉寇)AI自動化兩日精通|實體6小時+線上6小時
|

用OpenVINO GenAI解鎖LLM極速推論:推測式解碼讓AI爆發潛能

   

作者:武卓

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

本文將探討如何利用OpenVINO GenAI的推測式解碼技術使這一變革性創新成為現實。借助簡化開發和最佳化硬體利用率的工具,OpenVINO使開發者能夠在各種即時和資源受限的場景中部署高性能的LLM。無論您是在構建回應迅速的聊天機器人、高效的虛擬助手,還是具備可擴展性的創意應用,OpenVINO正在重新定義AI推論的可能性。

性能瓶頸

想像這樣一個場景:聊天機器人回應緩慢,或者創意寫作助手難以跟上使用者的思維節奏。這些並非假設性問題,而是今日AI開發者和使用者面臨的現實挑戰。傳統的LLM推論方法按序處理token,導致運算瓶頸,進而影響使用者體驗。當在運算資源受限的硬體上部署大語言模型,同時又要保持高性能時,這一問題變得更加嚴峻。

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

推測式解碼(Speculative Decoding)作為一種突破性技術,從根本上改變了LLM的推論方式。透過導入一個較小的草稿模型(draft model)與完整的大模型(main model)協同工作,推測式解碼大幅加速了token生成。該方法最早在論文 《Fast Inference from Transformers via Speculative Decoding (arXiv:2211.17192)》中提出,其核心機制是讓草稿模型提前預測多個token,並由主模型定期驗證這些預測是否符合預期,必要時進行修正。這種迭代式方法減少了生成token所需的完整運算次數,從而在即時應用中實現顯著的加速效果。

可以把它比喻成一個協同寫作的過程:草稿模型快速提出建議,而主模型則進行仔細審核並最佳化。主模型會評估這些建議的相關性和品質,並在必要時進行調整。這種協作方式確保了生成內容的高品質,同時大幅減少主模型從零生成每個token的運算負擔。透過利用草稿模型的高速度和主模型的高準確性,整體推論過程變得更快且更加高效。

這種迭代式的方法透過將大部分token生成任務交給草稿模型處理,從而顯著減輕主模型的運算負擔。在 LLM 處理中,token指的是文字的基本單位,如單詞或子詞。推測式解碼透過同時使用兩個模型來加速 token 生成:

  • 輔助模型(草稿模型):快速生成token候選項。
  • 主模型:驗證並最佳化這些候選項,以確保生成的文字品質。

此方法不僅提高了推論速度,還最佳化了運算資源的利用,使 LLM 部署在運算受限環境中更加可行。

推測式解碼能夠快速生成高準確度的回應,使其成為對延遲敏感場景的顛覆性技術,尤其適合以下應用:

  • 即時聊天機器人:提供流暢的客戶互動體驗。
  • 端側AI助手:適用運算資源受限的環境。
  • 大規模應用的動態內容生成:支援高效且可擴展的內容創作。

OpenVINO GenAI:從創新到落地

儘管推測式解碼的概念極具潛力,但要高效實現此技術並不簡單,需要協調預測token生成、驗證以及模型最佳化,並確保在不同硬體平台上高效運作。這對開發者提出了較高的要求,而這正是 OpenVINO GenAI API可發揮作用的地方。

OpenVINO GenAI簡化AI開發,提供以下關鍵優勢:

  • 預先最佳化的生成式AI模型,簡化部署、降低開發複雜度。
  • 針對Intel CPU、NPU和GPU的硬體加速,提升推論性能。
  • Optimum CLI工具,支援模型的便捷匯出與最佳化。

透過無縫整合推測式解碼,OpenVINO讓開發者能夠專注於構建高效、優質的AI體驗,同時最大程度降低運算負擔。在理想情況下,草稿模型的預測完全符合主模型的預期,使得驗證過程可以在單次請求內完成。這種協作方式不僅提升了性能,還有效減少了資源消耗,為AI推論帶來全新最佳化方案。

AI正以前所未有的速度發展,Intel的OpenVINO將助力開發者更輕鬆、高效率部署生成式AI應用。2025年首場OpenVINO DevCon線上講座即將於5月8日開講,由Intel專家帶領聽眾探索最新版本OpenVINO如何解放AI功能、加速多模態生成式AI推論,有興趣的朋友千萬別錯過!點此報名

步驟1: 複製OpenVINO GenAI資源庫

要使用OpenVINO GenAI API 實現推測式解碼,首先需要複製openvino.genai GitHub資源庫;該資源庫包含推測式解碼的實作範例,支援Python和C++,可幫助開發者快速上手並部署高效的LLM推論方案。

複製資源庫的步驟:

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 cpp/speculative_decoding_lm/

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

要執行OpenVINO GenAI的推測式解碼範例,需要配置環境並安裝必要的工具、程式庫和相關依賴項。請按照以下步驟正確安裝所需元件。

1.創建Python虛擬環境

虛擬環境可以隔離專案依賴,確保一個乾淨、無衝突的開發環境。使用以下指令創建並啟動虛擬環境:


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

2.安裝必要的程式庫

為了將模型匯出為OpenVINO相容格式,需要安裝相關依賴項。執行以下指令安裝必要的程式庫:


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

此命令確保所有必需的程式庫都已安裝並可正常使用,包括 OpenVINO GenAI、Hugging Face 工具 和 Optimum CLI。這些元件將支援推測式解碼 的實現,使開發者能夠高效匯出和優化模型,從而加速 LLM 推論過程。

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

為了啟用推測式解碼,需要準備草稿模型(Draft Model)和主模型(Main Model),並將它們匯出為OpenVINO相容格式。這樣可以確保模型經過最佳化,以便在Intel硬體上高效運作。

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

Dolly v2–3B將用作推測式解碼過程中的草稿模型。請使用以下指令將其匯出為OpenVINO相容格式:


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

在匯出過程中,將執行以下關鍵步驟:

  • 從Hugging Face下載模型和分詞器:自動取得Dolly v2–3B及其對應的tokenizer。
  • 轉換為OpenVINO的中間表示(IR)格式:模型被最佳化為OpenVINO相容的推論格式,以提高執行效率。
  • 降精度至FP16:模型的精度會被降低為FP16,以最佳化運算性能、減少記憶體佔用,並在Intel 硬體(CPU、GPU、NPU )取得更快的推論速度。

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

Dolly v2–7B 作為主模型,負責驗證並最佳化草稿模型生成的token,確保最終輸出的品質和準確性。請使用以下指令將其匯出為OpenVINO相容格式:


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

以上的標誌確保在匯出過程中包含模型的自訂實現,使其能夠正確配接OpenVINO推論流水線。只有在信任模型來源時,才應啟用此標誌,以避免潛在的安全風險。匯出的模型將被轉換為OpenVINO的IR格式,並針對Intel硬體進行最佳化,以提升推論效率和運算性能。

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

在成功匯出草稿模型和主模型後,下一步是在Python中執行推測式解碼流程,以展示OpenVINO如何利用兩個模型協同加速token生成。

1. 安裝部署依賴套件

在執行推測式解碼流水線之前,需要安裝必要的Runtime依賴。請執行以下指令:


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

2. 配置並運行推測式解碼流水線

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


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

在執行推測式解碼流水線時,需要提供以下參數:

  • dolly-v2-7b:主模型的路徑,用於驗證和最佳化token結果。
  • dolly-v2-3b:草稿模型的路徑,用於快速生成token候選項。
  • “Your input prompt here”:輸入提示詞,模型將根據該文字生成回應。

推測式解碼流水線程式碼片段

推測式解碼流水線的配置確保了最佳性能和高準確度。其中,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)

在推測式解碼過程中,以下參數對性能最佳化至關重要:

  • cache_size緩衝記憶體大小:指定緩衝記憶體中儲存的token數量,以便在推測式解碼過程中重複使用,減少重複運算。
  • num_assistant_tokens:決定草稿模型在每次迭代中生成的token候選項數量。
  • assistant_confidence_threshold (可選): 設置一個置信度閾值,當草稿模型的預測token置信度高於此值時,直接接受該token,無需主模型進一步驗證。
  • main_device以及draft_device:定義主模型和草稿模型運作的運算設備,可在CPU或GPU上執行推論。

步驟5: 使用C++構建推測式解碼專案

對於偏好C++的開發者,OpenVINO GenAI API提供了C++版本的推測式解碼實現,以提高推論性能。

環境準備:

要設置和構建該專案,可以參考「以C++語言構建OpenVINO GenAI應用程式就是這麼簡單!」這篇文章關於構建OpenVINO GenAI C++應用的通用步驟;其中的說明涵蓋了常見的設置流程,例如安裝必需的工具(CMake、Visual Studio、Python),執行setupvars.bat檔,導航到適當的目錄。

以下我們將重點介紹執行C++版推測式解碼範例的具體步驟。

構建C++項目

環境設置完成後,導航到 samples/cpp/ 目錄,並執行以下腳本以構建項目:


build_samples_msvc.bat

該腳本會編譯執行推測式解碼所需的C++檔。

構建完成後,可將執行檔 speculative_decoding.exe 存放在構建過程中指定的輸出路徑中。

執行推測式解碼應用:

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


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

該命令將使用草稿模型和主模型來加速提供的提示文字的token生成過程。

步驟6: 探索預先最佳化模型(Notebook)

透過FastDraft和OpenVINO實現推測式解碼的文字生成「Text Generation via Speculative Decoding Notebook」提供實例,展示如何使用預先最佳化的OpenVINO模型實現推測式解碼。這些模型使開發者能夠快速評估推測式解碼的優勢,無需進行複雜的手動配置。

FastDraft由Intel Research在論文「Fast Inference from Transformers via Speculative Decoding」中提出,該方法透過使用較小的、針對硬體最佳化的草稿模型與完整規模的主模型協同工作,從而顯著加速LLM推論。

該方法的核心在於草稿模型經過預訓練,並與主模型對齊,確保在詞彙、結構和期望輸出方面保持相容性。這種對齊至關重要,因為只有專門設計用於配合主模型的草稿模型才能在推測式解碼過程中發揮有效作用。

要開始使用,OpenVINO GenAI API 提供了預先最佳化模型,以下步驟展示了草稿模型和主模型的設置:


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")

為了直觀展示推測式解碼的影響,以下是無推測式解碼與使用推測式解碼進行推論的對比。該對比實驗包含在OpenVINO Notebook教程中,能夠清晰展現推測式解碼對推論速度和運算效率的提升。

  • 無推測式解碼:模型完全在CPU上運作,按順序逐個處理token,對LLM來說,推論速度較慢、延遲較高。
  • 使用推測式解碼:草稿模型利用GPU加速token生成,透過預測多個token候選項,而主模型在CPU上運作,驗證並最佳化這些候選項。這種任務分配方式顯著降低了推論延遲,同時提升了運算效率。

雖然預先最佳化模型簡化了推測式解碼的實現,但要獲得最佳性能,仍需高效利用硬體資源。FastDraft論文強調了合理分配硬體資源以匹配草稿模型和主模型運算負載的重要性。

透過最佳化運算任務的分配,開發者可以進一步降低延遲並提升輸送量,例如:

  • 小規模部署:採用CPU+GPU組合,使草稿模型在GPU上加速推論,而主模型在CPU上執行驗證,提高運作效率。
  • 高吞吐場景:使用多GPU部署,讓多個推測式解碼流程平行運作,實現即時應用的擴展最佳化。

這種硬體協同最佳化對於即時AI應用推測式解碼擴展至關重要。

推測式解碼透過將大部分token生成任務卸載至草稿模型,在確保輸出品質的同時,顯著降低推論延遲並提高輸送量。OpenVINO基於這些原理,提供專為推測式解碼最佳化的預訓練模型,既簡化了開發流程,又提升了性能和可擴展性。

小結

推測式解碼由OpenVINO GenAI提供支援,它不僅僅是一種技術最佳化,更是智慧、回應迅速的AI系統未來發展前瞻性探索。隨著我們不斷突破AI的可能性,像OpenVINO這樣的工具將在把創意轉化為現實的過程中發揮關鍵作用。

立即探索OpenVINO GenAI API,讓您的AI專案煥發新生,體驗高性能、可擴展性的下一代LLM推論。不論是構建即時聊天機器人還是擴展創意AI應用,OpenVINO都將助力您以前所未有的方式實現高效、可擴展的AI推論!

 

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: 武卓

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

Share This Post On
468 ad

Submit a Comment

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