训练自己的ChatGPT(ChatGLM微调 )

news2024/10/6 6:04:06

目录

准备

操作

上传数据数据

训练进度

推理

验证

异常处理

总结

参考资料


ChatGLM微调 ptuning

准备

接上文https://blog.csdn.net/dingsai88/article/details/130639365

部署好ChatGLM以后,对它进行微调

操作

如果已经使用过 API 或者web模式的应该已经下载过,不用再下载

​
pwd

/mnt/workspace/

git clone https://github.com/THUDM/ChatGLM-6B

​

上传数据数据

pwd

/mnt/workspace/ChatGLM-6B/ptuning

方法1自己的数据:

mkdir AdvertiseGen

cd AdvertiseGen

上传 dev.json 和 train.json  到

/mnt/workspace/dev.json /mnt/workspace/ChatGLM-6B/ptuning/AdvertiseGen/

数据内容都是:数据量太多训练太慢

{"content": "你是谁", "summary": "你好,我是赛赛的朋友晨晨,江湖人称细哥。"}

{"content": "晨晨", "summary": "帅的一批"}

方法2:官网提供的方法:

准备训练的数据:下载地址会变

从 Google Drive 或者 Tsinghua Cloud 下载处理好的 ADGEN 数据集,将解压后的 AdvertiseGen 目录放到本目录下。

https://github.com/THUDM/ChatGLM-6B/blob/main/ptuning/README.md

https://cloud.tsinghua.edu.cn/f/b3f119a008264b1cabd1/?dl=1

 

https://cloud.tsinghua.edu.cn/f/b3f119a008264b1cabd1/?dl=1







curl   -O https://cloud.tsinghua.edu.cn/seafhttp/files/xxxxxx/AdvertiseGen.tar.gz

tar -zxvf AdvertiseGen.tar.gz

训练
P-Tuning v2

pwd

/mnt/workspace/ChatGLM-6B/ptuning


安装依赖

pip install fastapi uvicorn




vi train.sh

删除(走128默认值)   --quantization_bit 4




开始训练

bash train.sh

训练进度

查看GPU使用

watch -n 0.5 nvidia-smi

 

查看进度

 

推理

pwd

/mnt/workspace/ChatGLM-6B/ptuning

vi evaluate.sh

删除(走128默认值)   --quantization_bit 4



bash evaluate.sh

验证

pwd

/mnt/workspace/ChatGLM-6B/ptuning

路径:

/mnt/workspace/ChatGLM-6B/ptuning/output/adgen-chatglm-6b-pt-128-2e-2/checkpoint-3000

Python


import os
import torch
from transformers import AutoConfig, AutoModel, AutoTokenizer
CHECKPOINT_PATH = "./output/adgen-chatglm-6b-pt-128-2e-2/checkpoint-3000"
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)

config = AutoConfig.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True, pre_seq_len=128)
model = AutoModel.from_pretrained("THUDM/chatglm-6b", config=config, trust_remote_code=True).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)

print(f"Quantized to 128 bit")
model = model.quantize(128)
model = model.half().cuda()
model.transformer.prefix_encoder.float()
model = model.eval()
response, history = model.chat(tokenizer, "你是谁", history=[])
print("ChatGLM-6B:\n",response)

问题:你是谁

标准答案:

我是一个名为 ChatGLM 的人工智能助手,是清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练的语言模型。我的任务是针对用户的问题和要求提供适当的答复和支持。

 

微调后的答案

你好,我是赛赛的朋友晨晨,江湖人称细哥。

 

异常处理

异常1:

RuntimeError: CUDA Error: no kernel image is available for execution on the device

RuntimeError: CUDA Error: no kernel image is available for execution on the device

>>> model = model.quantize()

╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮

│ in <module>:1                                                                                    │

╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

TypeError: quantize() missing 1 required positional argument: 'bits'




model = model.quantize(4)

改成

model = model.quantize(128)



异常2:

root@eais-bjtryzm9xivr28qvprxr-7c8cfdfd44-2j4rx:/mnt/workspace/ChatGLM-6B/ptuning# bash train.sh

Traceback (most recent call last):

  File "main.py", line 29, in <module>

    from rouge_chinese import Rouge

ModuleNotFoundError: No module named 'rouge_chinese'

 安装依赖解决 : pip install rouge_chinese nltk jieba datasets

异常3:

 RuntimeError: CUDA Error: no kernel image is available for execution on the device

“调整 quantization_bit 来被原始模型的量化等级,不加此选项则为 FP16 精度加载”

bash train.sh

cp   train.sh train_bak.sh



vi train.sh

删除   --quantization_bit 4

异常4:

pip install cpm_kernels

ImportError: This modeling file requires the following packages that were not found in your environment: cpm_kernels. Run `pip install cpm_kernels`

pip install cpm_kernels

总结

  1. 官网写的都很清楚了。
  2. GPU特别影响计算时间,算力不够的小伙伴先训练几条看看流程是否通畅。

参考资料

ChatGLM-6B/README.md at main · THUDM/ChatGLM-6B · GitHub

https://blog.csdn.net/dingsai88/article/details/130639365

https://betheme.net/dashuju/127318.html

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

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

相关文章

Linux安装elasticsearch、ik分词器、kibana

这里写目录标题 前言下载IK分词器下载Elasticsearch下载Kibana下载JDK安装JDK安装Elasticsearch与IK分词器安装Kibana错误调试参考链接扩展部分 前言 一个PHP程序员接入Elasticsearch并不是公司项目的需求&#xff0c;而是自己平时积累了很多项目信息、代码片段、解决问题的网…

设计模式之【模板方法模式】,模板方法和函数式回调,哪个才是趋势?

文章目录 一、什么是模板方法模式1、主要角色2、应用场景3、优缺点4、注意事项及细节 二、实例1、炒菜案例&#xff08;1&#xff09;模板方法模式的钩子方法 2、重构JDBC案例 三、模板方法模式与Callback回调模式1、回调基本原理2、案例一&#xff1a;回调方式重构JDBC3、案例…

Camtasia Studio2023最新版喀秋莎电脑录制屏幕编辑器

不管是在我们平日的工作当中&#xff0c;还是生活当中&#xff0c;camtasia studio可以方便地进行屏幕操作的录制和配音、视频的剪辑和过场动画、添加说明字幕和水印、制作视频封面和菜单、视频压缩和播放。 你都会因为一些事情&#xff0c;从而需要进行录屏的需求。而Camtasi…

超详细,unity如何制作人物行走的遥杆?

介绍 在游戏中&#xff0c;移动遥杆是一种常见的用户界面元素&#xff0c;它允许玩家通过触摸或鼠标输入来控制游戏对象的移动。移动遥杆通常由一个圆形或方形的背景和一个可以拖动的小球&#xff08;称为拇指杆&#xff09;组成。玩家可以通过拖动拇指杆来控制游戏对象的移动…

某IC交易网 js逆向解析学习【2023/05/16】

文章目录 文章目录 文章目录前言网址目标参数确认加密点cookie解密第一步hex1算法解析rind和rnns完结撒花前言 可以关注我哟,一起学习,主页有更多练习例子 如果哪个练习我没有写清楚,可以留言我会补充 如果有加密的网站可以留言发给我,一起学习共享学习路程 如侵权,联系我…

Vue.js表单输入绑定

对于Vue来说&#xff0c;使用v-bind并不能解决表单域对象双向绑定的需求。所谓双向绑定&#xff0c;就是无论是通过input还是通过Vue对象&#xff0c;都能修改绑定的数据对象的值。Vue提供了v-model进行双向绑定。本章将重点讲解表单域对象的双向绑定方法和技巧。 10.1 实现双…

单片机的介绍

目录 一、介绍 1.单片机简介 2.单片机型号 3.体系 二、硬件基础 1.引言 2.电路基础 电的类比 电流 电压 电路 3.电子元器件 电阻 电容 二极管 三极管 4.常见电气接口 传统音频 视频 电源 RJ45网口 DB9串口 5.开发板/最小系统板 三、STM32介绍 1.简介…

JAVA电商 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城

JAVA电商 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城 1. 鸿鹄Cloud架构清单 2. Commonservice&#xff08;通用服务&#xff09; 通用服务&#xff1a;对spring Cloud组件的使用&封装&#xff0c;是一套完整的针对于分布式微…

Android Studio中的布局讲解

文章目录 1.LinearLayout&#xff08;线性布局&#xff09;2.RelativeLayout&#xff08;相对布局&#xff09;相对于兄弟元素&#xff1a;相对于父元素对齐方式间隔 3.GridLayout&#xff08;网格布局&#xff09;设置最大列数设置最大行数指定控件的位置 4.FrameLayout&#…

包管理工具:pnpm | 京东云技术团队

作者&#xff1a;京东零售 杨秀竹 pnpm 是什么 pnpm&#xff08; performant npm &#xff09;指的是高性能的 npm&#xff0c;与 npm 和 yarn 一样是一款包管理工具&#xff0c;其根据自身独特的包管理方法解决了 npm、yarn 内部潜在的安全及性能问题&#xff0c;在多数情况…

耗子叔-我的互联网引路人

早上一早看到各大程序员群提到左耳朵耗子-陈皓&#xff0c;因为心梗辞世的信息&#xff0c;真的让人难以置信&#xff0c;因为据我所知他还不到50。 虽然我从来没见过他&#xff0c;交谈也很少&#xff0c;但是我知道他的情况&#xff0c;知道他的公司&#xff0c;知道他的好恶…

不要再问我加密的问题了,使用crypto-js中的AES加密方法,连续多次加密/解密,注意事项

每日鸡汤&#xff0c;每个你想要学习的念头&#xff0c;都是未来的你向自己求救 需求&#xff1a;有一段字符串text&#xff0c;有3个key&#xff0c;后端用这三个key一次加密&#xff1b;然后把加密后的字符串返回给前端&#xff0c;前端用这3个key依次解密&#xff0c;得到原…

剖析:在线帮助中心对企业能够起到什么作用?

随着互联网技术的不断发展和普及&#xff0c;越来越多的企业开始将自己的业务转移到了线上。这种转移不仅能够大幅度提高企业的效率&#xff0c;还能够让企业的服务更加贴近用户的需求。然而&#xff0c;在线服务也存在着一些问题&#xff0c;比如用户可能会遇到一些困难&#…

大人,时代变了!缺少成本票可不能买发票啊,是有办法的!

业务是流程&#xff0c;财税是结果&#xff0c;税收问题千千万&#xff0c;关注《税算盘》来帮你找答案。 企业所得税和增值税一样&#xff0c;都是我国重要的税收之一。企业所得税征收对象为企业的利润部分&#xff0c;再度细分就与企业的成本票有关。 企业所得税高是如今众…

电商系统分类树查询功能优化方案总结

前言 分类树查询功能&#xff0c;在各个业务系统中可以说随处可见&#xff0c;特别是在电商系统中。 但就是这样一个简单的分类树查询功能&#xff0c;我们却优化了5次。 到底是怎么回事呢&#xff1f; 背景 我们的网站使用了SpringBoot推荐的模板引擎&#xff1a;Thymelea…

案例5:Java大学生创新创业项目管理设计与实现任务书

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

RK3568|3588|3566处理器属于什么档次?

随着科技的迅猛发展&#xff0c;处理器作为计算机和电子设备的核心组件&#xff0c;其性能的提升对于设备的功能和用户体验起着至关重要的作用。在处理器市场中&#xff0c;不同的处理器被划分为不同的档次&#xff0c;以便用户能够更好地选择适合自己需求的产品。那么&#xf…

解决git clone与git push出现的若干问题:Failed to connect to github.com port 443: Timed out

1 连接github失败问题汇总&#xff1a;Failed to connect to github.com port 443: Timed out 1.1 解决ping不通github.com的问题 1.1.1 查询github的IP的地址 在以下链接找到网页显示github的ip地址http://github.global.ssl.fastly.net.ipaddress.com/&#xff0c;如图所示…

FSW26现金回收RS FSW43 信号和频谱分析仪

Rohde & Schwarz FSW26信号和频谱分析仪&#xff0c;2 Hz - 26.5 GHz 高性能 Rohde & Schwarz (R&S) FSW26 信号和频谱分析仪专为方便、准确和快速而设计。其独特的触摸屏、直观的多视图结果显示和优化的用户指南使 R&S FSW26 分析仪的操作高效方便。凭借其无…

玩转ChatGPT:AskYourPDF插件尝鲜

一、写在前面 首先&#xff0c;吐槽一下&#xff0c;感觉被CloseAI耍了&#xff1a; 上周发文说这一周对PLUS开放联网和插件功能&#xff0c;搞得网络一片狂欢。但是今天通过身边统计学发现&#xff0c;开通了PLUS后&#xff0c;拥有联网和插件功能的只是少数&#xff08;而且…