|

用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 存放在構建過程中指定的輸出路徑中。

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

Author: 武卓

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

Share This Post On

Submit a Comment

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