手把手带你实现ChatGLM2-6B的P-Tuning微调

这篇具有很好参考价值的文章主要介绍了手把手带你实现ChatGLM2-6B的P-Tuning微调。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考文献:chatglm2ptuning

注意问题1:AttributeError: ‘Seq2SeqTrainer’ object has no attribute 'is_deepspeed_enabl
torch.distributed.elastic.multiprocessing.errors.ChildFailedError:
可能是版本太高,可以参考chatglm2的环境
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型

1. ChatGLM2-6B的P-Tuning微调

ChatGLM2-6B:https://github.com/THUDM/ChatGLM2-6B
模型地址:https://huggingface.co/THUDM/chatglm2-6b

详细步骤同:ChatGLM-6B的P-Tuning微调详细步骤及结果验证

注:ChatGLM2-6B官网给的环境P-Tuning微调报错 (python3.8.10/3.10.6 + torch 2.0.1 + transformers 4.30.2),

AttributeError: ‘Seq2SeqTrainer’ object has no attribute 'is_deepspeed_enabl
torch.distributed.elastic.multiprocessing.errors.ChildFailedError:

手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型

应该是transformers版本太高了,用ChatGLM-6B环境(ChatGLM-6B部署教程)即可,即

Python 3.8.10
CUDA Version: 12.0
torch                2.0.1
transformers         4.27.1

   
   
  • 1
  • 2
  • 3
  • 4

2. 模型微调情况

2.1 数据集&调参

训练集:412条
验证集:83条
max_source_length:3500
max_target_length:180

问题长度:
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型

2.2 模型训练

A100 80G 2块,占用率16%,3000轮训练时间21h
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型文章来源地址https://www.toymoban.com/news/detail-582777.html

2.3 模型预测
from transformers import AutoConfig, AutoModel, AutoTokenizer
import torch
import os

tokenizer = AutoTokenizer.from_pretrained(“…/THUDM-model”, trust_remote_code=True)
CHECKPOINT_PATH = ‘./output/adgen-chatglm2-6b-pt-64-2e-2/checkpoint-3000’
PRE_SEQ_LEN = 64

config = AutoConfig.from_pretrained(“…/THUDM-model”, trust_remote_code=True, pre_seq_len=PRE_SEQ_LEN)
model = AutoModel.from_pretrained(“…/THUDM-model”, config=config, trust_remote_code=True).half().cuda()
prefix_state_dict = torch.load(os.path.join(CHECKPOINT_PATH, “pytorch_model.bin”))
new_prefix_state_dict = { }
for k, v in prefix_state_dict.items():
if k.startswith(“transformer.prefix_encoder.”):
new_prefix_state_dict[k[len(“transformer.prefix_encoder.”):]] = v
model.transformer.prefix_encoder.load_state_dict(new_prefix_state_dict)

#model = AutoModel.from_pretrained(CHECKPOINT_PATH, trust_remote_code=True)
model = model.eval()

response, history = model.chat(tokenizer, “你好”, history=[]

参照p-tuning readme,需注意:
(1) 注意可能需要将 pre_seq_len 改成训练时的实际值。
(2) 如果是从本地加载模型的话,需要将 THUDM/chatglm2-6b 改成本地的模型路径(注意不是checkpoint路径); CHECKPOINT_PATH路径需要修改。
(3) 报错”RuntimeError: “addmm_impl_cpu_” not implemented for ‘Half’“
需要在model = AutoModel.from_pretrained(“…/THUDM-model”, config=config, trust_remote_code=True) 后加 .half().cuda()

495条数据,无history,单轮,模型加载+预测时间3min
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型

1. ChatGLM2-6B的P-Tuning微调

ChatGLM2-6B:https://github.com/THUDM/ChatGLM2-6B
模型地址:https://huggingface.co/THUDM/chatglm2-6b

详细步骤同:ChatGLM-6B的P-Tuning微调详细步骤及结果验证

注:ChatGLM2-6B官网给的环境P-Tuning微调报错 (python3.8.10/3.10.6 + torch 2.0.1 + transformers 4.30.2),

AttributeError: ‘Seq2SeqTrainer’ object has no attribute 'is_deepspeed_enabl
torch.distributed.elastic.multiprocessing.errors.ChildFailedError:

手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型

应该是transformers版本太高了,用ChatGLM-6B环境(ChatGLM-6B部署教程)即可,即

Python 3.8.10
CUDA Version: 12.0
torch                2.0.1
transformers         4.27.1

   
   
  • 1
  • 2
  • 3
  • 4

2. 模型微调情况

2.1 数据集&调参

训练集:412条
验证集:83条
max_source_length:3500
max_target_length:180

问题长度:
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型

2.2 模型训练

A100 80G 2块,占用率16%,3000轮训练时间21h
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型
手把手带你实现ChatGLM2-6B的P-Tuning微调,深度学习,大模型

2.3 模型预测
from transformers import AutoConfig, AutoModel, AutoTokenizer
import torch
import os

到了这里,关于手把手带你实现ChatGLM2-6B的P-Tuning微调的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 实战项目:手把手带你实现一个高并发内存池

    1.这个项目做的是什么? 当前项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc、free)。 2.项目目标 模拟实现出一个自己的高

    2023年04月26日
    浏览(41)
  • 【数据结构】—堆详解(手把手带你用C语言实现)

                                            食用指南:本文在有C基础的情况下食用更佳                                          🔥 这就不得不推荐此专栏了: C语言                                        ♈️ 今日夜电波: 水星—今泉愛夏              

    2024年02月07日
    浏览(34)
  • 【reverse】手把手带你基于dll实现多次SMC

    SMC,即self modifying code,自修改代码,逆向入门SMC可以看一下我的题解。我打算实现一个类似于【网鼎杯2020青龙组】jocker的SMC方案。这个方案不需要用到汇编,因此门槛极低( 连小小前端都能学会 )。为什么要基于dll呢?因为代码段加密功能是通过外部python脚本完成的,将自

    2024年02月02日
    浏览(40)
  • 【是C++,不是C艹】 手把手带你实现Date类(附源码)

    💞💞 欢迎来到 Claffic 的博客 💞💞  👉  专栏: 《是C++,不是C艹》👈 前言: 恍惚间,已经两个月没更新了 (;´д`)ゞ 我忏悔...  但C++的学习不能停止!这期带大家实践一波,手把手教大家实现一个Date类,以感受C++类的魅力 注: 你最好是学完了C语言,并学过一些初

    2024年02月10日
    浏览(31)
  • 手把手带你实现Dubbo集成Nacos作为注册中心(超详细+全代码)

    Nacos简介 什么是Nacos? Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服

    2024年02月09日
    浏览(39)
  • 【数据结构】—手把手带你用C语言实现栈和队列(超详细!)

                                       食用指南:本文在有C基础的情况下食用更佳                                     🔥 这就不得不推荐此专栏了:C语言                                   ♈️ 今日夜电波:Tell me —milet                    

    2024年02月14日
    浏览(42)
  • 从0到1,手把手带你开发截图工具ScreenCap------001实现基本的截图功能

    从0到1,手把手带你开发windows端的截屏软件ScreenCap 当前版本:ScreenCap---001 支持全屏截图 支持鼠标拖动截图区域 支持拖拽截图 支持保存全屏截图 支持另存截图到其他位置 注:博主所有资源永久免费,若有帮助,请点赞转发是对我莫大的帮助 注:博主本人学习过程的分享,

    2024年02月05日
    浏览(37)
  • 手把手教你搭建自己本地的ChatGLM

    如果能够本地自己搭建一个ChatGPT的话,训练一个属于自己知识库体系的人工智能AI对话系统,那么能够高效的处理应对所属领域的专业知识,甚至加入职业思维的意识,训练出能够结合行业领域知识高效产出的AI。这必定是十分高效的生产力工具,且本地部署能够保护个人数

    2024年02月03日
    浏览(52)
  • 从0到1,手把手带你开发截图工具ScreenCap------002实现设置默认保存的图片位置

    在ScreenCap实现截图功能后增加设置图片默认保存位置的功能 实现选择文件夹作为截图的默认保存位置 注:博主所有资源永久免费,若有帮助,请点赞转发是对我莫大的帮助 注:博主本人学习过程的分享,引用他人的文章皆会标注原作者 注:本人文章非盈利性质,若有侵权请

    2024年02月05日
    浏览(65)
  • 从0到1,手把手带你开发截图工具ScreenCap------003实现最小化程序到托盘运行

    为了方便截图干净,实现最小化程序到托盘运行,简洁,勿扰 实现最小化程序到托盘运行 实现托盘菜单功能 实现回显主窗体 实现托盘开始截屏 实现气泡信息提示 实现托盘程序提示 实现托盘退出程序 封装完好,可复用 注:博主所有资源永久免费,若有帮助,请点赞转发是

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包