單元測試¶
此頁面介紹瞭如何編寫單元測試來驗證您的模型實現。
必需的測試¶
這些測試對於將您的 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 中那樣。