# 大模型训练 ## MindFormers   MindSpore Transformers套件的目标是构建一个大模型训练、微调、评估、推理、部署的全流程开发套件: 提供业内主流的Transformer类预训练模型和SOTA下游任务应用,涵盖丰富的并行特性。期望帮助用户轻松的实现大模型训练和创新研发。   MindSpore Transformers套件基于MindSpore内置的并行技术和组件化设计,具备如下特点: 一行代码实现从单卡到大规模集群训练的无缝切换; * 提供灵活易用的个性化并行配置; * 能够自动进行拓扑感知,高效地融合数据并行和模型并行策略; * 一键启动任意任务的单卡/多卡训练、微调、评估、推理流程; * 支持用户进行组件化配置任意模块,如优化器、学习策略、网络组装等; * 提供Trainer、pipeline、AutoClass等高阶易用性接口; * 提供预置SOTA权重自动下载及加载功能; * 支持人工智能计算中心无缝迁移部署;   当前支持的[模型列表查询](https://gitee.com/mindspore/mindformers),每个模型均有单独的使用说明。 [支持模型列表](https://gitee.com/mindspore/mindformers/tree/r1.3.0/#%E6%94%AF%E6%8C%81%E6%A8%A1%E5%9E%8B) ### 1.基础准备 * 建议使用最新tag的镜像:[镜像获取](http://39.171.244.84:30011/image.txt) * 版本匹配关系:[MindFormers r1.2.0](https://gitee.com/mindspore/mindformers/tree/r1.2.0/#%E7%89%88%E6%9C%AC%E5%8C%B9%E9%85%8D%E5%85%B3%E7%B3%BB) * 模型:Qwen1.5-7B:[Base权重](https://huggingface.co/Qwen/Qwen1.5-7B/tree/main)(建议训练、微调使用) / [Chat权重](https://huggingface.co/Qwen/Qwen1.5-7B-Chat/tree/main)(建议推理使用) * 数据集获取:预训练-[Wikitext-103](https://dagshub.com/DagsHub/WIkiText-103/raw/4d6345fe26a2fe22da78c46de68be83e2bf9b3b7/dataset/tokens/wiki.train.tokens) / 微调-[alpaca](https://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json) ### 2.套件安装 * [安装脚本获取](http://39.171.244.84:30011/package_dependencies/script/mindformers.sh) * `chmod +x mindformers.sh`使脚本可执行 * `bash mindformers.sh `一键安装 ### 3.单机多卡 #### 3.1 数据预处理 **1.1 Wikitext-103 数据预处理** 执行如下命令,生成Mindrecord格式数据集 ```shell python research/qwen1_5/qwen1_5_preprocess.py \ --dataset_type 'wiki' \ --input_glob /{数据集路径}/wiki.train.tokens \ --vocab_file /{权重文件路径}/Qwen1.5-7B/vocab.json \ --merges_file /{权重文件路径}/Qwen1.5-7B/merges.txt \ --seq_length 32768 \ --output_file /{预处理后数据集输出路径}/wiki.mindrecord ``` * `dataset_type`: 预处理数据类型 * `input_glob`: 输入下载后wiki.train.tokens的文件路径 * `vocab_file`: vocab.json文件路径(huggingface权重文件中) * `merges_file`: merges.txt文件路径(huggingface权重文件中) * `seq_length`: 输出数据的序列长度 * `output_file`: 输出文件的保存路径 **1.2 alpaca 数据预处理** 首先执行如下命令,将原始数据集转换为指定格式 ```shell python research/qwen1_5/alpaca_converter.py \ --data_path /{数据集路径}/alpaca_data.json \ --output_path /{转换格式后数据集输出路径}/alpaca-data-messages.json ``` * `data_path`:输入下载的文件路径 * `output_path`:输出文件的保存路径 得到转换格式的数据集后执行如下命令,进行数据预处理和Mindrecord数据生成 ```shell python research/qwen1_5/qwen1_5_preprocess.py \ --dataset_type 'qa' \ --input_glob /{转换格式后数据集输出路径}/alpaca-data-messages.json \ --vocab_file /{权重文件路径}/Qwen1.5-7B/vocab.json \ --merges_file /{权重文件路径}/Qwen1.5-7B/merges.txt \ --seq_length 4096 \ --output_file /{预处理后数据集输出路径}/alpaca-messages.mindrecord ``` #### 3.2 权重转换 **注**: 请安装`convert_weight.py`依赖包。 ```shell pip install torch transformers>=4.37.2 transformers_stream_generator einops accelerate ``` ##### 3.2.1 torch权重转mindspore权重 将huggingface的权重转换为完整的ckpt权重。 ```shell python research/qwen1_5/convert_weight.py \ --torch_ckpt_dir /{权重文件路径}/Qwen1.5-7B \ --mindspore_ckpt_path /{权重转换输出路径}/qwen1.5_7b.ckpt ``` * `torch_ckpt_dir`:预训练权重文件所在的目录, 此参数必须 * `mindspore_ckpt_path`:转换后的输出文件存放路径 > 如遇报错:`ImportError: {报错文件路径}: cannot allocate memory in static TLS block`,使用LD_PRELOAD环境变量指定对报错的单个或多个库文件进行优先加载:执行`Export LD_PRELOAD=$LD_PRELOAD:{报错文件路径}` [报错详情参考](https://blog.csdn.net/qq_52169118/article/details/139521009) ##### 3.2.2 mindspore权重转torch权重 在生成mindspore权重之后如需使用torch运行,可根据如下命令转换: ```shell python research/qwen1_5/convert_reversed.py \ --mindspore_ckpt_path /{mindspore权重路径}/qwen1.5_7b.ckpt \ --torch_ckpt_path /{权重转换输出路径}/your.bin ``` * `mindspore_ckpt_path`:待转换的mindspore权重路径 * `torch_ckpt_path`:转换后的输出文件存放路径 #### 3.3 预训练 **以`qwen1_5-7b`单机8卡预训练任务为例,执行分布式启动脚本** requirements.txt以外额外需要安装的依赖库 ```shell pip install decorator attrs sympy pip install mindspore==2.3.0 ``` 启动预训练 ```shell bash scripts/msrun_launcher.sh "run_mindformer.py \ --config research/qwen1_5/pretrain_qwen1_5_7b.yaml \ --load_checkpoint /{mindspore权重路径}/qwen1.5_7b.ckpt \ --train_dataset_dir /{预处理后数据集输出路径}/wiki.mindrecord \ --run_mode train" 8 ``` #### 3.4 全参微调 设置如下环境变量: ```shell export MS_ASCEND_CHECK_OVERFLOW_MODE=INFNAN_MODE # 如出现OOM需要配置: export ENABLE_CELL_RESUSE=1 # 打开内存复用 export MS_GE_ATOMIC_CLEAN_POLICY=1 # 打开内存优化 ``` 启动微调任务 ```shell bash scripts/msrun_launcher.sh "research/qwen1_5/run_qwen1_5.py \ --config research/qwen1_5/finetune_qwen1_5_7b.yaml \ --load_checkpoint /{mindspore权重路径}/qwen1.5_7b.ckpt \ 用的是上面torch转mindspore的权重 --auto_trans_ckpt True \ 是否开启自动在线权重切分或转换 --train_dataset /path/alpaca.mindrecord \ --run_mode finetune" 8 ``` [参数详细说明](https://gitee.com/mindspore/mindformers/tree/r1.2.0/configs#%E8%AF%A6%E7%BB%86%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E) ### 多机多卡分布式训练 先把代码目录、预处理数据、ckpt权重转换文件上传到obs桶里 **obs桶操作如下:** ./obsutil config -i=*ak* -k=*sk* -e=*endpoint*使用永久AK、SK进行初始化配置 ./obsutil/obsutil  cp 桶里被复制文件路径 目标文件夹路径  -r -f 复制桶里的文件到目标路径,如果是复制文件夹,后面加-r -f,此命令可以通过对调目录把在notebook里的文件夹上传到obs **modelArts上创建多机训练作业** ![输入图片说明](2024-12-23-09-54-42-image.png)![输入图片说明](2024-12-27-15-25-48-image.png) **参数说明** ``` config: 配置文件路径 run_mode: 运行模式, 预训练时设置为train train_data: 训练数据集文件夹路径 merges_file: 词表文件merges.txt路径 vocab_file: 词表文件vocab.json路径 ``` auto_trans_ckpt设成true会根据当前pp/mp/dp自动切分,生成strategy和transformed_checkpoint两个文件夹,将这两个文件夹重新保存到其他目录。 #### 参考文档链接 [MindFormers](https://gitee.com/mindspore/mindformers/tree/r1.2.0/#%E6%AC%A2%E8%BF%8E%E6%9D%A5%E5%88%B0mindspore-transformersmindformers) [模型权重切分与合并](https://gitee.com/mindspore/mindformers/blob/r1.2.0/docs/feature_cards/Transform_Ckpt.md) [Issues](https://gitee.com/mindspore/mindformers/issues?q=is%3Aclosed) ## MindSpeed-LLM ### 1.MindSpeed-LLM简介   MindSpeed-LLM,原仓名ModelLink,作为昇腾大模型训练框架,旨在为华为 [昇腾芯片](https://www.hiascend.com/) 提供端到端的大语言模型训练方案, 包含分布式预训练、分布式指令微调、分布式偏好对齐以及对应的开发工具链。 ***注 : 原包名 modellink 更改为 mindspeed_llm *** **[MindSpeed-LLM简介官方链接](#https://gitee.com/ascend/MindSpeed-LLM/blob/master/README.md#)** ### 2.镜像准备 从下面网址里获取最新镜像链接并且注册: [镜像地址](http://39.171.244.84:30011/image.txt) 镜像注册指导:[镜像注册]() ### 3.套件安装 ##### 安装mindspeedllm: 从下面网址里获取最新安装脚本: [脚本地址](http://39.171.244.84:30011/package_dependencies/script/modellink.sh) 进入镜像,执行安装脚本:```bash modellink.sh``` ##### debug参考: [debug参考](https://gitee.com/ascend/MindSpeed-LLM/issues?q=is%3Aclosed) ### 4.准备数据集 [下载数据集](https://gitee.com/csw-assdasd8sa8d7as78/aicc-mind-speed-llm-document/raw/master/Alpaca_data_gpt4_zh.jsonl) [数据集准备示例](https://gitee.com/csw-assdasd8sa8d7as78/aicc-mind-speed-llm-document/blob/master/README.md#-3%E5%87%86%E5%A4%87%E6%95%B0%E6%8D%AE%E9%9B%86) #### **转换数据集** ```cmd cd /home/ma-user/work/MindSpeed-LLM python preprocess_data.py \ --input /home/ma-user/work/MindSpeed-LLM/dataset/Alpaca_train.json \ --tokenizer-name-or-path /home/ma-user/work/Qwen2.5-14B/ \ --output-prefix ./dataset/alpaca/ \ --handler-name GeneralInstructionHandler \ --tokenizer-type PretrainedFromHF \ --workers 4 \ --log-interval 1000 \ ``` ### 5.将权重从 huggingface 格式转化为 megatron 格式 ```cmd cd /home/ma-user/work/MindSpeed-LLM python tools/checkpoint/convert_ckpt.py \ --model-type GPT \ --loader llama2_hf \ --saver megatron \ --target-tensor-parallel-size 2 \ --target-pipeline-parallel-size 2 \ --make-vocab-size-divisible-by 16 \ --load-dir /home/ma-user/work/Qwen2.5-14B/ \ --save-dir ./model_weights/Qwen2.5-14B-tp2-pp2/ \ --tokenizer-model /home/ma-user/work/Qwen2.5-14B/tokenizer.json \ --add-qkv-bias \ --params-dtype bf16 ``` ### 6.开启训练(8卡) #### 修改训练脚本/home/ma-user/work/MindSpeed-LLM/examples/qwen15/pretrain_qwen15_14b_ptd.sh: ```cmd export MEMORY_FRAGMENTATION=1;export MULTI_STREAM_ME=1;export PYTORCH_NPU_ALLOC_CONF="expandable_segments:False,max_split_size_mb:21"; CKPT_LOAD_DIR="/home/ma-user/work/MindSpeed-LLM/model_weights/Qwen2.5-14B-v0.1-tp2-pp2" CKPT_SAVE_DIR="/home/ma-user/work/MindSpeed-LLM/model_weights/qwen_trained_ckpts" DATA_PATH="/home/ma-user/work/MindSpeed-LLM/finetune_dataset/alpaca/" TOKENIZER_PATH="/home/ma-user/work/Qwen2.5-14B" GPT_ARGS=" --tensor-model-parallel-size ${TP} \ --pipeline-model-parallel-size ${PP} \ --sequence-parallel \ --ffn-hidden-size 13824 \ --group-query-attention \ --num-query-groups 8 \ --rotary-base 1000000 \ --norm-epsilon 1e-5 \ --num-layers 48 \ --hidden-size 5120 \ --transformer-impl local \ --num-attention-heads 40 \ --load ${CKPT_LOAD_DIR} \ --tokenizer-type PretrainedFromHF \ --tokenizer-name-or-path ${TOKENIZER_PATH} \ --seq-length 1024 \ --max-position-embeddings 131072 \ --micro-batch-size 1 \ --global-batch-size 32 \ --make-vocab-size-divisible-by 1 \ --padded-vocab-size 152064 \ --rotary-base 1000000 \ --lr 1.25e-6 \ --train-iters 5000 \ --lr-decay-style cosine \ --untie-embeddings-and-output-weights \ --disable-bias-linear \ --attention-dropout 0.0 \ --init-method-std 0.01 \ --hidden-dropout 0.0 \ --position-embedding-type rope \ --normalization RMSNorm \ --swiglu \ --use-flash-attn \ --use-fused-rmsnorm \ --use-fused-rotary-pos-emb \ --use-rotary-position-embeddings \ --use-fused-swiglu \ --use-mc2 \ --no-masked-softmax-fusion \ --attention-softmax-in-fp32 \ --min-lr 1.25e-7 \ --weight-decay 1e-1 \ --lr-warmup-fraction 0.01 \ --clip-grad 1.0 \ --adam-beta1 0.9 \ --adam-beta2 0.95 \ --add-qkv-bias \ --initial-loss-scale 4096 \ --no-gradient-accumulation-fusion \ --no-load-optim \ --no-load-rng \ --seed 42 \ --bf16 \ --load ${CKPT_LOAD_DIR} \ --finetune \ --is-instruction-dataset \ --tokenizer-not-use-fast \ --use-distributed-optimizer " ``` #### 参数解释 - **`--load ${CKPT_LOAD_DIR}`** - **解释**: 从指定的目录 (`${CKPT_LOAD_DIR}`) 加载预训练模型或检查点 (checkpoint)。 - **用途**: 通常用于在训练或推理过程中加载已经训练好的模型权重,以便继续训练或进行推理。 - **`--finetune`** - **解释**: 启用微调 (fine-tuning) 模式。 - **用途**: 在微调模式下,模型会基于预训练的权重进行进一步的训练,通常用于特定任务的适应性调整。 - **`--is-instruction-dataset`** - **解释**: 指示数据集是基于指令的 (instruction-based)。 - **用途**: 用于指定数据集的类型,通常在处理需要遵循特定指令的任务时使用,例如自然语言理解或生成任务。 - **`--tokenizer-not-use-fast`** - **解释**: 禁用快速分词器 (fast tokenizer)。 - **用途**: 默认情况下,许多模型使用快速分词器以提高效率,但在某些情况下可能需要使用原始的分词器实现。 - **`--use-distributed-optimizer`** - **解释**: 启用分布式优化器。 - **用途**: 在分布式训练环境中使用,优化器会在多个设备或节点之间协同工作,以提高训练效率和性能。 额外的,添加显存优化相关环境变量: #### 环境变量和配置解释 - **`export MEMORY_FRAGMENTATION=1`** - **解释**: 启用内存碎片化检测或优化。 - **用途**: 该变量可能用于调试或优化内存分配,特别是在需要检测或减少内存碎片化的情况下。值为 `1` 表示启用相关功能。 - **`export MULTI_STREAM_ME=1`** - **解释**: 启用多流内存分配或管理。 - **用途**: 该变量可能用于支持多流处理或并行计算的内存管理。值为 `1` 表示启用多流内存分配功能。 - **`export PYTORCH_NPU_ALLOC_CONF="expandable_segments:False,max_split_size_mb:21"`** - **解释**: 配置 PyTorch NPU 内存分配策略。 - **用途**: - `expandable_segments:False`: 不允许内存段动态扩展。 - `max_split_size_mb:21`: 设置内存分配时的最大分割大小为 21 MB,用于控制内存分配的粒度。 - **场景**: 这些配置通常用于优化 PyTorch 在 NPU(如华为 Ascend NPU)上的内存分配策略,以提高性能或避免内存不足的问题。 #### 训练命令: ```cmd bash /home/ma-user/work/MindSpeed-LLM/examples/qwen15/train_qwen25_14b.sh ``` ### 7.转回HF权重(8卡) #### 转回HF权重 必须输出在原HF的路径下 ```python python tools/checkpoint/convert_ckpt.py \ --model-type GPT \ --loader megatron \ --saver megatron \ --save-model-type save_huggingface_llama \ --load-dir /home/ma-user/work/MindSpeed-LLM/model_weights/Qwen2.5-14B-v0.1-tp2-pp2/qwen_trained_ckpts \ --target-tensor-parallel-size 1 \ --target-pipeline-parallel-size 1 \ --add-qkv-bias \ --save-dir /home/ma-user/work/Qwen2.5-14B/ ## <-- 需要填入原始HF模型路径,新权重会存于./model_from_hf/qwen15-4b-hf/mg2hg/ ``` **参考链接**: - [Qwen-1.5-14B微调 官方文档](https://gitee.com/ascend/MindSpeed-LLM/blob/1.0.RC2/examples/qwen15/README.md#qwen15-14b) - [MindSpeed-LLM 官方文档](https://gitee.com/ascend/MindSpeed-LLM/blob/master/examples/mcore/qwen25/pretrain_qwen25_14b_32K_ptd.sh) **多机流程**: - [多机训练使用AscendSpeed封装好的shell脚本启动,已经配置好优化环境变量/通信端口等设置,点我跳转](https://gitee.com/csw-assdasd8sa8d7as78/aicc-mind-speed-llm-document/blob/master/%E5%A4%9A%E6%9C%BA%E8%AE%AD%E7%BB%83%E4%BD%9C%E4%B8%9A%E6%B5%81%E7%A8%8B/README.md) ## MindSpeedLLM多机流程 --- ### 1️.获取镜像 ![image_train_job.png](image_train_job.png) #### 镜像地址: ```bash swr.cn-east-292.mygaoxinai.com/qwenj/pytorch2_1-cann8_rc3-py39:base ``` ![image_train_job-2.png](image_train_job-2.png) --- ### 2️.创建 Notebook ![image_train_job-3.png](image_train_job-3.png) --- ### 3️.数据获取 - **单机获取文件:** 使用 `Ctrl+C` 复制后,粘贴到本地桌面 (`Ctrl+V`)。 - **Linux命令工具 Obsutil:** Obsutil 是用于与云存储服务交互的命令行工具。 点击下面链接下载: [obsutil下载](https://gitee.com/csw-assdasd8sa8d7as78/aicc-mind-speed-llm-document/blob/master/%E5%A4%9A%E6%9C%BA%E8%AE%AD%E7%BB%83%E4%BD%9C%E4%B8%9A%E6%B5%81%E7%A8%8B/obsutil) #### 配置登录: ```bash ./obsutil config -i=${OBSAK} -k=${OBSSK} -e=obs.cn-east-292.mygaoxinai.com ``` #### 数据获取命令: ```bash ## 下载单个文件 ./obsutil cp source_file target_file ## 同步文件夹 ./obsutil sync source_folder target_folder ## 获取代码库 ./obsutil sync obs://modellink-cloud/AscendSpeed/ ./AscendSpeed ``` - **获取模型原始权重:** 可通过 [ModelScope](https://modelscope.cn/) 或 [HF-Mirror](https://huggingface.co/mirror) 等网站。 --- ### 4️.数据上传 ⬆ #### 创建桶: ![image_train_job-4.png](image_train_job-4.png) #### 上传命令: ```bash ## 假设桶名为 work,代码路径为 ~/work/AscendSpeed,模型路径为 ~/work/models ./obsutil sync ~/work/AscendSpeed obs://work/AscendSpeed ./obsutil sync ~/work/models obs://work/models ``` --- ### 5️.保存镜像 ![image_train_job-5.png](image_train_job-5.png) ![image_train_job-6.png](image_train_job-6.png) --- ### 6️.创建训练作业 ![image_train_job-7.png](image_train_job-7.png) #### 启动命令: ```bash cd /home/ma-user/modelarts/user-job-dir/AscendSpeed sh ./scripts/install.sh sh ./scripts/obs_pipeline2.sh ``` ![image_train_job-8.png](image_train_job-8.png) #### 输入变量名: ```bash ORIGINAL_TRAIN_DATA_PATH= ORIGINAL_HF_WEIGHT= ``` #### 输出变量名: ```bash OUTPUT_SAVE_DIR= HF_SAVE_DIR= ``` ![image_train_job-9.png](image_train_job-9.png) --- #### 模型命名规则: - 微调 **千问14B**, 则模型名为: ```bash qwen-14b ``` - 微调 **千问2.5 14B**, 则模型名为: ```bash qwen2-14b ``` --- #### 训练配置参数示例: ![image_train_job-10.png](image_train_job-10.png) #### Megatron训练参数解释 以下是常用的 Megatron-LM 训练参数及其含义解析: --- #### **参数说明** | 参数名 | 含义 | 示例值 | |------------------|--------------------------------------------------------------------------------------------------|-------------| | `CP` | **检查点 (Checkpoint) 数**: 指训练过程中保存的模型分片数量。 | `1` | | `DATA_TYPE` | **数据处理类型**: 指定输入数据的处理逻辑或预处理模块。 | `GeneralInstructionHandler` | | `EPOCH` | **训练轮次 (Epoch)**: 数据集被完整遍历的次数。 | `1` | | `GBS` | **全局批量大小 (Global Batch Size)**: 多机总的 batch size(所有设备上累加)。 | `64` | | `LR` | **初始学习率 (Learning Rate)**: 优化器的学习率初始值。 | `1.25e-6` | | `MAX_PE` | **最大位置编码 (Max Position Encoding)**: 序列的最大长度,通常等于 `SEQ_LEN`。 | `4096` | | `MBS` | **微批量大小 (Micro Batch Size)**: 每张卡上的局部 batch size,`GBS = MBS × 卡数 × 梯度累积步数`。 | `1` | | `MIN_LR` | **最小学习率 (Minimum Learning Rate)**: 学习率的下限值,用于学习率调度器。 | `1.25e-7` | | `MODEL_NAME` | **模型名称**: 训练生成的模型名称,用于保存或管理模型文件。 | `yi-34b` | | `MOUNT` | **挂载类型 (Mount Type)**: 数据存储类型,通常是对象存储(如 `OBS` 或其他存储服务)。 | `OBS` | | `TRAIN_ITERS` | **训练迭代次数**: 总的训练步数,等于 `EPOCH × 数据集大小 / GBS`。 | `1400` | | `RUN_TYPE` | **运行模式**: 例如 `sft` 表示微调,`pretrain` 表示预训练。 | `sft` | | `SAVE_INTERVAL` | **保存间隔 (Save Interval)**: 每隔多少步保存一次模型权重。 | `1400` | | `SEED` | **随机种子 (Seed)**: 用于随机数生成器的初始化,确保训练的可重复性。 | `1234` | | `SEQ_LEN` | **序列长度 (Sequence Length)**: 训练数据的最大 token 长度。 | `4096` | | `SN` | **模型隐藏层维度 (Hidden Size)**: 通常表示 Transformer 模型的隐层维度(如 `SN=5120` 表示 5120 维)。 | `5120` | | `TP` | **张量并行度 (Tensor Parallelism)**: 模型张量分解的并行数,通常用于跨设备分解计算。 | `8` | | `PP` | **流水线并行度 (Pipeline Parallelism)**: 模型分层的并行数量,用于流水线并行。 | `2` | --- #### **公式与关系** 1. **全局批量大小 (GBS) 公式**: $$ \[ GBS = MBS \times \text{卡数} \times \text{梯度累积步数} \] $$ 2. **并行设置规则**: $$ \[ TP \times DP \times CP = \text{总卡数} \] $$ 其中: - `TP`: 张量并行 (Tensor Parallelism) - `DP`: 数据并行 (Data Parallelism) - `CP`: 检查点并行 (Checkpoint Parallelism) 3. **总训练步数计算**: $$ \[ \text{训练迭代数 (Train Iters)} = \frac{\text{数据集大小}}{\text{GBS}} \times \text{EPOCH} \] $$ --- #### **优化器与调度器相关参数** - `LR` 和 `MIN_LR` 一起决定了学习率的范围。 - 学习率通常通过预设调度器(如 `cosine decay`)逐步衰减到 `MIN_LR`。 --- #### **示例配置** 以下为实际的训练参数示例: ```bash CP=1 DATA_TYPE=GeneralInstructionHandler EPOCH=1 GBS=64 LR=1.25e-6 MAX_PE=4096 MBS=1 MIN_LR=1.25e-7 MODEL_NAME=yi-34b MOUNT=OBS TRAIN_ITERS=1400 RUN_TYPE=sft SAVE_INTERVAL=1400 SEED=1234 SEQ_LEN=4096 SN=5120 TP=8 PP=2 ``` #### 并行设置规则: ![image_train_job-11.png](image_train_job-11.png) ```bash TP * DP * CP = 总卡数 ``` #### 训练日志: ![image_train_job-12.png](image_train_job-12.png) --- ```