Nemo Skills实战案例:复现Nemotron-Math-v2训练流程
Nemo Skills实战案例复现Nemotron-Math-v2训练流程【免费下载链接】SkillsA project to improve skills of large language models项目地址: https://gitcode.com/gh_mirrors/ne/SkillsNemo Skills是一个功能强大的开源框架专门用于提升大语言模型LLM的各项技能。本文将详细介绍如何使用Nemo Skills完整复现Nemotron-Math-v2数学模型的训练流程从数据集构建到模型训练的全过程。无论你是AI研究人员还是开发者通过这篇终极指南都能快速掌握大规模数学模型训练的核心技术。项目概述Nemo Skills框架介绍 Nemo Skills是NVIDIA开发的一个综合性LLM开发框架支持从数据生成、模型训练到评估的全流程开发。该项目旨在帮助开发者快速构建和优化大语言模型的各项技能特别是在数学推理、代码生成和科学知识等领域。核心功能亮点灵活的LLM推理支持API提供商、本地服务器和大规模Slurm集群的无缝切换全面的模型评估覆盖数学推理、代码生成、科学知识等多个领域的基准测试高效的模型训练支持NeMo-RL和verl等先进训练框架可扩展的数据生成支持从单GPU到数万GPU的大规模并行处理Nemotron-Math-v2数据集构建流程 Nemotron-Math-v2数据集包含35万个独特的数学问题来源于AoPS论坛、Math Stack Exchange和MathOverflow。数据集构建过程分为以下几个关键步骤数据收集与预处理首先从数学论坛收集原始数据然后使用Qwen2.5-32B-Instruct模型进行问题提取从论坛讨论中分离出明确的数学问题陈述。每个提取的问题都会经过一系列LLM分类器筛选移除证明式问题、选择题和无效问题。解决方案生成使用gpt-oss-120b模型生成三种难度级别高、中、低的解决方案每种级别都包含使用Python工具集成推理TIR和不使用Python TIR的版本。使用Python TIR生成数据from nemo_skills.pipeline.cli import generate, wrap_arguments cluster slurm generate( ctxwrap_arguments( inference.tokens_to_generate120000 inference.temperature1.0 inference.top_p1.0 prompt_configgpt-oss/math inference.endpoint_typetext code_tagsgpt-oss code_executiontrue skip_filledtrue server.code_execution.max_code_executions100 chat_template_kwargs.reasoning_efforthigh chat_template_kwargs.builtin_tools[python] ), clustercluster, expnamegpt-oss-generation-with-python, modelopenai/gpt-oss-120b, server_typevllm, server_gpus8, num_random_seeds8, input_file/workspace/aops_problems.jsonl, output_dir/workspace/with-python, with_sandboxTrue, )答案验证与筛选通过多轮答案判断和多数投票机制确保最终答案的准确性聚合所有候选解决方案初始化期望答案优先使用论坛提取的答案进行答案级别的判断执行多数投票和答案修复重新判断以筛选SFT数据Nemotron-Math-v2模型训练指南 ️准备基础模型首先下载基础模型支持Qwen3-30B-A3B和Qwen3-8B两种模型pip install -U huggingface_hub[cli] hf download Qwen/Qwen3-30B-A3B --local-dir Qwen3-30B-A3B训练配置详解训练配置根据模型和上下文长度进行调整模型上下文长度TPCPPPETPEMPQwen3-30B-A3B16k42114Qwen3-30B-A3B32k44118Qwen3-30B-A3B64k48118Qwen3-30B-A3B128k48118Qwen3-8B16k221--Qwen3-8B32k241--Qwen3-8B64k441--Qwen3-8B128k881--完整训练脚本示例以下是Qwen3-30B-A3B模型的完整训练脚本from nemo_skills.pipeline.cli import sft_nemo_rl, wrap_arguments cluster slurm tp 8 cp 8 pp 1 etp 1 emp 8 save_period 600 max_steps 7200 batch_size 2048 num_training_jobs 10 warmup 0 partition interactive backend megatron lr 2e-4 min_lr 2e-4 sft_nemo_rl( ctxwrap_arguments( sft.max_num_epochs2000 fsft.max_num_steps{max_steps} sft.val_period0 sft.val_at_startfalse sft.val_batches1 policy.tokenizer.chat_templatenull policy.sequence_packing.enabledTrue policy.sequence_packing.sequence_length_round64 policy.make_sequence_length_divisible_by128 data.num_workers10 data.add_bosfalse data.add_eosfalse data.add_generation_promptfalse fpolicy.megatron_cfg.tensor_model_parallel_size{tp} fpolicy.megatron_cfg.context_parallel_size{cp} fpolicy.megatron_cfg.expert_model_parallel_size{emp} fpolicy.megatron_cfg.expert_tensor_parallel_size{etp} fpolicy.megatron_cfg.pipeline_model_parallel_size{pp} fpolicy.megatron_cfg.sequence_parallelTrue fpolicy.megatron_cfg.bias_activation_fusionTrue fpolicy.megatron_cfg.apply_rope_fusionTrue policy.megatron_cfg.layernorm_epsilon1e-6 policy.megatron_cfg.moe_permute_fusionfalse fcheckpointing.save_period{save_period} checkpointing.keep_top_k50 fpolicy.train_global_batch_size{batch_size} fpolicy.max_total_sequence_length131072 policy.max_grad_norm0.0 fpolicy.megatron_cfg.optimizer.lr{lr} policy.megatron_cfg.optimizer.bf16True fpolicy.megatron_cfg.optimizer.min_lr{min_lr} policy.megatron_cfg.optimizer.weight_decay0.01 policy.megatron_cfg.optimizer.adam_eps1e-8 fpolicy.megatron_cfg.scheduler.lr_warmup_iters{warmup} fpolicy.megatron_cfg.scheduler.lr_decay_iters{max_steps} policy.megatron_cfg.scheduler.lr_warmup_init1e-7 policy.megatron_cfg.scheduler.lr_decay_stylecosine logger.swanlab_enabledfalse checkpointing.checkpoint_must_save_by00:03:35:00 ), clustercluster, wandb_projectsft-Qwen3-30B-A3B, expnamenemo-rl-sft-Qwen3-30B-A3B, backendmegatron, output_dir/workspace/final_sft_model, hf_model/workspace/Qwen3-30B-A3B, training_data/workspace/sft.jsonl, num_gpus8, num_nodes32, dependent_jobsnum_training_jobs, )实战操作指南从零开始复现 ️环境准备与安装首先克隆项目并设置环境git clone https://gitcode.com/gh_mirrors/ne/Skills cd Skills pip install -e .配置集群设置根据你的计算资源配置集群配置文件。Nemo Skills支持从本地工作站到大规模Slurm集群的无缝迁移# cluster_configs/example-slurm.yaml slurm: partition: your_partition account: your_account time: 24:00:00 qos: normal constraint: gpua100 cpus_per_task: 8 mem: 64G数据准备步骤下载原始数据从AoPS论坛和Math Stack Exchange收集数学问题问题提取使用Qwen2.5-32B-Instruct模型提取数学问题解决方案生成使用gpt-oss-120b生成三种难度级别的解决方案答案验证通过多数投票机制确定最终答案SFT数据准备准备6种不同类型的数据用于监督微调训练执行流程基础模型准备下载并转换基础模型格式训练配置根据硬件资源调整并行策略训练启动使用Slurm集群提交训练任务监控与调优使用WandB等工具监控训练过程模型评估在多个数学基准测试上评估模型性能关键技巧与最佳实践 1. 数据质量优化使用多轮答案验证确保数据准确性结合Python TIR和非TIR解决方案提供多样性实施严格的去污染策略避免数据泄露2. 训练效率提升合理配置TP/CP/PP并行策略使用序列打包技术提高GPU利用率根据硬件资源调整批处理大小3. 模型评估策略在多个数学基准测试上进行全面评估使用GenSelect方法选择最佳解决方案对比不同难度级别的性能表现4. 资源管理使用Slurm集群管理大规模训练任务配置检查点策略防止训练中断监控GPU内存使用情况避免溢出常见问题与解决方案 ❓Q1: 训练过程中出现内存不足怎么办解决方案调整并行策略减少批处理大小或使用梯度累积技术。Q2: 如何加速数据生成过程解决方案增加服务器GPU数量使用异步调度并行处理多个问题。Q3: 模型性能不理想如何调优解决方案调整学习率策略增加训练步数或使用更高质量的训练数据。Q4: 如何在小规模硬件上运行解决方案使用Qwen3-8B基础模型减少并行度使用更小的上下文长度。总结与展望 通过本文的详细指南你已经掌握了使用Nemo Skills复现Nemotron-Math-v2训练流程的完整方法。从数据收集、解决方案生成到模型训练的每个步骤都经过了实践验证。Nemo Skills框架的强大之处在于其灵活性和可扩展性无论是小规模实验还是大规模生产部署都能提供完整的解决方案。未来发展方向 扩展到更多数学领域和难度级别 优化训练效率减少计算成本 支持多语言数学问题处理 社区驱动的数据集扩展和模型优化现在你已经具备了复现Nemotron-Math-v2训练流程的所有知识和工具立即开始你的数学大模型训练之旅吧【免费下载链接】SkillsA project to improve skills of large language models项目地址: https://gitcode.com/gh_mirrors/ne/Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考