Transformers documentation

CPM

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

该模型于 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

< >

( 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

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

参数

  • token_ids_0 (list[int]) — 将添加特殊标记的 ID 列表。
  • token_ids_1 (list[int], 可选) — 用于序列对的可选第二组 ID 列表。

返回值

list[int]

包含相应特殊标记的输入 ID列表。

通过拼接并添加特殊标记,从单个序列或序列对构建用于序列分类任务的模型输入。XLNet 序列的格式如下:

  • 单条序列:X <sep> <cls>
  • 序列对:A <sep> B <sep> <cls>

convert_tokens_to_string

< >

( tokens )

将单个字符串中的标记序列(子词为字符串)进行转换。

create_token_type_ids_from_sequences

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

参数

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], 可选) — 用于序列对的可选第二组 ID 列表。

返回值

list[int]

根据给定序列的 token type IDs 列表。

根据传入的两个序列创建掩码,用于序列对分类任务。一个 XLNet

序列对掩码具有以下格式:

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence    | second sequence |

如果 token_ids_1 为 None,此方法仅返回掩码的第一部分(0)。

get_special_tokens_mask

< >

( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]

参数

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], 可选) — 用于序列对的可选第二组 ID 列表。
  • already_has_special_tokens (bool,可选,默认为 False) — 指示 token 列表是否已针对该模型格式化为包含特殊 token 的形式。

返回值

list[int]

一个整数列表,取值范围为 [0, 1]:1 表示特殊标记,0 表示序列标记。

从未添加特殊标记的标记列表中获取序列 ID。当使用分词器的 prepare_for_model 方法添加特殊标记时,会调用此方法。

CpmTokenizerFast

class transformers.CpmTokenizerFast

< >

( 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

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

参数

  • token_ids_0 (list[int]) — 将添加特殊标记的 ID 列表。
  • token_ids_1 (list[int], 可选) — 用于序列对的可选第二组 ID 列表。

返回值

list[int]

包含相应特殊标记的输入 ID列表。

通过拼接并添加特殊标记,从单个序列或序列对构建用于序列分类任务的模型输入。XLNet 序列的格式如下:

  • 单条序列:X <sep> <cls>
  • 序列对:A <sep> B <sep> <cls>

create_token_type_ids_from_sequences

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

参数

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], 可选) — 用于序列对的可选第二组 ID 列表。

返回值

list[int]

根据给定序列的 token type IDs 列表。

根据传入的两个序列创建掩码,用于序列对分类任务。一个 XLNet

序列对掩码具有以下格式:

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence    | second sequence |

如果 token_ids_1 为 None,此方法仅返回掩码的第一部分(0)。

Update on GitHub