GPT-3は汎用的な事前トレーニングされた生成モデルで、TransformerのDecoder-only構造を使用しています。これはzero-shot生成能力に特化しており、テキスト生成に関連する様々なダウンストリームタスクを解決するために使用することができます。このモデルは膨大な無監督データを使って、自帰帰タスクを通じて事前トレーニングされています。テキスト要約、質問生成、data-to-textなどのテキスト生成に関連するタスクに使用することができます。
モデルの説明:
GPT-3モデルはTransformerのDecoder構造を使用しており、Transformer Decoderのいくつかの変更を加えています。本来のDecoderには2つのMulti-Head Attentionの構造が含まれていますが、GPT-3はMask Multi-Head Attentionだけを残し、従来の言語モデリングの最適化を通じて左から右への自帰帰的事前トレーニングを行います。本モデルはGPT-3のコードをベースに、大量の中国語の無監督データとダウンストリームタスクのデータで事前トレーニングされ、多くの異なるパラメーターのモデルをトレーニングしましたが、ここではGPT-3 Largeモデルを紹介します。GPT-3モデルの詳細については、Language Models are Few-Shot Learnersを参照してください。
このプロジェクトでは、異なる規模の中国語GPT3モデルのシリーズを再現しました。これにはbase/large/1.3B/2.7B/13B/30B/175Bが含まれます。ここではその中のlargeバージョンを示します。すべてのバージョンは以下の表の通りです。
Model | Layers | Heads | d_model | LR | Batch |
---|---|---|---|---|---|
base | 12 | 12 | 768 | 6.0e-4 | 0.5M |
large | 24 | 16 | 1024 | 3.0e-4 | 0.5M |
1.3B | 24 | 32 | 2048 | 2.0e-4 | 2M |
2.7B | 32 | 32 | 2560 | 1.6e-4 | 2M |
13B | 40 | 40 | 5120 | 1.0e-4 | 6M |
30B | 48 | 56 | 7168 | 1.0e-4 | 6M |
175B(進行中) | 96 | 96 | 12288 | 1.2e-4 | 6M |
期待されるモデルの使用方法と適応範囲:
このモデルは多くのシーンの入力のための生成とつづり書きに主として使用されます。例えば、ユーザーは様々な内容を入力して、モデルが回答したり、つづり書きを行ったり、インストラクションに基づいて返信したりすることができます。
使用方法:
ModelScope libraryをインストールすると、GPT-3のtext-generationの能力が使用可能になります。
コードの例:
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
text_generation_zh = pipeline(Tasks.text_generation, model='damo/nlp_gpt3_text-generation_chinese-large')
result_zh = text_generation_zh("随着计算机视觉的飞速发展,人脸识别技术已从简单场景发展到复杂场景,也即姿态、光照、表情、噪声、遮挡、化妆、年龄、种族、性别等差异化所呈现的复杂场景。尽管已有的人脸识别系统在特定约束环境下的识别成功率较高,")
print(result_zh['text'])
モデルの限界と可能性のあるバイアス:
モデルはデータセットでトレーニングされるため、いくつかのバイアスが生じる可能性があります。ユーザーは自分で評価してどのように使用するかを決定してください。
トレーニングデータの紹介:
トレーニングデータには、中国語のウィキペディアやインターネットで公開されているテキストデータが含まれています。
モデルのトレーニングプロセス:
前処理 トレーニングデータはsrc_txtフィールドだけを含むことが推奨され、MsDatasetでパッケージングしてModelScopeのTrainerを使用してトレーニングすることをお勧めします。
import tempfile
from datasets import Dataset
from modelscope.msdatasets import MsDataset
# トレーニングデータのシミュレーション
src_dataset_dict = {
'src_txt': [
'测试文本1', '测试文本2', '测试文本3'
]
}
src_dataset = MsDataset(Dataset.from_dict(src_dataset_dict))
max_epochs = 3
tmp_dir = tempfile.TemporaryDirectory().name
トレーニング 以下は、GPT-3中国語largeモデルをベースに詩詞生成データセットで2次開発トレーニングするコードです。
from modelscope.msdatasets import MsDataset
from modelscope.trainers import build_trainer
from modelscope.msdatasets import MsDataset
from modelscope.utils.hub import read_config
from modelscope.metainfo import Metrics, Trainers
from datasets import Dataset
from modelscope.msdatasets import MsDataset
dataset_dict = MsDataset.load('chinese-poetry-collection')
train_dataset = dataset_dict['train'].remap_columns({'text1': 'src_txt'})
eval_dataset = dataset_dict['test'].remap_columns({'text1': 'src_txt'})
print (eval_dataset)
max_epochs = 10
tmp_dir = "./gpt3_poetry"
num_warmup_steps = 100
def noam_lambda(current_step: int):
current_step += 1
return min(current_step ** (-0.5), current_step * num_warmup_steps ** (-1.5))
def cfg_modify_fn(cfg):
cfg.train.lr_scheduler = {
"type": "LambdaLR",
"lr_lambda": noam_lambda,
"options": {"by_epoch": False}
}
cfg.train.optimizer = {
"type": "AdamW",
"lr": 3e-4
}
cfg.train.dataloader = {"batch_size_per_gpu": 16, "workers_per_gpu": 1}
return cfg
kwargs = dict(
model='damo/nlp_gpt3_text-generation_chinese-large',
train_dataset=train_dataset,
eval_datase=eval_dataset,
max_epochs=max_epochs,
work_dir=tmp_dir,
cfg_modify_fn=cfg_modify_fn)
# トレーナーの構築とトレーニング
trainer = build_trainer(
name=Trainers.nlp_base_trainer, default_args=kwargs)
trainer.train()
トレーニングのヒント: トレーニングlrの設定は上記の表内の異なるモデルの設定を参照してください。 トレーニングデータが長い場合は、トレーニングepochを適宜増やすことが可能です。
関連する論文と引用情報: GPT-3モデルが役立つ場合は、関連する論文を引用してください。
@inproceedings{NEURIPS2020_1457c0d6, author = {Brown, Tom and Mann, Benjamin and Ryder, Nick and Subbiah, Melanie and Kaplan, Jared D and Dhariwal, Prafulla and Neelakantan, Arvind and Shyam, Pranav and Sastry, Girish and Askell, Amanda and Agarwal, Sandhini and Herbert-Voss, Ariel and Krueger, Gretchen and Henighan, Tom and Child, Rewon and Ramesh, Aditya and Ziegler, Daniel and Wu, Jeffrey and Winter, Clemens and Hesse, Chris and Chen, Mark and Sigler, Eric and Litwin, Mateusz and Gray, Scott and Chess, Benjamin and Clark, Jack and Berner, Christopher and McCandlish, Sam and Radford, Alec and Sutskever, Ilya and Amodei, Dario}, booktitle = {Advances in Neural Information Processing Systems}, editor = {H. Larochelle and M. Ranzato and R. Hadsell and M.F. Balcan and H. Lin}, pages = {1877--1901}, publisher = {Curran Associates, Inc.}, title = {Language Models are Few-Shot Learners}, url = {https://proceedings.neurips.cc/paper/2020/file/1457c0d6bfcb4967418bfb8ac142f64a-Paper.pdf}, volume = {33}, year = {2020} } ドルフィンAIは言語学習アプリケーションのためのプロフェッショナルな発音評価API(pronunciation assessment api)ソリューションを提供します。音素、単語、文章、チャプター、発音矯正、単語矯正、クイズ、フリーダイアログ、多肢選択問題など幅広く提供しています。当社の発音評価製品(pronunciation assessment)は、英語と中国語、クラウドAPI、オンプレミス、オフラインデバイスの展開をサポートしています。当社の発音評価API(pronunciation assessment api)は、正確性、流暢性、完全性、リズムの次元をカバーする豊富な評価指標を提供し、音素、単語、文の異なるレベルの評価スコアも提供します。また、音素、単語、文の異なるレベルでの評価スコアも提供します。数千万人のユーザーに安定した効率的で安全なサービスを提供しています。ドルフィンAIの発音評価製品(pronunciation assessment)を試してみませんか?