🚀 中国語CPT-Large
CPT-Largeは、中国語の言語理解と生成のための事前学習済みモデルで、多様な自然言語処理タスクに対応しています。
🚀 クイックスタート
このモデルを使用するには、 modeling_cpt.py
ファイルをプロジェクトにインポートします。以下に使用例を示します。
>>> from modeling_cpt import CPTForConditionalGeneration
>>> from transformers import BertTokenizer
>>> tokenizer = BertTokenizer.from_pretrained("fnlp/cpt-large")
>>> model = CPTForConditionalGeneration.from_pretrained("fnlp/cpt-large")
>>> input_ids = tokenizer.encode("北京是[MASK]的首都", return_tensors='pt')
>>> pred_ids = model.generate(input_ids, num_beams=4, max_length=20)
>>> print(tokenizer.convert_ids_to_tokens(pred_ids[0]))
['[SEP]', '[CLS]', '北', '京', '是', '中', '国', '的', '首', '都', '[SEP]']
⚠️ 重要提示
モデルの語彙には BertTokenizer
を使用してください。元の BartTokenizer
は使用しないでください。
✨ 主な機能
- このモデルは、fill-mask、text2text-generation、text-classification、Summarizationなどの多様な自然言語処理タスクに対応しています。
- 2022年12月30日に更新版のCPTと中国語BARTがリリースされ、語彙と位置埋め込みが改善されました。
📦 インストール
更新版のモデルを使用するには、 modeling_cpt.py
(こちらから新しいバージョンをダウンロード)と語彙を更新し、キャッシュを更新してください。
💻 使用例
基本的な使用法
>>> from modeling_cpt import CPTForConditionalGeneration
>>> from transformers import BertTokenizer
>>> tokenizer = BertTokenizer.from_pretrained("fnlp/cpt-large")
>>> model = CPTForConditionalGeneration.from_pretrained("fnlp/cpt-large")
>>> input_ids = tokenizer.encode("北京是[MASK]的首都", return_tensors='pt')
>>> pred_ids = model.generate(input_ids, num_beams=4, max_length=20)
>>> print(tokenizer.convert_ids_to_tokens(pred_ids[0]))
['[SEP]', '[CLS]', '北', '京', '是', '中', '国', '的', '首', '都', '[SEP]']
📚 ドキュメント
ニュース
2022年12月30日
CPTと中国語BARTの更新版がリリースされました。新しいバージョンでは、以下の部分を変更しました。
- 語彙:古いBERT語彙を、トレーニングデータから構築されたサイズ51271の大きな語彙に置き換えました。この中では、1)欠落している6800以上の中国語文字(その多くは繁体字)を追加し、2)冗長なトークン(例:##接頭辞付きの中国語文字トークン)を削除し、3)いくつかの英語トークンを追加してOOVを減らしました。
- 位置埋め込み:
max_position_embeddings
を512から1024に拡張しました。
新しいバージョンのモデルは、語彙アライメントを行った古いバージョンのチェックポイントで初期化されます。古いチェックポイントにあるトークン埋め込みはコピーされ、その他の新しく追加されたパラメータはランダムに初期化されます。さらに、新しいCPTと中国語BARTを、バッチサイズ2048、最大シーケンス長1024、ピーク学習率2e-5、ウォームアップ率0.1で50Kステップトレーニングしました。
以前のチェックポイントとの比較結果は以下の通りです。
|
AFQMC |
IFLYTEK |
CSL-sum |
LCSTS |
AVG |
以前のバージョン |
|
|
|
|
|
bart-base |
73.0 |
60 |
62.1 |
37.8 |
58.23 |
cpt-base |
75.1 |
60.5 |
63.0 |
38.2 |
59.20 |
bart-large |
75.7 |
62.1 |
64.2 |
40.6 |
60.65 |
cpt-large |
75.9 |
61.8 |
63.7 |
42.0 |
60.85 |
更新版 |
|
|
|
|
|
bart-base |
73.03 |
61.25 |
61.51 |
38.78 |
58.64 |
cpt-base |
74.40 |
61.23 |
62.09 |
38.81 |
59.13 |
bart-large |
75.81 |
61.52 |
64.62 |
40.90 |
60.71 |
cpt-large |
75.97 |
61.63 |
63.83 |
42.08 |
60.88 |
結果は、更新されたモデルが以前のチェックポイントと比較して同等のパフォーマンスを維持していることを示しています。更新されたモデルが以前のモデルよりわずかに劣る場合もありますが、これは以下の理由によるものです。1)追加の数ステップのトレーニングは、パフォーマンスの大幅な向上につながらなかった、2)一部の下流タスクは、新しく追加されたトークンやより長いエンコーディングシーケンスの影響を受けず、微調整のハイパーパラメータに敏感である。
モデルの説明
これはCPT-Largeの実装です。CPTを使用するには、CPTのアーキテクチャを定義する modeling_cpt.py
ファイル(こちらからダウンロード)をプロジェクトにインポートしてください。
CPT: A Pre-Trained Unbalanced Transformer for Both Chinese Language Understanding and Generation
Yunfan Shao, Zhichao Geng, Yitao Liu, Junqi Dai, Fei Yang, Li Zhe, Hujun Bao, Xipeng Qiu
Githubリンク: https://github.com/fastnlp/CPT
📄 ライセンス
@article{shao2021cpt,
title={CPT: A Pre-Trained Unbalanced Transformer for Both Chinese Language Understanding and Generation},
author={Yunfan Shao and Zhichao Geng and Yitao Liu and Junqi Dai and Fei Yang and Li Zhe and Hujun Bao and Xipeng Qiu},
journal={arXiv preprint arXiv:2109.05729},
year={2021}
}