大模型学习笔记九:模型微调

文章目录

    • 一、什么时候需要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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1424724.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

乡村振兴与农村基础设施建设:加大投入力度,提升建设水平,完善农村基础设施网络,打造宜居宜业的美丽乡村

一、引言 乡村振兴战略是我国在新时代推进农业农村现代化的重大战略部署,其核心目标是实现乡村的全面振兴,促进农业强、农村美、农民富。农村基础设施建设作为乡村振兴的基石,其建设水平直接关系到乡村经济的持续健康发展、乡村环境的改善以…

每天Get一个小技巧:用DolphinScheduler实现隔几天调度

转载自tuoluzhe8521 这篇小短文将教会你如何使用Apache DolphinScheduler实现隔几天调度,有此需求的小伙伴学起来! 1 场景分析 DolphinScheduler定时器模块-定时调度时每3秒|每3分钟|每3天这种定时,不能够跨分钟,跨小时&#x…

信创基础硬件之整机

整机是成套或整体单机、单台形式的机电产品,由硬件系统(hardware system)和软件系统(software system)两部分组成的,包括主板、内存条、硬盘、CPU、光驱、机箱、显示器、键盘、鼠标、音响等部件。 服务器作为在网络环境下为客户机提供各种服务、特殊专用…

【JavaEE】Servlet

文章目录 一、Servlet 是什么二、如何创建Servlet程序1、创建项目2、引入依赖3、创建目录4、编写代码5、打包程序6、部署程序7、验证程序 一、Servlet 是什么 二、如何创建Servlet程序 1、创建项目 2、引入依赖 Maven 项目创建完后,会自动生成一个 pom.xml 的文…

AI 写 SQL 真的靠谱吗?腾讯游戏在 AI+ 湖仓一体的实践

作者:腾讯游戏数据技术负责人 刘岩 导读 腾讯游戏是全球领先的游戏开发和运营商,其数据团队拥有十余年、700 款大型游戏的数据工作沉淀。复杂的业务环境下,腾讯游戏数据团队每年需要处理超过 3 万个数据提取需求,SQL 编写需要耗费…

C++笔试强训day23

目录 1.打怪 2.字符串分类 3.城市群数量 1.打怪 链接 模拟题目&#xff0c;按题意进行模拟就行。 #include <iostream> using namespace std; // 简单模拟 int solve() {int h, a, H, A;cin >> h >> a >> H >> A;if (a > H)return -1;int…

Web浏览器的兼容性测试需要考虑哪些测试点?

测试web网站兼容性时&#xff0c;可以使用各种测试用例来确保网站在不同浏览器中的良好兼容性。以下是一些常见的兼容性测试用例示例&#xff1a; 1. 页面加载测试&#xff1a; - 确保网站在不同浏览器中正常加载&#xff0c;没有加载错误。 - 检查页面加载时间&#xff0c;…

第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组 AB路线

//bfs 1000100010不会超时 #include<bits/stdc.h> using namespace std; #define int long long const int n1e311; int a,b,c,h[n][n][12],k[4][2]{0,1,0,-1,1,0,-1,0}; char t[n][n]; struct s {int x,y,z,w; }; signed main() {ios::sync_with_stdio(false);cin.t…

Day29

回溯算法part03 LC39组合总和(未掌握) 未掌握分析&#xff1a;被数组中的元素可以被重复选取误导&#xff0c;同时没有想到暴力解法来理解回溯 暴力解法肯定是for循环遍历candidates中的每个元素&#xff0c;下一层子循环不像之前的组合题目那样从i1开始&#xff0c;该题目元…

PCIE协议-2-事务层规范-Transaction Ordering

2.4.1 事务排序规则 表2-40定义了PCI Express事务的排序要求。此表中定义的规则适用于PCI Express上的所有事务类型&#xff0c;包括内存、I/O、配置和消息事务。在单个流量类别&#xff08;Traffic Class&#xff0c;TC&#xff09;内&#xff0c;这些排序规则适用。不同TC标…

双向RNN和双向LSTM

双向RNN和双向LSTM 一、双向循环神经网络BiRNN 1、为什么要用BiRNN 双向RNN&#xff0c;即可以从过去的时间点获取记忆&#xff0c;又可以从未来的时间点获取信息,也就是说具有以下两个特点&#xff1a; 捕捉前后文信息&#xff1a;传统的单向 RNN 只能利用先前的上下文信息…

张驰咨询:六西格玛黑带项目的成功关键

六西格玛黑带项目通常被认为是比较难的&#xff0c;因为它们涉及的问题通常比较复杂&#xff0c;可能需要较长时间的分析、实验和协调。然而&#xff0c;通过遵循一定的步骤和方法&#xff0c;可以有效地实施六西格玛黑带项目。 以下是实施六西格玛黑带项目的基本步骤&#x…

搭建Prometheus+grafana监控系统

1. 项目目标 &#xff08;1&#xff09;熟练部署安装node_exporter &#xff08;2&#xff09;熟练部署安装prometheus &#xff08;3&#xff09;熟练部署安装grafana 2. 项目准备 2.1. 规划节点 主机名 主机IP 节点规划 prometheus-server 10.0.1.10 server prome…

【MySQL数据库开发设计规范】之SQL使用规范

欢迎点开这篇文章&#xff0c;自我介绍一下哈&#xff0c;本人姑苏老陈 &#xff0c;是一名JAVA开发老兵。 本文收录于 《MySQL数据库开发设计规范》专栏中&#xff0c;该专栏主要分享一些关于MySQL数据库开发设计相关的技术规范文章&#xff0c;定期更新&#xff0c;欢迎关注&…

3-3 基于RYU的流量风暴事件原理与响应策略

在传统网络中&#xff0c;存在着一定的广播流量&#xff0c;占据了一部分的网络带宽。同时&#xff0c;在有环的拓扑中&#xff0c;如果不运行某些协议&#xff0c;广播数据还会引起网络风暴&#xff0c;使网络瘫痪。 如有以下的一个网络拓扑结构&#xff08;3_2_topoplus.py) …

eMMC和SD模式速率介绍

概述 在实际项目开发中我们常见的问题是有人会问&#xff0c;“当前项目eMMC、SD所使用模式是什么&#xff1f; 速率是多少&#xff1f;”。这些和eMMC、SD的协议中要求的&#xff0c;要符合协议。接下来整理几张图来介绍。 eMMC 模式介绍 一般情况下我们项目中都是会支持到H…

踩坑小结:Linux安装python环境 、安装OpenSSL

一、查看python版本 查看发现&#xff0c;linux上自带了python&#xff0c;不过是2.x版本的。 二、下载python3 2.1 下载 www.python.org/downloads/s… 可在当前目录下找到相对应的版本或者最新版本下载 也可以直接下载 Python 3.10.4 下载完在服务器上选择一个目录存放…

2024 Google I/O大会:全方位解读最新AI技术和产品

引言&#xff1a; 2024年的Google I/O大会如期举行&#xff0c;作为技术圈的年度盛事之一&#xff0c;谷歌展示了其在人工智能领域的最新进展。本次大会尤其引人注目&#xff0c;因为它紧随着OpenAI昨天发布GPT-4o的脚步。让我们详细解析Google此次公布的各项新技术和产品&…

matlab使用教程(71)—控制坐标区布局

1.与位置相关的属性和函数 有几个属性和函数可用于获取和设置坐标区的大小与位置。下表摘要显示了这些属性和函数。 函数或属性描述 OuterPosition 属性 使用此属性可以查询或更改坐标区的外边界&#xff0c;包括标题、标签和边距。要更改外边界&#xff0c;请将此属性指定为…

制造企业数据管理:从数据到价值的转化

在数字化浪潮席卷全球的今天&#xff0c;制造企业面临着前所未有的机遇与挑战。如何从海量的数据中提取有价值的信息&#xff0c;将其转化为企业的核心竞争力&#xff0c;成为了每一个制造企业必须面对的问题。而数据管理&#xff0c;正是实现这一转化的关键所在。制造企业数据…