為 vLLM 貢獻力量#
感謝您有興趣為 vLLM 做出貢獻!我們的社群對所有人開放,歡迎各種貢獻,無論大小。您可以透過以下幾種方式為專案做出貢獻
識別並報告任何問題或錯誤。
請求或新增對新模型的支援。
建議或實現新功能。
改進文件或貢獻操作指南。
我們也相信社群支援的力量;因此,回答問題、提供 PR 審查和幫助他人也是備受推崇和有益的貢獻。
最後,支援我們最有影響力的途徑之一是提高對 vLLM 的認識。在您的部落格文章中談論它,並強調它如何推動您的出色專案。如果您正在使用 vLLM,請在社交媒體上表達您的支援,或者只是透過為我們的倉庫加星標來表達您的讚賞!
招聘版#
不確定從哪裡開始?檢視以下連結,瞭解要處理的任務
許可證#
請參閱 LICENSE。
開發#
根據您想要進行的開發型別(例如 Python、CUDA),您可以選擇編譯或不編譯 vLLM 進行構建。檢視 從原始碼構建 文件以瞭解詳細資訊。
測試#
pip install -r requirements/dev.txt
# Linting, formatting and static type checking
pre-commit install --hook-type pre-commit --hook-type commit-msg
# You can manually run pre-commit with
pre-commit run --all-files
# Unit tests
pytest tests/
提示
由於 docker/Dockerfile 附帶 Python 3.12,因此 CI 中的所有測試(mypy
除外)均使用 Python 3.12 執行。
因此,我們建議使用 Python 3.12 進行開發,以最大限度地減少本地環境與我們的 CI 環境衝突的可能性。
注意
目前,倉庫尚未完全透過 mypy
檢查。
問題#
如果您遇到錯誤或有功能請求,請先搜尋現有問題,看看是否已被報告。 如果沒有,請提交新問題,並提供儘可能多的相關資訊。
重要提示
如果您發現安全漏洞,請按照此處的說明進行操作。
拉取請求 & 程式碼審查#
感謝您為 vLLM 做出貢獻!在提交拉取請求之前,請確保 PR 符合以下標準。 這有助於 vLLM 維護程式碼質量並提高審查過程的效率。
DCO 和 Signed-off-by#
當為此專案貢獻更改時,您必須同意 DCO。 提交必須包含 Signed-off-by:
標頭,以證明同意 DCO 的條款。
將 -s
與 git commit
一起使用將自動新增此標頭。
PR 標題和分類#
只有特定型別的 PR 會被審查。 PR 標題會新增適當的字首以指示更改型別。 請使用以下其中一項
[Bugfix]
用於錯誤修復。[CI/Build]
用於構建或持續整合改進。[Doc]
用於文件修復和改進。[Model]
用於新增新模型或改進現有模型。 模型名稱應出現在標題中。[Frontend]
用於 vLLM 前端的更改(例如,OpenAI API 伺服器、LLM
類等)[Kernel]
用於影響 CUDA 核心或其他計算核心的更改。[Core]
用於核心 vLLM 邏輯的更改(例如,LLMEngine
、AsyncLLMEngine
、Scheduler
等)[Hardware][Vendor]
用於特定於硬體的更改。 供應商名稱應出現在字首中(例如,[Hardware][AMD]
)。[Misc]
用於不屬於上述類別的 PR。 請謹慎使用。
注意
如果 PR 跨越多個類別,請包含所有相關字首。
程式碼質量#
PR 需要滿足以下程式碼質量標準
我們遵守 Google Python 風格指南 和 Google C++ 風格指南。
透過所有程式碼檢查工具檢查。 請使用
pre-commit
格式化您的程式碼。 如果您不熟悉pre-commit
,請參閱 https://pre-commit.com/#usage。程式碼需要有良好的文件記錄,以確保未來的貢獻者可以輕鬆理解程式碼。
包含足夠的測試,以確保專案的正確性和健壯性。 這包括單元測試和整合測試。
如果 PR 修改了 vLLM 的使用者介面行為,請在
docs/source/
中新增文件。 這有助於 vLLM 使用者理解和使用新功能或更改。
新增或更改核心#
每個自定義核心都需要一個模式和一個或多個實現才能在 PyTorch 中註冊。
確保自定義操作按照 PyTorch 指南註冊:自定義 C++ 和 CUDA 運算子 和 自定義運算子手冊。
返回
Tensors
的自定義操作需要元函式。 元函式應在 Python 中實現和註冊,以便可以自動處理動態維度。 有關元函式的描述,請參閱上述文件。使用 torch.library.opcheck() 測試任何已註冊操作的函式註冊和元函式。 有關示例,請參閱
tests/kernels
。當更改現有操作的 C++ 簽名時,必須更新模式以反映更改。
如果需要新的自定義型別,請參閱以下文件:PT2 中的自定義類支援。
大型更改注意事項#
請儘可能保持更改簡潔。 對於主要的架構更改(>500 LOC,不包括 kernel/data/config/test),我們希望看到 GitHub 問題 (RFC) 討論技術設計和理由。 否則,我們將使用 rfc-required
標記它,並且可能不會審查 PR。
對審查的期望#
vLLM 團隊的目標是成為一個透明的審查機器。 我們希望使審查過程透明高效,並確保沒有貢獻者感到困惑或沮喪。 但是,vLLM 團隊規模較小,因此我們需要優先考慮某些 PR 而不是其他 PR。 以下是您可以對審查過程的期望
PR 提交後,PR 將分配給審查員。 每個審查員將根據他們的專業知識和可用性選擇 PR。
PR 分配後,審查員將每 2-3 天提供狀態更新。 如果 PR 在 7 天內未被審查,請隨時 ping 審查員或 vLLM 團隊。
審查後,如果需要進行更改,審查員將在 PR 上貼上
action-required
標籤。 貢獻者應解決評論並 ping 審查員以重新審查 PR。請在合理的時間範圍內回覆所有評論。 如果評論不清楚或者您不同意某個建議,請隨時要求澄清或討論該建議。
請注意,由於計算資源有限,並非所有 CI 檢查都會執行。 當 PR 準備好合併或需要全面 CI 執行時,審查員將新增
ready
標籤到 PR。
謝謝#
最後,感謝您抽出時間閱讀這些指南,並感謝您對為 vLLM 做出貢獻的興趣。 您的所有貢獻都有助於使 vLLM 成為每個人的出色工具和社群!