預配置輸送量中的每秒令牌範圍意味著什麼?
本文說明為何及如何測量 Databricks 布建的 Foundation Model API輸送量工作負載的每秒令牌數。
大型語言模型 (LLM) 的效能通常以每秒的令牌來測量。 設定提供端點的生產模型時,請務必考慮應用程式傳送至端點的要求數目。 這樣做可協助您瞭解端點是否需要進行擴充,以避免影響延遲。
為部署已布建輸送量的服務端點設定向外延展範圍時,Databricks 發現使用令牌來理解系統的輸入更容易。
什麼是令牌?
大型語言模型(LLM)會使用所謂的 令牌來讀取和生成文字。 令牌可以是單字或子字,而將文字分割成標記的確切規則會因模型而異。 例如,您可以使用線上工具來查看 Llama 的 Tokenizer 如何將單字轉換成令牌。
下圖顯示 Llama Tokenizer 如何分拆文字的範例:
為何以每秒令牌的方式測量 LLM 效能?
傳統上,服務端點是根據每秒並行要求數目(RPS) 來設定。 不過,LLM 推理請求所需的時間會根據傳入的令牌數量和生成的令牌多少而有所不同,這可能導致請求之間不均衡。 因此,決定您的端點需要進行多少擴展,實際上需要以請求的內容(即令牌)來衡量端點的規模。
不同的使用案例具有不同的輸入和輸出符號比例。
- 不同長度的輸入內容:有些要求可能只涉及幾個輸入詞元,例如簡短的問題,而另一些則可能涉及數百或甚至數千個詞元,例如需要摘要的長篇文檔。 這種變化使得僅根據 RPS 設定服務端點變得具有挑戰性,因為它未考慮到不同請求所需的不同處理需求。
- 根據使用案例不同的輸出長度:不同的 LLM 使用案例可能會導致輸出令牌長度有很大的差異。 產生輸出令牌是 LLM 推斷中最耗費時間的部分,因此這可能會大幅影響輸送量。 例如,摘要通常會產生較短而精闢的回應,但文本生成,例如撰寫文章或產品描述,則可能會產生更長的答案。
如何選取端點的每秒令牌範圍?
預配置的吞吐量服務端點是根據每秒可傳送到端點的令牌數範圍來設定的。 端點會自動擴展和縮減,以處理生產應用程式的負載。 您將根據端點根據每秒令牌數量的擴展範圍進行每小時計費。
瞭解預配置的吞吐量服務端點上每秒令牌數範圍如何適合您的應用案例,最好的方法是使用代表性數據集進行負載測試。 請參閱 進行您自己的 LLM 端點基準檢測。
需要考慮兩個重要因素:
- Databricks 如何測量 LLM 每秒的令牌效能。
- 自動調整機制的運作方式。
Databricks 如何測量 LLM 每秒的令牌效能
Databricks 會針對檢索增強生成使用案例中常見的摘要任務工作負載,進行性能測試端點。 具體而言,工作負載包含:
- 2048 輸入標記
- 256 個輸出標記
顯示的令牌範圍會結合 輸入和輸出令牌輸送量,且預設會針對平衡輸送量和延遲進行優化。
Databricks 的基準檢驗顯示,使用者可以同時以每次請求批次大小為 1 的速度,將每秒大量的令牌傳送至端點。 這模擬了多個請求同時對端點發起攻擊,這更準確地表示您在實際運行環境中會如何使用該端點。
- 例如,如果布建的輸送量服務端點的設定速率為每秒 2304 個令牌(2048 + 256),則單一要求輸入為 2048 令牌,且預期輸出為 256 個令牌,預期會花費大約一秒的時間執行。
- 同樣地,如果速率設定為5600,您可以預期單一請求具有上述的輸入和輸出令牌計數,執行大約需要0.5秒的時間。也就是說,端點大約在一秒內可以處理兩個類似的請求。
如果您的工作負載與上述不同,您可以預期延遲會隨著列出的布建輸送量速率而有所不同。 如先前所述,產生更多輸出令牌比包含更多的輸入令牌更耗費時間。 如果您要執行批次推斷,並想要估計完成所需的時間量,您可以計算輸入和輸出令牌的平均數目,並比較上述 Databricks 基準檢驗工作負載。
- 例如,如果您有 1000 個數據列,平均輸入令牌計數為 3000,而平均輸出令牌計數為 500,且布建輸送量為每秒 3500 個令牌,則可能需要 比 Databricks 基準檢驗還要長 超過 1000 秒(每一數據列一秒),因為平均令牌計數 大於 Databricks 基準檢驗。
- 同樣地,如果您有 1000 個數據列、平均輸入 1500 個令牌、平均輸出 100 個令牌,以及布建的輸送量每秒 1600 個令牌,則總 少於 1000 秒(每列 1 秒),因為平均令牌計數 低於 Databricks 基準檢驗。
若要預估為完成批次推斷工作負載所需的最佳預配吞吐量,您可以使用 執行批次 LLM 推斷的 ai_query 中的筆記本
自動調整的運作方式
模型服務具備快速自動擴展系統,能調整基礎運算資源,以滿足應用程式每秒處理的 token 需求。 Databricks 會以每秒令牌的區塊逐步擴增預設的吞吐量,因此只有在您實際使用到額外的預設吞吐量時,才會收取該部分的費用。
下列輸送量延遲圖表顯示已測試的已布建輸送量端點,並增加平行要求數目。 第一個點代表 1 個要求、第二個、2 個平行要求、第三個、4 個平行要求等等。 隨著請求數量增加,以及每秒產生的令牌數需求增加,您會看到配置的吞吐量也隨之增加。 此增加表示自動調整會增加可用的計算資源。 不過,隨著發出更多平行要求,您可能會開始看到輸送量趨於平穩,達到每秒約 8000 個令牌的限制。 因為已分配的計算資源同時被使用,導致更多的要求需要在佇列中等候,因此總延遲會增加。
注意
您可以關閉縮減至零的功能,並在服務端點上設定最小輸送量,以保持輸送量一致。 這樣做可以避免需要等待端點擴展。
您也可以從提供端點服務的模型中看到資源如何根據需求來啟動或關閉: