前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ChatGLM-6B使用、微调、训练

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

作者头像
Dlimeng
发布2024-01-13 10:15:56
1K0
发布2024-01-13 10:15:56
举报
文章被收录于专栏:开源心路开源心路

介绍

  • 由清华大学知识工程 (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表现优异
在不同数据集中,GLM表现优异

使用

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

代码语言:javascript
复制
# 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进行训练

代码语言:javascript
复制
!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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • GLM-130B
  • 功能
  • 目标
  • 使用
  • 定制
    • 使用P-Tuning v2进行训练
    • 轻量库
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档