跳到內容

單元測試

此頁面介紹瞭如何編寫單元測試來驗證您的模型實現。

必需的測試

這些測試對於將您的 PR 合併到 vLLM 庫中是必需的。沒有它們,您的 PR 的 CI 將會失敗。

模型載入

tests/models/registry.py 中包含您的模型的 HuggingFace 儲存庫示例。這使得一個單元測試能夠載入虛擬權重,以確保模型可以在 vLLM 中初始化。

重要

每個部分中的模型列表應按字母順序排序。

提示

如果您的模型需要 HF Transformers 的開發版本,您可以設定 min_transformers_version 以在模型釋出之前跳過 CI 中的測試。

可選測試

這些測試對於將您的 PR 合併到 vLLM 庫中是可選的。透過這些測試可以更有信心地證明您的實現是正確的,並有助於避免未來的迴歸。

模型正確性

這些測試將 vLLM 的模型輸出與 HF Transformers 的模型輸出進行比較。您可以在 tests/models 的子目錄中新增新測試。

生成式模型

對於 生成式模型,存在兩個級別的正確性測試,如 tests/models/utils.py 中定義。

  • 精確匹配(check_outputs_equal):vLLM 輸出的文字應與 HF 輸出的文字完全匹配。
  • Logprobs 相似性(check_logprobs_close):vLLM 輸出的 logprobs 應與 HF 輸出的 top-k logprobs 相對應,反之亦然。

池化模型

對於 池化模型,我們僅檢查餘弦相似度,如 tests/models/utils.py 中定義。

多模態處理

通用測試

將您的模型新增到 tests/models/multimodal/processing/test_common.py 驗證以下輸入組合是否產生相同的輸出。

  • 文字 + 多模態資料
  • Tokens + 多模態資料
  • 文字 + 快取的多模態資料
  • Tokens + 快取的多模態資料

模型特定測試

您可以在 tests/models/multimodal/processing 下新增一個新檔案,以執行僅適用於您模型的測試。

例如,如果您的模型的 HF processor 接受使用者指定的關鍵字引數,您可以驗證關鍵字引數是否已正確應用,例如在 tests/models/multimodal/processing/test_phi3v.py 中那樣。