
# 训练常见问题
#### Q1：复制文档中提供的样例脚本，运行时为什么出现 syntax error near unexpected token \`$'{\\r''？提示
A：通过复制文档中提供的的样例脚本后创建文件，可能由于Windows系统文件的换行符和Linux有所不同，导致了换行符识别不匹配。可以在Linux系统中执行dos2unix xxx.sh 或者使用vim执行以下两条命令进行格式转换。
```
:set ff=unix
:wq
```
#### Q2：训练完成之后得到的是什么格式的权重？为什么数量和一开始的HF模型文件数量不一致?
A：训练结束时生成的是 DCP (Distributed Checkpoint)格式权重。在裸机上可以设置yaml文件中save_hf_weights为true来使得最后保存hf格式权重，或者执行python /home/ma-user/VeOmni/scripts/merge_dcp_to_hf.py --\<参数\> 来单独进行格式转化。在ModelArts平台中，由于如下代码多机情况下仅在主节点进行权重转化以及容器间通信同步原因，可能会导致从节点等待超时，故在train.sh脚本中控制只在主节点执行权重转化。
![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002552871107.png "点击放大")
如需单独进行权重转化命令，可以参考如下命令
```
# 执行ckpt转化为hf格式，model-assets-dir是模型路径，load-dir是训练完保存的dcp路径，save-dir是最后保存的hf路径
python /home/ma-user/VeOmni/scripts/merge_dcp_to_hf.py \
    --model-assets-dir "$model_path/Qwen3-32B" \
    --save-dir "$output_dir/qwen3-32b-saved-hf_ckpt" \
    --load-dir "$FULL_LOAD_PATH"
```
#### Q3：训练完成之后对保存的dcp格式权重转换为hf格式时出现报错
现象：训练完成之后使用merge_dcp_to_hf.py对保存的dcp格式权重转换为hf格式时出现报错 FileNotFoundError: \[Errno 2\] No such file or directory: '/home/ma-user/modelarts/user-job-dir/veomni-vl/output/qwen3_vl_dense_sft/checkpoints/global_step_10/__8_1.distcp'
A：从节点保存的权重需要时间通过OBS传输到主节点，可以在权重格式转换之前等待一段时间后再执行。已经预设sleep一定时间用于同步文件，如受到网络影响或文件过大可以适当增加。
#### Q4：在保存权重阶段遇到了IO Error，是什么原因？
A：可能是权限不足或者是参数设置原因。
![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002523529498.png)
排查权限不足的原因请在权限管理的界面中排查OBS内是否有写入的权限，还是仅有读取内容的权限。
排查参数设置的原因，请注意是否同时使用了train.save_steps或者train.save_epochs参数导致在同一个global_step_XX分别进行保存，导致OBS内同时在同一个step写入同名文件。推荐在使用OBS的时候只选择其中一个参数。
参数设置可以参考 [Arguments API Reference --- VeOmni v0.1.0 documentation](https://veomni.readthedocs.io/en/latest/usage/arguments.html) 获取更多详细信息。
