wordpress网站建设教程视频医院网站开发百度文库

当前位置: 首页 > news >正文

wordpress网站建设教程视频,医院网站开发百度文库,适合seo的建站系统,南京网页设计培训机构文章目录前言环境流程介绍数据部分分词部分预处理部分训练部分遇到的问题问题1可能遇到的问题问题1问题2前言 本文是使用 fairseq 做 Bart 预训练任务的踩坑记录huggingface没有提供 Bart 预训练的代码 facebookresearch/fairseq: Facebook AI Research Sequence-to-Sequence… 文章目录前言环境流程介绍数据部分分词部分预处理部分训练部分遇到的问题问题1可能遇到的问题问题1问题2前言 本文是使用 fairseq 做 Bart 预训练任务的踩坑记录huggingface没有提供 Bart 预训练的代码 facebookresearch/fairseq: Facebook AI Research Sequence-to-Sequence Toolkit written in Python. (github.com) 环境 fairseq0.10.0torch1.10.0cu111GPUNVIDIA GeForce RTX 3090CUDA11.1 安装时先进行了 pip install –editable ./之后报错 Getting requirements to build editable … error error: subprocess-exited-with-error× Getting requirements to build editable did not run successfully. packages/torch/lib/../../nvidia/cublas/lib/libcublas.so.11: symbol cublasLtHSHMatmulAlgoInit version libcublasLt.so.11 not defined in file libcublasLt.so.11 with link time reference解决有issue有回答 https://github.com/facebookresearch/fairseq/issues/4843 pip install –no-build-isolation –editable ./但是装完之后是最新的 fairseq0.12.0,会有 args 冲突的错误 argparse.ArgumentError: argument –max-source-positions: conflicting option string: –max-source-positions有人提issue但是没有回答https://github.com/facebookresearch/fairseq/issues/4416 这个错误应该是版本问题于是换成 fairseq0.10.0, torch与cuda 11.1对应安装
个人认为不需要执行 pip install –editable ./直接 pip 安装想要的fairseq版本即可 流程介绍 数据部分获得数据将数据写进文件中每一行代表一个样本分词部分使用 BPE(Byte Pair Encoding) 分词将数据 tokenize预处理部分使用fairseq-preprocess对分词后的数据进行处理并binarize数据训练部分使用fairseq-train进行训练 数据部分 我使用的是qulac中query对应的top10k docs数据数据包含大量文本形式的文档。 将数据划分为训练集验证集测试集分别存于train.input, valid.input, test.input其中每一行代表一个训练样本 我将文档按 . 进行拆分每个长度大于50的句子才会被考虑这里我要进行的是denoising任务因此不需要 label如果任务是有 target的还要存储train.output等文件文件名称和后缀可以自行设置 我以 8:2的比例设置了训练集和验证集没有设置测试集 分词部分 因为模型不能处理原始文本因此我们要将文本转换为 token id 的序列使用命令如下 TASKdenoise_data/source_split LANGinput for SPLIT in train valid dopython -m examples.roberta.multiprocessing_bpe_encoder --encoder-json ./BPE/encoder.json --vocab-bpe ./BPE/vocab.bpe --inputs \(TASK/\)SPLIT.\(LANG \--outputs \)TASK/\(SPLIT.bpe.\)LANG --workers 60 --keep-empty; done这里需要先下载对应的 encoder.json, vocab.bpe. dict.txtBart与gpt2使用的是相同的 wget -N https://dl.fbaipublicfiles.com/fairseq/gpt2_bpe/encoder.json wget -N https://dl.fbaipublicfiles.com/fairseq/gpt2_bpe/vocab.bpe wget -N https://dl.fbaipublicfiles.com/fairseq/gpt2_bpe/dict.txt这里的 output 是输出文件名不是label
分词前的数据 分词后的数据和分词前的数据不是对应的只是展示结果 预处理部分 预处理分词好的数据并且对数据进行二值化将得到的二值化数据写到 –destdir 文件夹中可以用于模型训练 TASKdenoise_data/source_split fairseq-preprocess --only-source --trainpref \({TASK}/train.bpe.input \--validpref \){TASK}/valid.bpe.input --destdir \({TASK}/bpe_data \--workers 60 \--srcdict /home/nsy/ict/Models/bart_base_fairseq/bart.base/dict.txt \--tgtdict /home/nsy/ict/Models/bart_base_fairseq/bart.base/dict.txt;训练部分 加载刚刚预处理完的数据并进行训练具体参数可以自行调整 MASKLENspan-poisson MRATIO0.4 DATASET./denoise_data/source_split/bpe_data/ CUDA_VISIBLE_DEVICES0 fairseq-train \)DATASET --save-dir models/nsy_saved --no-epoch-checkpoints --tokens-per-sample 128 --arch bart_base --task denoising # other_parameters遇到的问题 上面的流程部分是解决完 bug 之后的正确命令 问题1 报错out of memory显存不够需要 40G 显存显然这对 Bart_base 来说是不会出现的错误一定是自己的处理有问题不是模型有问题 我使用小部分数据测试因此这样加载一次很快有利于发现问题。 train里面3000多条可以跑通且加载速度很快。这样模型的参数明显很小比大数据集时小了很多倍。注意到embedding的维度很有问题猜测preprocess时产生的字典有问题导致带字典维度的矩阵特别大 小数据集3000多行文本时embedding层的参数 (embed_tokens): Embedding(13049, 768, padding_idx1)大数据集千万行文本时embedding层的参数 (embed_tokens):Embedding(14929897, 768, padding_idx1)这会导致模型参数量巨大
发现参数量确实太大了应该有问题于是查看字典大小与embedding第一维大小基本一致 因为之前尝试过使用 Bart 的字典来进行preprocess但是发现百分之90多都被替换成 ,因此在小数据集上测试Bart的字典为什么会产生如此多的 。查看 Bart 的字典 发现直接preprocess没有分词应该先对文本做分词产生 token_id 之后再进行 preprocess 首先进行BPE分词 TASKtry_data LANGinput for SPLIT in train valid dopython -m examples.roberta.multiprocessing_bpe_encoder --encoder-json ./BPE/encoder.json --vocab-bpe ./BPE/vocab.bpe --inputs \(TASK/\)SPLIT.\(LANG \--outputs \)TASK/\(SPLIT.bpe.\)LANG --workers 60 --keep-empty; done之后进行preprocess这样就发现一切都合理了也没有被替换成 的 token 了 TASKtry_data fairseq-preprocess --only-source --trainpref \({TASK}/train.bpe.input \--validpref \){TASK}/valid.bpe.input --destdir ${TASK}/bpe_data --workers 60 --srcdict /home/nsy/ict/Models/bart_base_fairseq/bart.base/dict.txt --tgtdict /home/nsy/ict/Models/bart_base_fairseq/bart.base/dict.txt;2023-02-18 22:45:29 | INFO | fairseq_cli.preprocess | Namespace(align_suffixNone, alignfileNone, all_gather_list_size16384, bf16False, bpeNone, checkpoint_shard_count1, checkpoint_suffix, cpuFalse, criterioncross_entropy, dataset_implmmap, destdirtry_data/bpe_data, empty_cache_freq0, fp16False, fp16_init_scale128, fp16_no_flatten_gradsFalse, fp16_scale_tolerance0.0, fp16_scale_windowNone, joined_dictionaryFalse, log_formatNone, log_interval100, lr_schedulerfixed, memory_efficient_bf16False, memory_efficient_fp16False, min_loss_scale0.0001, model_parallel_size1, no_progress_barFalse, nwordssrc-1, nwordstgt-1, only_sourceTrue, optimizerNone, padding_factor8, profileFalse, quantization_config_pathNone, scoringbleu, seed1, source_langNone, srcdict/home/nsy/ict/Models/bart_base_fairseq/bart.base/dict.txt, target_langNone, tasktranslation, tensorboard_logdirNone, testprefNone, tgtdict/home/nsy/ict/Models/bart_base_fairseq/bart.base/dict.txt, threshold_loss_scaleNone, thresholdsrc0, thresholdtgt0, tokenizerNone, tpuFalse, trainpreftry_data/train.bpe.input, user_dirNone, validpreftry_data/valid.bpe.input, workers60) 2023-02-18 22:45:29 | INFO | fairseq_cli.preprocess | [None] Dictionary: 51200 types 2023-02-18 22:45:30 | INFO | fairseq_cli.preprocess | [None] try_data/train.bpe.input: 3383 sents, 89468 tokens, 0.0% replaced by unk 2023-02-18 22:45:30 | INFO | fairseq_cli.preprocess | [None] Dictionary: 51200 types 2023-02-18 22:45:31 | INFO | fairseq_cli.preprocess | [None] try_data/valid.bpe.input: 4085 sents, 99282 tokens, 0.0% replaced by unk 2023-02-18 22:45:31 | INFO | fairseq_cli.preprocess | Wrote preprocessed data to try_data/bpe_data可能遇到的问题 这里可能遇到的问题是我最初遇到的后来我重新clone了fairseq的仓库安装了不同版本的fairseq之后没有遇到的因此这里的问题大概率是版本问题 问题1 遇到报错 Fairseq: No module named ‘fairseq.data.data_utils_fast’。在克隆后的项目主目录运行 python setup.py build_ext –inplaceFairseq: No module named ‘fairseq.data.data_utils_fast’ - 简书 (jianshu.com) 问题2 遇到报错 module numpy has no attribute float 因为np.float从1.24起被删除。所用的代码是依赖于旧版本的Numpy。可以更新sklearn到一个不使用np.float的新版本如果它存在或者将你的Numpy版本降级到1.23.5. pip install -U numpy1.23.5Note: sklearn是scikit-learn的缩写安装时要用 pip install scikit-learn