Mindspore 公开课 - GPT

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

GPT Task

在模型 finetune 中,需要根据不同的下游任务来处理输入,主要的下游任务可分为以下四类:

  • 分类(Classification):给定一个输入文本,将其分为若干类别中的一类,如情感分类、新闻分类等;
  • 蕴含(Entailment):给定两个输入文本,判断它们之间是否存在蕴含关系(即一个文本是否可以从另一个文本中推断出来);
  • 相似度(Similarity):给定两个输入文本,计算它们之间的相似度得分;
  • 多项选择题(Multiple choice):给定一个问题和若干个答案选项,选择最佳的答案。

Mindspore 公开课 - GPT,gpt
我们使用IMDb数据集,通过finetune GPT进行情感分类任务。

IMDb数据集是一个常用的情感分类数据集,其中包含50,000条影评文本,其中25,000条用作训练数据,另外25,000条用作测试数据。每个样本都有一个二元标签,表示影评的情感是正面还是负面。

import os

import mindspore
from mindspore.dataset import text, GeneratorDataset, transforms
from mindspore import nn

from mindnlp import load_dataset
from mindnlp.transforms import PadTransform, GPTTokenizer

from mindnlp.engine import Trainer, Evaluator
from mindnlp.engine.callbacks import CheckpointCallback, BestModelCallback
from mindnlp.metrics import Accuracy

数据预处理

# 加载数据集
imdb_train, imdb_test = load_dataset('imdb', shuffle=False)

通过load_dataset加载IMDb数据集后,我们需要对数据进行如下处理:

  • 将文本内容进行分词,并映射为对应的数字索引;
  • 统一序列长度:超过进行截断,不足通过占位符进行补全;
  • 按照分类任务的输入要求,在句首和句末分别添加Start与Extract占位符(此处用 <bos>与 <eos>表示);
  • 批处理。
import numpy as np

def process_dataset(dataset, tokenizer, max_seq_len=256, batch_size=32, shuffle=False):
    """数据集预处理"""
    def pad_sample(text):
        if len(text) + 2 >= max_seq_len:
            return np.concatenate(
                [np.array([tokenizer.bos_token_id]), text[: max_seq_len-2], np.array([tokenizer.eos_token_id])]
            )
        else:
            pad_len = max_seq_len - len(text) - 2
            return np.concatenate( 
                [np.array([tokenizer.bos_token_id]), text,
                 np.array([tokenizer.eos_token_id]),
                 np.array([tokenizer.pad_token_id] * pad_len)]
            )

    column_names = ["text", "label"]
    rename_columns = ["input_ids", "label"]

    if shuffle:
        dataset = dataset.shuffle(batch_size)

    dataset = dataset.map(operations=[tokenizer, pad_sample], input_columns="text")
    dataset = dataset.rename(input_columns=column_names, output_columns=rename_columns)
    dataset = dataset.batch(batch_size)

    return dataset

加载 GPT tokenizer,并添加上述使用到的 <bos>, <eos>, <pad>占位符。

gpt_tokenizer = GPTTokenizer.from_pretrained('openai-gpt')

special_tokens_dict = {
    "bos_token": "<bos>",
    "eos_token": "<eos>",
    "pad_token": "<pad>",
}
num_added_toks = gpt_tokenizer.add_special_tokens(special_tokens_dict)

由于IMDb数据集本身不包含验证集,我们手动将其分割为训练和验证两部分,比例取0.7, 0.3。

imdb_train, imdb_val = imdb_train.split([0.7, 0.3])

dataset_train = process_dataset(imdb_train, gpt_tokenizer, shuffle=True)
dataset_val = process_dataset(imdb_val, gpt_tokenizer)
dataset_test = process_dataset(imdb_test, gpt_tokenizer)

模型训练

同BERT课件中的情感分类任务实现,这里我们依旧使用了混合精度。另外需要注意的一点是,由于在前序数据处理中,我们添加了3个特殊占位符,所以在token embedding中需要调整词典的大小(vocab_size + 3)。文章来源地址https://www.toymoban.com/news/detail-792899.html

from mindnlp.models import GPTForSequenceClassification
from mindnlp._legacy.amp import auto_mixed_precision

model = GPTForSequenceClassification.from_pretrained('openai-gpt', num_labels=2)
model.pad_token_id = gpt_tokenizer.pad_token_id
model.resize_token_embeddings(model.config.vocab_size + 3)
model = auto_mixed_precision(model, 'O1')

loss = nn.CrossEntropyLoss()
optimizer = nn.Adam(model.trainable_params(), learning_rate=2e-5)

metric = Accuracy()

ckpoint_cb = CheckpointCallback(save_path='checkpoint', ckpt_name='sentiment_model', epochs=1, keep_checkpoint_max=2)
best_model_cb = BestModelCallback(save_path='checkpoint', auto_load=True)

trainer = Trainer(network=model, train_dataset=dataset_train,
                  eval_dataset=dataset_val, metrics=metric,
                  epochs=3, loss_fn=loss, optimizer=optimizer, callbacks=[ckpoint_cb, best_model_cb], jit=True)

trainer.run(tgt_columns="label")

模型评估

evaluator = Evaluator(network=model, eval_dataset=dataset_test, metrics=metric)
evaluator.run(tgt_columns="label")

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

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

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

相关文章

  • 快来!Claude无需魔法不限量;百度官方AIGC公开课;Prompt高质量答案完全指南;GPT-5真的要来了?贾扬清离职阿里后首次受访 | ShowMeAI日报

    👀 日报周刊合集 | 🎡 生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! Siqi Chen 是初创公司Runway CEO兼AI投资人,他两周前的推特重新引发了热议:预计到2023年底,GPT-4将被新的GPT-5版本取代。 除了透露GPT-5的发布时间外,Siqi Chen还宣布,一些OpenAI员工希望新模型能够与

    2024年02月09日
    浏览(51)
  • GPT-2源码实现及GPT-3、GPT-3.5、GPT-4及GPT-5内幕解析(四)

    GPT-2源码实现及GPT-3、GPT-3.5、GPT-4及GPT-5内幕解析(四) 5.4 GPT-4及GPT-5内幕解析 本节进行GPT-4及GPT-5内幕解析,GPT-4甚至即将到来的GPT-5,为什么这么有效、这么强大,在OpenAI的官网页面,如果选GPT-4的话,它会告诉你一件事情:“GPT-4 currently has a cap of 25 messages every 3 hours”(“GP

    2024年02月11日
    浏览(39)
  • GPT,GPT-2,GPT-3,InstructGPT的进化之路

    ChatGPT 火遍圈内外,突然之间,好多人开始想要了解 NLP 这个领域,想知道 ChatGPT 到底是个什么?作为在这个行业奋斗5年的从业者,真的很开心让人们知道有一群人在干着这么样的一件事情。这也是我结合各位大佬的文章,总结下GPT 这条技术路线的初心。 其实,ChatGPT 的成功

    2024年02月07日
    浏览(44)
  • 【论文精读】 GPT,GPT-2,GPT-3:大力出奇迹

    【论文精读】Transformer:Attention Is All You Need 【论文精读】BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding 论文地址: GPT:Improving Language Understanding by Generative Pre-Training GPT-2:Language Models are Unsupervised Multitask Learners GPT-3:Language Models are Few-Shot Learners 2017/06 Transf

    2024年04月12日
    浏览(34)
  • Paper简读 - ChatGPT相关的GPT-1、GPT-2、GPT-3

    欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/128909400 GPT、GPT-2、GPT-3:Generative Pre-trained Transformer,生成式预训练Transformer Wiki: https://en.wikipedia.org/wiki/GPT-3 GPT-3 Demo: https://gpt3demo.com/ 时间线: Transformer, 2017.6, Attention is all you need GPT

    2024年02月03日
    浏览(28)
  • 【未来已来】人人都说GPT,人人都怕GPT,人人都用GPT

    ChatGPT是由美国OpenAI研发的能够通过自然语言驱动的人工智能技术工具,因为它强大的执行力和任务处理能力,一经亮相就引起了极大的关注。与之类似,在图像智能生成方面,新近崛起许多新型模型的AI,如Dall-E2 Midjourney V5等, 通过算法可以产生的逼真影像,让许多摄影师感

    2023年04月15日
    浏览(35)
  • 【GPT4】微软 GPT-4 测试报告(3)GPT4 的编程能力

    欢迎关注【youcans的GPT学习笔记】原创作品,火热更新中 微软 GPT-4 测试报告(1)总体介绍 微软 GPT-4 测试报告(2)多模态与跨学科能力 微软 GPT-4 测试报告(3)GPT4 的编程能力 微软研究院最新发布的论文 「 人工智能的火花:GPT-4 的早期实验 」 ,公布了对 GPT-4 进行的全面测

    2023年04月10日
    浏览(39)
  • GPT系列论文解读:GPT-2

    GPT(Generative Pre-trained Transformer)是一系列基于Transformer架构的预训练语言模型 ,由OpenAI开发。以下是GPT系列的主要模型: GPT:GPT-1是于2018年发布的第一个版本,它使用了12个Transformer编码器层和1.5亿个参数。GPT-1的训练数据包括了互联网上的大量文本。 GPT-2:GPT-2于2019年发布

    2024年02月07日
    浏览(54)
  • gpt的优势和gpt缺点

    GPT,即Generative Pre-trained Transformer,是一种基于人工智能技术的自然语言处理模型。它采用了深度学习算法,可以通过大量的文本数据来学习自然语言的规律,并能够生成流畅、准确的语句。下面我们将探讨GPT技术的优势。 首先,GPT技术具有极高的语言生成能力。GPT技术是目

    2024年02月04日
    浏览(33)
  • GPT-4 验明真身的三个经典问题:快速区分 GPT-3.5 与 GPT-4

    现在已经有很多 ChatGPT 的套壳网站,以下分享验明 GPT-4 真身的三个经典问题,帮助你快速区分套壳网站背后到底用的是 GPT-3.5 还是 GPT-4。 测试问题 1:What is tomorrow in relation to yesterday’s today?(昨天的当天是明天的什么?) GPT-3.5 回复:Yesterday(昨天) GPT-4 回复:Past(前天

    2023年04月20日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包