新闻详情

新闻详情

首页 / 资讯中心 / 详情

TRL 训练加速实战指南:vLLM 快速生成、优化注意力、Liger Kernel 与混合精度

发布时间:2026/9/13 19:24:47来源:尧图网络
TRL 训练加速实战指南:vLLM 快速生成、优化注意力、Liger Kernel 与混合精度
TRL 训练加速实战指南vLLM 快速生成、优化注意力、Liger Kernel 与混合精度【免费下载链接】trlTrain transformer language models with reinforcement learning.项目地址: https://gitcode.com/GitHub_Trending/tr/trl本篇指南基于 TRL 官方文档 speeding_up_training 展开系统讲解 TRL 中四类训练加速手段用 vLLM 加速在线算法GRPO、Online DPO、RLOO中的补全生成、用优化注意力实现提升前向速度并省显存、用 Liger Kernel 融合算子提升吞吐并降低显存、以及混合精度训练。读完后你可以按“在线方法 → server 模式 vLLM 部署 → 注意力后端选择 → Liger 开关 → 精度配置”的完整路径把 TRL 训练脚本的瓶颈逐一打通并理解每个开关在源码中的实际作用点。vLLM加速在线方法中的补全生成GRPO、Online DPO 等在线方法在训练过程中需要模型实时生成补全completions而这往往是整个训练最慢的环节。TRL 的在线 Trainer 原生支持 vLLM——这个通过 PagedAttention 等技术的推理引擎——来大幅缩短生成耗时。安装方式为pip install trl[vllm]需要注意的前提当前仓库仅支持 vLLM0.19.1至0.28.0之间的版本安装后请确认版本落在该区间内见 docs/source/vllm_integration.md。从仓库文档确认目前支持 vLLM 生成的 Trainer 包括GRPOTrainerRLOOTrainerexperimental.nash_md.NashMDTrainerexperimental.online_dpo.OnlineDPOTrainerexperimental.xpo.XPOTrainerServer 模式先起 vLLM 服务再开训练以 Online DPO 为例第一步是在独立 GPU 上启动 vLLM serverVLLM_SERVER_DEV_MODE1 vllm serve model_name \ --weight-transfer-config {backend: nccl} \ --logprobs-mode processed_logprobs \ --max-logprobs -1然后在训练脚本的参数中传入use_vllmTruefrom trl.experimental.online_dpo import OnlineDPOConfig training_args OnlineDPOConfig(..., use_vllmTrue, vllm_modeserver)GRPO 与 RLOO 的用法完全同构from trl import GRPOConfig training_args GRPOConfig(..., use_vllmTrue, vllm_modeserver)from trl import RLOOConfig training_args RLOOConfig(..., use_vllmTrue, vllm_modeserver)注意使用 vLLM 时务必让训练与生成使用互相隔离的 GPU避免资源冲突。例如 4 张卡训练 4 张卡生成时可用CUDA_VISIBLE_DEVICES指定分配vLLM 生成占用 GPU0-3CUDA_VISIBLE_DEVICES0,1,2,3 VLLM_SERVER_DEV_MODE1 vllm serve model_name \ --weight-transfer-config {backend: nccl} \ --logprobs-mode processed_logprobs \ --max-logprobs -1训练占用 GPU4-7CUDA_VISIBLE_DEVICES4,5,6,7 accelerate launch train.py四个必填 server 参数各自的作用上述命令里的四个参数并非装饰vLLM 集成文档明确列出它们是 TRL 的硬性依赖设置原因VLLM_SERVER_DEV_MODE1暴露权重传输与前缀缓存端点用于把训练权重推送进 server同时会暴露 vLLM 的其他开发端点所以 server 要放在可信网络内--weight-transfer-config {backend: nccl}启用 NCCL 权重传输引擎若 Trainer 与 server 共享 GPU 则改用ipc--logprobs-mode processed_logprobs返回温度缩放与 logit 处理之后的 logprobs这正是重要性采样校正importance sampling correction所期望的口径--max-logprobs -1解除 OpenAI 兼容端点“每 token 最多 20 个 logprobs”的上限蒸馏场景请求 top-k 教师分布时需要从源码结构看这一机制确实如此GRPOTrainer在初始化时依据args.vllm_mode构建VLLMGeneration后端见 trl/trainer/grpo_trainer.py并传入logprobs0的注释明确写着“we only need the generated token logprobs for the importance sampling correction”与--logprobs-mode processed_logprobs的要求互相印证。而在 trl/generation/vllm_client.py 中可以看到客户端通过/v1/completions端点发送 prompt token IDs 请求生成并实现了/start_weight_update、/update_weights、/finish_weight_update三个接口——即每次 optimizer step 之后Trainer 都会通过 NCCL 把更新后的权重流式推送到 server保证生成端始终使用最新策略权重。Colocate 与 Server 两种模式怎么选TRL 支持两种 vLLM 集成模式详见 docs/source/vllm_integration.mdColocate 模式默认vLLM 运行在 Trainer 进程内与训练模型共享 GPU 显存省去了单独起 server 的步骤但可能在训练卡上产生显存争抢from trl import GRPOConfig training_args GRPOConfig(..., use_vllmTrue) # vllm_modecolocate by defaultServer 模式vLLM 作为独立进程运行在专用 GPU 上通过 HTTP 与 Trainer 通信适合有专职推理卡的场景如本文前述的 44 切分from trl import GRPOConfig training_args GRPOConfig(..., use_vllmTrue, vllm_modeserver)此外还有几个实用提示可用--tensor-parallel-size扩展生成规模对 dense 模型数据并行已不再带来收益降低 vLLM 显存占用时可考虑开启 sleep mode见 降低内存占用trl vllm-serve已弃用现在它只负责拼出并执行vllm serve命令你可以直接复制它打印出的命令自行管理 server。优化注意力实现Kernels Hub 或手动编译除了生成端前向计算中的注意力也是训练速度瓶颈之一。TRL 支持多种优化注意力实现既能提速又能降低显存。有两条路径路径一直接从 Hub 拉取预优化内核推荐无需手动编译在训练参数中指定attn_implementation即可from trl import SFTConfig training_args SFTConfig(..., model_init_kwargs{attn_implementation: kernels-community/flash-attn2})其他可选内核包括kernels-community/vllm-flash-attn3和kernels-community/paged-attention。优化注意力在所有 TRL Trainer 中均可用。也可以直接走脚本或 CLIpython sft.py ... --attn_implementation kernels-community/flash-attn2trl sft ... --attn_implementation kernels-community/flash-attn2使用前安装kernels库即可pip install kernels。更多细节见 Kernels Hub 集成文档。两个值得注意的进阶点版本固定Hub 上的内核仓库以分支v1、v2、v3...管理版本默认版本可能随 Transformers 升级变化。为保证训练可复现可追加 revision如attn_implementationkernels-community/flash-attn2v2或直接固定到 commit SHA。隐式回退当未安装flash-attn包时attn_implementationflash_attention_2会自动回退到kernels-community/flash-attn2这个 Hub 内核——你可能在没有显式要求的情况下已经用上了 Hub 内核。官方文档中还在单张 H100、CUDA 12.9 环境下用 Qwen3-8Bbatch size 8、bfloat16对比了各注意力实现基于内核的实现与手工安装的自定义注意力性能相当但显存占用无显著差异且内核在约 2.5 秒内即可就绪、无需编译。路径二手动构建不推荐警告手动构建优化注意力后端如 Flash Attention 2流程复杂且耗时除非万不得已不建议采用优先考虑上一节的 Hub 内核。如果已经手动安装了 Flash Attention 2可以这样指定from trl import SFTConfig training_args SFTConfig(..., model_init_kwargs{attn_implementation: flash_attention_2})Hub 内核与 Liger 还可以叠加使用模型加载时用kernels-community/flash-attn2训练参数里同时开use_liger_kernelTrue两者互不冲突。Liger Kernel融合算子带来的吞吐与显存双赢Liger Kernel 是一组面向 LLM 训练的 Triton 融合算子官方宣称可提升约 20% 的多卡训练吞吐、降低约 60% 的显存占用并由此把上下文长度扩展 4 倍它与 FlashAttention、PyTorch FSDP、DeepSpeed 均兼容。安装与启用只有两步pip install liger-kernel然后在训练参数中设置use_liger_kernelTrue无需其他改动# SFT from trl import SFTConfig training_args SFTConfig(..., use_liger_kernelTrue)# DPO from trl import DPOConfig training_args DPOConfig(..., use_liger_kernelTrue)# GRPO from trl import GRPOConfig training_args GRPOConfig(..., use_liger_kernelTrue)# KTO from trl import KTOConfig training_args KTOConfig(..., use_liger_kernelTrue)# GKD from trl.experimental.gkd import GKDConfig training_args GKDConfig(..., use_liger_kernelTrue)从源码看这个开关的落地细节use_liger_kernel定义在所有 Trainer 配置的基类 _BaseConfig 中默认值为Falsedocstring 中注明其支持 Llama、Mistral、Mixtral 与 Gemma 等模型家族。每个 Trainer 在__init__中都会先检查依赖是否可用例如 trl/trainer/dpo_trainer.py 通过is_liger_kernel_available()判断未安装时会直接报错提示pip install liger-kernel。显存收益的机制在于融合trl/trainer/sft_trainer.py 中可以看到开启 Liger 后默认只在训练时跳过 logits 计算liger 融合算子不返回完整 logits评测等非训练路径会走回退逻辑。同时也要注意各 Trainer 声明的不兼容组合这些都会以明确的报错拦截DPO 中use_liger_kernelTrue与非默认f_divergence_type、对lm_head应用 PEFT adapter、prompt-learning 类 PEFT 方法均不兼容见 trl/trainer/dpo_trainer.pyGRPO 中则与top_entropy_quantile 1.0、部分importance_sampling_level取值、熵奖励等配置互斥见 trl/trainer/grpo_trainer.py。由于省下的显存可观开启 Liger 后还可以考虑关闭cpu_offloading或 gradient checkpointing 来进一步提速gradient checkpointing 会引入约 20% 的额外计算开销见 base_config 的字段说明。更多背景可参阅 Liger Kernel 集成文档。混合精度训练bf16 / fp16混合精度是最简单也最通用的一项加速手段使用 bf16 或 fp16 训练可以在对模型质量影响极小的前提下提速并降低显存。from trl import SFTConfig training_args SFTConfig(..., bf16True) # 老 GPU 可改用 fp16True选择建议Ampere 及更新的架构A100、RTX 30xx 等用bf16True更老的 GPU 用fp16True。该能力在所有 TRL Trainer 中受支持。从源码看其默认行为_BaseConfig 中bf16字段默认是None而__post_init__中的逻辑是见 trl/trainer/base_config.pydef __post_init__(self): self.bf16 not (self.fp16) if self.bf16 is None else self.bf16也就是说只要你不显式设置fp16Truebf16会自动落到True——在当前版本的 TRL 中混合精度实际上是默认开启的显式写bf16True更多是出于可读性与跨精度硬件的明确声明。加速手段小结手段生效位置关键配置适用 TrainervLLM 生成加速在线方法的补全生成环节pip install trl[vllm]use_vllmTruevllm_modeserver/colocate训练与生成 GPU 用CUDA_VISIBLE_DEVICES隔离GRPO、RLOO、NashMD、Online DPO、XPO优化注意力前向/反向计算model_init_kwargs{attn_implementation: kernels-community/flash-attn2}或手动flash_attention_2所有 TrainerLiger Kernel融合算子吞吐 20%、显存 -60%pip install liger-kerneluse_liger_kernelTrueSFT、DPO、GRPO、KTO、GKD混合精度全程bf16True新卡/fp16True老卡默认已倾向 bf16所有 Trainer实践顺序建议先确认混合精度生效通常默认即是再为模型挂上 Hub 内核注意力接着在支持的前提下打开use_liger_kernel若你在跑 GRPO / Online DPO / RLOO 这类在线方法把生成端交给 vLLMcolocate 或 server 模式通常是收益最大的一步——四者叠加时记得留意各 Trainer 源码中声明的互斥配置遇到报错信息时优先按其提示调整对应开关。【免费下载链接】trlTrain transformer language models with reinforcement learning.项目地址: https://gitcode.com/GitHub_Trending/tr/trl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

QMK Compiler API 开发指南:解析固件异步编译服务的架构、Worker 流程与接口设计 2026/9/13 20:03:51

QMK Compiler API 开发指南:解析固件异步编译服务的架构、Worker 流程与接口设计

QMK Compiler API 开发指南:解析固件异步编译服务的架构、Worker 流程与接口设计 【免费下载链接】qmk_firmware Open-source keyboard firmware for Atmel AVR and Arm USB families 项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware 本文基…

阅读更多 →
学历与社会资本:当代职场竞争力的多维解析 2026/9/13 20:03:51

学历与社会资本:当代职场竞争力的多维解析

1. 学历作为硬实力的社会背景解析在中国当代社会结构中,学历早已超越单纯的教育证明,演变为一种具有制度性认可的社会资本。这种转变源于改革开放后知识经济的崛起,以及随之而来的职业分化与阶层流动需求。高等教育文凭成为衡量个人能力的重要…

阅读更多 →
Python爬虫实战:爱奇艺番剧更新日历制作全攻略 2026/9/13 20:03:51

Python爬虫实战:爱奇艺番剧更新日历制作全攻略

1. 项目概述与追番场景拆解先说说我为什么会对这个项目产生兴趣。作为一个追番多年的老二次元,我每个月最头疼的事情就是“到底更新到哪一集了”。以前全靠微博超话、贴吧置顶、甚至朋友之间互相提醒,信息散得到处都是。后来我实在受不了,决定…

阅读更多 →
FunASR 桌面语音输入法实战指南:快捷键录音、自动识别与光标粘贴全流程 2026/9/13 20:03:51

FunASR 桌面语音输入法实战指南:快捷键录音、自动识别与光标粘贴全流程

FunASR 桌面语音输入法实战指南:快捷键录音、自动识别与光标粘贴全流程 【免费下载链接】FunASR Open-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP s…

阅读更多 →
KTransformers KT-Kernel 实战指南:用 CPU 高性能 MoE 内核实现 CPU-GPU 异构推理 2026/9/13 20:03:51

KTransformers KT-Kernel 实战指南:用 CPU 高性能 MoE 内核实现 CPU-GPU 异构推理

KTransformers KT-Kernel 实战指南:用 CPU 高性能 MoE 内核实现 CPU-GPU 异构推理 【免费下载链接】ktransformers A Flexible Framework for Experiencing Heterogeneous LLM Inference/Fine-tune Optimizations 项目地址: https://gitcode.com/GitHub_Trending/…

阅读更多 →
go-criu:在 containerd 中以 Go 原生方式驱动 CRIU 实现容器检查点与恢复 2026/9/13 20:00:51

go-criu:在 containerd 中以 Go 原生方式驱动 CRIU 实现容器检查点与恢复

go-criu:在 containerd 中以 Go 原生方式驱动 CRIU 实现容器检查点与恢复 【免费下载链接】containerd An open and reliable container runtime 项目地址: https://gitcode.com/GitHub_Trending/co/containerd 本文以 containerd 仓库 vendored 的 go-criu …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞