Files
LLaMA-Factory/docs/zh/feature-guide/kernel_acceleration.md
2026-09-14 16:09:48 +08:00

54 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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