llamfactory 微调中用到的cpu的两处参数preprocessing_num_workers dataloader_num_workers

我给你用最直白、最清晰、不绕弯 的方式讲清楚,这几个参数到底干什么的、区别在哪、为什么你必须都开

一句话总结

  • preprocessing_num_workers预处理阶段用(tokenize、打包数据)
  • dataloader_xxx训练阶段用(给显卡喂数据)

你之前 CPU 只有 8%,就是因为 只开了预处理,没开训练时的数据加载多线程


1. preprocessing_num_workers: 16

作用:数据预处理多线程

只在训练开始前跑一次!

跑完就结束,不会再用。

它做什么?

  • 给文本做 token 切分
  • 把数据打包成固定长度(cutoff_len:1024)
  • 生成缓存文件

特点

  • 训练开始前跑完
  • 跑完就退出
  • 训练过程中不再参与

所以

你看到 CPU 8%,就是因为预处理早就跑完了,这个参数已经不工作了


2. dataloader_num_workers: 16

作用:训练时喂数据的多线程

训练全程一直跑!

负责从磁盘读取数据 → 送给显卡。

它做什么?

  • 从硬盘/SSD 读取数据
  • 送给模型训练
  • 全程持续工作,决定显卡饿不饿

特点

  • 训练每一步都在用
  • 决定数据能不能喂满显卡
  • 决定 CPU 占用率高不高

这就是你之前 CPU 只有 8% 的原因!

你没开这个,系统默认 单线程喂数据,CPU 根本不用干活。


3. dataloader_pin_memory: true

作用:锁页内存 → 加速数据传到显卡

让数据从内存 → 显卡的速度更快,不卡顿。

直白说

开了:数据传输更快

不开:慢,容易造成显卡等待


4. dataloader_prefetch_factor: 4

作用:提前预加载 4 批数据

让显卡永远有数据可以练,不饿肚子。

直白说

显卡要数据时,数据已经提前准备好了


最清晰对比表(一看就懂)

参数 阶段 作用 运行时间 CPU 占用影响
preprocessing_num_workers 预处理 分词、格式化数据 训练前一次 ❌ 几乎无
dataloader_num_workers 训练 给显卡喂数据 训练全程 ✅ 极大(你缺的就是它)
dataloader_pin_memory 训练 加速数据传输 训练全程 中等
dataloader_prefetch_factor 训练 提前加载数据 训练全程

最终结论(最重要)

  1. preprocessing_num_workers:只管训练前
  2. dataloader_num_workers:管训练时,决定CPU占用、显卡速度
  3. 你之前 CPU 8% 就是因为没开 dataloader_num_workers
  4. 现在我帮你加上了,CPU 会立刻跑到 60%~100%显卡跑满速度翻倍

需要我再给你讲讲怎么看 DCU 利用率、判断训练是否达到最快速度吗?

相关推荐
thesky1234561 天前
27届大模型岗面试准备(十三):长上下文与上下文工程——从位置外推到分块策略的完整考点
人工智能·ai·大模型
码农小韩1 天前
AIAgent应用开发——大模型理论基础与应用(七)
python·学习·ai·大模型·agent
weixin_468466851 天前
DeepSeek-V4-Flash正式版深度解析:当“轻量模型”用后训练撬动Agent能力革命
人工智能·大模型·agent·deepseek·deepseek-v4
晨曦中的暮雨1 天前
Learn Claude Code:CodeAgent 的状态机流程编排——Todo任务系统和自主智能体
ai·大模型·agent
暗黑小白2 天前
自动操作回复与自愈闭环
大模型·ai agent
dozenyaoyida2 天前
AI与大模型新闻日报 | 2026-08-01
人工智能·ai·大模型·新闻
Hyacinth&2 天前
【大模型预备4】Prompt 工程入门
大模型
晨曦中的暮雨2 天前
大模型知识科普——稠密模型、稀疏模型与 MoE 架构有什么区别?
ai·大模型·agent
安逸sgr2 天前
如何减少 Prompt 引起的幻觉和答非所问?
人工智能·ai·大模型·prompt·agent·智能体
小马9262 天前
GPT-6 Swarm 架构深度解析:从单体模型到 Agent 集群协同的范式跃迁
gpt·架构·大模型·openai·agent·分布式ai·swarm架构