CPM
概述
CPM模型由张正彦、韩旭、周浩、柯培、顾宇贤、叶德明、秦宇佳、苏雨生、纪浩哲、关健、齐凡超、王晓智、郑亚楠、曾国阳、曹焕琪、陈胜奇、李大轩、孙振波、刘志远、黄敏烈、韩文涛、唐杰、李娟子、朱晓燕、孙茂松在CPM: A Large-scale Generative Chinese Pre-trained Language Model中提出。
论文的摘要如下:
预训练语言模型(PLMs)已被证明对各种下游自然语言处理(NLP)任务有益。最近,拥有1750亿参数和570GB训练数据的GPT-3因其在少样本(甚至零样本)学习方面的能力而引起了广泛关注。然而,将GPT-3应用于解决中文NLP任务仍然具有挑战性,因为GPT-3的训练语料主要是英文,且参数未公开。在本技术报告中,我们发布了基于大规模中文训练数据生成预训练的中文预训练语言模型(CPM)。据我们所知,CPM拥有26亿参数和100GB中文训练数据,是最大的中文预训练语言模型,可以促进多个下游中文NLP任务,如对话、文章生成、完形填空和语言理解。大量实验表明,CPM在少样本(甚至零样本)学习设置下在许多NLP任务上表现出色。
该模型由canwenxu贡献。原始实现可以在这里找到:https://github.com/TsinghuaAI/CPM-Generate
CPM的架构与GPT-2相同,除了分词方法。有关API参考信息,请参阅GPT-2文档。
CpmTokenizer
类 transformers.CpmTokenizer
< source >( vocab_file do_lower_case = False remove_space = True keep_accents = False bos_token = '' eos_token = '' unk_token = '
使用Jieba分词工具进行预分词。它用于CPM模型。
build_inputs_with_special_tokens
< source >( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) → List[int]
通过连接和添加特殊标记,从序列或序列对构建序列分类任务的模型输入。一个XLNet序列具有以下格式:
- 单一序列:
X
- 序列对:
A
B
将一系列标记(子词的字符串)转换为单个字符串。
create_token_type_ids_from_sequences
< source >( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) → List[int]
从传递给序列对分类任务的两个序列中创建一个掩码。一个XLNet
如果 token_ids_1
是 None
,此方法仅返回掩码的第一部分(0s)。
get_special_tokens_mask
< source >( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None already_has_special_tokens: bool = False ) → List[int]
从没有添加特殊标记的标记列表中检索序列ID。当使用标记器的prepare_for_model
方法添加特殊标记时,会调用此方法。
CpmTokenizerFast
类 transformers.CpmTokenizerFast
< source >( vocab_file = None tokenizer_file = None do_lower_case = False remove_space = True keep_accents = False bos_token = '' eos_token = '' unk_token = '
使用Jieba分词工具进行预分词。它用于CPM模型。
build_inputs_with_special_tokens
< source >( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) → List[int]
通过连接和添加特殊标记,从序列或序列对构建序列分类任务的模型输入。一个XLNet序列具有以下格式:
- 单一序列:
X
- 序列对:
A
B
create_token_type_ids_from_sequences
< source >( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) → List[int]
从传递给序列对分类任务的两个序列中创建一个掩码。一个XLNet
如果 token_ids_1
是 None
,此方法仅返回掩码的第一部分(0s)。