配置后端选择#
调度系统支持多种方式配置后端选择:
用户指定的配置文件(YAML) - 完全覆盖
环境变量 - 覆盖特定项
平台特定配置文件 - 自动检测的默认值
内置默认值
配置优先级#
┌─────────────────────────────────────────────────────────────────┐
│ 配置优先级 │
│ (从高到低) │
├─────────────────────────────────────────────────────────────────┤
│ 1. VLLM_FL_CONFIG │ 用户配置文件,完全覆盖 │
│ 2. 环境变量 │ 覆盖特定项 │
│ 3. 平台配置文件 │ ascend.yaml / cuda.yaml 默认值 │
│ 4. 内置默认值 │ 代码定义的默认值 │
└─────────────────────────────────────────────────────────────────┘
备注
环境变量可以覆盖平台配置中的特定项
如果用户未设置任何环境变量,则使用平台配置
用户也可以直接修改平台配置文件
调度系统按以下顺序应用配置:
┌─────────────────────────────────────────────────────────────────────┐
│ 配置解析 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 设置了 VLLM_FL_CONFIG? │
│ │ │
│ ├── 是 ──▶ 使用用户配置文件(完全覆盖) │
│ │ │
│ └── 否 ──▶ 对每个设置: │
│ │ │
│ ├── 设置了环境变量?──▶ 使用环境变量值 │
│ │ │
│ └── 未设置 ──▶ 使用平台配置值 │
│ │ │
│ └── 未找到 ──▶ 默认值 │
│ │
└─────────────────────────────────────────────────────────────────────┘
用户指定的配置文件(YAML)#
设置 VLLM_FL_CONFIG 环境变量以指定一个 YAML 配置文件,该文件将完全覆盖所有其他设置:
export VLLM_FL_CONFIG=/path/to/vllm_fl_dispatch.yaml
配置文件示例#
# vllm_fl_dispatch.yaml
# 首选后端类型:flagos、vendor 或 reference
prefer: vendor
# 严格模式:
# true = 出错立即失败,不回退
# false = 失败时尝试下一个后端(默认)
strict: false
# 厂商白名单(可选)
allow_vendors:
- cuda
# 厂商黑名单(可选)
deny_vendors:
- ascend
# 每个算子的后端选择顺序(可选)
# 仅尝试列出的后端,按指定顺序。
op_backends:
rms_norm:
- vendor # 先尝试任何可用的厂商
- flagos # 再尝试 flagos
# 未列出 reference,因此不会用于 rms_norm
silu_and_mul:
- vendor:cuda # 仅尝试 CUDA,不尝试其他厂商
- flagos
- reference
# FlagGems 算子黑名单(可选)
# 这些算子不会使用 FlagGems 实现
flagos_blacklist:
- to_copy
- zeros
- mm
# OOT 算子黑名单(可选)
# 这些算子不会注册为 OOT 替换
oot_blacklist:
- fused_moe
Token 类型说明#
Token |
说明 |
|---|---|
|
FlagOS 默认实现 |
|
PyTorch 参考实现 |
|
任何可用的厂商后端(自动检测硬件) |
|
仅 CUDA 厂商后端 |
|
仅 Ascend 厂商后端 |
注意:使用 vendor(不指定厂商名称)时,系统会根据硬件检测自动选择可用的厂商后端。
更多算子后端选择示例#
op_backends:
mul:
- flagos
silu_and_mul:
- flagos
- vendor
- reference
环境变量#
环境变量可以覆盖平台配置中的特定项。如果未设置,则使用平台配置文件中的值。
核心配置#
变量 |
默认值 |
说明 |
|---|---|---|
|
|
全局开关。设为 |
|
(无) |
YAML 配置文件路径(完全覆盖) |
|
(自动) |
强制平台: |
后端选择#
变量 |
默认值 |
说明 |
|---|---|---|
|
|
首选后端: |
|
|
严格模式: |
|
(无) |
每个算子的顺序: |
|
(无) |
厂商白名单,逗号分隔 |
|
(无) |
厂商黑名单,逗号分隔 |
FlagGems 控制#
变量 |
默认值 |
说明 |
|---|---|---|
|
|
启用/禁用 FlagGems |
|
(无) |
FlagGems 算子白名单(与黑名单互斥) |
|
(无) |
FlagGems 算子黑名单(与白名单互斥) |
优先级:WHITELIST > BLACKLIST(环境变量)> flagos_blacklist(配置文件)
OOT 算子控制#
变量 |
默认值 |
说明 |
|---|---|---|
|
|
启用 OOT 算子注册 |
|
(无) |
OOT 算子白名单 |
|
(无) |
OOT 算子黑名单 |
优先级:WHITELIST > BLACKLIST(环境变量)> oot_blacklist(配置文件)
调试与日志#
变量 |
默认值 |
说明 |
|---|---|---|
|
|
日志级别: |
|
|
启用调度调试模式 |
插件#
变量 |
默认值 |
说明 |
|---|---|---|
|
(无) |
外部插件模块,逗号分隔 |
|
(无) |
算子配置 JSON 文件路径 |
其他环境变量#
变量 |
默认值 |
说明 |
|---|---|---|
|
(无) |
FlagCX 库路径(启用 FlagCX 通信后端) |
|
|
FlagGems 启用算子列表文件 |
示例#
# 使用平台默认配置(自动检测)
# 无需设置——直接运行您的应用程序
# 仅覆盖 prefer 设置(其他项来自平台配置)
export VLLM_FL_PREFER=vendor
# 覆盖 FlagGems 黑名单(覆盖配置文件黑名单)
export VLLM_FL_FLAGOS_BLACKLIST="mm,to_copy,zeros"
# 改用白名单(完全忽略任何黑名单)
export VLLM_FL_FLAGOS_WHITELIST="silu_and_mul,rms_norm"
# 指定每个算子的顺序
export VLLM_FL_PER_OP="rms_norm=vendor|flagos|reference"
# 使用完全自定义的配置文件
export VLLM_FL_CONFIG=/path/to/my_config.yaml
# 强制指定平台
export VLLM_FL_PLATFORM=ascend
# 启用调试日志
export VLLM_FL_LOG_LEVEL=DEBUG
白名单与黑名单优先级#
对于 FlagGems 和 OOT 算子:
WHITELIST(环境变量)──▶ 完全覆盖黑名单
│
└── 未设置 ──▶ BLACKLIST(环境变量)──▶ 覆盖配置黑名单
│
└── 未设置 ──▶ 配置文件黑名单
│
└── 未设置 ──▶ 全部允许
备注
白名单和黑名单环境变量互斥(同时设置会报错)
如果设置了白名单,则完全忽略任何黑名单(环境变量或配置)
环境变量黑名单覆盖配置文件黑名单(不合并)
示例:组合环境变量#
# 平台配置(ascend.yaml)包含:
# prefer: flagos
# flagos_blacklist: [to_copy, zeros, mm, ...]
# 用户仅覆盖 prefer,黑名单仍来自配置
export VLLM_FL_PREFER=vendor
# 结果:
# prefer: vendor(来自环境变量)
# flagos_blacklist: [to_copy, zeros, mm, ...](来自配置)
# 用户也想覆盖黑名单
export VLLM_FL_PREFER=vendor
export VLLM_FL_FLAGOS_BLACKLIST="custom_op1,custom_op2"
# 结果:
# prefer: vendor(来自环境变量)
# flagos_blacklist: [custom_op1, custom_op2](来自环境变量,忽略配置)
备注
环境变量覆盖,不合并:设置环境变量会完全替换配置值
VLLM_FL_PREFER设置偏好,而非排他性:它定义选择顺序,但如果首选后端不可用,会回退到其他后端强制特定后端:结合
PREFER与DENY_VENDORS或使用PER_OP排除不需要的后端VLLM_FL_STRICT=1:启用严格模式——主实现失败时立即报错,不尝试回退
回退机制#
当 VLLM_FL_STRICT=0(默认)时,如果主实现失败,系统会自动尝试其他可用实现:
Op 'rms_norm' using 'default.flagos' (kind=flagos, vendor=None)
[WARNING] Implementation 'default.flagos' failed for op 'rms_norm': ...
Op 'rms_norm' fallback to 'reference.torch' (kind=reference, vendor=None)
平台特定配置#
系统自动检测硬件并从 config/ 目录加载相应的配置文件:
平台 |
配置文件 |
自动检测 |
|---|---|---|
Ascend NPU |
|
|
NVIDIA GPU |
|
|
您可以使用 VLLM_FL_PLATFORM 环境变量强制指定平台:
export VLLM_FL_PLATFORM=ascend # 强制使用 Ascend 配置
export VLLM_FL_PLATFORM=cuda # 强制使用 CUDA 配置
算子列表#
本参考列出了 vllm-plugin-FL 支持的所有算子及其后端可用性。
支持的算子#
算子 |
说明 |
FlagGems |
Reference |
Vendor |
|---|---|---|---|---|
|
SiLU 激活 + 逐元素乘法 |
✓ |
✓ |
✓ |
|
RMS 归一化 |
✓ |
✓ |
✓ |
|
旋转位置编码 |
✓ |
✓ |
✓ |
|
注意力后端类路径 |
✓ |
- |
✓ |
后端优先级#
调度系统根据以下优先级层级选择算子。优先级值间隔 50,以便将来插入中间优先级。
FlagGems(DEFAULT)— 优先级 150
厂商特定 — 优先级 100
PyTorch 参考 — 优先级 50
优先级值越高越优先。当某个实现不可用时,系统会回退到下一个优先级级别。