對 Intel Gaudi 更快的輔助生成支援
隨著模型規模的增長,生成式人工智慧的實現需要大量的推理資源。這不僅增加了每次生成的成本,還增加了處理此類請求的功耗。
文字生成推理最佳化對於降低延遲、基礎設施成本和功耗至關重要。這可以改善使用者體驗並提高文字生成任務的效率。
輔助解碼是一種加速文字生成的流行方法。我們針對 Intel Gaudi 對其進行了調整和最佳化,如上一篇文章所示,它提供了與 Nvidia H100 GPU 相似的效能,而其價格與 Nvidia A100 80GB GPU 相似。這項工作現已成為 Optimum Habana 的一部分,Optimum Habana 擴充套件了各種 Hugging Face 庫(如 Transformers 和 Diffusers),以便您的 AI 工作流針對 Intel Gaudi 處理器進行全面最佳化。
推測取樣 - 輔助解碼
推測取樣是一種用於加速文字生成的技術。它的工作原理是生成一個草稿模型,該模型生成 K 個 token,然後這些 token 在目標模型中進行評估。如果草稿模型被拒絕,則使用目標模型生成下一個 token。這個過程重複進行。透過使用推測取樣,我們可以提高文字生成的速度,並實現與自迴歸取樣相似的取樣質量。該技術允許我們在生成文字時指定一個草稿模型。這種方法已被證明可以為大型基於 Transformer 的模型提供大約 2 倍的加速。總的來說,這些技術可以加速文字生成並提高 Intel Gaudi 處理器上的效能。
然而,草稿模型和目標模型具有不同大小的 KV 快取,因此挑戰在於同時利用獨立的最佳化策略。本文假設一個量化模型,並結合推測取樣利用 KV 快取。請注意,每個模型都有自己的 KV 快取,草稿模型用於生成 K 個 token,然後這些 token 在目標模型中進行評估。當草稿模型被拒絕時,目標模型用於生成下一個 token。草稿模型用於生成接下來的 K 個 token,然後重複這個過程。
請注意,作者 [2] 證明在執行推測取樣時目標分佈是恢復的——這保證了與目標本身上的自迴歸取樣相同的取樣質量。因此,不利用推測取樣不值得的情況與草稿模型的相對大小沒有足夠的節省或草稿模型的接受率不足以從草稿模型較小的尺寸中受益有關。
有一種與推測取樣類似的技術,稱為輔助生成。這是在大致相同的時間 [3] 獨立開發的。作者將此方法整合到 Hugging Face Transformers 中,現在 `_generate()` 呼叫具有可選的 `assistant_model` 引數以啟用此方法。
用法與實驗
輔助生成的使用非常簡單。此處提供了一個示例:https://github.com/huggingface/optimum-habana/tree/main/examples/text-generation#run-speculative-sampling-on-gaudi。不出所料,引數 `_assistant_model` 用於指定草稿模型。草稿模型用於生成 K 個 token,然後這些 token 在目標模型中進行評估。當草稿模型被拒絕時,目標模型用於生成下一個 token。草稿模型用於生成接下來的 K 個 token,然後重複這個過程。草稿模型的接受率部分取決於輸入文字。通常,我們看到大型基於 Transformer 的模型有大約 2 倍的加速。
結論
使用 Gaudi 加速文字生成現在得到支援且易於使用。這可以用於提高 Intel Gaudi 處理器上的效能。該方法基於推測取樣,該方法已被證明在提高大型基於 Transformer 的模型效能方面是有效的。
參考文獻
[1] N. Shazeer, “Fast Transformer Decoding: One Write-Head is All You Need,” Nov. 2019. arXiv:1911.02150。
[2] C. Chen, S. Borgeaud, G. Irving, J.B. Lespiau, L. Sifre, and J. Jumper, “Accelerating Large Language Model Decoding with Speculative Sampling,” Feb. 2023. arXiv:2302.01318。
[3] J. Gante, “Assisted Generation: a new direction toward low-latency text generation,” May 2023, https://huggingface.co/blog/assisted-generation。