多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Axolotl继续预训练实战:流式加载喂饱TB级领域语料

Axolotl继续预训练实战:流式加载喂饱TB级领域语料 Axolotl继续预训练实战流式加载喂饱TB级领域语料【免费下载链接】axolotlGo ahead and axolotl questions项目地址: https://gitcode.com/GitHub_Trending/ax/axolotlAxolotl 是 Hugging Face 生态里的 LLM 训练框架除了 LoRA 微调它最被低估的能力是继续预训练用流式数据集加载边读边训不落地 token 化缓存普通 GPU 服务器就能让通用模型吃下领域语料。这篇把参数一个个摊开讲清楚。先想清楚你的语料装不进内存吗选错路径后面全白干所以第一件事是判断语料规模。Axolotl 给了两条路对比项非流式type: completion流式pretraining_dataset语料规模能装进内存TB 级装不下token 化时机训练前一次性完成训练中按需计算长文本处理超出sequence_len就截断多段拼接成定长序列适用场景小语料、反复迭代同一份数据大语料、开箱就训数据格式两边通用JSONL 每行一个text字段即可领域术语和原始句式尽量保留别过度清洗。用 pretrain.yaml 搭一条能跑的流式预训练管线官方示例 examples/streaming/pretrain.yaml 是最小的可用起点关键片段pretraining_dataset: - path: HuggingFaceFW/fineweb-edu # 换成你的领域语料本地路径也行 type: pretrain text_column: text split: train streaming_multipack_buffer_size: 10000 # 打包缓冲越大越省算力越吃内存 shuffle_merged_datasets: true # 用缓冲窗口混洗避免语料顺序泄露 sequence_len: 1024 sample_packing: true pretrain_multipack_attn: true # 切断打包样本间的交叉注意力 attn_implementation: flash_attention_2 # 样本打包依赖它 micro_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 5e-4 max_steps: 1000 # 流式模式必填框架算不出数据集总长 output_dir: ./outputs/my-domain-pretrain两个容易踩的点max_steps在流式模式是必填的因为框架没法推断流式数据集的总长度语料偏小、或要反复实验直接用非流式路径更省事流式文档里也建议小数据集走axolotl preprocess离线 token 化。sequence_len没有万能值按语料定语料类型建议序列长度网页、通用短文本1024~2048领域文档、长报告4096 起步样本打包会互相串味靠 pretrain_multipack_attn 隔离sample_packing把多条短文本拼进一条定长序列padding 少、GPU 利用率高。代价是多段文本会互相看见继续预训练里这属于注意力泄漏——一段法律条文不该影响另一段医学文本的生成概率。pretrain_multipack_attn: true就是干这个的配 Flash Attention 时用 cu_seqlens 告诉内核每段的边界根本不需要显式构造 4D mask。打包细节可以看 多打包样本打包文档。每步吃多少token先算再定训练量流式模式下别凭感觉填步数。一步消耗tokens_per_step sequence_len × micro_batch_size × gradient_accumulation_steps × GPU数按上面示例1024 × 1 × 8 × 1 8192 tokens/步跑 1000 步约 820 万 tokens。继续预训练想看到领域效果语料量至少要在千万 tokens 以上据此反推max_steps。学习率上全新预训练和继续预训练差一个量级官方示例用 5e-4 是配 135M 小模型的在 7B~8B 级别的基座上继续预训练参考 Llama-3 完整微调示例2e-5 这类低学习率更稳。显存不够时按这个优先级压手段配置代价梯度检查点gradient_checkpointing: true约 20% 算力换大笔激活显存混合精度bf16: auto几乎无感页式优化器optimizer: paged_adamw_8bit优化器状态显存减半4bit 量化load_in_4bit: true等继续预训练一般不建议会损失基座能力原则继续预训练默认动全参数别上 LoRA量化是最后的退路。中断了怎么续auto-resume-from-checkpoints流式训练一跑就是小时级断电、OOM 都不是意外。示例里配了save_steps: 250、save_total_limit: 3控制检查点续训用 CLI 参数注意不是网上流传的--auto-resumeaxolotl train config.yaml --auto-resume-from-checkpoints它会自动找到output_dir下最新的检查点接着跑不用手动填路径。最后几个收在口袋里的提醒流式目前只支持单个数据集多源混合得先离线合并验证集不会被流式化始终全量加载别指望它省显存启动后先看 loss 是否平稳下降再检查数据管道有没有成为瓶颈GPU 利用率长期偏低通常就是流式吞吐不够第一次跑可以临时把步数调小验证检查点能存能续再放满max_steps。【免费下载链接】axolotlGo ahead and axolotl questions项目地址: https://gitcode.com/GitHub_Trending/ax/axolotl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表