Transformers documentation
CPM
このモデルは2020年12月1日にHF papersで公開され、2021年4月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)を公開します。我々の知る限り、26億パラメータと100GBの中国語学習データを持つCPMは、最大の中国語事前学習済み言語モデルであり、会話、エッセイ生成、穴埋めテスト、言語理解などのいくつかの下流の中国語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: list[int]token_ids_1: list[int] | None = None ) → list[int]
パラメータ
- token_ids_0 (
list[int]) — 特殊トークンが追加されるIDのリストです。 - token_ids_1 (
list[int]、省略可) — シーケンスペア用の第2のIDリスト(任意)。
戻り値
list[int]
適切な特殊トークンを含む入力 IDのリスト。
シーケンス分類タスクにおいて、シーケンスまたはシーケンスのペアからモデルの入力を構築するために、特殊トークンを連結して追加します。XLNetのシーケンスは、次の形式を持ちます:
- 単一シーケンス:
X <sep> <cls> - シーケンスのペア:
A <sep> B <sep> <cls>
単一の文字列内のトークン(サブワードの文字列)のシーケンスを変換します。
create_token_type_ids_from_sequences
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = None ) → list[int]
シーケンスペア分類タスクで使用するために、渡された2つのシーケンスからマスクを作成します。XLNet
sequence pair mask は以下の形式です:
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
< source >( token_ids_0: list[int]token_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: list[int]token_ids_1: list[int] | None = None ) → list[int]
パラメータ
- token_ids_0 (
list[int]) — 特殊トークンが追加されるIDのリストです。 - token_ids_1 (
list[int]、省略可) — シーケンスペア用の第2のIDリスト(任意)。
戻り値
list[int]
適切な特殊トークンを含む入力 IDのリスト。
シーケンス分類タスクにおいて、シーケンスまたはシーケンスのペアからモデルの入力を構築するために、特殊トークンを連結して追加します。XLNetのシーケンスは、次の形式を持ちます:
- 単一シーケンス:
X <sep> <cls> - シーケンスのペア:
A <sep> B <sep> <cls>
create_token_type_ids_from_sequences
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = None ) → list[int]
シーケンスペア分類タスクで使用するために、渡された2つのシーケンスからマスクを作成します。XLNet
sequence pair mask は以下の形式です:
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)のみを返します。