训练自己的GPT2

这篇具有很好参考价值的文章主要介绍了训练自己的GPT2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.预训练与微调

所谓的预训练,就是在海量的通用数据上训练大模型。比如,我把全世界所有的网页上的文本内容都整理出来,把全人类所有的书籍、论文都整理出来,然后进行训练。这个训练过程代价很大,首先模型很大,同时数据量又很大,比如GPT3参数量达到了175B,训练数据达到了45TB,训练一次就话费上千万美元。如此大代价学出来的是一个通用知识的模型,他确实很强,但是这样一个模型,可能无法在一些专业性很强的领域上取得比较好的表现,因为他没有针对这个领域的数据进行训练过。

因此,大模型火了之后,很多人都开始把大模型用在自己的领域。通常也就是把自己领域的一些数据,比如专业书、论文等等整理出来,使用预训练好的大模型在新的数据集上进行微调。微调的成本相比于预训练就要小得多了。

2.准备工作

首先需要安装第三方库transformerstransformers是一个用于自然语言处理(NLP)的Python第三方库,实现Bert、GPT-2和XLNET等比较新的模型,支持TensorFlow和PyTorch。以及下载预训练好的模型权重。

pip install transformers

安装完成之后,我们可以直接使用下面的代码,来构造一个预训练的GPT2

from transformers import GPT2Tokenizer, GPT2LMHeadModel

tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2LMHeadModel.from_pretrained("gpt2")

当运行的时候,代码会自动从hugging face上下载模型。但是由于hugging face是国外网站,可能下载起来很慢或者无法下载,因此我们也可以自己手动下载之后在本地读取。

打开hugging face的网站,搜索GPT2。或者直接进入GPT2的页面。

训练自己的GPT2,GPT,gpt,chatgpt

下载上图中的几个文件到本地,假设下载到./gpt2文件夹

然后就可以使用下面的代码来尝试预训练的模型直接生成文本你的效果。

from transformers import GPT2Tokenizer, GPT2LMHeadModel


tokenizer = GPT2Tokenizer.from_pretrained("./gpt2")
model = GPT2LMHeadModel.from_pretrained("./gpt2")

q = "tell me a fairy story"

ids = tokenizer.encode(q, return_tensors='pt')
final_outputs = model.generate(
    ids,
    do_sample=True,
    max_length=100,
    pad_token_id=model.config.eos_token_id,
    top_k=50,
    top_p=0.95,
)

print(tokenizer.decode(final_outputs[0], skip_special_tokens=True))

回答如下:
训练自己的GPT2,GPT,gpt,chatgpt

2.在自己的数据上进行微调

首先把我们的数据,也就是文本,全部整理到一起。比如可以把所有文本拼接到一起。

假设所有的文本数据都存到一个文件中。那么可以直接使用下面的代码进行训练。

import torch
from torch.utils.data import Dataset, DataLoader
from transformers import GPT2Tokenizer, GPT2ForSequenceClassification, AdamW, GPT2LMHeadModel
from transformers import DataCollatorForLanguageModeling
from transformers import Trainer, TrainingArguments, TextDataset

def load_data_collator(tokenizer, mlm = False):
    data_collator = DataCollatorForLanguageModeling(
        tokenizer=tokenizer, 
        mlm=mlm,
    )
    return data_collator

def load_dataset(file_path, tokenizer, block_size = 128):
    dataset = TextDataset(
        tokenizer = tokenizer,
        file_path = file_path,
        block_size = block_size,
    )
    return dataset


def train(train_file_path, model_name,
          output_dir,
          overwrite_output_dir,
          per_device_train_batch_size,
          num_train_epochs,
          save_steps):
    tokenizer = GPT2Tokenizer.from_pretrained(model_name)
    train_dataset = load_dataset(train_file_path, tokenizer)
    data_collator = load_data_collator(tokenizer)

    tokenizer.save_pretrained(output_dir)

    model = GPT2LMHeadModel.from_pretrained(model_name)

    model.save_pretrained(output_dir)

    training_args = TrainingArguments(
          output_dir=output_dir,
          overwrite_output_dir=overwrite_output_dir,
          per_device_train_batch_size=per_device_train_batch_size,
          num_train_epochs=num_train_epochs,
      )

    trainer = Trainer(
          model=model,
          args=training_args,
          data_collator=data_collator,
          train_dataset=train_dataset,
    )

    trainer.train()
    trainer.save_model()


train_file_path = "./train.txt"   # 你自己的训练文本
model_name = './gpt2'  # 预训练的模型路径
output_dir = './custom_data'  # 你自己设定的模型保存路径
overwrite_output_dir = False
per_device_train_batch_size = 96  # 每一台机器上的batch size。
num_train_epochs = 50   
save_steps = 50000

# Train
train(
    train_file_path=train_file_path,
    model_name=model_name,
    output_dir=output_dir,
    overwrite_output_dir=overwrite_output_dir,
    per_device_train_batch_size=per_device_train_batch_size,
    num_train_epochs=num_train_epochs,
    save_steps=save_steps
)     

训练完成之后,推理的话,直接使用第二节里的代码,将预训练模型路径换成自己训练的模型路径就行了文章来源地址https://www.toymoban.com/news/detail-822267.html

到了这里,关于训练自己的GPT2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GPT2-Chinese 文本生成,训练AI写小说,AI写小说2

    GPT-2 (Generative Pre-trained Transformer 2) 是由 OpenAI 开发的一种基于 Transformer 模型的自然语言处理(NLP)模型,旨在生成自然流畅的文本。它是一种无监督学习模型,其设计目标是能够理解人类语言的复杂性并模拟出自然的语言生成。 GPT-2 是目前最先进的自然语言处理模型之一,因

    2024年02月13日
    浏览(23)
  • 本地构建自己的chatgpt已成为可能,国外团队从GPT3.5提取大规模数据完成本地机器人训练,并开源项目源码和模型支持普通在笔记上运行chatgpt

    国外团队从GPT3.5提取大规模数据完成本地机器人训练,并开源项目源码和模型支持,普通在笔记上运行chatgpt。下面是他们分享的:收集到的数据、数据管理程序、训练代码和最终模型,以促进开放研究和可重复性。 在 2023 年 3 月 20 日至 2023 年 3 月 26 日期间,该团队使用 GPT

    2023年04月21日
    浏览(43)
  • 花费7元训练自己的GPT 2模型

    在上一篇博客中,我介绍了用Tensorflow来重现GPT 1的模型和训练的过程。这次我打算用Pytorch来重现GPT 2的模型并从头进行训练。 GPT 2的模型相比GPT 1的改进并不多,主要在以下方面: 1. GPT 2把layer normalization放在每个decoder block的前面。 2. 最终的decoder block之后额外添加了一个lay

    2024年02月14日
    浏览(28)
  • 【AI】【GPT4ALL】如何拥有本地GPT以及有无可能自己训练GPT

    GPT4ALL是一款易于安装,可以连接多款自然语言模型包括GPT3.5模型,并且自带上传文件搜索功能的AI本地软件。部署后,也可以通过自己连接它的AI后台,自建前台,在公司内部自建一个AI平台。 要实现这个需要解决两个问题: 构建一套局域网UI连接本地GPT模型API的可用服务,

    2024年01月17日
    浏览(39)
  • 9、使用 ChatGPT 的 GPT 制作自己的 GPT!

    想用自己的 GPT 超越 GPT ChatGPT 吗?那么让我们 GPT GPT 吧! 山姆 · 奥特曼利用这个机会在推特上宣传 GPTs 的同时还猛烈抨击了埃隆的格罗克。 他们来了! 在上周刚刚宣布之后,OpenAI 现在推出了其雄心勃勃的新 ChatGPT 附加组件:恰如其分的 GPT。 任何人都可以轻松构建自己的

    2024年02月21日
    浏览(28)
  • GPT实战系列-如何用自己数据微调ChatGLM2模型训练

    广告文案生成模型 输入文字 :类型#裙 颜色#蓝色 风格#清新*图案#蝴蝶结 输出文案 :裙身处采用立体蝴蝶结装饰辅以蓝色条带点缀,令衣身造型饱满富有层次的同时为其注入一丝甜美气息。将女孩清新娇俏的一面衬托而出。 训练和测试数据组织: 数据可以从 下载链接,t

    2024年02月06日
    浏览(36)
  • GPT2中文模型本地搭建(二)

    GPT2_ML项目是开源了一个中文版的GPT2,而且还是最大的15亿参数级别的模型。 OpenAI在GPT2的时期并没有帮忙训练中文,上篇文章的验证也可说明此问题,对应的模型直接上GitHub上下载即可。 本文主旨快速搭建本地模型,更全的攻略,大家也可以到GitHub中慢慢摸索。 本文是基于

    2024年02月09日
    浏览(31)
  • ChatGPT之父:未训练GPT-5

    GPT等大型语言模型带动的芯片需求飙升趋势依然没有平息的迹象,英伟达的最新版旗舰AI芯片H100近日在网上的售价已经被炒到4万多美金,反映了科技行业对训练和部署人工智能软件的需求仍未被满足。 1.马斯克成立新AI公司硬刚OpenAI 当地时间4月14日,据知情人士消息报道,特

    2023年04月21日
    浏览(23)
  • 如何用 500 行 SQL 实现 GPT2学习

    俄罗斯有个大佬每年都会用 SQL 来实现一个挑战庆祝新年,已经坚持了 10 多年了。而 2023 年年底他完成了一件非常了不起的事情, 即用 500 行 SQL 实现了 GPT2:https://explainextended.com/2023/12/31/happy-new-year-15/ 整个项目的代码参见:https://github.com/quassnoi/explain-extended-2024 这里搬运总结

    2024年01月23日
    浏览(29)
  • ChatGPT 速通手册——GPT 训练数据集介绍

    所有人工智能算法都会分为训练和推理两步。算法的效果好坏,很大程度上取决于训练数据本身的质量。ChatGPT 所用的训练数据,openai 公司没有单独公布过细节。不过考虑到 ChatGPT 是在前序 GPT 算法基础上发展而来,我们可以侧面分析 GPT-3 的训练数据集情况。 人工智能领域知

    2024年02月06日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包