硬件平台抽象
Hardware Platform Abstraction
统一抽象层适配多种硬件平台,实现设备无关的推理引擎
子问题
1.平台检测与能力查询
2.设备通信器适配
3.attention后端选择
4.OOT插件扩展机制
5.CUDA context 过早初始化导致 Ray worker 设备绑定失败
6.Attention 后端按设备代际动态优先级选择
7.ROCm GCN arch 字符串到 capability 元组的解析映射
8.平台特定配置默认值的自动注入与校验
各项目的解法1 solutions
Signals
横向对比
| 维度 | vLLM |
|---|---|
| 抽象层级 | 单基类 40+ classmethod,子类覆写差异方法 |
| 平台检测 | 优先级链自动检测:OOT > TPU > CUDA > ROCm > XPU > CPU |
| 插件扩展 | Python entry_points 注册 OOT 平台,无需修改源码 |
| 设备查询策略 | NVML 优先避免 CUDA 初始化,NonNvml 降级兜底 |
| 后端选择 | 每平台独立优先级列表,按设备代际和 MLA 模式动态选择 |
| 通信器适配 | 字符串路径延迟导入,NCCL/XCCL/Gloo 按平台切换 |
| 配置校验 | check_and_update_config 原地修改 VllmConfig,平台特定默认值 |
最佳实践
1.通过Platform接口隔离硬件差异
2.使用entry_points注册自定义硬件插件
3.用 NVML/amdsmi 替代 torch.cuda 查询设备信息避免 CUDA 初始化
4.后端选择返回字符串路径而非类引用避免循环导入
5.模块级 __getattr__ 实现懒加载确保 OOT 插件注册时序