如何把大模型调教成派大星?

目录

  • 主要内容
  • 模型图
  • 实验结果
      • 如何把大模型变成派大星?
      • chatglm3-6B
    • 数据集准备
      • 代码运行
      • 微调结果


  • 文章声明:非广告,仅个人体验:参考文献:https://www.aspiringcode.com/content?id=17197387451937&uid=291a2ae1546b48a7b50a0f3939d5aa7b

主要内容

  • 背景介绍:预训练语言模型(如BERT、RoBERTa等)在NLU任务上表现出色,但传统的微调方法需要更新模型的所有参数,这在训练时消耗大量内存,并且在推理时需要为每个任务保留模型参数的副本。

  • 提示调整(Prompt Tuning):与传统的微调相比,提示调整通过只调整连续的提示(prompts),而不是整个模型参数,来减少每个任务的存储和内存使用。但以往的研究表明,对于非大型预训练模型,提示调整的性能并不理想。

  • P-Tuning v2方法:文章提出了P-Tuning v2,这是一种深度提示调整方法,它通过在预训练模型的每一层添加连续提示来提高性能。这种方法在不同规模的模型和NLU任务上都表现出与微调相当的性能,同时只有0.1%-3%的参数需要调整。

  • 实验结果:P-Tuning v2在多个模型规模(从300M到10B参数)和各种NLU任务上进行了广泛的实验验证,包括简单的分类任务和难度较高的序列标记任务(如命名实体识别和抽取式问答)。实验结果显示,P-Tuning v2在性能上与微调相当,同时显著减少了训练时间和每个任务的存储成本。

  • 优化和实现细节:文章还讨论了一些关键的优化和实现细节,包括重参数化(Reparameterization)、提示长度(Prompt Length)、多任务学习(Multi-task Learning)以及分类头(Classification Head)的选择。

模型图

在这里插入图片描述
从图中可以对p-tuing v2有一个非常直观的理解了。

  • p-tuing就只是在模型的输入层添加几个虚拟的token,然后就微调这些参数,让模型适应新的任务,但是这样做效果存在一些问题。
  • p-tuing v2就是在模型的每一层都添加虚拟token,让可以训练的参数变多了,也能达到比较好的效果。
  • p-tuing v2的思路确实非常简单,但是简单有效,目前仍然是模型微调中比较流行的方法之一。

实验结果

在这里插入图片描述
可以看一下部分实验结果,FT表示全参数微调,PT表示Pp-tuing,PT-2表示p-tuing v2。

可以看到PT2虽然只有小小的改进,但是对比PT效果的提升是比较明显的。

如何把大模型变成派大星?

接下来将使用p-tuing v2的方法对chatglm3-6b进行微调,让其自身的自我认知发生改变。

chatglm3-6B

ChatGLM3-6B 是基于清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型开发的,是国内最流行的大模型之一。

我们可以看一下他的自我认知:

在这里插入图片描述

数据集准备

train.json的部分展示

[{"conversations": [{"role": "user", "content": "你好"}, {"role": "assistant", "content": "您好,我是派大星,一个由海绵宝宝打造的人工智能助手,请问有什么可以帮助您的吗?"}]},
{"conversations": [{"role": "user", "content": "你好呀,你叫什么名字呀"}, {"role": "assistant", "content": "您好!我是一个人工智能助手,你可以叫我派大星。很高兴见到您,请问有什么事情是我可以为您服务的呢?"}]}]

数据集格式如上,列表中的每个字典就是一段对话,也就是一条数据集。
role表明角色,user就是用户,也就是我们提的问题,assisant就是助手,也就是大模型自己
content就是各自说的话的内容。

dev.json格式也是同上。

核心代码

def load_tokenizer_and_model(model_dir: str,peft_config: Optional[PeftConfig] = None,
) -> tuple[PreTrainedTokenizer, nn.Module]:tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)if peft_config is not None:if peft_config.peft_type.name == "PREFIX_TUNING":config = AutoConfig.from_pretrained(model_dir, trust_remote_code=True)# 设置虚拟token数量config.pre_seq_len = peft_config.num_virtual_tokensconfig.use_cache = False# 模型每一层都添加虚拟tokenmodel = AutoModelForCausalLM.from_pretrained(model_dir,trust_remote_code=True,config=config,)print_model_size(model)return tokenizer, model

加载模型每一层都添加虚拟token,然后微调这些token即可。

代码运行

pip install -r requirements.txt --default-timeout=120 -i https://pypi.tuna.tsinghua.edu.cn/simplepython finetune_hf.py  data/  THUDM/chatglm3-6b  configs/ptuning_v2.yaml断点微调(从微调好3000步的基础上继续微调)
python finetune_hf.py  data/  THUDM/chatglm3-6b  configs/ptuning_v2.yaml 3000

微调结果

在这里插入图片描述
可以看到,chatglm3-6b改口了,知道自己是派大星了!

参考文献:https://www.aspiringcode.com/content?id=17197387451937&uid=291a2ae1546b48a7b50a0f3939d5aa7b


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国土安全部发布关键基础设施安全人工智能框架

美国国土安全部 (DHS) 发布建议,概述如何在关键基础设施中安全开发和部署人工智能 (AI)。 https://www.dhs.gov/news/2024/11/14/groundbreaking-framework-safe-and-secure-deployment-ai-critical-infrastructure 关键基础设施中人工智能的角色和职责框架 https:/…

QML TableView 实例演示 + 可能遇到的一些问题(Qt_6_5_3)

一、可能遇到的一些问题 Q1:如何禁用拖动? 在TableView下加一句代码即可: interactive: false 补充:这个属性并不专属于TableView,而是一个通用属性。很多Controls下的控件都可以使用,其主要作用就是控…

C基础上机题目51_55

51.字符数组x中存有任意一串字符;请编制函数,按给定的替代关系对数组x中的所有字符进行替代,仍存入数组x的对应的位置上,最后调用函数把结果x输出。 替代关系:f(p)p*11%256 (p是数组中某一个字符的ASCII值&#xff0c…

03-微服务搭建

1、搭建分布式基本环境 分布式组件 功能 SpringCloud Alibaba - Nacos 注册中心(服务发现/注册)、配置中心(动态配置管理) SpringCloud Alibaba - Sentinel 服务容错(限流、降级、熔断) SpringCloud …

Java八股(一)

目录 1.JVM、JRE、JDK之间的关系 2.static关键字作用(通俗版) 3.面向对象、面向过程 4.私有方法 5.Java代码执行与编译 6.IOC 1.JVM、JRE、JDK之间的关系 Java一次编写到处运行,可移植性好,保证这一点的就是iava虚拟机JVM …

Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64

yum install 报错: Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64 CentOS7的SCL源在2024年6月30日停止维护了。 当scl源里面默认使用了centos官方的地址,无法连接,需要替换为阿里云。 cd /etc/yum.repos.d/ 找到 CentOS-SCLo-scl.repo 和…

Vue前端开发-slot传参

slot 又称插槽,它是在子组件中为父组件提供的一个占位符,使用来表示,通过这个占位符,父组件可以向中填充任意的内容代码,这些代码将自动替换占位符的位置,从而轻松实现在父组件中控制子组件内容的需求。 作…

如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack

今天我们来聊聊如何在 Ubuntu 22.04 服务器上安装 ELK Stack,并集成 Nginx 作为 Web 服务器,同时使用 Let’s Encrypt Certbot 进行 SSL 认证。ELK Stack,包括 Elasticsearch、Logstash 和 Kibana,是一套强大的工具,用…

快速理解微服务中Sentinel怎么实现限流

Sentinel是通过动态管理限流规则,根据定义的规则对请求进行限流控制。 一.实现步骤 1.定义资源:在Sentinel中,资源可以是URL、方法等,用于标识需要进行限流的请求;(在Sentinel中,需要我们去告诉Sentinel哪些…

基于单片机的智慧小区人脸识别门禁系统

本设计基于单片机的智慧小区人脸识别门禁系统。由STM32F103C8T6单片机核心板、显示模块、摄像头模块、舵机模块、按键模块和电源模块组成。可以通过摄像头模块对进入人员人脸数据进行采集,识别成功后,舵机模块动作,模拟门禁打开,门…

llama-factory 系列教程 (七),Qwen2.5-7B-Instruct 模型微调与vllm部署详细流程实战

文章目录 介绍llama-factory 安装装包下载模型 微调模型数据集训练模型 微调后的模型推理 介绍 时隔已久的 llama-factory 系列教程更新了。本篇文章是第七篇,之前的六篇,大家酌情选看即可。 因为llama-factory进行了更新,我前面几篇文章的实…

利用Docker容器技术部署发布web应用程序

Docker是什么? docker 是一个开源的应用容器引擎,可以帮助开发者打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何…

SpringCloud框架学习(第五部分:SpringCloud Alibaba入门和 nacos)

目录 十二、SpringCloud Alibaba入门简介 1. 基本介绍 2.作用 3.版本选型 十三、 SpringCloud Alibaba Nacos服务注册和配置中心 1.简介 2.各种注册中心比较 3.下载安装 4.Nacos Discovery服务注册中心 (1) 基于 Nacos 的服务提供者 &#xf…

Linux—进程概念学习-03

目录 Linux—进程学习—31.进程优先级1.1Linux中的进程优先级1.2修改进程优先级—top 2.进程的其他概念3.进程切换4.环境变量4.0环境变量的理解4.1环境变量的基本概念4.2添加环境变量—export4.3Linux中环境变量的由来4.4常见环境变量4.5和环境变量相关的命令4.6通过系统调用获…

信创改造 - TongRDS 替换 Redis

记得开放 6379 端口哦 1)首先在服务器上安装好 TongRDS 2)替换 redis 的 host,post,passwd 3)TongRDS 兼容 jedis # 例如:更改原先 redis 中对应的 host,post,passwd 改成 TongRDS…

Python 爬虫入门教程:从零构建你的第一个网络爬虫

网络爬虫是一种自动化程序,用于从网站抓取数据。Python 凭借其丰富的库和简单的语法,是构建网络爬虫的理想语言。本文将带你从零开始学习 Python 爬虫的基本知识,并实现一个简单的爬虫项目。 1. 什么是网络爬虫? 网络爬虫&#x…

从0到1部署Tomcat和添加servlet(IDEA2024最新版详细教程)

本文不仅细化了每一个步骤,实现了从0到1部署Tomcat和添加servlet。还针对IDEA2024版和以前的版本在部署上的区别,做了详细介绍,尤其是add framework support部分。与此同时,针对控制台中文乱码问题,本文也给出了详细解…

书生大模型实战营第四期-入门岛-4. maas课程任务

书生大模型实战营第四期-入门岛-4. maas课程任务 任务一、模型下载 任务内容 使用Hugging Face平台、魔搭社区平台(可选)和魔乐社区平台(可选)下载文档中提到的模型(至少需要下载config.json文件、model.safetensor…

相亲交友小程序项目介绍

一、项目背景 在当今快节奏的社会生活中,人们忙于工作和事业,社交圈子相对狭窄,寻找合适的恋爱对象变得愈发困难。相亲交友作为一种传统而有效的社交方式,在现代社会依然有着巨大的需求。我们的相亲交友项目旨在为广大单身人士提…

初级数据结构——二叉树题库(c++)

这里写目录标题 前言[1.——965. 单值二叉树](https://leetcode.cn/problems/univalued-binary-tree/)[2.——222. 完全二叉树的节点个数](https://leetcode.cn/problems/count-complete-tree-nodes/)[3.——144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-…