服务类的网站怎么做,网站网页区别,做网站没有学历的人会吗,宜昌建站文章目录 昇思MindSpore应用实践1、基于MindSpore通过GPT实现情感分类GPT 模型#xff08;Generative Pre-Training#xff09;简介imdb影评数据集情感分类 2、Tokenizer导入预训练好的GPT3、基于预训练的GPT微调实现情感分类 Reference 昇思MindSpore应用实践
本系列文章主… 文章目录 昇思MindSpore应用实践1、基于MindSpore通过GPT实现情感分类GPT 模型Generative Pre-Training简介imdb影评数据集情感分类 2、Tokenizer导入预训练好的GPT3、基于预训练的GPT微调实现情感分类 Reference 昇思MindSpore应用实践
本系列文章主要用于记录昇思25天学习打卡营的学习心得。
1、基于MindSpore通过GPT实现情感分类
GPT 模型Generative Pre-Training简介
GPT-1模型是一种基于神经网络的自回归AR语言模型。该模型使用了“Transformer”的编解码架构一种新型的序列到序列Seq2Seq模型能够在处理长序列数据时避免传统的循环神经网络Recurrent Neural NetworkRNN中存在的梯度消失问题。
Transformer架构中的关键组件包括多头自注意力机制和残差连接等GPT使用了Transformer的解码器部分。 预训练技术GPT-1使用了一种称为“生成式预训练”Generative Pre-TrainingGPT的技术。 预训练分为两个阶段预训练和微调fine-tuning。
在预训练阶段GPT-1使用了大量的无标注文本数据集例如维基百科和网页文本等。通过最大化预训练数据集上的log-likelihood来训练模型参数。 在微调阶段GPT-1将预训练模型的参数用于特定的自然语言处理任务如文本分类和问答系统等。
多层模型GPT-1模型由多个堆叠的Transformer编码器组成每个编码器包含多个注意力头和前向神经网络。这使得模型可以从多个抽象层次对文本进行建模从而更好地捕捉文本的语义信息。
通过使用上述预训练任务研究团队成功地训练出了一个大规模的语言模型GPT。该模型在多项语言理解任务上取得了显著的成果包括阅读理解、情感分类和自然语言推理等任务。
imdb影评数据集情感分类
import osimport mindspore
from mindspore.dataset import text, GeneratorDataset, transforms
from mindspore import nnfrom mindnlp.dataset import load_datasetfrom mindnlp._legacy.engine import Trainer, Evaluator
from mindnlp._legacy.engine.callbacks import CheckpointCallback, BestModelCallback
from mindnlp._legacy.metrics import Accuracyimdb_ds load_dataset(imdb, split[train, test])
imdb_train imdb_ds[train]
imdb_test imdb_ds[test]imdb_train.get_dataset_size()import numpy as npdef process_dataset(dataset, tokenizer, max_seq_len512, batch_size4, shuffleFalse):is_ascend mindspore.get_context(device_target) Ascenddef tokenize(text):if is_ascend:tokenized tokenizer(text, paddingmax_length, truncationTrue, max_lengthmax_seq_len)else:tokenized tokenizer(text, truncationTrue, max_lengthmax_seq_len)return tokenized[input_ids], tokenized[attention_mask]if shuffle:dataset dataset.shuffle(batch_size)# map datasetdataset dataset.map(operations[tokenize], input_columnstext, output_columns[input_ids, attention_mask])dataset dataset.map(operationstransforms.TypeCast(mindspore.int32), input_columnslabel, output_columnslabels)# batch datasetif is_ascend:dataset dataset.batch(batch_size)else:dataset dataset.padded_batch(batch_size, pad_info{input_ids: (None, tokenizer.pad_token_id),attention_mask: (None, 0)})return dataset2、Tokenizer导入预训练好的GPT
from mindnlp.transformers import GPTTokenizer
# tokenizer
gpt_tokenizer GPTTokenizer.from_pretrained(openai-gpt)# add sepcial token: PAD
special_tokens_dict {bos_token: bos,eos_token: eos,pad_token: pad,
}
num_added_toks gpt_tokenizer.add_special_tokens(special_tokens_dict)# split train dataset into train and valid datasets训练集和验证集分割
imdb_train, imdb_val imdb_train.split([0.7, 0.3])dataset_train process_dataset(imdb_train, gpt_tokenizer, shuffleTrue)
dataset_val process_dataset(imdb_val, gpt_tokenizer)
dataset_test process_dataset(imdb_test, gpt_tokenizer)next(dataset_train.create_tuple_iterator())[Tensor(shape[4, 512], dtypeInt64, value[[11295, 246, 244 ... 40480, 40480, 40480],[ 616, 509, 246 ... 40480, 40480, 40480],[ 616, 4894, 498 ... 40480, 40480, 40480],[ 589, 500, 589 ... 40480, 40480, 40480]]),Tensor(shape[4, 512], dtypeInt64, value[[1, 1, 1 ... 0, 0, 0],[1, 1, 1 ... 0, 0, 0],[1, 1, 1 ... 0, 0, 0],[1, 1, 1 ... 0, 0, 0]]),Tensor(shape[4], dtypeInt32, value [0, 0, 0, 1])]3、基于预训练的GPT微调实现情感分类
from mindnlp.transformers import GPTForSequenceClassification
from mindspore.experimental.optim import Adam# set bert config and define parameters for training
model GPTForSequenceClassification.from_pretrained(openai-gpt, num_labels2)
model.config.pad_token_id gpt_tokenizer.pad_token_id
model.resize_token_embeddings(model.config.vocab_size 3)optimizer nn.Adam(model.trainable_params(), learning_rate2e-5)metric Accuracy()# define callbacks to save checkpoints
ckpoint_cb CheckpointCallback(save_pathcheckpoint, ckpt_namegpt_imdb_finetune, epochs1, keep_checkpoint_max2)
best_model_cb BestModelCallback(save_pathcheckpoint, ckpt_namegpt_imdb_finetune_best, auto_loadTrue)trainer Trainer(networkmodel, train_datasetdataset_train,eval_datasetdataset_train, metricsmetric,epochs1, optimizeroptimizer, callbacks[ckpoint_cb, best_model_cb],jitFalse)trainer.run(tgt_columnslabels)Reference
[1] 北方的郎-从GPT-1到GPT-4GPT系列模型详解 [2] 昇思大模型平台 [3] 昇思官方文档-基于MindSpore通过GPT实现情感分类