返回首頁

GitHub Repo

TensorFlow 2.22 候選版加入分級批次等待,暖機可另設執行緒池

BatchFunction 新增依請求重要性設定等待時間,以及獨立處理暖機工作的控制項。官方尚未公布效能測試,部署仍須驗證排程設定與尾端延遲。

KVDP · Public domain · Image source
zh-Hant

TensorFlow 於 9 月 24 日在 GitHub 刊出 2.22.0-rc0 發布說明,為 BatchFunction 加入分級批次等待與獨立暖機執行緒池設定。這是候選版公告;PyPI 套件已在 22 日先行上架,另有平台檔案於 23 日上傳,公告日期與套件首次可用時間有所差異。[發布說明](https://github.com/tensorflow/tensorflow/releases/tag/v2.22.0-rc0)、[PyPI 紀錄](https://pypi.org/project/tensorflow/2.22.0rc0/)

BatchFunction 會把多個並行呼叫的輸入沿第一維合併,再執行指定函式,適合模型推論。它本來就有最大批次大小、等待時間與佇列容量等控制項。批次湊得越滿,越有機會提高運算利用率,但等待其他請求也會增加延遲;低流量與突發流量因此需要不同的取捨。[算子文件](https://www.tensorflow.org/mlir/tf_ops#tfbatchfunction)

新增的 `per_criticality_batch_timeout_micros` 讓不同重要性等級採用不同等待時間,官方文件將其列為整數陣列。從服務設計推論,團隊可讓互動請求較快送出,讓較不急迫的工作保留湊批空間;效果仍取決於請求如何分級,以及執行路徑是否使用相應排程器。這項變更直接影響採用批次函式的服務,既有應用須確認設定是否一路傳到實際執行節點。[介面定義](https://www.tensorflow.org/mlir/tf_ops#tfbatchfunction)

另一個屬性 `num_warmup_batch_threads` 可為暖機請求配置獨立執行緒池。排程器原始碼說明,這項設計針對使用全域排程器時,暖機工作占用正常批次執行緒的問題。對持續接收流量、同時載入模型的服務而言,它提供了分開管理暖機與線上工作的方法。[排程器原始碼](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/batching_util/shared_batch_scheduler.h)

這些控制項處理的是排程資源與湊批時機。依排程器語意,等待期限到達後仍須有可用執行緒,才能送出未滿批次,因此設定值不能直接當作端到端延遲保證;獨立執行緒池也不能據此推定已有硬體資源隔離。[排程語意](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/batching_util/shared_batch_scheduler.h)

官方發布說明未提供這兩項設定的吞吐量或尾端延遲測試。工程團隊可先重播混合流量,核對算子屬性、重要性分類與暖機路徑,再比較每類請求的高百分位延遲、平均批次大小及模型就緒時間。尤其應測試載入模型期間的資源競爭,確認暖機加速是否伴隨線上延遲惡化,並等待正式版確認介面與行為。[候選版說明](https://github.com/tensorflow/tensorflow/releases/tag/v2.22.0-rc0)

來源

  1. TensorFlow 2.22.0-rc0 發布說明
  2. tensorflow 2.22.0rc0 套件與上傳紀錄
  3. TensorFlow MLIR:BatchFunction 算子文件
  4. SharedBatchScheduler 原始碼與排程註解