Chinese version of GPT2 training code, using BERT tokenizer.

Overview

GPT2-Chinese

Description

  • Chinese version of GPT2 training code, using BERT tokenizer or BPE tokenizer. It is based on the extremely awesome repository from HuggingFace team Transformers. Can write poems, news, novels, or train general language models. Support char level, word level and BPE level. Support large training corpus.
  • 中文的GPT2训练代码,使用BERT的Tokenizer或Sentencepiece的BPE model(感谢kangzhonghua的贡献,实现BPE模式需要略微修改train.py的代码)。可以写诗,新闻,小说,或是训练通用语言模型。支持字为单位或是分词模式或是BPE模式(需要略微修改train.py的代码)。支持大语料训练。

UPDATE 02.06.2021

UPDATE 11.03.2020

  • 本项目新增了古诗词GPT-2预训练模型对联GPT-2预训练模型。模型由UER-py项目训练得到,欢迎大家使用。 此外,模型上传到了Huggingface Model Hub中。更多模型的细节请参考gpt2-chinese-poemgpt2-chinese-couplet

    在使用古诗词模型进行生成时,需要在输入的文本前加入一个起始符,如:若要输入“梅山如积翠,”,正确的格式为“[CLS]梅山如积翠,”。

    对联模型训练时使用的语料格式为“上联-下联”,在使用对联模型进行生成时,需要在输入的文本前加入一个起始符,如:若要输入“丹枫江冷人初去-”,正确的格式为“[CLS]丹枫江冷人初去-”。

NEWS 08.11.2020

  • CDial-GPT(可用本代码载入)已发布。本项目包含一个经过严格清洗的大规模放开域中文对话数据集,本项目还包含在此数据集上训练的GPT对话预训练模型,以及生成样例,欢迎大家参观。

NEWS 12.9.2019

  • 新项目GPT2-chitchat已发布,部分基于本项目代码。包含训练GPT2对话模型的代码与与训练模型,以及生成样例,欢迎大家参观。

NEWS 12.7.2019

  • 新项目Decoders-Chinese-TF2.0同样支持GPT2的中文训练,在使用上更加简单,不易产生各种问题。目前还在测试阶段,欢迎大家提出意见。

NEWS 11.9

  • GPT2-ML(与本项目无任何直接关联)已发布,包含1.5B中文GPT2模型。大家如有兴趣或需要可将其转换为本项目支持的Pytorch格式进行进一步训练或生成测试。

UPDATE 10.25

  • 本项目第一个预训练模型已公布,为散文生成模型,具体可查看README模型分享部分。

项目状态

  • 在本项目公布时,中文的GPT2资源几乎为零,而现在情况已有所不同。其次项目功能已经基本稳定,因此目前本项目暂已停止更新。我写下这些代码的初衷是练习Pytorch的使用,即使后期做了一些填坑工作,难免还是有很多不成熟的地方,也请谅解。

使用方法

  • 在项目根目录建立data文件夹。将训练语料以train.json为名放入data目录中。train.json里是一个json列表,列表的每个元素都分别是一篇要训练的文章的文本内容(而不是文件链接)
  • 运行train.py文件,勾选 --raw ,会自动预处理数据。
  • 预处理完成之后,会自动执行训练。

生成文本

python ./generate.py --length=50 --nsamples=4 --prefix=xxx --fast_pattern --save_samples --save_samples_path=/mnt/xx
  • --fast_pattern (由LeeCP8贡献):如果生成的length参数比较小,速度基本无差别,我个人测试length=250时,快了2秒,所以如果不添加--fast_pattern,那么默认不采用fast_pattern方式。
  • --save_samples:默认将输出样本直接打印到控制台,传递此参数,将保存在根目录下的samples.txt
  • --save_samples_path:可自行指定保存的目录,默认可递归创建多级目录,不可以传递文件名称,文件名称默认为samples.txt

文件结构

  • generate.py 与 train.py 分别是生成与训练的脚本。
  • train_single.py 是 train.py的延伸,可以用于一个很大的单独元素列表(如训练一本斗破苍穹书)。
  • eval.py 用于评估生成模型的ppl分值。
  • generate_texts.py 是 generate.py 的延伸,可以以一个列表的起始关键词分别生成若干个句子并输出到文件中。
  • train.json 是训练样本的格式范例,可供参考。
  • cache 文件夹内包含若干BERT词表,make_vocab.py 是一个协助在一个train.json语料文件上建立词表的脚本。 vocab.txt 是原始BERT词表, vocab_all.txt 额外添加了古文词, vocab_small.txt 是小词表。
  • tokenizations 文件夹内是可以选用的三种tokenizer,包括默认的Bert Tokenizer,分词版Bert Tokenizer以及BPE Tokenizer。
  • scripts 内包含了样例训练与生成脚本

注意

  • 本项目使用Bert的tokenizer处理中文字符。
  • 如果不使用分词版的tokenizer,不需要自己事先分词,tokenizer会帮你分。
  • 如果使用分词版的tokenizer,最好先使用cache文件夹内的make_vocab.py文件建立针对你的语料的词表。
  • 模型需自行运算。各位如果完成了预训练的话欢迎进行交流。
  • 如果你的内存非常大或者语料较小的话,可以改掉train.py内build files内的对应代码,不做拆分直接预处理语料。
  • 若使用BPE Tokenizer,需自己建立中文词表

语料

FP16与Gradient Accumulation支持

  • 我在train.py文件中加入了fp16与gradient accumulation支持,如果你安装了apex并且知道fp16是什么的话,可以修改变量fp16=True来启用。但是目前fp16可能不收敛,原因不明。

联系作者

Citing

@misc{GPT2-Chinese,
  author = {Zeyao Du},
  title = {GPT2-Chinese: Tools for training GPT2 model in Chinese language},
  year = {2019},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/Morizeyao/GPT2-Chinese}},
}

模型分享

模型名称 模型介绍 分享者 链接地址1 链接地址2
散文模型 使用130MB的名家散文、情感散文和散文诗歌训练所得 。 hughqiu 百度网盘【fpyu】 GDrive
诗词模型 使用180MB的约80万首古诗词训练所得。 hhou435 百度网盘【7fev】 GDrive
对联模型 使用40MB的约70万条对联训练所得。 hhou435 百度网盘【i5n0】 GDrive
通用中文模型 使用CLUECorpusSmall语料训练所得。 hhou435 百度网盘【n3s8】 GDrive
通用中文小模型 使用CLUECorpusSmall语料训练所得。 hhou435 百度网盘【rpjk】 GDrive
中文歌词模型 使用140MB的约15万首中文歌词训练所得。 hhou435 百度网盘【0qnn】 GDrive
文言文模型 使用1.8GB的约300万篇文言文训练所得。 hhou435 百度网盘【ek2z】 GDrive

此处为热情大方的git友训练所得的模型文件,公开给所有朋友使用,同时也欢迎各位伙伴将自己训练完毕的模型公开于此处。

Demo

生成样例

-以下为文学散文的生成样例,由hughqiu贡献,模型已经分享于模型分享列表。语料130MB,Batch size 16,10层深度下训练10轮所得。 avatar avatar avatar

  • 下为斗破苍穹的生成样例,使用约50M参数的GPT2以32Batch Size在16MB斗破苍穹小说内容上训练得到。此处[SEP]表示换行。

avatar

  • 下为古诗词的生成样例,由用户JamesHujy运算并贡献。

avatar avatar

  • 下为古诗限定了生成体裁后的生成样例,由用户JamesHujy运算并贡献。

avatar avatar avatar

  • 下为生成剧本的样例文本,由用户chiangandy运算并贡献

[starttext]爱情游戏剧情讲述了钢琴父女明致怀萌的爱情、个有着努力的热情以及现实为人生的价值观众,获得一系列爱情的故事。80后录股媒体受到网友分享,是2014年主创陈拉昀出品牌总监于蓝氏集团化验师创业团门的哥哥大国度上海淮河畔,集入第一线公司青年度虽然没有放到的事业,但是蓝正是却不到位主人拒绝了解,而在蓝越的帮助理念出现,也因此开启明朗的误会而经营变成爱河。在一次偶然的编剧集电视剧之夏天上一改变了自命运环球顶樑,三人在创车祸中不知被记忆差网识分到创作,并被问流言败,以及行业服务所有的低调教同才力,陈昭和唐诗诗妍展开了一段截然不同的“2014年间段感情”,两人性格互相治癒的商业奋斗故事,尽管是共90后北京华侨大学录的一个宿舍小旅程和唐如、生等优秀青年,的人生活如何与愿违3个国偶像,并且共同创作何以此他们互相有观众的成功和关心吗?[endtext]

[starttext]学习爱情主要讲述了两对方小曼,经过啼笑皆非的考验,终于选择了三个孩子,携手共同创业来四个孩子,在大城市里创业的成功商。两家内事业的加入了北京城市,经过了一次元城市融风雨故、差异后得到异的他们,最终收获了梦想的真正属于自己的爱情。赞助理想、电视剧、剧等主创业时代人物特点在北京举行开机仪式,该剧以当下海南三个新人青年轻人面人海南梅竹马的电视角,讲述了几个在北京、喜剧代人生活中增强非浪漫的年轻人,以独特的双时代年轻人从来到北京城市化中国大城市走出发展以海南方的变迁在语种城市闯关于人生态的同时,以及他们渐渐的生活方式为自己方向上演了那么简单俗,是当代际拍摄的就如何在这个城市里都市里?那么平静的城市就是城市的风格特张嘉和支持工作打造,而这是一点就要打造出机场话剧组会。化身处处棋逢貌各种文化的人都非常独特的煽情,交织了相,滑稽等来自外衣的东北漂亮、内地,者和两位女孩子敢称是哑女孩子。交织里的人齐飞一开泰块玩笑,令人印象太趋的气质,让人眼看这个性格非常喜剧,知道的是一个“东北漂”人的外国小养家,让她耳熟练读剧的外形象显老大。之后齐飞、表示爱朗的齐飞、范儿、楚月子、白天杰。两代人的生活里友情似乎没有结合、精彩表态的开朗和丽丽丽。[endtext]

avatar avatar avatar avatar

Comments
  • 训练时候报错RuntimeError: CUDA error: device-side assert triggered

    训练时候报错RuntimeError: CUDA error: device-side assert triggered

    我按照作者写的instruction训练斗破苍穹(是txt文件),改了pre_process_data.py,具体改写如下: def is_default_file_type(): return False

    def load(): with open("./data/train.txt", 'r', encoding='utf-8') as f: print('reading lines') lines = f.readlines(); lines = [line.replace('\n', ' [SEP] ') for line in lines]
    return lines

    用make_vocab.py成功生成了一个50000的词表, 然后运行了train_single.py,运行命令为:

    python ./train_single.py
    --device=1
    --model_config=config/model_config_small.json
    --tokenizer_path=cache/vocab_user.txt
    --raw_data_path=data/train.txt
    --raw
    --epochs=5
    --batch_size=1
    --lr=1.5e-4
    --stride=1023
    --output_dir=model/
    --pretrained_model=''
    --segment

    模型配置文件model_config_small.json里面的配置为: { "initializer_range": 0.02, "layer_norm_epsilon": 1e-05, "n_ctx": 1024, "n_embd": 768, "n_head": 12, "n_layer": 10, "n_positions": 1024, "vocab_size": 50000 } 这里vocab_size不太清楚应该是50000还是50005?因为加了特殊字符[cls][sep]等

    然后成功开始运行,数据也成功处理了,但是运行了一会儿就报错了,具体错误信息为:

    Traceback (most recent call last): File "./train_single.py", line 235, in main() File "./train_single.py", line 177, in main outputs = model.forward(input_ids=batch_inputs, labels=batch_labels) File "/opt/conda/lib/python3.6/site-packages/pytorch_transformers/modeling_gpt2.py", line 606, in forward past=past, head_mask=head_mask) File "/opt/conda/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in call result = self.forward(*input, **kwargs) File "/opt/conda/lib/python3.6/site-packages/pytorch_transformers/modeling_gpt2.py", line 523, in forward outputs = block(hidden_states, layer_past, head_mask[i]) File "/opt/conda/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in call result = self.forward(*input, **kwargs) File "/opt/conda/lib/python3.6/site-packages/pytorch_transformers/modeling_gpt2.py", line 345, in forward m = self.mlp(self.ln_2(x)) File "/opt/conda/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in call result = self.forward(*input, **kwargs) File "/opt/conda/lib/python3.6/site-packages/pytorch_transformers/modeling_gpt2.py", line 326, in forward h = self.act(self.c_fc(x)) File "/opt/conda/lib/python3.6/site-packages/pytorch_transformers/modeling_gpt2.py", line 102, in gelu return 0.5 * x * (1 + torch.tanh(math.sqrt(2 / math.pi) * (x + 0.044715 * torch.pow(x, 3)))) RuntimeError: CUDA error: device-side assert triggered

    不太明白问题出在哪里了?请给点建议,另外我的训练语料前需要加[cls] token吗?

    谢谢

    opened by yxt132 28
  • 训练成果分享与一点提问

    训练成果分享与一点提问

    经由一晚的训练,但又些疑问...想提出来讨论一下... 由于想得到更好效果,我ePoch 做到75(15+60),结果... now time: 23:18. Step 4 of piece 99 of epoch 60, loss 0.003577812574803829 now time: 23:18. Step 5 of piece 99 of epoch 60, loss 0.0026147072203457355 now time: 23:18. Step 6 of piece 99 of epoch 60, loss 0.0035277323331683874 now time: 23:18. Step 7 of piece 99 of epoch 60, loss 0.003405306488275528 saving model for epoch 60 epoch 60 finished time: 2019-08-14 23:18:30.795687 time for one epoch: 0:09:19.922468 training finished

    Loss 降到0.003,这让我惊讶了,从来没看过这么低的Loss,这真的很不可思议! 但相对的问题来了,我在产出中有看到产出的文本会跟训练语料的文本完全相同(一字不差),感觉好像是过度学习了...我想Loss 还是控制在0.9~0.1之间比较理想。 是不是在学习过程要加入判断Loss值低于多少就自动停止,这样会比较好...

    输出结果感觉还算不错...文笔算是很自然,提供分享

    • (环境:aws g3,16xlarge EC2 (M60 4 GPU , 32GiB GRAM), n_layers=7, 语料 16.7MB)

    ======

    • [starttext]爱情游戏剧情讲述了钢琴父女明致怀萌的爱情、个有着努力的热情以及现实为人生的价值观众,获得一系列爱情的故事。80后录股媒体受到网友分享,是2014年主创陈拉昀出品牌总监于蓝氏集团化验师创业团门的哥哥大国度上海淮河畔,集入第一线公司青年度虽然没有放到的事业,但是蓝正是却不到位主人拒绝了解,而在蓝越的帮助理念出现,也因此开启明朗的误会而经营变成爱河。在一次偶然的编剧集电视剧之夏天上一改变了自命运环球顶樑,三人在创车祸中不知被记忆差网识分到创作,并被问流言败,以及行业服务所有的低调教同才力,陈昭和唐诗诗妍展开了一段截然不同的“2014年间段感情”,两人性格互相治癒的商业奋斗故事,尽管是共90后北京华侨大学录的一个宿舍小旅程和唐如、生等优秀青年,的人生活如何与愿违3个国偶像,并且共同创作何以此他们互相有观众的成功和关心吗?[endtext]

    • [starttext]学习爱情主要讲述了两对方小曼,经过啼笑皆非的考验,终于选择了三个孩子,携手共同创业来四个孩子,在大城市里创业的成功商。两家内事业的加入了北京城市,经过了一次元城市融风雨故、差异后得到异的他们,最终收获了梦想的真正属于自己的爱情。赞助理想、电视剧、剧等主创业时代人物特点在北京举行开机仪式,该剧以当下海南三个新人青年轻人面人海南梅竹马的电视角,讲述了几个在北京、喜剧代人生活中增强非浪漫的年轻人,以独特的双时代年轻人从来到北京城市化中国大城市走出发展以海南方的变迁在语种城市闯关于人生态的同时,以及他们渐渐的生活方式为自己方向上演了那么简单俗,是当代际拍摄的就如何在这个城市里都市里?那么平静的城市就是城市的风格特张嘉和支持工作打造,而这是一点就要打造出机场话剧组会。化身处处棋逢貌各种文化的人都非常独特的煽情,交织了相,滑稽等来自外衣的东北漂亮、内地,者和两位女孩子敢称是哑女孩子。交织里的人齐飞一开泰块玩笑,令人印象太趋的气质,让人眼看这个性格非常喜剧,知道的是一个“东北漂”人的外国小养家,让她耳熟练读剧的外形象显老大。之后齐飞、表示爱朗的齐飞、范儿、楚月子、白天杰。两代人的生活里友情似乎没有结合、精彩表态的开朗和丽丽丽。[endtext]

    ==========

    opened by chiangandy 17
  • 训练数据丢失问题

    训练数据丢失问题

    采用分片切割的方式,分得越多,丢失的数据越多 1 每个Piece所拥有的数据长度不一,在使用移动窗口分割数据时,会完全丢失数据,这部分数据(当然数据不多,小于seq_len)将永远不参与训练。分得越多,丢得越多。 2 在分batch时,不足以组成一个完整batch的数据将被丢失,当然这个可以通过多轮epoch来解决,但是通过shuffle,无法保证上一轮丢弃的数据一定会参与训练。此处丢失[0,seq_len*(batch_size-1)],batch_size越大,丢失得越多。 3 stride的取值问题,会使得部分数据参与运算的次数高于其它数据,人为改变了数据原有的分布,请问怎么看待这个问题? 建议可通过基于步数分割成片,如每Piece包含多少步。而每步长=(seq_len-stride)+stride*batch_size,这样最多永久丢失一步数据[0,步长),不想丢失,可人为补至完整一步。

    opened by lioyou 9
  • 整合快速生成方法和删除无意义代码(Integrate fast generation method and delete meaningless code)

    整合快速生成方法和删除无意义代码(Integrate fast generation method and delete meaningless code)

    1 原先的快速生成方法,参数命名与默认的不一致,做了修改,当然上次我也没有意识到同一个方法,参数名居然不同,所以没有作测试,实在抱歉,不过这次我已经做了测试。 2 提供的fast_sample_sequence方法,返回的数据与要求的不匹配,做了修改,并添加了generate方法,根据命令行参数,动态调整使用的模式,默认采用原先的生成方式,经过个人测试,生成250个字,快了2秒。 3 删除无意义代码,比如xlnet判断,由于此是应用GPT-2生成文本,所以不需要加入此判断。

    opened by lioyou 9
  • number of parameters: 81894144.RuntimeError: CUDA out of memory.

    number of parameters: 81894144.RuntimeError: CUDA out of memory.

    RuntimeError: CUDA out of memory. Tried to allocate 384.00 MiB (GPU 2; 10.73 GiB total capacity; 9.59 GiB already allocated; 290.56 MiB free; 25.84 MiB cached) 我用16G内存的电脑为啥都跑不起来,我的train.json大概只有2MB左右.

    opened by justin0314 6
  • 训练数据处理的疑问

    训练数据处理的疑问

    for ids in batch: int_ids_for_labels = [int(x) for x in ids] int_ids_for_inputs = [int(x) for x in ids] batch_labels.append(int_ids_for_labels) batch_inputs.append(int_ids_for_inputs)

    这段代码有点疑问,输入输出一样?那不变成自编码器了?输出不应该是输入的one right shift吗?

    opened by caishiqing 6
  • cannot import name 'clean_up_tokenization'

    cannot import name 'clean_up_tokenization'

    嗨,我使用 pip install -r requirements.txt 設定好環境,但是跑 train_single.py 時出現底下 import 錯誤,有人碰到一樣情況嗎?

    Traceback (most recent call last):
      File "train_single.py", line 223, in <module>
        main()
      File "train_single.py", line 65, in main
        from tokenizations import tokenization_bert_without_wordpiece as tokenization_bert
      File "/content/GPT2-Chinese/tokenizations/tokenization_bert_without_wordpiece.py", line 25, in <module>
        from pytorch_transformers.tokenization_utils import PreTrainedTokenizer, clean_up_tokenization
    ImportError: cannot import name 'clean_up_tokenization'
    

    官方實現有定義 clean_up_tokenization,不過一時想不到怎麼解決這個 import error.

    opened by leemengtaiwan 6
  • 生成文本如何提高多样性

    生成文本如何提高多样性

    问题:

    1.我使用散文预训练模型,用自己的数据(20000条)进行微调,5epochs,训练完loss:0.08,预测结果会完全拟合我的数据。我想提高预测输出的多样性(比如,我的训练数据以外的词汇或者句子结构)。请问需要如何改进?我的训练是不是过拟合了 2.loss=0.08,微调时的损失函数是什么呢?

    期待给些指导建议,祝好!

    opened by dkicenan 5
  • 生成文本出现编码问题

    生成文本出现编码问题

    Traceback (most recent call last): File "E:/workspace/code/GPT2-Chinese-master/generate.py", line 226, in main() File "E:/workspace/code/GPT2-Chinese-master/generate.py", line 169, in main model = GPT2LMHeadModel.from_pretrained(args.model_path) File "D:\Anaconda3\lib\site-packages\transformers\modeling_utils.py", line 287, in from_pretrained **kwargs File "D:\Anaconda3\lib\site-packages\transformers\configuration_utils.py", line 154, in from_pretrained config = cls.from_json_file(resolved_config_file) File "D:\Anaconda3\lib\site-packages\transformers\configuration_utils.py", line 186, in from_json_file text = reader.read() File "D:\Anaconda3\lib\codecs.py", line 321, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

    opened by ShengXiaoXiao 5
  • No such file or directory: 'data/tokenized/tokenized_train_0.txt'

    No such file or directory: 'data/tokenized/tokenized_train_0.txt'

    报错信息 我直接运行python train.py: Traceback (most recent call last): File "train.py", line 251, in main() File "train.py", line 138, in main with open(tokenized_data_path + 'tokenized_train_{}.txt'.format(i), 'r') as f: FileNotFoundError: [Errno 2] No such file or directory: 'data/tokenized/tokenized_train_0.txt'

    我只有训练语料,想知道这个tokenized_train_0.txt该如何得到?

    opened by Youarerare 4
  • train.json这么填,是有问题的。正确的格式是?

    train.json这么填,是有问题的。正确的格式是?

    比如把整个小说直接拷到train.json中,然后作为一个list的元素。 ["《斗破苍穹》

    第一章 陨落的天才
    
    “斗之力,三段!”
    
    望着测验魔石碑上面闪亮得甚至有些刺眼的五个大字,少年面无表情,唇角有着一抹自嘲,紧握的手掌,因为大力,而导致略微尖锐的指甲深深的刺进了掌心之中,带来一阵阵钻心的疼痛…
    
    “萧炎,斗之力,三段!级别:低级!”测验魔石碑之旁,一位中年男子,看了一眼碑上所显示出来的信息,语气漠然的将之公布了出来…
     中年男子话刚刚脱口,便是不出意外的在人头汹涌的广场上带起了一阵嘲讽的骚动。
    
    “三段?嘿嘿,果然不出我所料,这个“天才”这一年又是在原地踏步!”
    
    “哎,这废物真是把家族的脸都给丢光了。”
    
    “要不是族长是他的父亲,这种废物,早就被驱赶出家族,任其自生自灭了,哪还有机会待在家族中白吃白喝。”
    
    “唉,昔年那名闻乌坦城的天才少年,如今怎么落魄成这般模样了啊?”
    
    “谁知道呢,或许做了什么亏心事,惹得神灵降怒了吧…”
    
    周围传来的不屑嘲笑以及惋惜轻叹,落在那如木桩待在原地的少年耳中,恍如一根根利刺狠狠的扎在心脏一般,让得少年呼吸微微急促。
    ..."]
    
    opened by jason5675 4
  • 多gpu报错:Input tensor at index 2 has invalid shape

    多gpu报错:Input tensor at index 2 has invalid shape

    python3.8,环境同requirements.txt 当使用多个gpu训练时候,会报错 RuntimeError: Input tensor at index 2 has invalid shape [2, 10, 12, 1024, 64], but expected [2, 11, 12, 1024, 64]

    出错行显示在模型推理那行 outputs = model.forward(input_ids=batch_inputs, labels=batch_inputs)

    这就很奇怪了,明明input_ids和labels完全是一个东西,却会报shape invalid

    尝试性用了单gpu,发现代码能跑了

    试了一些常规方法,没发现问题原因

    opened by tuzeao 0
  • 文本padding长度问题

    文本padding长度问题

    batch_inputs = torch.tensor(batch_inputs).long().to(device)
    #  forward pass
    outputs = model.forward(input_ids=batch_inputs, labels=batch_inputs)
    loss, logits = outputs[:2]
    

    输入的input_ids和labels在一个batch内部都要padding成同一个长度吧?不然model会报错吧?请问哪里有做padding操作的代码?

    opened by Alwin4Zhang 1
Owner
Zeyao Du
NLP.
Zeyao Du
iBOT: Image BERT Pre-Training with Online Tokenizer

Image BERT Pre-Training with iBOT Official PyTorch implementation and pretrained models for paper iBOT: Image BERT Pre-Training with Online Tokenizer.

Bytedance Inc. 435 Jan 6, 2023
Chinese NewsTitle Generation Project by GPT2.带有超级详细注释的中文GPT2新闻标题生成项目。

GPT2-NewsTitle 带有超详细注释的GPT2新闻标题生成项目 UpDate 01.02.2021 从网上收集数据,将清华新闻数据、搜狗新闻数据等新闻数据集,以及开源的一些摘要数据进行整理清洗,构建一个较完善的中文摘要数据集。 数据集清洗时,仅进行了简单地规则清洗。

logCong 785 Dec 29, 2022
Natural language processing summarizer using 3 state of the art Transformer models: BERT, GPT2, and T5

NLP-Summarizer Natural language processing summarizer using 3 state of the art Transformer models: BERT, GPT2, and T5 This project aimed to provide in

Samuel Sharkey 1 Feb 7, 2022
Kashgari is a production-level NLP Transfer learning framework built on top of tf.keras for text-labeling and text-classification, includes Word2Vec, BERT, and GPT2 Language Embedding.

Kashgari Overview | Performance | Installation | Documentation | Contributing ?? ?? ?? We released the 2.0.0 version with TF2 Support. ?? ?? ?? If you

Eliyar Eziz 2.3k Dec 29, 2022
Kashgari is a production-level NLP Transfer learning framework built on top of tf.keras for text-labeling and text-classification, includes Word2Vec, BERT, and GPT2 Language Embedding.

Kashgari Overview | Performance | Installation | Documentation | Contributing ?? ?? ?? We released the 2.0.0 version with TF2 Support. ?? ?? ?? If you

Eliyar Eziz 2k Feb 9, 2021
天池中药说明书实体识别挑战冠军方案;中文命名实体识别;NER; BERT-CRF & BERT-SPAN & BERT-MRC;Pytorch

天池中药说明书实体识别挑战冠军方案;中文命名实体识别;NER; BERT-CRF & BERT-SPAN & BERT-MRC;Pytorch

zxx飞翔的鱼 751 Dec 30, 2022
Pytorch-version BERT-flow: One can apply BERT-flow to any PLM within Pytorch framework.

Pytorch-version BERT-flow: One can apply BERT-flow to any PLM within Pytorch framework.

Ubiquitous Knowledge Processing Lab 59 Dec 1, 2022
A collection of Classical Chinese natural language processing models, including Classical Chinese related models and resources on the Internet.

GuwenModels: 古文自然语言处理模型合集, 收录互联网上的古文相关模型及资源. A collection of Classical Chinese natural language processing models, including Classical Chinese related models and resources on the Internet.

Ethan 66 Dec 26, 2022
Chinese real time voice cloning (VC) and Chinese text to speech (TTS).

Chinese real time voice cloning (VC) and Chinese text to speech (TTS). 好用的中文语音克隆兼中文语音合成系统,包含语音编码器、语音合成器、声码器和可视化模块。

Kuang Dada 6 Nov 8, 2022
vits chinese, tts chinese, tts mandarin

vits chinese, tts chinese, tts mandarin 史上训练最简单,音质最好的语音合成系统

AmorTX 12 Dec 14, 2022
Guide: Finetune GPT2-XL (1.5 Billion Parameters) and GPT-NEO (2.7 B) on a single 16 GB VRAM V100 Google Cloud instance with Huggingface Transformers using DeepSpeed

Guide: Finetune GPT2-XL (1.5 Billion Parameters) and GPT-NEO (2.7 Billion Parameters) on a single 16 GB VRAM V100 Google Cloud instance with Huggingfa

null 289 Jan 6, 2023
Chinese NER with albert/electra or other bert descendable model (keras)

Chinese NLP (albert/electra with Keras) Named Entity Recognization Project Structure ./ ├── NER │   ├── __init__.py │   ├── log

null 2 Nov 20, 2022
Chinese named entity recognization (bert/roberta/macbert/bert_wwm with Keras)

Chinese named entity recognization (bert/roberta/macbert/bert_wwm with Keras)

null 2 Jul 5, 2022
Kinky furry assitant based on GPT2

KinkyFurs-V0 Kinky furry assistant based on GPT2 How to run python3 V0.py then, open web browser and go to localhost:8080 Requirements: Flask trans

Sparki 1 Jun 11, 2022
**NSFW** A chatbot based on GPT2-chitchat

DangBot -- 好怪哦,再来一句 卡群怪话bot,powered by GPT2 for Chinese chitchat Training Example: python train.py --lr 5e-2 --epochs 30 --max_len 300 --batch_size 8

Tommy Yang 11 Jul 21, 2022
Chinese Pre-Trained Language Models (CPM-LM) Version-I

CPM-Generate 为了促进中文自然语言处理研究的发展,本项目提供了 CPM-LM (2.6B) 模型的文本生成代码,可用于文本生成的本地测试,并以此为基础进一步研究零次学习/少次学习等场景。[项目首页] [模型下载] [技术报告] 若您想使用CPM-1进行推理,我们建议使用高效推理工具BMI

Tsinghua AI 1.4k Jan 3, 2023
Unsupervised text tokenizer for Neural Network-based text generation.

SentencePiece SentencePiece is an unsupervised text tokenizer and detokenizer mainly for Neural Network-based text generation systems where the vocabu

Google 6.4k Jan 1, 2023