拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PaddleNLP ERNIE 中文预训练全流程实战:从 400GB 开源语料到全字符词表与分布式训练

PaddleNLP ERNIE 中文预训练全流程实战:从 400GB 开源语料到全字符词表与分布式训练 人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载本文以 PaddleNLP 仓库中 ERNIE 中文预训练介绍 为核心脉络完整讲解基于 CLUE、WuDao 共 400GB 开源中文语料从零构建 ERNIE 中文预训练模型的完整链路数据下载、高精准中文分词、快速 Token ID 转化、全字符中文词表制作到分布式训练SOP/MLM/N-gram Mask、混合精度、梯度累积、重计算、断点重启与 VisualDL 观察评估。读完本文你将掌握一套可复现、可扩展的中文预训练数据管线与训练配置方法并了解ernie-1.0-base-zh-cw、ernie-1.0-large-zh-cw两个开源模型的训练配方与评测结果。1. 数据准备预训练的数据基石数据流是预训练的命脉。PaddleNLP 在 llm/tools/preprocess 中提供了完整的数据流程说明整体划分为原始数据转换jsonl、数据 ID 化断句、分词、tokenize、训练 index 文件生成、token 动态 Mask可选四个阶段。ERNIE 预训练的数据侧目标是让语料同时满足「大规模」与「开源开放」两个要求。1.1 大规模中文数据CLUE WuDao 共 400GB像 ERNIE-3.0、GPT-3、CPM 等模型动辄使用数 TB 级文本语料而当时部分开源中文模型仅基于约 15GB 的 CLUECorpus 语料训练效果受限。为此本项目选用两份开源语料CLUECorpus2020约 200GB由 Common Crawl 中文部分语料清洗得到可通过邮件申请下载详细处理流程见 CLUECorpus2020 数据处理文档。WuDaoCorpus2.0 Base200GB悟道爬取的中文大规模语料完整版 3TB开源部分 200GB压缩包约 64GB下载与清洗方式见 WuDaoCorpusBase 数据处理文档。为了方便快速跑通全流程项目提供了约 2GB 的 WuDao 样本数据少量 part便于测试wget https://bj.bcebos.com/paddlenlp/models/transformers/data_tools/WuDaoCorpus2.0_base_200G_sample.tar.gz tar -xvf WuDaoCorpus2.0_base_200G_sample.tar.gz用这份样本数据即可完整走完「分词 → jsonl → Token ID → 训练」全部流程。1.2 高精准中文分词LAC 与 Whole Word MaskERNIE 采用知识嵌入的方式进行预训练文本中的人名、地名、成语、短语等知识单元在数据层面通过Whole Word MaskWWM整词一起 MASK 后预测。因此分词精度直接影响预训练效果。项目中对比了三种常用中文分词方式假设 CPU 40 线程、GPU 16 卡处理 200G 文本| 切词方式 | 效果 | 速度 | 预估耗时 | |-|-|-|-| | jieba | 一般 | 607 KB/s | 2.5 h | | lac | 好 | 106 KB/s | 13.9 h | | wordtag弃用 | 最好 | 0.94 KB/s | 159 DGPU |其中 jieba 基于 HMM 隐马尔可夫模型lac 基于 LSTM。综合考虑分词效果与速度最终选择百度的 LACseg作为文本分词工具。以 WuDao 数据为例通过 words_segmentation.py 对数据进行分词数据格式为wudao分词函数选择seg48 进程并行python $PADDLENLP_PATH/llm/tools/preprocess/words_segmentation.py \ --input_path ./WuDaoCorpus2.0_base_200G \ --output_path ./wudao_lac_cut \ --data_format wudao \ --cn_seg_func seg \ --workers 48注预训练需要实现 SOPSentence Order Predict任务分词时会用简单规则进行文本断句。若语料只有单句、无法组合成句子对建议去除 SOP loss训练时设置binary_headFalse。分词完成后用 trans_to_json.py 将分词结果重新转换为 jsonl 格式每行一个 json 字符串默认 key 为textpython $PADDLENLP_PATH/llm/tools/preprocess/trans_to_json.py \ --input_path ./wudao_lac_cut \ --output_path wudao_corpus_200g_sample.jsonl \ --workers 40 \ --no-shuffletrans_to_json.py支持--doc_spliter指定文档分隔符、--min_doc_length过滤过短文章默认 10 字符、--no-merge保持多文件输出、--no-shuffle关闭洗牌等选项。项目也提供了已处理好的wudao_corpus_200g_sample.jsonl供直接下载进行后续 tokenizer 转换。1.3 快速 Token ID 转化Multiprocessing BytesIO语料与词表就绪后进入数据 ID 化核心脚本为 create_pretraining_data.py。其实现有两个关键工程点高效的 Multiprocessing 多进程实现转换逻辑复杂需要定义Converter类对象。若每次处理新文本都实例化一次类对象速度瓶颈在实例化开销上。实现通过提前使用multiprocessing.Pool的initializer对处理函数预实例化显著提高效率。BytesIO 内存存储Token ID 总量可达数百 Billion用 Python list 存储会出现空间浪费与重复分配内存的瓶颈。改用 BytesIO 以「写内存文件」的方式存储速度快且可方便地转为 numpy 文件落盘。实测在 Intel Xeon Gold 6148 2.40GHz、40 线程下处理速度 8MB/s约 7 小时可完成 200GB 文本的 ID 转化。命令如下python -u $PADDLENLP_PATH/llm/tools/preprocess/create_pretraining_data.py \ --model_name ernie-3.0-base-zh \ --tokenizer_name ErnieTokenizer \ --input_path wudao_corpus_200g.jsonl \ --output_prefix wudao_corpus_200g \ --split_sentences \ --data_impl mmap \ --chinese \ --cn_splited \ --cn_whole_word_segment \ --workers 48 \ --log_interval 1000参数说明--model_name指定词表。可使用 PaddleNLP 内置词表如ernie-1.0-base-zh、ernie-3.0-base-zh也可传自定义词表所在目录见第 2 章词表制作。--tokenizer_nametokenizer 类型ERNIE 使用ErnieTokenizer。--split_sentences按句子切分BERT/ERNIE 类模型需要GPT 类模型不需要。--data_impl mmap输出 mmap 格式加载时建立内存映射、几乎不耗时也可选lazy格式。--chinese处理中文时需要--cn_whole_word_segment开启 WWM 策略--cn_splited输入文本已分词时使用此时cn_seg_func不再生效--cn_seg_func可选lac/seg/jieba默认 jieba。转化后产出两个文件即可开始 ERNIE 预训练wudao_corpus_200g.bin # 数据 id 化后的 token ids wudao_corpus_200g.idx # 句子、文章位置索引对于 WuDao 样本数据项目同样提供了使用ernie-3.0-base-zhtokenizer 处理好的.bin/.idx文件可直接下载。若数据文件过大可将 jsonl 拆分为多个小文件并行 ID 化再用 llm/tools/preprocess/merge.py 合并多个.bin/.idx文件。2. 全字符中文词表制作上一节的 ID 化使用了现成词表当需要定制词表时需要从头制作。ERNIE 这类中文模型属于字模型不会出现##中国这类连续汉字子词。通常做法是先用 BasicTokenizer 在中文汉字间加空格再切分 subword使每个汉字独立成 tokenchina - ch #ina 我爱china - 我 爱 china - 我 爱 ch #ina词表制作有两种方案词表组合方案本项目采用统计字符 → 制作英文词表 → 合并词表。自定义程度高但对连续非中、英文字符文本存在局限。预处理后直接生成方案文本预处理中文加空格、normalize→ 使用 sentencepiece 生成。需要先用 BasicTokenizer 切分语料。2.1 分析准备为什么是 40000 词表词表大小主要考虑两个因素已有模型对照ERNIE 3.0 系列模型词表约 40000。预训练数据存储占用Token ID 化后希望用 uint16 表示最大 65536ERNIE 虽是字模型仍需##中之类的字符表示分词信息。若中文全字符取 20902 个0x4E00–0x9FA5剩余 vocab 空间不能超过 44634。因此本项目确定约 40000 词表容量构成为中文全字符 20902 英文字符约 17000 其他字符约 2000。2.2 文本字符统计第一步统计文本字符目的主要是收集常用的中文字符与特殊字符。由于语料过大随机选取约 10G 原始文本进行统计脚本为 slm/model_zoo/ernie-1.0/vocab/gen_char.pypython ./vocab/gen_char.py path_to_corpus.txt从源码看该脚本会逐行读取文本支持单文件或目录递归遍历用defaultdict(int)统计每个字符频率并在本地输出排序后的char_dict.txt与二进制char_dict.pickle字符频率文件。项目也提供了现成的词频文件char_dict.pickle方便用户复现。2.3 英文字符词表基于字符的词频统计会把英文切分为单个字母因此需要额外构造英文词表。英文部分使用 WikiText 数据集通过 gen_vocab.py 训练 sentencepiece 的 BPE 模型生成wget https://s3.amazonaws.com/research.metamind.io/wikitext/wikitext-103-v1.zip unzip wikitext-103-v1.zip python ./vocab/gen_vocab.py ./wikitext-103-raw/wiki.train.raw源码中通过spm.SentencePieceTrainer.train(input..., model_prefixeng, vocab_size17000, model_typeBPE)训练得到eng.model与eng.vocab。项目同样提供处理好的eng.vocab用于验证。2.4 合并词表将char_dict.pickle与eng.vocab放置到当前目录运行 merge_vocab.pypython ./vocab/merge_vocab.py即可在当前目录生成最终词表vocab.txt。从源码看合并逻辑包括首先写入[PAD]、[CLS]、[SEP]、[MASK]、[UNK]等 special tokens按字符频率从高到低加入中文全字符0x4E00–0x9FA5 全集未出现在统计中的汉字也补齐读取eng.vocab时移除 sentencepiece 的▁前缀并对英文子词添加##前缀删除pad等占位 token使用BasicTokenizer对特殊字符做 normalize跳过空白与控制字符并为日文、谚文字符0x3040–0x33FF、0x1100–0x11FF额外添加##前缀版本。此阶段注意两点① 日文、谚文等字符需要 normalize② 需要添加 special_tokens。2.5 方案一的问题遗留与改进拼接产出的词表对连续非中、英文字符文本会出现 UNK 问题。项目做了两点改进对 Symbol 字符默认添加空格变成独立字符对日文、谚文在合并词表阶段默认添加##字符。即使如此仍无法完全避免 UNK彻底解决建议改用方案二制作词表。2.6 方案二BasicTokenizer 预处理后直接生成对语料使用 BasicTokenizer 转换from paddlenlp.transformers import BasicTokenizer tokenizer BasicTokenizer() basic_tokenizer lambda x: .join(tokenizer.tokenize(x)) # 对语料使用 basic_tokenizer 转换 # 并存储为新的语料 after_basic_tokenizer_corpus.txt对转换后的语料训练词表python ./vocab/gen_vocab.py after_basic_tokenizer_corpus.txt手动替换 special_tokens如pad→[PAD]即可产出词表。新词表的使用方法与内置词表完全一致在create_pretraining_data.py中将--model_name指向词表所在目录训练时tokenizer_name_or_path同样指向该目录ERNIE 词表文件通常命名为vocab.txt。3. 开始训练数据制作完成后进入模型训练环节。训练入口脚本为 slm/model_zoo/ernie-1.0/run_pretrain.py参数定义集中在 slm/model_zoo/ernie-1.0/args.py。3.1 训练脚本环境配置适合 paddlenlp develop 运行可直接跳过仅简单训练可直达「继续训练」PYTHONPATH设置为当前目录export PYTHONPATH$PYTHONPATH:../../设置 FLAGSFLAGS_call_stack_level2增强报错、FLAGS_enable_eager_mode1动态图 Flag、FLAGS_gemm_use_half_precision_compute_typeFalse提高矩阵乘法精度多机训练时可设置NCCL_SOCKET_IFNAME指明 NCCL 通信网口。路径配置trainer_id${PADDLE_TRAINER_ID:-0} task_name0809-ernie-1.0-base-cw-dp16-gb1024 base_nfs/path/to/your/nfs/mount/point base_dir${base_nfs}/ernie-cw/output/${task_name} data_dir5.0 ${base_nfs}/clue_oscar/clue_corpus_oscar_0630 7.0 ${base_nfs}/clue_train/clue_corpus_train_0629 12.0 ${base_nfs}/wudao_200g/wudao_200g_0703 vocab_dir${base_nfs}/其中vocab_dir未使用自定义词表时可直接填内置 tokenizer 名如ernie-1.0-base-zh、ernie-3.0-base-zhdata_dir支持多份数据集带权重混合单数据集时直接data_dir./data即可。启动训练以下为单机 8 卡任务全局 batch_size 64×8 512。指定--ips可多机运行如--ips 192.168.1.101,192.168.1.101python3 -u -m paddle.distributed.launch \ --gpus 0,1,2,3,4,5,6,7 \ --log_dir ${base_dir}/log_${trainer_id} \ run_pretrain.py \ --model_type ernie \ --model_name_or_path ernie-3.0-base-zh \ --tokenizer_name_or_path ${vocab_dir} \ --input_dir ${data_dir} \ --output_dir ${base_dir} \ --split 949,50,1 \ --max_seq_len 512 \ --binary_head true \ --micro_batch_size 64 \ --use_amp true \ --fp16_opt_level O1 \ --use_recompute false \ --max_lr 0.0001 \ --min_lr 0.00001 \ --max_steps 4000000 \ --save_steps 100000 \ --checkpoint_steps 5000 \ --decay_steps 3900000 \ --weight_decay 0.01 \ --warmup_rate 0.01 \ --grad_clip 1.0 \ --logging_freq 20 \ --num_workers 3 \ --eval_freq 1000 \ --device gpu \ --share_folder true \ --hidden_dropout_prob 0.1 \ --attention_probs_dropout_prob 0.1 \ --seed 1234核心参数释义与 args.py 中的默认值相互印证model_name_or_path要训练的模型或此前训练的 checkpointcontinue_training默认 false随机初始化初始 loss 一般 10置 true 则从已有预训练权重加载继续训练初始 loss 2.x 属正常。tokenizer_name_or_path词表文件所在文件夹ERNIE 词表一般命名为 vocab.txt或内置 tokenizer 名字。input_dir输入文件或目录目录则包含其中所有文件output_dir输出目录。splittrain/valid/test 划分比例默认949,50,1约 1/1000 作 test样本过少时需增大测试比例。max_seq_len序列长度args.py 默认 1024文档示例用 512micro_batch_size单卡 batch size8 卡时 global batch 64×8 512。binary_head是否使用 SOP loss默认 True语料过短无法组成句子对时设为false。use_amp/fp16_opt_level混合精度开关与级别O1 自动混合精度、O2 pure fp16scale_loss默认 32768 为 fp16 梯度缩放初始值。max_lr/min_lr/decay_steps学习率上限、衰减下限、衰减步数超过 decay_steps 后保持 min_lrwarmup_rate默认 0.01warmup_steps 由warmup_rate * max_steps计算得出见 run_pretrain.py。max_steps最大训练步数训练不支持 epoch 控制首次生成数据 index 时日志会显示数据将被计算的 epoch 数。save_steps保存模型间隔地址形如output_dir/model_50000checkpoint_steps断点重启 checkpoint 间隔保存到output_dir/model_last。weight_decay默认 0.0、grad_clip默认 0.0 表示不裁剪、logging_freq、num_workers、eval_freq、device可选 cpu/gpu/xpu/mlu/npu。share_folder多机共享同一 NFS 目录时开启只由一台机器制作训练 index。继续训练基于 WuDao 样本数据在ernie-3.0-base-zh权重上继续训练的脚本如下只需将--continue_training true输入数据放到./datapython3 -u -m paddle.distributed.launch \ --gpus 0,1,2,3,4,5,6,7 \ --log_dir output/ernie_continue_training/logs \ run_pretrain.py \ --model_type ernie \ --model_name_or_path ernie-3.0-base-zh \ --tokenizer_name_or_path ernie-3.0-base-zh \ --continue_training true \ --input_dir ./data \ --output_dir output/ernie_continue_training/ \ --split 949,50,1 \ --max_seq_len 512 \ --binary_head true \ --micro_batch_size 64 \ --use_amp true \ --fp16_opt_level O1 \ --use_recompute false \ --max_lr 0.0001 \ --min_lr 0.00001 \ --max_steps 500000 \ --save_steps 100000 \ --checkpoint_steps 5000 \ --decay_steps 490000 \ --weight_decay 0.01 \ --warmup_rate 0.01 \ --grad_clip 1.0 \ --logging_freq 1 \ --num_workers 3 \ --eval_freq 1000 \ --device gpu \ --scale_loss 1024 \ --seed 1234从 run_pretrain.py 源码可见断点重启的实现启动时会检查output_dir/model_last目录读取其中的config.yml校验 global_batch_size 一致性并恢复global_step同时加载model_state.pdparams、model_state.pdopt与scaler.pdparams学习率调度器以last_epochglobal_step恢复实现学习率与数据进度的自动续接。3.2 训练网络配置SOP LossSOPSentence Order Predict将文本句子顺序分为两段打乱模型判断文本是否被打乱是 ERNIE 的常用辅助损失。由binary_head开关控制True添加 sop lossFalse关闭。注意若语料文本只有一句话、无法分为多个段落请设置binary_headFalse否则不符合要求的数据默认被删去导致可训练数据过小。在源码中binary_headFalse时模型类切换为ErnieForMaskedLMloss 仅剩 MLM见 run_pretrain.py。MLM MASKMLM 随机将部分 token 替换为[MASK]后预测原值。ERNIE 默认采用Whole Word MASK整词掩码。masked_lm_prob控制 mask 比例默认0.15short_seq_prob控制长度小于 max_seq_length 的样本比例默认0.1这部分样本的最大长度会被设置为一个小于 max_seq_length 的随机值。Ngram MASK在 WWM 词级 MASK 基础上如 mask 掉「模型」词组可连续 MASK 掉 n 个词组如「语言」「模型」同时 mask。通过max_ngrams设置最大 ngram 长度默认3。ERNIE 预训练的 dataset 代码位于 slm/model_zoo/ernie-1.0/data_tools/ernie_dataset.py数据集 index 生成与动态 mask 相关实现在 slm/model_zoo/ernie-1.0/data_tools/dataset_utils.py。用户可按需修改create_masked_lm_predictions函数自定义do_whole_word_mask、favor_longer_ngram、do_permutation、geometric_dist等选项对应 args.py 中的favor_longer_ngram、max_ngrams参数。Dropout大规模数据集训练如 ernie-3.0 系列 4T 语料可设dropout0不考虑过拟合实际ernie-3.0-base-zh训练未开启 Dropout。通过hidden_dropout_prob、attention_probs_dropout_prob控制默认均为0.1。3.3 训练速度配置多卡多机训练基于飞桨 Fleet 分布式 API 实现数据并行扩展。单机八卡用--gpus 0,1,2,3,4,5,6,7多机如 ip192.168.1.101,192.168.1.102追加--ips 192.168.1.101,192.168.1.102多台机器启动的 ips 参数顺序需一致。混合精度训练部分算子使用 FP16 kernel 加速。use_ampTrue开启fp16_opt_levelO1为自动混合精度部分参数自动从 fp32 cast 为 fp16 计算O2为 pure fp16模型参数为 fp16。源码中通过paddle.amp.decorate与GradScaler(init_loss_scalingargs.scale_loss)实现并将 softmax、layer_norm、gelu、dropout 加入白名单。梯度累积训练设置global_batch_size为micro_batch_size × 卡数的倍数即开启梯度累积。如单卡 bs16、8 卡、global_batch_size512则累积次数为512/16/84。在 run_pretrain.py 中由args_post_process计算accumulate_steps bsz_per_dp // micro_batch_size并对 loss 除以累积步数非累积步通过model.no_sync()减少卡间梯度通信。重计算训练反向计算需要时重新执行一遍前向生成中间变量避免中间变量常驻显存可显著降低显存占用以时间换空间。use_recomputeTrue开启开启时可同步扩大micro_batch_size。源码中开启重计算后各步均使用no_sync()并在累积完成后统一fused_allreduce_gradients归并梯度。3.4 训练数据流配置多机扩展NFS将制作好的数据放到 NFS 服务器多台机器挂载同一份数据即可训练当需要切换空闲机器训练时训练数据与计算资源分离避免了数百 GB 数据迁移成本。多数据混合训练数据集支持多个文件即插即用并设置不同权重传入input_dir1.0 dateset_a/prefix 2.0 dataset_b/prefix。注意文件夹只有一份数据如data/wudao_200g_0703_ids.npydata/wudao_200g_0703_idx.npz时可直接写input_dir./data多份数据集必须写前缀如data/wudao_200g_0703不要带_ids.npy/_idx.npz尾缀。该解析逻辑在get_train_data_file中实现多数据集未指定权重时默认等权重 1.0见 run_pretrain.py。稳定可复现MLM 任务需随机 mask数据流通过固定每个 step 的随机种子保证可复现。传入seed参数即可修改后会重新生成 index 数据并打乱顺序。快加载数据文件使用 mmap 读取加载数百 GB 文件几乎不耗时data_impl可指定mmap或lazy。断点重启checkpoint_steps可设较小重启训练默认加载最新 checkpointmodel_last断点数据与学习率自动恢复。注意该参数仅保留最后一个 checkpoint每次覆盖需永久保存请用save_steps建议将checkpoint_steps设为约半小时到一小时训练间隔便于故障后快速恢复。3.5 观察评估训练过程观察VisualDL日志展示全局 loss波动小记录混合精度loss_scaling、incr_count、decr_count等信息便于 debug并对模型结构、配置参数、paddle 版本信息进行记录方便复现环境。日志默认写入output_dir下的 runs 目录。下游任务评估CLUE Benchmark使用 slm/examples/benchmark/clue 的批量启动 grid-search 进行超参搜索评估。评估对象是训练中的 checkpoint直接传入 checkpoint 目录地址即可如python grid_search.py output/ernie-base-outdir/model_100000。4. 训练效果release 的 base / large 模型使用开源语料共 400GB 训练项目发布了两个开源模型均采用 CLUE benchmark 对最优超参数做 GradSearch 搜索。4.1 ERNIE 1.0-Base-zh-cw使用 CLUE、WuDao 共 400GB 语料batch_size 1024训练 400w step可训练得到与ernie-3.0-base-zh类似效果。模型参数开源为ernie-1.0-base-zh-cw加载即可使用。| Model | Arch | CLUE AVG | AFQMC | TNEWS | IFLYTEK | CMNLI | OCNLI | CLUE WSC2020 | CSL | CMRC | CHID | C3 | |--|--|--|--|--|--|--|--|--|--|--|--| | Metrics | | | Acc | Acc | Acc | Acc | Acc | Acc | Exact/F1 | Acc | Acc | | ERNIE 1.0-Base-zh-cw | 12L768H |76.47| 76.04 | 57.86 | 59.91 |83.41| 79.58 | 89.91 | 83.42 | 72.88/90.78 |84.68| 76.98 | | ERNIE 2.0-Base-zh | 12L768H | 74.32 | 75.65 | 58.25 | 61.64 | 82.62 | 78.71 | 81.91 | 82.33 | 66.08/87.46 | 82.78 | 73.19 | | ERNIE 1.0-Base-zh | 12L768H | 74.17 | 74.84 | 58.91 | 62.25 | 81.68 | 76.58 | 85.20 | 82.77 | 67.32/87.83 | 82.47 | 69.68 |4.2 ERNIE 1.0-Large-zh-cw除 base 外还训练了 large 模型使用开源语料batch_size 512训练 400w step训练去除 SOP 任务、只保留 MLM 损失。| Model | Arch | CLUE AVG | AFQMC | TNEWS | IFLYTEK | CMNLI | OCNLI | CLUE WSC2020 | CSL | CMRC | CHID | C3 | |--|--|--|--|--|--|--|--|--|--|--|--| | Metrics | | | Acc | Acc | Acc | Acc | Acc | Acc | Exact/F1 | Acc | Acc | | ERNIE 1.0-Large-zh-cw | 24L1024H |79.03| 75.97 | 59.65 | 62.91 | 85.09 | 81.73 | 93.09 | 84.53 | 74.22/91.88 | 88.57 | 84.54 | | ERNIE 3.0-Xbase-zh | 20L1024H | 78.39 | 76.16 | 59.55 | 61.87 | 84.40 | 81.73 | 88.82 | 83.60 | 75.99/93.00 | 86.78 | 84.98 | | RoBERTa-wwm-ext-large | 24L1024H | 76.61 | 76.00 | 59.33 | 62.02 | 83.88 | 78.81 | 90.79 | 83.67 | 70.58/89.82 | 85.72 | 75.26 |5. 参考完整预训练流程配套目录slm/model_zoo/ernie-1.0训练脚本 run_pretrain.py、参数 args.py、数据集与动态 mask data_tools、词表制作 vocab。数据预处理工具llm/tools/preprocess含各数据集的详细处理教程CLUECorpus2020、WuDaoCorpusBase、CLUECorpusSmall、OpenWebText2。语料致谢CLUECorpus2020Xu, L., Zhang, X. and Dong, Q., 2020arXiv:2003.01355与 WuDaoCorporaYuan, S. et al., 2021AI Open, 2, pp.65-68的开源文本。数据流设计主要参考 Megatron-LM 的数据处理思路特此致谢。提示本文档所述数据量、耗时与评测数值均以当前仓库文档记录为准实际运行效果与硬件配置、语料规模直接相关。若要使用小规模语料快速验证流程可参考 slm/model_zoo/ernie-1.0/README.md 中基于 14GB CLUECorpusSmall 的训练示例。赞分享人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载相关推荐PaddleNLP ERNIE 全字符中文词表制作指南从语料统计到 Vocab 生成与预训练应用PaddleNLP ERNIE 全字符中文词表制作指南从语料统计到 Vocab 生成与预训练应用 ERNIE 是基于知识增强的中文预训练模型其词表设计直接决人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPPaddleNLP ERNIE 1.0 中文预训练全流程实战数据制作、词表构建、模型训练与下游部署PaddleNLP ERNIE 1.0 中文预训练全流程实战数据制作、词表构建、模型训练与下游部署 本指南以 PaddleNLP 的 slm/model_zo人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPPaddleNLP 中文预训练数据实战WuDaoCorpus2.0 Base 200GB 语料的获取、分词、ID 化与训练接入全流程PaddleNLP 中文预训练数据实战WuDaoCorpus2.0 Base 200GB 语料的获取、分词、ID 化与训练接入全流程 本篇技术指南以 Padd人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表