CPM
概述
CPM 模型由张正言、韩旭、周浩、柯培、顾昱贤、叶德明、秦雨佳、苏育生、季浩哲、管健、齐帆超、王晓智、郑亚楠、曾国洋、曹焕琪、陈胜奇、李代轩、孙振波、刘知远、黄民烈、韩文涛、唐杰、李娟子、朱晓燕、孙茂松在 CPM:一种大规模生成式中文预训练语言模型 中提出。
论文摘要如下
预训练语言模型(PLMs)已被证明对各种下游 NLP 任务有益。最近,GPT-3 凭借其 1750 亿个参数和 570GB 的训练数据,因其少样本(甚至零样本)学习能力而备受关注。然而,将 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
< 源代码 >( vocab_file do_lower_case = False remove_space = True keep_accents = False bos_token = '<s>' eos_token = '</s>' unk_token = '<unk>' sep_token = '<sep>' pad_token = '<pad>' cls_token = '<cls>' mask_token = '<mask>' additional_special_tokens = ['<eop>', '<eod>'] sp_model_kwargs: 可选 = None **kwargs )
使用 Jieba 分词工具运行预分词。它用于 CPM 模型。
build_inputs_with_special_tokens
< 源代码 >( token_ids_0: 列表 token_ids_1: 可选 = None ) → 整数列表
通过连接和添加特殊标记,从序列或一对序列构建用于序列分类任务的模型输入。XLNet 序列具有以下格式
- 单个序列:
X <sep> <cls>
- 序列对:
A <sep> B <sep> <cls>
将一系列标记(子词的字符串)转换为单个字符串。
create_token_type_ids_from_sequences
< 源代码 >( token_ids_0: 列表 token_ids_1: 可选 = None ) → 整数列表
创建一个从两个序列传递的掩码,用于序列对分类任务。XLNet
如果 token_ids_1
为 None
,则此方法仅返回掩码的第一部分 (0s)。
get_special_tokens_mask
< 源代码 >( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → List[int]
从未添加特殊令牌的令牌列表中检索序列 ID。当使用分词器 prepare_for_model
方法添加特殊令牌时,会调用此方法。
CpmTokenizerFast
类 transformers.CpmTokenizerFast
< 源代码 >( vocab_file = None tokenizer_file = None do_lower_case = False remove_space = True keep_accents = False bos_token = '<s>' eos_token = '</s>' unk_token = '<unk>' sep_token = '<sep>' pad_token = '<pad>' cls_token = '<cls>' mask_token = '<mask>' additional_special_tokens = ['<eop>', '<eod>'] **kwargs )
使用 Jieba 分词工具运行预分词。它用于 CPM 模型。
通过连接和添加特殊标记,从序列或一对序列构建用于序列分类任务的模型输入。XLNet 序列具有以下格式
- 单个序列:
X <sep> <cls>
- 序列对:
A <sep> B <sep> <cls>
create_token_type_ids_from_sequences
< 源代码 > ( token_ids_0: 列表 token_ids_1: 可选 = None ) → 整数列表
创建一个从两个序列传递的掩码,用于序列对分类任务。XLNet
如果 token_ids_1
为 None
,则此方法仅返回掩码的第一部分 (0s)。