贡献 vLLM-Omni¶
感谢您对贡献 vLLM-Omni 的兴趣!本文档提供了贡献的指南和说明。
注意
我们每周二太平洋时间晚上 7:30 举行面向开发者的在线会议,讨论里程碑和更新。会议链接以及过去的会议记录可以在 此处 找到。
入门¶
vLLM-Omni 使用 uv 作为环境管理器,用于创建和管理 Python 环境。请遵循文档安装 uv。安装 uv 后,您可以使用以下命令创建一个新的 Python 环境
vLLM 的开发环境¶
vLLM-Omni 基于 vLLM 的稳定版 0.11.0 构建。您可以直接安装 vllm==0.11.0,或者如果您需要检查、修改或调试 vLLM 的源代码,可以从源代码安装该库。
vLLM-Omni 的开发环境¶
从源代码安装 vLLM-Omni 并包含开发依赖项
提示
vLLM-Omni 兼容 Python 3.10 至 3.12 版本。但是,我们建议使用 Python 3.12 进行开发,以最大程度地减少本地环境与我们的 CI 环境发生冲突的可能性。
代码风格检查¶
vLLM-Omni 使用 pre-commit 对代码库进行代码风格检查和格式化。如果您不熟悉 pre-commit,请参阅 pre-commit 文档。设置 pre-commit 非常简单,只需执行以下操作:
vLLM-Omni 的 pre-commit 钩子现在会在您每次提交时自动运行。
提示
您可以使用以下命令手动运行 pre-commit 钩子:
文档¶
MkDocs 是一个快速、简单且极其美观的静态站点生成器,旨在构建项目文档。文档源文件使用 Markdown 编写,并通过单个 YAML 配置文件 mkdocs.yml 进行配置。
开始使用
MkDocs 带有一个内置的开发服务器,可以让您在工作时预览文档。从仓库的根目录运行:
mkdocs serve # with API ref (~10 minutes)
API_AUTONAV_EXCLUDE=vllm_omni mkdocs serve # API ref off (~15 seconds)
一旦在日志中看到 Serving on http://127.0.0.1:8000/,实时预览就已准备就绪!在浏览器中打开 http://127.0.0.1:8000/ 查看。
有关其他功能和高级配置,请参阅
- MkDocs 文档
- Material for MkDocs 文档(我们使用的 MkDocs 主题)
测试¶
vLLM-Omni 使用 pytest 测试代码库。
# Run all tests
pytest tests/
# Run tests for a single test file with detailed output
pytest -s -v tests/test_omni_llm.py
警告
目前,并非所有单元测试在 CPU 平台上都能通过。如果您没有 GPU 平台可以在本地运行单元测试,请暂时依赖持续集成系统来运行测试。
问题¶
如果您遇到 Bug 或有功能请求,请先搜索现有问题,看看是否已有报告。如果没有,请提交一个新问题,并尽可能提供相关的详细信息。
重要
如果您发现安全漏洞,请通过创建带有 security 标签的 GitHub 问题来报告。
Pull Requests & 代码审查¶
感谢您为 vLLM-Omni 做出贡献!在提交 Pull Request 之前,请确保 PR 符合以下标准。这有助于 vLLM-Omni 保持代码质量并提高审查过程的效率。
DCO 和 Signed-off-by¶
当贡献此项目时,您必须同意 DCO。提交必须包含 Signed-off-by: 头部,以证明同意 DCO 的条款。
在 git commit 中使用 -s 将自动添加此头部。
提示
您可以通过 IDE 启用自动签名
- PyCharm:在
Commit窗口中,点击Commit and Push...按钮右侧的Show Commit Options图标。这将弹出一个git窗口,您可以在其中修改Author并启用Sign-off commit。 - VSCode:打开 Settings 编辑器,并启用
Git: Always Sign Off(git.alwaysSignOff) 字段。
PR 标题和分类¶
只有特定类型的 PR 才会被审查。PR 标题应加上适当的前缀以表明更改类型。请使用以下前缀之一:
[Bugfix]用于 Bug 修复。[CI/Build]用于构建或持续集成改进。[Doc]用于文档修复和改进。[Model]用于添加新模型或改进现有模型。模型名称应出现在标题中。[Frontend]用于 vLLM-Omni 前端(例如,OpenAI API 服务器,OmniLLM类等)的更改[Kernel]用于影响 CUDA 内核或其他计算内核的更改。[Core]用于 vLLM-Omni 核心逻辑(例如,OmniProcessor,OmniARScheduler等)的更改[Hardware][Vendor]用于特定硬件的更改。供应商名称应出现在前缀中,例如 [Ascend] 用于 Ascend NPU。[Misc]用于不符合上述类别的 PR。请谨慎使用。
注意
如果 PR 跨越多个类别,请包含所有相关的前缀。
代码质量¶
PR 需要满足以下代码质量标准:
- 我们遵循 Google Python 风格指南和 Google C++ 风格指南。
- 通过所有 linter 检查。
- 代码需要有充分的文档,以确保未来的贡献者可以轻松理解代码。
- 包含足够的测试以确保项目保持正确和健壮。这包括单元测试和集成测试。
- 如果 PR 修改了 vLLM-Omni 的用户可见行为,请在
docs/目录中添加文档。这有助于 vLLM-Omni 用户理解和利用新功能或更改。
关于重大更改的说明¶
请尽量保持更改的简洁。对于重大的架构性更改(超过 500 行代码,不包括内核/数据/配置/测试),我们希望有一个 GitHub issue (RFC) 来讨论技术设计和理由。否则,我们将将其标记为 rfc-required,并且可能不会处理该 PR。
审查预期¶
vLLM-Omni 团队的目标是成为一个透明的审查机器。我们希望使审查过程透明且高效,并确保没有任何贡献者感到困惑或沮丧。然而,vLLM-Omni 团队规模不大,因此我们需要优先处理某些 PR。以下是您对审查过程的预期:
- PR 提交后,PR 将被分配给一名审查员。每位审查员将根据其专业知识和可用性来处理 PR。
- PR 分配后,审查员将每 2-3 天提供一次状态更新。如果 PR 在 7 天内未得到审查,请随时 ping 审查员或 vLLM-Omni 团队。
- 审查后,如果需要更改,审查员将在 PR 上添加
action-required标签。贡献者应处理评论并 ping 审查员以重新审查 PR。 - 请在合理的时间范围内回复所有评论。如果某条评论不清楚或您不同意某个建议,请随时请求澄清或讨论该建议。
额外资源¶
- 设计文档 - 架构和设计文档
谢谢¶
最后,感谢您花时间阅读这些指南并对贡献 vLLM-Omni 感兴趣。您的所有贡献都将使 vLLM-Omni 成为一个对大家来说都很棒的工具和社区!