Transformers documentation
CPM
该模型于 2020-12-01 在 HF papers 上发布,并于 2021-04-10 贡献至 Hugging Face Transformers。
CPM
概述
CPM 模型由 Zhengyan Zhang、Xu Han、Hao Zhou、Pei Ke、Yuxian Gu、Deming Ye、Yujia Qin、Yusheng Su、Haozhe Ji、Jian Guan、Fanchao Qi、Xiaozhi Wang、Yanan Zheng、Guoyang Zeng、Huanqi Cao、Shengqi Chen、Daixuan Li、Zhenbo Sun、Zhiyuan Liu、Minlie Huang、Wentao Han、Jie Tang、Juanzi Li、Xiaoyan Zhu 和 Maosong Sun 在 CPM: A Large-scale Generative Chinese Pre-trained Language Model 中提出。
该论文的摘要如下:
预训练语言模型(PLM)已被证明对多种下游 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
class transformers.CpmTokenizer
< source >( vocab_filedo_lower_case = Falseremove_space = Truekeep_accents = Falsebos_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: dict[str, typing.Any] | None = None**kwargs )
使用 Jieba-RS 分词工具执行预分词。它用于 CPM 模型。
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
通过拼接并添加特殊标记,从单个序列或序列对构建用于序列分类任务的模型输入。XLNet 序列的格式如下:
- 单条序列:
X <sep> <cls> - 序列对:
A <sep> B <sep> <cls>
将单个字符串中的标记序列(子词为字符串)进行转换。
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
根据传入的两个序列创建掩码,用于序列对分类任务。一个 XLNet
如果 token_ids_1 为 None,此方法仅返回掩码的第一部分(0)。
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]
从未添加特殊标记的标记列表中获取序列 ID。当使用分词器的 prepare_for_model 方法添加特殊标记时,会调用此方法。
CpmTokenizerFast
class transformers.CpmTokenizerFast
< source >( vocab_file = Nonetokenizer_file = Nonedo_lower_case = Falseremove_space = Truekeep_accents = Falsebos_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-RS 分词工具执行预分词。它用于 CPM 模型。
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
通过拼接并添加特殊标记,从单个序列或序列对构建用于序列分类任务的模型输入。XLNet 序列的格式如下:
- 单条序列:
X <sep> <cls> - 序列对:
A <sep> B <sep> <cls>
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
根据传入的两个序列创建掩码,用于序列对分类任务。一个 XLNet
如果 token_ids_1 为 None,此方法仅返回掩码的第一部分(0)。