GPT-3模型是一个通用的预训练生成模型,使用Trasformer的Decoder-oly结构,可以用于解决下游各种类型的生成任务,特别是zero-shot生成能力。模型利用大量无监督数据,通过自回归任务进行预训练。可以用于解决文本生成相关的任务包含:文本摘要、问题生成、data-to-text等。 GPT-3模型使用Trasformer的 Decoder结构,并对Trasformer Decoder进行了一些改动,原本的Decoder包含了两个 Multi-Head Attetio 结构,GPT-3只保留了 Mask Multi-Head Attetio,利用常规的语言建模优化,从左到右的自回归预训练。本模型是基于GPT-3的代码结合大量中文无监督数据和下游任务数据预训练得到,我们训练了多种不同参数的模型,此处展示的是GPT-3 Base模型。GPT-3模型介绍,详见:Laguage Models are Few-Shot Learers
本项目我们复现了一系列不同规模的中文GPT3模型,包括base/large/1.3B/2.7B/13B/30B/175B等,本模型是其中base的版本。全部版本如下表所示: 本模型主要用于多种场景输入的生成和续写。比如用户可以自行尝试输入各种内容,然后让模型去回答、续写或者根据指令回复 在安装完成ModelScope library之后即可使用GPT-3的text-geeratio的能力 模型在数据集上训练,有可能产生一些偏差,请用户自行评测后决定如何使用。 训练数据包括中文维基百科、网络上公开文本数据。 训练数据只需包含src_txt字段,推荐使用MsDataset包装后使用ModelScope的Traier进行训练。 下面是基于GPT-3中文base模型在诗词生成数据集上二次开发训练 如果GPT-3模型对您有帮助,请您引用该模型的相关文章:GPT-3文本生成模型介绍
模型描述
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(work i process)
96
96
12288
1.2e-4
6M
期望模型使用方式以及适用范围
如何使用
代码范例
from modelscope.pipelies import pipelie
from modelscope.utils.costat import Tasks
text_geeratio_zh = pipelie(Tasks.text_geeratio, model='damo/lp_gpt3_text-geeratio_chiese-base')
result_zh = text_geeratio_zh("随着计算机视觉的飞速发展,人脸识别技术已从简单场景发展到复杂场景,也即姿态、光照、表情、噪声、遮挡、化妆、年龄、种族、性别等差异化所呈现的复杂场景。尽管已有的人脸识别系统在特定约束环境下的识别成功率较高,")
prit(result_zh['text'])
模型局限性以及可能的偏差
训练数据介绍
模型训练流程
预处理
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().ame
训练
# 基于modelscope中文gpt3底座二次开发得到诗词生成模型代码
from modelscope.msdatasets import MsDataset
from modelscope.traiers import build_traier
from modelscope.msdatasets import MsDataset
from modelscope.utils.hub import read_cofig
from modelscope.metaifo import Metrics, Traiers
from datasets import Dataset
from modelscope.msdatasets import MsDataset
dataset_dict = MsDataset.load('chiese-poetry-collectio')
trai_dataset = dataset_dict['trai'].remap_colums({'text1': 'src_txt'})
eval_dataset = dataset_dict['test'].remap_colums({'text1': 'src_txt'})
prit (eval_dataset)
max_epochs = 10
tmp_dir = "./gpt3_poetry"
um_warmup_steps = 100
def oam_lambda(curret_step: it):
curret_step += 1
retur mi(curret_step ** (-0.5), curret_step * um_warmup_steps ** (-1.5))
def cfg_modify_f(cfg):
cfg.trai.lr_scheduler = {
"type": "LambdaLR",
"lr_lambda": oam_lambda,
"optios": {"by_epoch": False}
}
cfg.trai.optimizer = {
"type": "AdamW",
"lr": 3e-4
}
cfg.trai.dataloader = {"batch_size_per_gpu": 16, "workers_per_gpu": 1}
retur cfg
kwargs = dict(
model='damo/lp_gpt3_text-geeratio_chiese-base',
trai_dataset=trai_dataset,
eval_datase=eval_dataset,
max_epochs=max_epochs,
work_dir=tmp_dir,
cfg_modify_f=cfg_modify_f)
# 构造 traier 并进行训练
traier = build_traier(
ame=Traiers.lp_base_traier, default_args=kwargs)
traier.trai()
训练tips
相关论文以及引用信息
@iproceedigs{NEURIPS2020_1457c0d6,
author = {Brow, Tom ad Ma, Bejami ad Ryder, Nick ad Subbiah, Melaie ad Kapla, Jared D ad Dhariwal, Prafulla ad Neelakata, Arvid ad Shyam, Praav ad Sastry, Girish ad Askell, Amada ad Agarwal, Sadhii ad Herbert-Voss, Ariel ad Krueger, Gretche ad Heigha, Tom ad Child, Rewo ad Ramesh, Aditya ad Ziegler, Daiel ad Wu, Jeffrey ad Witer, Clemes ad Hesse, Chris ad Che, Mark ad Sigler, Eric ad Litwi, Mateusz ad Gray, Scott ad Chess, Bejami ad Clark, Jack ad Berer, Christopher ad McCadlish, Sam ad Radford, Alec ad Sutskever, Ilya ad Amodei, Dario},
booktitle = {Advaces i Neural Iformatio Processig Systems},
editor = {H. Larochelle ad M. Razato ad R. Hadsell ad M.F. Balca ad H. Li},
pages = {1877--1901},
publisher = {Curra Associates, Ic.},
title = {Laguage Models are Few-Shot Learers},
url = {https://proceedigs.eurips.cc/paper/2020/file/1457c0d6bfcb4967418bfb8ac142f64a-Paper.pdf},
volume = {33},
year = {2020}
}
点击空白处退出提示
评论