2.4 KiB
融合算子加速
kernel_config 统一配置模型侧的融合算子加速。它可以替换单个算子,也可以像 Liger Kernel 一样同时应用多个融合实现和训练优化。
kernel_config.name 接受一个加速实现名称,也接受逗号分隔的多个名称。未设置 kernel_config 或设为 null 时,此入口不替换算子。以下为算子配置片段,完整训练配置见 SFT。
自动配置
name: auto 根据当前设备应用默认组合。当前仅 NPU 配置了默认组合,CUDA 上不会自动启用 Liger 或 CUDA Fused MoE。
Liger Kernel
Liger Kernel 依赖 liger-kernel,并要求模型具有对应适配。
kernel_config:
name: liger_kernel
Liger Kernel 根据模型类型调用 liger_kernel.transformers 中对应的应用函数,可融合 RMSNorm、RoPE、SwiGLU、Cross Entropy 等训练路径。具体启用项由模型支持范围和 Liger Kernel 版本决定。
CUDA Fused MoE
kernel_config:
name: cuda_fused_moe
该方案依赖 CUDA 和 Triton,并要求模型结构匹配,使用融合实现替换 MoE 计算路径。模型架构不匹配时保留原模型。
Flash Linear Attention
flash-linear-attention 通过 FSDPTurbo 的算子注册表替换模型中已有的 FLA 实现,支持 CUDA 和 NPU。它依赖 FLA 和 FSDPTurbo,不会将普通 attention 模型转换成线性注意力模型。
kernel_config:
name: flash-linear-attention
include_kernels: chunk_gated_delta_rule,fused_recurrent_gated_delta_rule
chunk_size: 64
include_kernels 可以设置为 auto 或逗号分隔的算子名称;chunk_size 支持 16、32 和 64。使用前需要安装 requirements/fsdpturbo.txt。
组合多个加速实现
多个名称以逗号分隔。以下为语法示意,first_kernel 和 second_kernel 是占位符,运行时替换为实际注册的实现名称:
kernel_config:
name: first_kernel,second_kernel
多个实现按书写顺序应用,后一个接收前一个处理后的模型;所有实现共享同一份 kernel_config。设备与依赖检查在应用前执行,模型匹配由各实现负责。组合入口不自动处理重复替换或顺序冲突。内部调用关系见开发者指南,字段定义见模型参数。