Closed RoyZhanyi closed 3 years ago
由于 help 的代码是 c++ 写的,因此 make 的那行代码是进行 c++ 的编译,如果已经编译出可执行文件就可以不用这行代码了。2 中的问题和数据预处理有关,请问您是否使用的是我们提供的预处理脚本呢?预处理数据多大?训练脚本的参数设置是否可以分享出来看一下?谢谢!
数据预处理如下:
scripts/gen_data.sh
将txt文件处理成二进制文件,得到如下6个文件
context.bin (660M) context.idx(7.2M) target.bin(147M) target.idx(7.2M) target_offset.bin(74M) target_offset.idx(7.2M)
scripts/pretrain_enc_dec.sh
,会报出越界问题
IndexError:index 53004 is out of bounds for axis 0 with size 62
(由于原有模型太大。我做了参数部分更改, src/configs/model/enc_dec_xlarge_config.json 如下)
{ "d_model": 2560,(4096) "d_ff": 10240, "d_kv": 32,(原64) "num_heads": 32, (原64) "num_layers": 24, "num_decoder_layers": 24, "dropout_rate": 0.0, "feed_forward_proj": "relu", "init_method_std": 0.001, "initializer_factor": 1.0, "layer_norm_epsilon": 1e-06, "max_position_embeddings": 512, "use_cache": true, "use_scaled_init_for_output_weights": true, "do_dim_trick": false }
batch_size
调整为4scripts/pretrain_enc_dec.sh
得到的npy具体详情如下:
train_doc_idx.npy(6.8M) train_sample_idx.npy(15M) train_shuffle_idx.npy(7.3M) valid_doc_idx.npy(123K) valid_sample_idx.npy(334K) valid_shuffle_idx.npy(167K) test_doc_idx.npy(2.6K) test_sample_idx.npy(5.4K) test_shuffle_idx.npy(2.8K)
上述执行预训练过程在“src-->data-->dataset_utils.py”中compile_helper()中添加了那行make代码 我在一台机器上8张卡做的训练,已调整 NUM_WORKERS 和 NUM_GPUS_PER_WORKER,
您好~ 麻烦抽空看下问题出在哪里啦~ 这个问题还没有解决, 万分感谢 !!@t1101675
或者方便提供下其他交流效率高的联系方式嘛? 谢谢~ @zzy14 @t1101675
可以大概输出一下是哪行代码出的问题嘛,现在我们这边不太好看出问题,谢谢~
经过测试问题应该出在中英双语的词表。我们更新了一下数据处理的脚本 gen_data.sh
,改成了纯中文的词表,现在我们本地测试是没有问题的。如果您是训练纯中文模型的话可以先使用纯中文词表,双语词表等我们修复问题之后会进一步更新。感谢指出问题!
@t1101675 用咱们默认的预处理方法,会出现assert target[0] == token_id, (target[0], token_id) 不相等的情况,仔细阅读了代码逻辑,感觉没有什么地方会产生不相等的问题;
这是有可能的,可以检查一下 target_offset 里面的内容
@t1101675 有比较好的检查方法吗?
可以在数据处理的脚本里面加一个判断,比如加一个 assert,看看写入 target_offset 的东西是否过大
您好~ 我在尝试跑CPM-2-Pretrain代码时发现以下问题:
在“src-->data-->dataset_utils.py”中compile_helper()与deepspeed相比 发现缺失以下代码
ret = subprocess.run(['make', '-C', path])
如若不加此行代码会出现 import helper导入不成功,如果加上上述代码会出现2的问题。 请问该行代码是否需要加上?当我加入
ret = subprocess.run(['make', '-C', path])
进行预训练会出现数组越界问题IndexError:index 53004 is out of bounds for axis 0 with size 62
问题出现在“src-->data-->enc_dec_dataset.py” line228. 我检查了一下似乎出现在了offset=tmp_target_offset[2 * x]这个上面。 不知道问题出在哪里。很抱歉不能把原版错误粘贴出来。。问题困扰了我两天,还望作者能帮忙解答一下此处问题!万分感谢❤️❤️❤️