ChatGLM-6B使用、微调、训练

news2024/12/25 2:23:39

介绍

  • 由清华大学知识工程 (KEG) 实验室和智谱AI公司与2023年共同训练的语言模型。
  • ChatGLM-6B 参考了 ChatGPT 的设计思路,在千亿基座模型 GLM-130B 中注入了代码预训练,通过有监督微调等技术实现与人类意图对齐(即让机器的回答符合人类的期望和价值观)。
  • 不同于训练ChatGPT需要1万+ A100显卡,ChatGLM-6B可以单机运行在消费级显卡上(13G可运行,建议16-24G显卡),未来使用空间大。

https://github.com/THUDM/ChatGLM-6B模型3月14日开源后,Github Star增速惊人,连续12天位列全球大模型下载榜第一名。
在这里插入图片描述
基于GLM (General Language Model) 架构,有62亿参数,无量化下占用显存13G,INT量化下支持单张消费级显卡(如2080Ti)上进行推理INT8量化是一种将深度学习模型中的权重和激活值从16位浮点数(FP16)减少到8位整数 INT8的技术,从而降低内存占用和计算复杂度,减少计算资源,提升推理速度

在这里插入图片描述

  • ChatGLM已具备人类偏好的问答对话能力,但在一些指令上,回答存在不理解指令,或缺乏领域概念理解,生成有害内容等问题。

  • ChatGLM已具备人类偏好的问答对话能力,但在一些指令上,回答存在不理解指令,或缺乏领域概念理解,生成有害内容等问题。

GLM-130B

在这里插入图片描述

2022年8月,智谱AI基于GLM框架,推出1300亿参数的中英双语稠密模型GLM-130B,综合能力与GPT3相当

内存节省75%,可在单台3090 (*4)或单台2080(*8)进行无损推理

高速推理,比Pytorch提升7-8倍速度

跨平台,支持不同计算平台的适配和应用

https://github.com/THUDM/GLM-130B

功能

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
更多参考:https://github.com/THUDM/ChatGLM-6B

目标

GLM

GLM: 通用语言模型预训练 https://aclanthology.org/2022.acl-long.26.pdf

GLM的出发点是将3种主流的预训练模型进行统一:

  • GPT,注意力是单向的,无法利用到下文信息。
  • BERT,注意力是双向的,在NLU上表现很好,但不适合生成任务。
  • T5,编码器中注意力是双向的,解码器中注意力是单向
    的。可同时用于NLU和生成任务,但需要更多参数量

https://github.com/THUDM/GLM
在不同数据集中,GLM表现优异

使用

建议使用Colab,并启用GPU A100,demo1.py
源码:https://github.com/dlimeng/awesome-ai-generated/blob/main/ChatGLM%E4%BD%BF%E7%94%A8/demo1.ipynb

# Step1, 安装依赖包
!pip install transformers
!pip install sentencepiece
!pip install cpm_kernels
!pip install gradio
!pip install mdtex2html

# Step2,使用预训练模型
from transformers import AutoTokenizer, AutoModel
tokenizer =AutoTokenizer.from_pretrained("THUDM/chatglm-6b",trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm-6b",trust_remote_code=True).half().cuda()

# Step3,创建对话chat
response, history = model.chat(tokenizer,"你好", history=[])
print(response)
response, history = model.chat(tokenizer,"晚上睡不着应该怎么办",history=history)
print(response)

在这里插入图片描述

定制

源码:https://github.com/dlimeng/awesome-ai-generated/blob/main/ChatGLM%E4%BD%BF%E7%94%A8/ptuning1.ipynb
参考:https://github.com/THUDM/ChatGLM-6B/blob/main/ptuning/README.md
P-Tuning

在这里插入图片描述

  • 用自己的数据集对ChatGLM模型进行微调
  • P-Tuning V2已将需要微调的参数减少到原来的0.1%- 3%,大大加快了训练速度,同时最低GPU显存要求
    为7G(建议16-24G)
  • TIPS:AdvertiseGen数据集,训练3000steps,大约需
    要训练2小时,需要保证你的GPU有足够多的计算单元

使用P-Tuning v2进行训练

!bash train.sh

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • Thinking:将 train.sh 中的 THUDM/chatglm-6b 改为本地的模型路径 (参考train2.sh)
  • Thinking:如何使用训练好的ChatGLM模型进行推理使用evaluate.sh,这里需要修改model_name_or_path 和 ptuning_checkpoint
  • TIPS:在 P-tuning v2 训练时模型只保存PrefixEncoder参数,所以在推理时需要同时加载原 ChatGLM-6B 模型以及 PrefixEncoder 的权重
    在这里插入图片描述

在这里插入图片描述

轻量库

Peft库:https://github.com/huggingface/peft很方便地实现将普通的HF模型变成用于支持轻量级fine-tune的模型,目前支持4种策略:
1)LoRA:大模型的低秩适配器
2)Prefix Tuning: Optimizing Continuous Prompts for Generation
3)P-Tuning: GPT Understands, Too
4)Prompt Tuning: The Power of Scale forParameter-Efficient Prompt Tuning

在这里插入图片描述

“道生一,一生二,二生三,三生万物。”融会贯通,才能突破局限,开创未来。

我是李孟,独立开源软件开发者,SolidUI作者,对于新技术非常感兴趣,专注AI和数据领域,如果对我的文章内容感兴趣,请帮忙关注点赞收藏,谢谢!

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

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

相关文章

Java LeetCode刷题 单调栈

单调栈 单调栈概念 每日温度 单调栈 概念 单调栈(Monotonic Stack)是一个特殊的数据结构,它是一种栈,但具有单调性的特性。单调栈有两种类型:单调递增栈和单调递减栈。 在单调递增栈中,栈内的元素保持递…

客户管理系统平台是什么?客户关系管理系统的核心主要解决哪些问题?

客户管理系统平台是什么?客户关系管理系统的核心主要解决哪些问题? 阅读本文你将了解:一、客户管理系统平台的概念;二、客户关系管理系统的核心。 一、客户管理系统平台的概念 客户管理系统是专门为做好客户信息收集、管理、分…

chromedriver 114以后版本下载地址

谷歌浏览器版本经常会升级,chromedriver 也得下载匹配的版本 chromedriver 114以前版本下载地址https://registry.npmmirror.com/binary.html?pathchromedriver/ 找到匹配浏览器版本 查看自己浏览器版本号v120.0 v120.0版本chromedriver下载地址https://google…

图灵机:计算机科学的奠基之作

图灵机的概念由英国数学家阿兰图灵在1936年提出,这个时期正是计算机科学的黎明时分。那个时候,人们还在使用机械计算器进行计算,而且这些计算器的功能都非常有限。 图灵提出这个概念的初衷,是为了解决所谓的“判定问题”&#xf…

gazebo模型库目录(国内源)

这个是比较普遍的,一般用途: GitCode - 开发者的代码家园https://gitcode.com/geniusChinaHN/osrf.gazebo_models/tree/master/ambulance这个主要是车辆: car_demo: osrf汽车模型库https://gitee.com/geniuschinahn/car_demo还有这个是以前…

(26)Linux 进程通信之共享内存(共享储存空间)

共享内存是System V版本的最后一个进程间通信方式。共享内存,顾名思义就是允许两个不相关的进程访问同一个逻辑内存,共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一…

多无人机编队避障(人工势场法)

matlab2020正常运行,预设编队类型,目标位置,障碍物 多无人机编队避障(人工势场法)资源-CSDN文库

蓝桥杯单片机组备赛——蜂鸣器和继电器的基本控制

文章目录 一、蜂鸣器和继电器电路介绍二、题目与答案2.1 题目2.2 答案2.3 重点函数解析 一、蜂鸣器和继电器电路介绍 可以发现两个电路一端都接着VCC,所以我们只要给另一端接上低电平就可以让蜂鸣器和继电器进行工作。与操作LED类似,只不过换了一个74HC5…

SpringBoot 引入分页插件 PageHelper

官网 https://pagehelper.github.io/docs/howtouse/ 引入步骤 第1步&#xff1a;引入依赖 <!--分页插件--> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.2</ver…

适用于 Windows 的 12 个最佳免费磁盘分区管理器软件

分区是与其他部分分开的硬盘驱动器部分。它使您能够将硬盘划分为不同的逻辑部分。分区软件是一种工具&#xff0c;可帮助您执行基本选项&#xff0c;例如创建、调整大小和删除物理磁盘的分区。许多此类程序允许您更改磁盘片的标签以便于识别数据。 适用于 Windows 的 12 个最佳…

rime中州韵小狼毫 生字注音滤镜 汉字注音滤镜

在中文环境下&#xff0c;多音字是比较常见的现象。对于一些不常见的生僻字&#xff0c;或者一些用于地名&#xff0c;人名中的常见字的冷门读音&#xff0c;如果不能正确的阅读&#xff0c;例如把 荥阳 读成了 miāo yng&#xff0c;则会怡笑大方。 今天我们在rime中州韵小狼…

python 文件夹中 __init__.py

common文件夹下有&#xff1a;project&#xff0c;__init__.py&#xff0c;common1.py project文件夹内有&#xff1a;__init__.py&#xff0c;p.py common文件夹里&#xff0c;project文件夹 各放了一个 __init__.py 这样就可以在p.py内用from导入common1.py内的代码 # p…

第11章 GUI Page495~496 步骤三十一:另存为别的文件,为TrySaveFile()入参设置一些位操作

工程二 头文件中为TrySaveFile()入参设置一些位操作&#xff0c;修改一下TrySaveFile()的入参类型 修改TrySaveFile()的实现&#xff1a; 修改“保存”菜单项挂接事件响应函数: 修改“另存为”菜单项挂接事件响应函数

MFC结合GDI+

MFC结合GDI 创建一个空的MFC界面&#xff0c;在确定按钮函数里进行画图&#xff1a; 1、包含头文件与库 在stdafx.h中加入以下三行代码&#xff1a; #include "gdiplus.h" using namespace Gdiplus; #pragma comment(lib, "gdiplus.lib")2、安装GDI 在…

Linux中PyTorch的安装教程

在安装PyTorch之前&#xff0c;我们需要确保已经安装了Python和pip。可以使用以下命令检查是否已经安装&#xff1a; python --version pip --version如果没有安装&#xff0c;可以使用以下命令安装&#xff1a; sudo apt-get update sudo apt-get install python3 sudo apt-…

C++核心编程——类和对象(二)

本专栏记录C学习过程包括C基础以及数据结构和算法&#xff0c;其中第一部分计划时间一个月&#xff0c;主要跟着黑马视频教程&#xff0c;学习路线如下&#xff0c;不定时更新&#xff0c;欢迎关注。 当前章节处于&#xff1a; ---------第1阶段-C基础入门 ---------第2阶段实战…

ffmpeg命令增加headers参数解决http请求ts返回404 not found问题的解决方法:-headers、-an

最近项目上遇到一个问题&#xff0c;用ffmpeg请求录制一个m3u8的实时流成为mp4文件的时候&#xff0c;命令返回404错误&#xff1a; 但是有一个很奇怪的现象&#xff0c;就是ffmpeg请求不到的&#xff0c;VLC却能正常播放&#xff0c;对比一下抓包&#xff1a; 那么既然就差别…

leetcode17 电话号码的字母组合

方法1 if-else方法 if-else方法的思路及其简单粗暴&#xff0c;如下图所示&#xff0c;以数字234为例&#xff0c;数字2所对应的字母是abc&#xff0c;数字3所对应的是def&#xff0c;数字4所对应的是ghi&#xff0c;最后所产生的结果就类似于我们中学所学过的树状图一样&…

VUE指令(一)

vue会根据不同的指令&#xff0c;针对不同的标签实现不同的功能。指令是带有 v- 前缀的特殊标签属性。指令的职责是&#xff0c;当表达式的值改变时&#xff0c;将其产生的连带影响&#xff0c;响应式地作用于 DOM。 1、v-text&#xff1a;设置元素的文本内容&#xff0c;不会解…

LabVIEW在动态力传感器校准技术的创新应用

简介 动态力传感器校准装置集成了冲击法原理和自动化控制&#xff0c;实现精准、高效的传感器校验。LabVIEW的图形化界面提供简便操作和实时数据分析&#xff0c;显著提高了校准过程的准确度和效率。 01 系统设计和功能 动态力传感器在工业生产中发挥着重要作用&#xff0c;其…