1 系统环境
硬件环境(Ascend/GPU/CPU): Ascend 910
MindSpore版本: mindspore=2.2.10
执行模式(PyNative/ Graph):Graph
Python版本: Python=3.8.15
操作系统平台: linux
2 报错信息
Traceback (most recent cal1 last):
File "/home/ma-user/modelarts/user-job-dir/code_v18/sigma_sft_train.py", line 15, in <module>
runrtrain_no_ pipeline(opt)
File "/home/ma-user/modelarts/user-job-dir/code_v18/pangu_sigma/sft/sigmasft.py, line 294, in run_train_no_pipeline
model.build(train dataset=ds, sink size=args_opt.sinksize, epoch=actual_epoch num)
ValueError: The input value must be int and must > 0, but got '0' with type 'int'.
rank:5, batch_size: 1 data_size:z, eod_reset:1
3 根因分析
根据报错信息,找到报错的代码;发现报错信息集中在mindrecord,这个时候需要检查一下数据量;看报错信息,显示data_size:2,说明数据量只有两个,这个时候需要检查自己生成ds数据集的shard_id和num_shard参数设置的是多少。如果数据量确实很少,且是本机8卡时,可按如下配置:
dataset = ds.MindDataset(data[data_start_ index: ], columns_list=columns_list, shuffle=shuffle, num_samples=num_samples, shard_id_rank // 8, num_shards=device_num // 8)
根因:数据量太少,在创建ds数据集时,num_shards配置不对导致。
4 解决方案
解决方法:增大数据量。