AI开发平台MODELARTS-执行微调训练任务:Step2 修改训练yaml文件配置

时间:2024-09-29 15:27:12

Step2 修改训练yaml文件配置

LlamaFactroy配置文件为Yaml文件,启动训练前需修改Yaml配置文件,Yaml配置文件在代码目录下的{work_dir}/llm_train/LLaMAFactory/demo.yaml。修改详细步骤如下所示。

  1. 选择训练策略类型。
  2. 修改yaml文件(demo.yaml)的参数如表1所示。
    表1 修改重要参数

    参数

    示例值

    参数说明

    model_name_or_path

    /home/ma-user/ws/tokenizers/Qwen2-72B

    必须修改。加载tokenizer与Hugging Face权重时存放目录绝对或相对路径。请根据实际规划修改。

    template

    qwen

    必须修改。用于指定模板。如果设置为"qwen",则使用Qwen模板进行训练,模板选择可参照表1中的template

    output_dir

    /home/ma-user/ws/Qwen2-72B/sft-4096

    必须修改。指定输出目录。训练过程中生成的模型参数和日志文件将保存在这个目录下。用户根据自己实际要求适配。

    per_device_train_batch_size

    1

    指定每个设备的训练批次大小

    gradient_accumulation_steps

    8

    可修改。指定梯度累积的步数,这可以增加批次大小而不增加内存消耗。可根据自己要求适配。取值可参考表1梯度累积值列。

    num_train_epochs

    5

    表示训练轮次,根据实际需要修改。一个Epoch是将所有训练样本训练一次的过程。可根据自己要求适配

    cutoff_len

    4096

    文本处理时的最大长度,此处为4096,用户可根据自己要求适配

    dataset

    identity,alpaca_en_demo

    可选】注册在dataset_info.json文件数据集名称。如选用定义数据请参考准备数据(可选)配置dataset_info.json文件,并将数据集存放于dataset_info.json同目录下。

    dataset_dir

    /home/ma-user/ws/LLaMAFactory/LLaMA-Factory/data

    可选】dataset_info.json配置文件所属的绝对路径;如使用自定义数据集,yaml配置文件需添加此参数。

  3. 是否选择加速深度学习训练框架Deepspeed,可参考表1选择不同的框架。
    • 是,选用ZeRO (Zero Redundancy Optimizer)优化器。
      • ZeRO-0,配置以下参数
        deepspeed: examples/deepspeed/ds_z0_config.json
      • ZeRO-1,配置以下参数,并复制ds_z1_config.json样例模板至工作目录/home/ma-user/LLaMAFactory/LLaMA-Factory/examples/deepspeed
        deepspeed: examples/deepspeed/ds_z1_config.json
      • ZeRO-2,配置以下参数
        deepspeed: examples/deepspeed/ds_z2_config.json
      • ZeRO-3,配置以下参数
        deepspeed: examples/deepspeed/ds_z3_config.json
      • ZeRO-3-Offload,配置以下参数
        deepspeed: examples/deepspeed/ds_z3_offload_config.json
    • 否,默认选用Accelerate加速深度学习训练框架,注释掉deepspeed参数。
  4. 是否开启NPU FlashAttention融合算子,具体约束详见NPU_Flash_Attn融合算子约束
    • 是,配置以下参数。
      flash_attn: sdpa
    • 否,注释掉flash_attn: sdpa参数
  5. 是否使用固定句长。
    • 是,配置以下参数
      packing: true
    • 否,默认使用动态句长,注释掉packing参数。
  6. 选用数据精度格式,以下参数二选一。
    • bf16,配置以下参数
      bf16: true
    • fp16,配置以下参数
      fp16: true
  7. 是否使用自定义数据集。
    • 是,参考准备数据(可选)后,配置以下参数:参考表1dataset_dir和dataset参数说明;如alpaca_gpt4_data.json数据集前缀则为alpaca_gpt4_data。
      dataset: alpaca_gpt4_data
      dataset_dir: /home/ma-user/ws/llm_train/LLaMAFactory/LLaMA-Factory/data 
    • 否,使用代码包自带数据集,注释掉dataset_dir参数,配置参数如下:
      • sft或lora
        dataset: identity,alpaca_en_demo
      • dpo
        dataset: dpo_en_demo
  8. 是否使用chatglm4-9b、falcon-11b模型。
    • 是,更新配置或命令。
      • chatglm4-9b,更新transformers为4.41.2版本。
        pip install transformers==4.41.2
      • falcon-11b,参考falcon-11B模型替换文件。
    • 否,忽略此步骤,执行下一步。
  9. 如需其他配置参数,可参考表1按照实际需求修改。
support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_90827.html