已关闭
[Doc]: 执行微调脚本报错prompt_type不在可选项内,未在templates.json文件内找到prompt-type的可选项相关配置 #1505
m0_72717906创建于  6月16日关闭于  7月14日
m0_72717906
6月16日 创建

在提交新问题之前,请确保您已经在社区中搜索过相关问题,并使用了社区中提供的资源/工具后,仍未找到满意的解决方式。

📚 文档问题描述

根据文档步骤修改微调脚本中的参数配置(未涉及prompt_type参数)后执行微调脚本,报错prompt_type不在可选项内
AssertionError: If specify prompt_type , handler name must be in:
['LlamaFactoryInstructionHandler', 'AlpacaStyleInstructionHandler', 'SharegptStyleInstructionHandler', 'AlpacaStylePairwiseHandler', 'SharegptStylePairwiseHandler', 'PPOAlpacaStyleInstructionHandler', 'HunyuanInstructionHandler', 'R1AlpacaStyleInstructionHandler', 'R1SharegptStyleInstructionHandler'].

根据文档中的微调脚本参数说明,prompt_type的可选项在https://gitcode.com/Ascend/MindSpeed-LLM/blob/master/configs/finetune/templates.json文件中配置,但未在该文件中找到相关配置,不知是哪里的问题?

报错截图:
微调报错.png

文档链接:https://gitcode.com/Ascend/MindSpeed-LLM/blob/master/docs/zh/pytorch/training/quick_start.md
文档中的相关说明截图:
微调参数说明.png

建议的替代/修复方案

欢迎加入社区,感谢您对社区的贡献 🎉!

likedislike
guozhihua2成员
6月16日 评论:

您好,感谢您的反馈,请您按照版本说明提供对应的配套软件版本信息,以及完整的XXXXXX脚本,完整报错日志,方便我们复现定位问题。

likedislike
m0_72717906
6月17日 评论:

使用镜像:openeuler22.03-mindspeed-llm-2.3.0-a2-arm
CANN版本:8.5.0
PyTorch版本:2.7.1
Python版本:3.10

examples/mcore/qwen3/tune_qwen3_8b_4K_full_ptd.sh脚本配置如下:
#!/bin/bash
export CUDA_DEVICE_MAX_CONNECTIONS=1
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True

NPUS_PER_NODE=8
MASTER_ADDR=localhost
MASTER_PORT=6000
NNODES=1
NODE_RANK=0
WORLD_SIZE=((((NPUS_PER_NODE*$NNODES))

please fill these path configurations

CKPT_LOAD_DIR="./model_from_hf/qwen3_hf/"
CKPT_SAVE_DIR="./ckpt/qwen3-8b"
DATA_PATH="./dataset/train-00000-of-00001-a09b74b3ef9c3b56.parquet"
TOKENIZER_PATH="./model_from_hf/qwen3_hf/"

TP=2
PP=4
MBS=1
GBS=16

DISTRIBUTED_ARGS="
--nproc_per_node $NPUS_PER_NODE
--nnodes $NNODES
--node_rank $NODE_RANK
--master_addr $MASTER_ADDR
--master_port $MASTER_PORT
"

GPT_ARGS="
--use-mcore-models
--spec mindspeed_llm.tasks.models.spec.qwen3_spec layer_spec
--kv-channels 128
--qk-layernorm
--tensor-model-parallel-size ${TP}
--pipeline-model-parallel-size ${PP}
--sequence-parallel
--use-distributed-optimizer
--use-flash-attn
--num-layers 36
--hidden-size 4096
--use-rotary-position-embeddings
--num-attention-heads 32
--ffn-hidden-size 12288
--max-position-embeddings 32768
--seq-length 4096
--make-vocab-size-divisible-by 1
--padded-vocab-size 151936
--rotary-base 1000000
--micro-batch-size ${MBS}
--global-batch-size ${GBS}
--disable-bias-linear
--train-iters 20
--swiglu
--tokenizer-type PretrainedFromHF
--tokenizer-name-or-path ${TOKENIZER_PATH}
--normalization RMSNorm
--position-embedding-type rope
--norm-epsilon 1e-6
--hidden-dropout 0
--attention-dropout 0
--no-gradient-accumulation-fusion
--attention-softmax-in-fp32
--exit-on-missing-checkpoint
--no-masked-softmax-fusion
--group-query-attention
--untie-embeddings-and-output-weights
--num-query-groups 8
--min-lr 1.25e-7
--lr 1.25e-6
--weight-decay 1e-1
--clip-grad 1.0
--adam-beta1 0.9
--adam-beta2 0.95
--initial-loss-scale 4096
--no-load-optim
--no-load-rng
--seed 42
--bf16
"

DATA_ARGS="
--data-path $DATA_PATH
--split 100,0,0
"

OUTPUT_ARGS="
--log-interval 1
--save-interval 1000
--eval-interval 1000
--eval-iters 0
"

TUNE_ARGS="
--finetune
--stage sft
--is-instruction-dataset
--prompt-type qwen3
--no-pad-to-seq-lengths
"

torchrun $DISTRIBUTED_ARGS posttrain_gpt.py
$GPT_ARGS
$DATA_ARGS
$OUTPUT_ARGS
$TUNE_ARGS
--distributed-backend nccl
--load ${CKPT_LOAD_DIR}
--save ${CKPT_SAVE_DIR}
| tee logs/tune_qwen3_8b_full.log

完整打印日志:
7cbc16e112614065a3de76c883979cf9.txt

likedislike
guozhihua2成员
6月22日 评论:

您好,您这边是否使用的2.3.0的分支呢,目前2.3.0分支不支持权重数据训练合一功能,您这是使用了原始数据路径,但是没有使能上述功能导致,建议切到26.0.0代码及以上。使用文档说明链接:https://gitcode.com/Ascend/MindSpeed-LLM/blob/master/docs/zh/pytorch/training/pretrain/mcore/train_from_hf.md

likedislike
m0_72717906
6月29日 评论:

已验证2.3.0分支配置后也可以执行成功。
image.png

数据和权重在线加载训练的内容未在本文档中提及,建议增加相关说明。

likedislike
xuwenyue成员
7月3日 评论:

您好,感谢您的反馈。权重数据和一训练的特性为26.0.0分支上的新增特性,2.3.0分支可能未经过充分验证。

您提到的问题:prompt_type的可选项在https://gitcode.com/Ascend/MindSpeed-LLM/blob/master/configs/finetune/templates.json文件中配置,但未在该文件中找到相关配置。
templates.json保存了一个template列表,列表中每一个template的name字段就是prompt_type的选项。

我注意到您在使用2.3.0的镜像,但却在使用master分支的快速入门文档。由于为了提升易用性,更快让用户上手LLM仓库,在26.0.0分支及之后的快速入门改为了更简单的在线加载训练形式。
您可以参考安装指导获取26.0.0的镜像或者从源码安装后,再体验快速入门的章节。

likedislike
Xxuwenyue成员
7月3日 将 xuwenyue 设为负责人
ascend-robotascend-robot成员
7月3日 添加了label:document
Xxuwenyue成员
7月3日 添加了label:resolved
ascend-robotascend-robot成员
7月3日 关联了看板:MindStudio ISSUE管理
Xxuwenyue成员
7月6日 添加了label:pending;删除了label:resolved
xuwenyue成员
7月6日 评论:

感谢您的再次反馈,权重数据合一训练特性是26.0.0的新增特性,但是快速入门文档并未在26.0.0分支就刷新为在线加载训练形式,这点需要重新说明下。

所以您使用26.0.0分支时,需要使用26.0.0分支的快速入门文档。或者切换到master分支再按照https://gitcode.com/Ascend/MindSpeed-LLM/blob/master/docs/zh/pytorch/training/quick_start.md该文档操作。

likedislike
xuwenyue成员
7月8日 评论:

再次感谢您的反馈,如果您目前没有其他问题,我们将根据流程关闭此 issue。
如后续有新的疑问或补充内容,欢迎随时重新打开本 issue,或另起一个新的 issue 进行提问。
感谢您的理解与支持!

likedislike
Xxuwenyue成员
7月8日 添加了label:resolved;删除了label:pending
guozhihua2成员
7月14日 评论:

再次感谢您的反馈,如果您目前没有其他问题,我们将根据流程关闭此 issue。

likedislike
Gguozhihua2成员
7月14日 issue状态由 TODO 改变为 DONE
Gguozhihua2成员
7月14日 关闭了 issue