文章目录
- 一、什么时候需要Fine-Tuning
- 二、用Hugging Face根据电影评论输出来对电影进行情感分类
- 1)安装依赖
- 2)操作流程
- 3)名字解释
- 4)代码导入库和加载模型、加载数据库、加载tokenlizer
- 5)其他相关公共变量赋值(随机种子、标签集评价、标签转token_Id)
- 6)处理数据集:转成模型接受的输入格式
- 7)定义数据规整器:训练时自动将数据拆分成Batch
- 8)定义训练超参:比如学习率
- 9)定义训练器
- 10)# 开始训练
- 11)加载训练后的模型进行推理(参考)
- 三、训练集和验证集的关系
- 1)查看训练成果
- 2)什么是checkpoint?
- 3)加载训练后的模型进行推理(输入文本,输出neg还是pos)
- 4)加载checkpoint并继续训练
- 四、激活函数和模型训练讲解
- 1)激活函数
- 2)模型训练
- 3)调整学习率到合适值
- 4)如果所有数据都求梯度,计算量太大了
- 5)求解器
一、什么时候需要Fine-Tuning
1、有私有模型部署的需求
2、开源模型原生的能力不满足业务需求(不微调可操作性就比较大)
二、用Hugging Face根据电影评论输出来对电影进行情感分类
- Hugging Face介绍
相当于面向NLP模型的Github,尤其基于transformer的开源模型非常全,封装了模型、训练集、训练器等,让模型下载、使用、训练都非常方便 - 需求:情感分类
1)安装依赖
#pip安装
pip install tarnsformers #安装最新版本
pip install transformers == 4.30 #安装指定版本#conda安装
conda install -c huggingface transformers #只4.0以后的版本
2)操作流程
①加载数据集
②数据预处理(数据按照特定格式拼接输入输出、Tokenizer把文本转Token IDs)
③数据规整器(数据批次Batch)
④加载模型,定义训练超参(针对每个批次训练)
3)名字解释
1)超参
①模型超参:网络层数、参数维度,Attention Head数,激活函数类型
②训练超参:学习率、批次大小,求解器类型、参数,学习率调节方式、参数,Dropout概率
4)代码导入库和加载模型、加载数据库、加载tokenlizer
- 导入库
import datasets
from datasets import load_dataset
from transformers import AutoTokenizer, AutoModel
from transformers import AutoModelForCausalLM
from transformers import TrainingArguments, Seq2SeqTrainingArguments
from transformers import Trainer, Seq2SeqTrainer
import transformers
from transformers import DataCollatorWithPadding
from transformers import TextGenerationPipeline
import torch
import numpy as np
import os, re
from tqdm import tqdm
import torch.nn as nn
- 加载数据集
通过 HuggingFace,可以指定数据集名称,运行时自动下载
# 数据集名称
DATASET_NAME = "rotten_tomatoes"# 加载数据集
raw_datasets = load_dataset(DATASET_NAME)# 训练集
raw_train_dataset = raw_datasets["train"]# 验证集
raw_valid_dataset = raw_datasets["validation"]
- 加载模型
通过 HuggingFace,可以指定模型名称,运行时自动下载
# 模型名称
MODEL_NAME = "gpt2"# 加载模型
model = AutoModelForCausalLM.from_pretrained(MODEL_NAME,trust_remote_code=True)
- 加载 Tokenizer
通过 HuggingFace,可以指定模型名称,运行时自动下载对应 Tokenizer
# 加载tokenizer
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME