作者:
Whitney Foster OpenVINO產品專家
Yury Gorbachev 英特爾院士 OpenVINO 產品架構師
翻譯:
武卓博士 英特爾OpenVINO軟件布道師
在過去的一年里,大語言模型(LLM)徹底改變了文本處理,為文本摘要、重寫、文檔分析等提供了解決方案。然而,我們每天與之交互的數據不僅僅是文本,而是多模態的,包括視頻、音頻和圖像。多模態的存在非常普遍,事實上在安全、監控或醫療保健等某些領域至關重要。它代表了從處理文本到處理不同輸入和生成不同形式輸出的重大演變。例如,多模態模型可以接收長視頻,并以圖像或音頻片段的形式輸出關鍵信息。
為了滿足多模態 AI 的需求,OpenVINO2024.5 引入了新的流水線,使開發者能夠輕松部署處理語音、圖像和視頻以及文本的解決方案。讓我們探討一下這些新功能是如何工作的,以及如何從今天開始使用它們。
OpenVINO 2024.5 中的
主要多模態 AI 流水線
文生圖
通過文生圖流水線(Text2ImagePipeline),利用擴散模型,比如 Stable Diffusion 以及 Stable Diffusion XL 模型, 從輸入的文本提示詞中生成圖像。
輸出示例:從一個描述性的文本提示詞生成一張現實圖像。
語音到文本轉換
通過 WhisperPipeline 利用 Whisper 模型家族,將語音音頻轉換成文字。
使用場景示例:轉錄訪談或播客,以實現高效的文檔記錄。
視覺語言處理
用諸如 LLaVA 以及 miniCPMV 的視覺語言模型(VLMs)通過 VLMPipeline 處理圖像。
應用示例:用文本描述注釋和分析醫學圖像。
提升部署效率
流水線支持 C++ 以及 Python,以實現更靈活的集成。
模型可以使用 optimum-intel 由 Hugging Face 導出并利用神經網絡壓縮框架(NNCF)壓縮。為獲得最優性能,將模型壓縮至 INT4 格式。
預覽版特性:這些功能正在預覽支持中。其它經過驗證的模型和流水線優化正在進行中。查看我們的 GitHub 文檔以獲取更新。有關支持的模型和流水線的最新列表,您可以在此處查看我們的 Github 存儲庫。
在流水線中支持 LoRA 適配器
大模型的訓練異常困難且所需資源密集。LoRA 適配器允許使用很少的資源快速有效地微調模型。這使您可以根據新的圖像生成風格或特定領域的任務自定義流行的 AI 模型,而無需重新訓練整個模型,AI 社區中有許多預制的適配器和庫可供您直接使用。
OpenVINO 2024.5 引入了預覽版功能為文本和圖像生成模型加載 LoRA 適配器,而無需在編譯前將這些適配器融合到主模型中。可以為同一模型加載多個 LoRA 適配器,并根據目標場景在每次生成調用的運行時在這些適配器之間動態切換。
例如,可以通過具有多個自定義 LoRA 的文生圖流水線 Text2ImagePipeline 編譯模型,然后選擇在運行時應用哪種樣式的圖像,而無需重新編譯模型。這種定制化的切換對性能的影響是有較小的,我們正在努力進一步完善它。
以下是我們提供的 LLM 流水線的基本 LoRA 使用代碼片段。您可以在我們的倉庫中找到 python 的完整示例和類似示例。
using namespace ov::genai; //path to adapter (safetensors file) Adapter adapter(adapter_path); // compile pipeline and register all required adapters during compilation LLMPipeline pipe(models_path, device, adapters(adapter)); //Generate with LoRA adapter and alpha set to 0.75 std::cout << pipe.generate(prompt, max_new_tokens(100), adapters(adapter, 0.75)); //Now, generate without LoRA adapter std::cout << pipe.generate(prompt, max_new_tokens(100), adapters());
通過推測性解碼獲得高效文本生成
推測性解碼已被證明可以通過使用兩個模型而不是一個模型來提高生成性能。簡而言之,一個非常小的草稿模型會生成文本,并由一個全尺寸的文本生成模型定期進行校正。
從 2024.5 版本開始,通過一個推測性解碼的算法實現,開發者可以在大語言模型流水線 LLMPipeline 中使用兩個模型。這意味著在創建流水線的時候,開發者可以給它傳遞附加的草稿模型。以下是一段簡化后的代碼片段:
//compiling pipeline with draft model and configuration for generation options ov::LLMPipeline pipe( main_model_path, main_device, ov::draft_model(draft_model_path, draft_device), ov::scheduler_config(scheduler_config)); //running generation pipe.generate(prompt, config);
你可以在我們的樣例倉庫這里找到 python 示例以及全部示例。
當在 AI PC 中運行一個應用的時候,有許多推理選項可用。比如,草稿模型和主模型可以都運行在集成顯卡上,或者以組合的方式運行在 CPU 以及集成顯卡上。根據草稿模型和主模型的模型大小以及部署的限制,不同的組合方式效率會更高。我們發現,在 CPU 上運行草稿模型以及在集成顯卡上運行主模型提供了最具性能的生成方式。
草稿模型并非廣泛適用于所有公共模型,典型的限制是草稿模型的訓練方式應與大模型相似;至少,分詞器應該匹配。
我們已經與英特爾研究院一起,通過使用一項叫做 FastDraft 的新技術,研發了幾個高效的小型草稿模型,這里有詳細的論文描述。
Phi-3.5 以及 Llama 的高效的草稿模型(Phi-3.5草稿模型大小50MB)已經放在我們在 Hugging Face 的模型倉庫中,可以從那里下載快照。
在英特爾 NPU 上支持 LLM
我們的 GitHub 上有很多關于英特爾NPU 上支持 LLM 的請求,現在, Llama 3 8B、Llama 2 7B、Mistral-v0.2-7B、Qwen2-7B-Instruct 和 Phi-3 Mini 的文本生成模型均被添加了這一支持。
現在,當您通過 OpenVINO GenAI API 大語言模型流水線 LLMPipeline文檔鏈接編譯模型時,您可以將 NPU 指定為目標設備。如果 NPU 存在于系統中,底層代碼將為 NPU 編譯模型,后續調用將通過 NPU 運行時堆棧運行。
使用 NPU 時,目前的建議是使用 Channel-Wise 壓縮算法壓縮模型。這在性能方面更有效率。您可以在我們的文檔中找到如何操作。
致謝!
時光飛快!又到了一年的年末,我們想對所有貢獻者和 OpenVINO 社區的持續支持表示感謝。您的貢獻和反饋幫助我們共同推進了 OpenVINO 的發展之旅。我們期待在2025年一起揭開下一步的面紗!
-
英特爾
+關注
關注
61文章
10007瀏覽量
172326 -
流水線
+關注
關注
0文章
121瀏覽量
25955 -
AI
+關注
關注
87文章
31513瀏覽量
270314 -
OpenVINO
+關注
關注
0文章
95瀏覽量
225
原文標題:OpenVINO? 2024.5 新發布:使用流水線簡易部署多模態 AI
文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論