NeMo AutoModel继续预训练
准备阶段下载并启动AutoModel官方镜像dockerpull nvcr.io/nvidia/nemo-automodel:26.04sudodockerrun-it--rm--ipchost--gpusall--networkhost\-v/data/hmlp:/hmlp/data\--namenemo-automodel-test\nvcr.io/nvidia/nemo-automodel:26.04\/bin/bashsudodockerrun-it--ipchost--gpusall--networkhost\-v/data/hmlp:/hmlp/data\-eNCCL_P2P_DISABLE1\-eNCCL_SHM_DISABLE1\-eCUDA_VISIBLE_DEVICES0,1,2,3,4,5,6,7\-w/hmlp/data/finetune/196d63aa-84f8-42f6-9cff-722758276518/f1a28b50-b8e5-4318-8545-5a8b57b67be8\--nametrain-text\nvcr.io/nvidia/nemo-automodel:26.04\/bin/bash模型准备mkdir-p/hmlp/data/finetune/nemo-automodel-sft-testcd/hmlp/data/finetune/nemo-automodel-sft-test# data: 存储数据集; output: 存储微调后的checkpointmkdir-pdata output# 模型使用本地Qwen2.5-0.5B-Instruct/hmlp/data/storage/Qwen2.5-0.5B-Instruct/V1/Qwen2.5-0.5B-Instruct文本格式数据集继续预训练准备数据集可以通过hfd.sh脚本下载预处理文本格式数据集为megatron格式uv run /opt/Automodel/tools/preprocess_megatron_dataset.py\--input/hmlp/data/finetune/nemo-automodel-sft-test/data/c4_demo.jsonl\--json-keys text\--output-prefix domain_corpus\--output-path /hmlp/data/finetune/nemo-automodel-sft-test/data/megatron\--workers8\--pretrained-model-name-or-path /hmlp/data/storage/Qwen2.5-0.5B-Instruct/V1/Qwen2.5-0.5B-Instruct\--append-eod创建数据集缓存索引目录每次启动预训练Megatron都需要为庞大的数据集构建一套随机访问的索引包含文档索引、样本索引和打乱索引这一过程在TB级数据上可能耗时超过30分钟。index_mapping_dir 参数的作用正是 “缓存” 这些复杂的索引文件。避免重复计算一旦指定了目录系统会优先尝试从该路径加载已有的.npy格式索引文件。只有首次运行或数据集发生变化时才会重新构建。加速下次启动这种机制尤其适用于多次启动且训练数据不变的场景能大幅缩短后续的训练启动时间。如下创建index_mapping_dir参数需要使用的缓存文件mkdir-p/hmlp/data/finetune/nemo-automodel-sft-test/data/megatron/mapping_dir准备好训练配置文件-使用文本数据集vimtrain-Qwen-Qwen-2.5-0.5B-Instruct-V1-text.yaml# 文件内容如下recipe: TrainFinetuneRecipeForNextTokenPrediction step_scheduler: global_batch_size:32local_batch_size:1ckpt_every_steps:200val_every_steps:100num_epochs:1max_steps:1000dist_env: backend: nccl timeout_minutes:30rng: _target_: nemo_automodel.components.training.rng.StatefulRNG seed:1111ranked:truemodel: _target_: nemo_automodel.NeMoAutoModelForCausalLM.from_pretrained pretrained_model_name_or_path: /hmlp/data/storage/Qwen2.5-0.5B-Instruct/V1/Qwen2.5-0.5B-Instruct torch_dtype: bf16 trust_remote_code:truecheckpoint: enabled:truecheckpoint_dir: /hmlp/data/finetune/nemo-automodel-sft-test/output model_save_format: safetensors save_consolidated:true# 恢复训练时打开下面这一行# restore_from: LATESTdistributed: strategy: fsdp2 dp_size: none tp_size:1cp_size:1pp_size:1sequence_parallel:falseactivation_checkpointing:trueloss_fn: _target_: nemo_automodel.components.loss.masked_ce.MaskedCrossEntropy dataset: _target_: nemo_automodel.components.datasets.llm.megatron_dataset.MegatronPretraining paths: /hmlp/data/finetune/aa15502a-09a5-41bf-a37e-42a657dfd4f3/f1a28b50-b8e5-4318-8545-5a8b57b67be8/data/train-megatron/domain_corpus_*_text_document* index_mapping_dir: /hmlp/data/finetune/aa15502a-09a5-41bf-a37e-42a657dfd4f3/f1a28b50-b8e5-4318-8545-5a8b57b67be8/data/train-megatron/mapping_dir tokenizer: _target_: nemo_automodel._transformers.auto_tokenizer.NeMoAutoTokenizer.from_pretrained pretrained_model_name_or_path: /hmlp/data/storage/Qwen2.5-0.5B-Instruct/V1/Qwen2.5-0.5B-Instruct trust_remote_code:trueseq_length:2048split:1, 0, 0splits_to_build:traindataloader: _target_: torchdata.stateful_dataloader.StatefulDataLoader collate_fn: torch.utils.data.default_collate dataloader_type: single validation_dataset: _target_: nemo_automodel.components.datasets.llm.megatron_dataset.MegatronPretraining paths: /hmlp/data/finetune/aa15502a-09a5-41bf-a37e-42a657dfd4f3/f1a28b50-b8e5-4318-8545-5a8b57b67be8/data/eval-megatron/domain_corpus_*_text_document* index_mapping_dir: /hmlp/data/finetune/aa15502a-09a5-41bf-a37e-42a657dfd4f3/f1a28b50-b8e5-4318-8545-5a8b57b67be8/data/eval-megatron/mapping_dir tokenizer: _target_: nemo_automodel._transformers.auto_tokenizer.NeMoAutoTokenizer.from_pretrained pretrained_model_name_or_path: /hmlp/data/storage/Qwen2.5-0.5B-Instruct/V1/Qwen2.5-0.5B-Instruct trust_remote_code:trueseq_length:2048split:0, 1, 0splits_to_build:validationvalidation_dataloader: _target_: torchdata.stateful_dataloader.StatefulDataLoader collate_fn: torch.utils.data.default_collate dataloader_type: single optimizer: _target_: torch.optim.AdamW lr:5.0e-6 betas:[0.9,0.95]eps:1.0e-8 weight_decay:0.1lr_scheduler: lr_decay_style: cosine lr_warmup_steps:100min_lr:1.0e-6执行继续预训练# 推荐命令CUDA_VISIBLE_DEVICES0,1\automodel\--nnodes1\--nproc-per-node2\--node_rank0\--master_addr10.10.0.1\--master_port39500\train-Qwen-Qwen-2.5-0.5B-Instruct-V1-text.yamlCUDA_VISIBLE_DEVICES0,1automodel --nproc-per-node2train-Qwen-Qwen-2.5-0.5B-Instruct-V1-text.yaml# 不推荐只是简单测试CUDA_VISIBLE_DEVICES0,1\uv run torchrun\--nnodes1\--nproc-per-node2\--node_rank0\--master_addr10.10.0.1\--master_port29500\/opt/Automodel/examples/llm_pretrain/pretrain.py\--configtrain-Qwen-Qwen-2.5-0.5B-Instruct-V1-text.yaml# 也可以用这个CUDA_VISIBLE_DEVICES0,1torchrun\--nnodes1\--nproc-per-node2\--node_rank0\--master_addr10.10.0.1\--master_port29500\-mnemo_automodel._cli.app\pretrain llm-ctrain-Qwen-Qwen-2.5-0.5B-Instruct-V1-text.yamlnnodes总节点数node_rank当前节点是第几台节点从0开始master_addr主节点地址master_port主节点端口支持的完整微调配置文件# 配方# 选择哪个配方类来运行训练循环。# 使用短名称自动发现或完整的 Python 路径# recipe: nemo_automodel.recipes.llm.train_ft.TrainFinetuneRecipeForNextTokenPredictionrecipe:TrainFinetuneRecipeForNextTokenPrediction# 训练计划# 控制 epoch 数量、批量大小以及保存检查点/验证的频率。# 没有 _target_ — 这些是配方直接读取的普通值。step_scheduler:grad_acc_steps:4# 每次优化器步骤之前累积的微批次数。有效批量大小 grad_acc_steps × batch_size。ckpt_every_steps:10# 每 N 个梯度步骤保存一个检查点val_every_steps:10# 每 N 个梯度步骤运行一次验证循环num_epochs:1# 对训练数据集进行多少次完整遍历# 进程组# 初始化 PyTorch 分布式进程组。# 没有 _target_ — 由配方直接使用。# 通常不需要调整此项。dist_env:backend:nccl# 通信后端ncclGPU推荐或 glooCPUtimeout_minutes:1# 集合通信操作的超时时间对于初始化时间较长的大模型可增加此值# 分布式策略# 确定模型权重、数据和计算如何在 GPU 之间拆分。# 没有 _target_ — 由配方直接使用。# 详细信息请参阅“高级主题”中的“分布式训练TP、PP、CP 和 EP”。distributed:strategy:fsdp2# 并行策略fsdp2推荐、megatron_fsdp 或 ddp。# FSDP2 在数据并行组中对参数和优化器状态进行分片。dp_size:null# 数据并行组大小。null 从 world_size ÷ (tp_size × cp_size × pp_size) 自动检测。tp_size:1# 张量并行大小在 GPU 之间拆分权重矩阵。# 如果模型无法放在单个 GPU 上则设置为 2、4 或 8。# 应能整除注意力头的数量。cp_size:1# 上下文并行大小在 GPU 之间拆分输入序列。# 对于非常长的上下文例如 32k token请增加此值。sequence_parallel:false# 当为 true 时扩展 TP 以同时沿序列维度分片激活值从而进一步节省内存。# 随机数生成器# _target_ → StatefulRNG一个可保存检查点的 RNG确保训练重启时的序列相同。# seed 和 ranked 是传递给 StatefulRNG() 的关键字参数。rng:_target_:nemo_automodel.components.training.rng.StatefulRNGseed:1111# 用于可重现性的全局随机种子ranked:true# 当为 true 时每个 GPU 等级获得一个从种子派生的唯一 RNG 流# 因此每个 GPU 的数据打乱方式不同# 模型# _target_ → NeMoAutoModelForCausalLM.from_pretrained下载或从缓存加载预训练的 HuggingFace 模型# 并包装以支持 NeMo 分布式训练。接受任何 from_pretrained 关键字参数cache_dir、torch_dtype 等。model:_target_:nemo_automodel.NeMoAutoModelForCausalLM.from_pretrainedpretrained_model_name_or_path:meta-llama/Llama-3.2-1B# PEFT如需全参数 SFT请删除或注释整个部分# _target_ → PeftConfig一个描述哪些层获得 LoRA 适配器的数据类。# 配方将此配置传递给 build_model()后者将适配器附加到匹配的层上。peft:_target_:nemo_automodel.components._peft.lora.PeftConfigtarget_modules:*.proj# 与全限定层名称匹配的 glob 模式# *.proj 匹配每个以 proj 结尾的层dim:8# 低秩维度 r — 控制适配器的容量。# 值越大表达能力越强但使用更多内存。alpha:32# LoRA 缩放因子适配器输出乘以 alpha/dim。# 值越高适配器在训练期间的影响越大。use_triton:True# 使用优化的 Triton 内核进行 LoRA 前向/反向传播# 需要安装 triton 包# 检查点# 没有 _target_ — 由配方直接使用的普通键值组。checkpoint:enabled:true# 设置为 false 以完全跳过保存检查点checkpoint_dir:checkpoints/# 输出目录。Docker 用户请绑定挂载此路径# 例如 -v $(pwd)/checkpoints:/workspace/checkpoints# 以在容器重启后保留检查点。model_save_format:safetensors# safetensors推荐更快更安全或# torch_save传统的基于 pickle 的格式save_consolidated:True# 当为 true 时将一个与 HuggingFace 兼容的单个检查点写入 model/consolidated/# 可直接由 Transformers、vLLM 等加载。需要 safetensors 格式。# 训练数据集# _target_ → make_squad_dataset一个工厂函数用于下载 SQuAD 数据集、进行标记化并返回一个 torch Dataset。# 要使用不同的数据集请将 _target_ 更改为另一个工厂函数参见数据集指南。dataset:_target_:nemo_automodel.components.datasets.llm.squad.make_squad_datasetdataset_name:rajpurkar/squad# HuggingFace Hub 数据集 IDsplit:train# 使用哪个拆分train、validation、test# 验证数据集validation_dataset:_target_:nemo_automodel.components.datasets.llm.squad.make_squad_datasetdataset_name:rajpurkar/squadsplit:validationlimit_dataset_samples:64# 将验证集限制为 64 个样本以加快评估循环# 删除此行以使用完整验证集# 训练 DataLoader# _target_ → StatefulDataLoader来自 torchdata 的可保存检查点的 DataLoader# 在训练重启时保存和恢复迭代状态因此恢复的运行不会重新处理已见过的批次。dataloader:_target_:torchdata.stateful_dataloader.StatefulDataLoadercollate_fn:nemo_automodel.components.datasets.utils.default_collater# 将单个样本填充并批处理为张量的函数可替换为自定义整理函数batch_size:8# 每个 GPU 每个微批次的样本数shuffle:true# 每个 epoch 是否打乱数据集# 验证 DataLoadervalidation_dataloader:_target_:torchdata.stateful_dataloader.StatefulDataLoadercollate_fn:nemo_automodel.components.datasets.utils.default_collaterbatch_size:8# 损失函数# _target_ → MaskedCrossEntropy标准的交叉熵损失自动忽略填充 token使其不影响梯度。# 其他可用的损失函数替换 _target_ 以使用# - nemo_automodel.components.loss.chunked_ce.ChunkedCrossEntropy# 沿序列维度分块计算 CE以降低峰值内存。对于超长序列很有用。接受 chunk_len默认 32。# - nemo_automodel.components.loss.linear_ce.FusedLinearCrossEntropy# 将最终的线性投影lm_head与 CE 计算融合避免生成完整的 logit 张量。# 对于大词汇表可显著节省**内存**。# - nemo_automodel.components.loss.te_parallel_ce.TEParallelCrossEntropy# 基于 TransformerEngine 的并行 CE使用 Triton 内核。专为 logits 在 TP 等级间分片的张量并行设置设计。loss_fn:_target_:nemo_automodel.components.loss.masked_ce.MaskedCrossEntropy# 优化器# _target_ → torch.optim.Adam此处可使用任何 torch.optim 类例如 AdamW、SGD。# 其余所有键成为构造函数的参数。optimizer:_target_:torch.optim.Adamlr:1.0e-5# 学习率 — 最重要的可调超参数betas:[0.9,0.999]# Adam 动量系数β₁ 用于均值β₂ 用于方差eps:1e-8# 为保证数值稳定性加到分母上的小常数weight_decay:0# L2 正则化强度0 无正则化# 日志记录可选# 取消注释以启用 Weights Biases 实验跟踪。# wandb:# project: your_wandb_project # WB 项目名称# entity: your_wandb_entity # WB 团队或用户名# name: your_wandb_exp_name # 本次运行的显示名称# save_dir: your_wandb_save_dir # WB 工件的本地目录

相关新闻

唯样-TE | Euro NCAP 2026 来了,您的座椅位置检测还够用吗?

唯样-TE | Euro NCAP 2026 来了,您的座椅位置检测还够用吗?

【唯样已成为TE Connectivity/泰科电子官方授权代理商】TE 3区座椅滑轨位置传感解决方案以高精度座椅位置数据为基石,赋能更精准的乘员分类与安全气囊展开控制,在帮助OEM和一级供应商满足新规要求的同时,显著降低系统集成成本。唯样已成为TE …

2026/7/22 10:32:55阅读更多 →
如何快速上手跨平台资源下载神器:3步掌握res-downloader的终极技巧

如何快速上手跨平台资源下载神器:3步掌握res-downloader的终极技巧

如何快速上手跨平台资源下载神器:3步掌握res-downloader的终极技巧 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …

2026/7/20 17:26:59阅读更多 →
OData.NET:终极指南 - 掌握微软开源OData协议.NET库

OData.NET:终极指南 - 掌握微软开源OData协议.NET库

OData.NET:终极指南 - 掌握微软开源OData协议.NET库 【免费下载链接】odata.net ODataLib: Open Data Protocol - .NET Libraries and Frameworks 项目地址: https://gitcode.com/gh_mirrors/od/odata.net OData.NET(ODataLib)是微软开…

2026/7/20 17:26:59阅读更多 →
ChatGPT地区限制机制与国内AI办公替代方案

ChatGPT地区限制机制与国内AI办公替代方案

1. ChatGPT地区限制的底层机制解析当我们在浏览器地址栏输入chat.openai.com时,系统会通过多重验证机制判断访问者是否来自受支持地区。这个验证过程远比普通用户想象的复杂,主要涉及以下技术层面:1.1 IP地址的地理围栏技术OpenAI采用了MaxMi…

2026/7/22 11:53:53阅读更多 →
低成本空间计算方案:模块化硬件组合与Apple Vision Pro对比

低成本空间计算方案:模块化硬件组合与Apple Vision Pro对比

当Apple Vision Pro以3499美元的价格刷新了消费级空间计算设备的天花板时,很多开发者和科技爱好者都在思考一个问题:有没有可能用更低的成本,获得相似甚至更好的体验?Berry Xia提出的组合方案,正是对这个问题的直接回应…

2026/7/22 11:53:53阅读更多 →
高效开发工具使用指南:从命令行到调试工具的稳定实践

高效开发工具使用指南:从命令行到调试工具的稳定实践

1. 先搞清楚“这些”到底指什么,以及为什么值得单独拿出来说 看到这个标题,很多人第一反应可能是“哪些工具?”,或者“是不是我常用的那几个?”。其实这类问题背后,反映的是一个很实际的场景: …

2026/7/22 11:53:53阅读更多 →
新手访问Github,无需下载

新手访问Github,无需下载

一、查IP https://tool.chinaz.com 站长工具网址 输入网址github.com 复制ip地址 hosts配置文件地址:C:\Windows\System32\drivers\etc\hosts 使用记事本打开(需要管理员权限),在最下方添加IP地址,并附带github网址…

2026/7/22 11:53:53阅读更多 →
从零开始学前端 | 第三十一章:useEffect 与数据请求

从零开始学前端 | 第三十一章:useEffect 与数据请求

本章定位 上一章,我们已经把 React 页面里非常核心的三条主线串起来了: 一组数据怎么渲染成一组界面元素。某块内容要不要显示,怎么根据条件决定。多个组件之间怎么围绕数据流协作。 也就是说,到现在为止,你已经不只是…

2026/7/22 11:53:53阅读更多 →
2026AI会议纪要怎么选?认准识别准整理快更省心的新方案

2026AI会议纪要怎么选?认准识别准整理快更省心的新方案

2026年选AI会议纪要工具,认准识别准、整理快、适配需求选就不会错,这篇主要说给咱们学生群体,平时咱们用到纪要工具,大多是整理课堂录音、论文调研访谈、线上学术会议内容,现在不少工具错漏多、整理流程繁琐&#xff0…

2026/7/22 11:51:53阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →