弃用策略¶
本文档概述了 vLLM 项目中弃用功能的官方策略和流程。
概述¶
vLLM 采用结构化的“弃用流程”来指导已弃用功能的生命周期。此策略确保在弃用功能时向用户提供清晰充分的通知,并确保弃用过程以一致且可预测的方式进行。
我们致力于在持续创新和尊重用户对现有功能的依赖之间取得平衡。弃用与我们遵循语义版本控制 (X.Y.Z) 的次要版本 (Y) 发布相关,其中
- X 是主要版本(罕见)
- Y 是次要版本(用于重大更改,包括弃用/移除)
- Z 是补丁版本(用于修复和更安全的增强)
受此策略约束的功能至少包括以下内容
- CLI 标志
- 环境变量
- 配置文件
- OpenAI 兼容 API 服务器中的 API
vllm
库的公共 Python API
弃用流程¶
弃用过程包括几个明确定义的阶段,这些阶段跨越多个 Y 版本
1. 已弃用(默认仍启用)
- 操作:功能被标记为已弃用。
- 时间表:弃用警告中明确说明了移除版本(例如,“这将在 v0.10.0 中移除”)。
- 沟通:弃用信息在以下适用情况下进行说明
- 帮助字符串
- 日志输出
- API 响应
/metrics
输出(针对指标功能)- 面向用户的文档
- 发布说明
- 用于反馈的 GitHub Issue (RFC)
- Python API 的文档以及
@typing_extensions.deprecated
装饰器的使用
2. 已弃用(默认关闭)
- 操作:功能默认禁用,但仍可通过 CLI 标志或环境变量重新启用。未重新启用时使用该功能会抛出错误。
- 目的:为错过早期警告的用户提供一个临时退路,同时预示即将移除。确保任何剩余的使用情况都清晰地浮出水面,并在完全移除之前阻止静默损坏。
3. 已移除
- 操作:功能已从代码库中完全移除。
- 注意:只有经过前面弃用阶段的功能才会被移除。
示例时间表¶
假设某功能在 v0.9.0
中被弃用。
版本 | 状态 |
---|---|
v0.9.0 |
功能被弃用,并列出明确的移除版本。 |
v0.10.0 |
功能现在默认关闭,使用时会抛出错误,可以为旧版使用重新启用。 |
v0.11.0 |
功能被移除。 |
重要指南¶
- 补丁版本中禁止移除:禁止在补丁 (
.Z
) 版本中移除已弃用的功能,以避免给用户带来意外。 - 现有弃用的宽限期:在本策略生效之前弃用的任何功能,其宽限期将从现在开始,而不是追溯计算。
- 文档至关重要:确保流程的每个阶段都为用户清晰地记录下来。
最终说明¶
本策略是一份动态文档,可能会随着项目及其用户需求的变化而演变。我们欢迎并鼓励社区反馈,以便我们完善流程。