基于P-Tuningv2轻量微调和推理chatglm

news2024/11/25 0:59:56

类ChatGPT的部署与微调(下):从GLM、ChatGLM到MOSS、ChatDoctor、可商用_v_JULY_v的博客-CSDN博客随着『GPT4多模态/Microsoft 365 Copilot/Github Copilot X/ChatGPT插件』的推出,绝大部分公司的技术 产品 服务,以及绝大部分人的工作都将被革新一遍类似iPhone的诞生 大家面向iOS编程 有了App Store现在有了ChatGPT插件/GPT应用商店,以后很多公司 很多人面向GPT编程(很快技术人员分两种,一种懂GPT,一种不懂GPT)然ChatGPT/GPT4基本不可能开源了,而通过上文《https://blog.csdn.net/v_JULY_v/article/details/129880836ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T Token的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。不过,由于 ChatGLM-6B 的规模较小,目前已知其具有相当多的局限性,如事实性/数学逻辑错误,可能生成有害/有偏见内容,较弱的上下文能力,自我认知混乱,以及对英文指示生成与中文指示完全矛盾的内容。

在阿里云PAI平台上跑

absl-py                  1.4.0
accelerate               0.18.0
addict                   2.4.0
aenum                    3.1.12
aiofiles                 23.1.0
aiohttp                  3.8.4
aiosignal                1.3.1
albumentations           0.4.3
altair                   4.2.2
antlr4-python3-runtime   4.9.3
anyio                    3.6.2
appdirs                  1.4.4
asttokens                2.2.1
async-timeout            4.0.2
attrs                    22.2.0
backcall                 0.2.0
basicsr                  1.4.2
bcrypt                   4.0.1
beautifulsoup4           4.12.1
blendmodes               2022
blinker                  1.6
boltons                  23.0.0
braceexpand              0.1.7
cachetools               5.3.0
certifi                  2022.12.7
cffi                     1.15.1
chardet                  4.0.0
charset-normalizer       3.1.0
clean-fid                0.1.29
click                    8.1.3
clip-anytorch            2.5.2
cmake                    3.26.1
comm                     0.1.3
contourpy                1.0.7
cpm-kernels              1.0.11
cryptography             40.0.1
cssselect2               0.7.0
cycler                   0.11.0
datasets                 2.11.0
debugpy                  1.6.7
decorator                5.1.1
deprecation              2.1.0
diffusers                0.15.0
dill                     0.3.6
docker-pycreds           0.4.0
einops                   0.4.1
entrypoints              0.4
executing                1.2.0
facexlib                 0.2.5
fastapi                  0.94.0
ffmpy                    0.3.0
filelock                 3.10.7
filterpy                 1.4.5
font-roboto              0.0.1
fonts                    0.0.3
fonttools                4.39.3
frozenlist               1.3.3
fsspec                   2023.3.0
ftfy                     6.1.1
future                   0.18.3
gdown                    4.7.1
gfpgan                   1.3.8
gitdb                    4.0.10
GitPython                3.1.30
google-auth              2.17.2
google-auth-oauthlib     1.0.0
gradio                   3.16.2
grpcio                   1.53.0
h11                      0.12.0
httpcore                 0.15.0
httpx                    0.23.3
huggingface-hub          0.13.3
icetk                    0.0.4
idna                     2.10
imageio                  2.9.0
imageio-ffmpeg           0.4.2
imgaug                   0.2.6
importlib-metadata       6.1.0
inflection               0.5.1
ipykernel                6.23.1
ipython                  8.13.2
jedi                     0.18.2
jieba                    0.42.1
Jinja2                   3.1.2
joblib                   1.2.0
jsonmerge                1.8.0
jsonschema               4.17.3
jupyter_client           8.2.0
jupyter_core             5.3.0
kiwisolver               1.4.4
kornia                   0.6.7
lark                     1.1.2
lazy_loader              0.2
linkify-it-py            2.0.0
lit                      16.0.0
llvmlite                 0.39.1
lmdb                     1.4.0
lpips                    0.1.4
lxml                     4.9.2
Markdown                 3.4.3
markdown-it-py           2.2.0
MarkupSafe               2.1.2
matplotlib               3.7.1
matplotlib-inline        0.1.6
mdit-py-plugins          0.3.5
mdurl                    0.1.2
mpmath                   1.3.0
multidict                6.0.4
multiprocess             0.70.14
mypy-extensions          1.0.0
nest-asyncio             1.5.6
networkx                 3.1rc0
nltk                     3.8.1
numba                    0.56.4
numexpr                  2.8.4
numpy                    1.23.3
nvidia-cublas-cu11       11.10.3.66
nvidia-cuda-cupti-cu11   11.7.101
nvidia-cuda-nvrtc-cu11   11.7.99
nvidia-cuda-runtime-cu11 11.7.99
nvidia-cudnn-cu11        8.5.0.96
nvidia-cufft-cu11        10.9.0.58
nvidia-curand-cu11       10.2.10.91
nvidia-cusolver-cu11     11.4.0.1
nvidia-cusparse-cu11     11.7.4.91
nvidia-nccl-cu11         2.14.3
nvidia-nvtx-cu11         11.7.91
oauthlib                 3.2.2
omegaconf                2.2.3
open-clip-torch          2.7.0
opencv-python            4.7.0.72
opencv-python-headless   4.7.0.72
orjson                   3.8.9
packaging                23.0
pandas                   1.5.3
paramiko                 3.1.0
parso                    0.8.3
pathtools                0.1.2
pexpect                  4.8.0
pickleshare              0.7.5
piexif                   1.1.3
Pillow                   9.4.0
pip                      23.0.1
platformdirs             3.5.1
prompt-toolkit           3.0.38
protobuf                 3.20.0
psutil                   5.9.4
ptyprocess               0.7.0
pudb                     2019.2
pure-eval                0.2.2
pyarrow                  11.0.0
pyasn1                   0.4.8
pyasn1-modules           0.2.8
pycparser                2.21
pycryptodome             3.17
pydantic                 1.10.7
pydeck                   0.8.0
pyDeprecate              0.3.1
pydub                    0.25.1
Pygments                 2.14.0
Pympler                  1.0.1
PyNaCl                   1.5.0
pyparsing                3.0.9
pyre-extensions          0.0.23
pyrsistent               0.19.3
PySocks                  1.7.1
python-dateutil          2.8.2
python-multipart         0.0.6
pytorch-lightning        1.7.6
pytz                     2023.3
pytz-deprecation-shim    0.1.0.post0
PyWavelets               1.4.1
PyYAML                   6.0
pyzmq                    25.1.0
realesrgan               0.3.0
regex                    2023.3.23
reportlab                3.6.12
requests                 2.25.1
requests-oauthlib        1.3.1
resize-right             0.0.2
responses                0.18.0
rfc3986                  1.5.0
rich                     13.3.3
rouge-chinese            1.0.3
rsa                      4.9
safetensors              0.2.7
scikit-image             0.19.2
scipy                    1.10.1
semver                   3.0.0
sentencepiece            0.1.99
sentry-sdk               1.19.0
setproctitle             1.3.2
setuptools               59.6.0
six                      1.16.0
smmap                    5.0.0
sniffio                  1.3.0
soupsieve                2.4
stack-data               0.6.2
starlette                0.26.1
streamlit                1.20.0
svglib                   1.5.1
sympy                    1.12rc1
tb-nightly               2.13.0a20230405
tensorboard              2.12.1
tensorboard-data-server  0.7.0
tensorboard-plugin-wit   1.8.1
test-tube                0.7.5
tifffile                 2023.3.21
timm                     0.6.7
tinycss2                 1.2.1
tokenizers               0.12.1
toml                     0.10.2
toolz                    0.12.0
torch                    1.13.1+cu117
torchdiffeq              0.2.3
torchmetrics             0.11.4
torchsde                 0.2.5
torchvision              0.14.1+cu117
tornado                  6.2
tqdm                     4.65.0
traitlets                5.9.0
trampoline               0.1.2
transformers             4.27.1
triton                   2.0.0
typing_extensions        4.5.0
typing-inspect           0.8.0
tzdata                   2023.3
tzlocal                  4.3
uc-micro-py              1.0.1
urllib3                  1.26.15
urwid                    2.1.2
uvicorn                  0.21.1
validators               0.20.0
wandb                    0.14.0
watchdog                 3.0.0
wcwidth                  0.2.6
webdataset               0.2.5
webencodings             0.5.1
websockets               11.0
Werkzeug                 2.2.3
wheel                    0.37.1
xformers                 0.0.16rc425
xxhash                   3.2.0
yapf                     0.32.0
yarl                     1.8.2
zipp                     3.15.0

python39+cu117+驱动:470.103.1

apt list | grep cuda

 1.下载chatglm-6b

阿里的镜像源和官方的git代码比,版本就有些落后了,建议使用官方的版本。

import os
dsw_region = os.environ.get("dsw_region")
url_link = {
    "cn-shanghai": "https://atp-modelzoo-sh.oss-cn-shanghai-internal.aliyuncs.com/release/tutorials/chatGLM/ChatGLM-6B-main.tar.gz",
    "cn-hangzhou": "https://atp-modelzoo.oss-cn-hangzhou-internal.aliyuncs.com/release/tutorials/chatGLM/ChatGLM-6B-main.tar.gz",
    "cn-shenzhen": "https://atp-modelzoo-sz.oss-cn-shenzhen-internal.aliyuncs.com/release/tutorials/chatGLM/ChatGLM-6B-main.tar.gz",
    "cn-beijing": "https://atp-modelzoo-bj.oss-cn-beijing-internal.aliyuncs.com/release/tutorials/chatGLM/ChatGLM-6B-main.tar.gz", 
}

# 获取阿里云实例所在区域进行下载
path = url_link[dsw_region]
os.environ['LINK_CHAT'] = path
!wget $LINK_CHAT
!tar -xvf ChatGLM-6B-main.tar.gz 

# 去掉link中-internal可以自己下载

2.安装依赖

!cd ChatGLM-6B-main && pip install -r requirements.txt && \
pip install rouge_chinese nltk jieba datasets 

3.数据准备

用户可以使用我们提供的数据(AdvertiseGen_Simple),也可以使用自定义数据。
数据文件为json文件。json文件中每条数据是一个字典,记录输入文本和输出文本。将 train.sh 文件以及 evaluate.sh 文件中的 train_file、validation_file 和 test_file 修改为对应的数据集路径,并将 prompt_column 和 response_column 改为 JSON 文件中输入文本和输出文本对应的 KEY。
以我们提供的AdvertiseGen_Simple数据集为例,prompt_column为content,response_column为summary 。

4.微调模型 

!cd ChatGLM-6B-main/ptuning && bash train.sh

PRE_SEQ_LEN=8
LR=1e-2

CUDA_VISIBLE_DEVICES=0 python main.py \
    --do_train \
    --train_file AdvertiseGen_Simple/train.json \
    --validation_file AdvertiseGen_Simple/dev.json \
    --prompt_column content \
    --response_column summary \
    --overwrite_cache \
    --model_name_or_path chatglm-6b \
    --output_dir output/adgen-chatglm-6b-pt-$PRE_SEQ_LEN-$LR \
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 64 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 16 \
    --predict_with_generate \
    --logging_steps 10 \
    --save_steps 6 \
    --learning_rate $LR \
    --pre_seq_len $PRE_SEQ_LEN \
    --num_train_epochs 1
    #--quantization_bit 4 \    

把int4注掉了就可以跑,否则报错:RuntimeError: Library cublasLt is not initialized。

在demos/chatglm_6b/ChatGLM-6B-main/ptuning/main.py中设置os.environ["WANDB_DISABLED"] = "true",关掉wandb。

5.模型评测

评测指标为中文 Rouge score 和 BLEU-4。生成的结果保存在 ./output/adgen-chatglm-6b-pt-8-1e-2/generated_predictions.txt。

!cd ChatGLM-6B-main/ptuning &&  bash evaluate.sh

PRE_SEQ_LEN=8
CHECKPOINT=adgen-chatglm-6b-pt-8-1e-2
STEP=6

CUDA_VISIBLE_DEVICES=0 python main.py \
    --do_predict \
    --validation_file AdvertiseGen_Simple/dev.json \
    --test_file AdvertiseGen_Simple/dev.json \
    --overwrite_cache \
    --prompt_column content \
    --response_column summary \
    --model_name_or_path ./output/$CHECKPOINT/checkpoint-$STEP  \
    --output_dir ./output/$CHECKPOINT \
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 64 \
    --per_device_eval_batch_size 1 \
    --predict_with_generate \
    --pre_seq_len $PRE_SEQ_LEN 
    #--quantization_bit 4

6.模型推理

!cd ChatGLM-6B-main/ && python web_demo.py

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

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

相关文章

【CMake 入门与进阶(2)】CMake编译设置——多个源文件编译及生成库文件(附代码)

多个源文件 上篇我们学习了单个源文件的cmake 的编译,不过一个源文件的例子似乎没什么意思,我们再加入一个hello.h 头文件和 hello.c 源文件。在 hello.c 文件中 定义了一个函数 hello,然后在 main.c 源文件中将会调用该函数&#xff…

客服都要下岗了? 当ChatGPT遇见私有数据,秒变AI智能客服!

用ChatGPT搭建基于私有数据的WorkPlus AI客服机器人这个想法,源于WorkPlus售前工作需求。在ChatGPT之前,其实对话式AI一直在被广泛使用在客服场景,只不过不大智能而已。比如你应该看到不少电商客服产品,就有类似的功能&#xff0c…

车站信息管理系统(面向对象程序设计python版)

一、基本概述 1.项目背景 随着大数据时代的发展,大数据抓取了人们最想要的信息,数据查询能帮助用户获取更有用的信息,让每个人都能享受到大数据带给生活的高效和便捷。 2.设计目的 为了大大缩减人们出行选择站点所需时间,为了让人们在陌生地区,在对当地交通不熟的情况…

Redis数据类型之(哈希Hash和集合Set)

Redis数据类型之(哈希Hash和集合Set) 一定注意看红色注意项。 哈希(Hash): Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存…

promethues 之PromQL数据类型介绍(二)

promethues 之PromQL数据类型介绍(二) 1、PromQL 介绍 PromQL是promethues 监控系统内置的一种查询语言,类似于MySQL的SQL语句,该语言仅用于读取数据。PromQL是我们学习Promethues最困难也是最重要的部分。当Promethues从系统和服务收集到指标数据时&…

PIP-Net:用于可解释图像分类的基于patch的直观原型

文章目录 PIP-Net: Patch-Based Intuitive Prototypes for Interpretable Image Classification摘要本文方法模型结构Self-Supervised Pre-Training of PrototypesTraining PIP-NetScoring Sheet ReasoningCompact Explanations 实验结果 PIP-Net: Patch-Based Intuitive Proto…

bug 记录 - 接口被重复调用,响应时长不同,结果被覆盖的问题

发现问题与调试过程 需求:输入框中输入关键字,根据关键字去调用接口,返回模糊查询的结果集合。问题:输入的关键字越少,接口响应时间越长。例如:输入“阿”,接口响应时间大概是 5 秒&#xff0c…

【计算机网络中ip概念总结】【平时我们说的ip 到底是什么】【计算机网络中 ip地址是什么】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

【Linux】重定向dup

文章目录 前言重定向的原理dup函数添加重定向功能到myshell 前言 了解重定向之前需要明白文件描述符的工作规则,可以看这篇文章:文件系统 最关键的一点是:在进程中,在文件描述符表中,会将最小的、没有被使用的数组元…

vscode整合gitee

vscode需要下载的插件 第一个可以多仓库进行操作 第二个主要是用于仓库的管理和展示 vscode的gitee操作 1、按F1,搜索gitee 2、根据提示进行操作 标1的是第一个插件的操作 标2的是第二个插件的操作 绑定用户私钥 两个插件绑定私钥的方式不同, gitee的私…

这本数智平台白皮书讲透了大型企业数智化升级业务痛点

在以“升级企业数智化底座”为主题的2023用友BIP技术大会上,用友联合全球权威咨询机构IDC共同发布《建设数字中国 升级数智底座——企业数智化底座白皮书》,在这本数智平台白皮书里深入剖析了大型企业的数智化升级痛点。 大型企业普遍具有广域的业务覆盖…

六级备考15天|CET-6|翻译真题练习|北京大兴国际机场|9:15~10:20

目录 中文 英文 词汇 订正 解析 练习 中文 英文 词汇 put sth. into use 投入使用 距离south of地点 “...以南....公里处” construction 开工建设 the giant project 巨型工程 on the site …

LED显示屏驱动IC基本原理

LED显示屏驱动IC(Integrated Circuit,集成电路)是一种专门设计用于控制和驱动LED显示屏的电子元件。LED显示屏驱动IC的基本原理涉及到LED的电流控制、亮度调节、扫描控制和图像数据处理等方面。 以下是LED显示屏驱动IC的基本原理的详细说明&a…

只需简单几步,就能在报表工具FastReport .NET 中使用 RFID 标签

FastReport 是功能齐全的报表控件,可以帮助开发者可以快速并高效地为.NET,VCL,COM,ActiveX应用程序添加报表支持,由于其独特的编程原则,现在已经成为了Delphi平台最优秀的报表控件,支持将编程开…

喜讯丨计讯物联5G物联网数据网关TG463荣登2022年度中国物联网行业创新产品榜

近日,备受瞩目的2022‘物联之星’中国物联网产业年度榜单颁奖典礼在上海世博展览馆会场隆重举行。经由申报筛选、网络人气投票、专家评委投票等多重环节,计讯物联旗下5G物联网数据网关TG463荣登2022年度中国物联网行业创新产品榜。 作为中国物联网行业…

chatgpt赋能python:Python编写抽奖程序——让你的活动更加有趣

Python编写抽奖程序——让你的活动更加有趣 在现代社会中,抽奖活动已经成为了许多商家和组织吸引关注、增强互动的重要手段。而使用Python编写抽奖程序可以帮助我们更加方便地进行这一活动。本文将介绍Python编写抽奖程序的方法,以及如何在实际应用中优…

【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等)、趣味项目实现、学术应用项目实现

【强化学习原理项目专栏】必看系列:单智能体、多智能体算法原理项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现 对于深度强化学习这块规划为: 基础单智能算法教学(gym环境为主)主流多智能算法教学…

Hive和Hadoop关系

Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以查询和分析存储在Hadoop中的大规模数据的机制。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成Ma…

vue组件库 vue marquee vue跑马灯 vue走马灯 ​vue-marquee-text-component​中文

vue2运行安装 npm install vue-marquee-text-component1.2.0 Name说明DescriptionConfigduration持续时间动画持续时间{类型:数字,默认值:15}Animation Duration{ type: Number, default: 15 }repeatrepeat重复插槽的…

chatgpt赋能python:Python内置函数:如何查找和使用?

Python内置函数:如何查找和使用? 作为一名有10年Python编程经验的工程师,我想与大家分享一下Python内置函数的使用技巧。Python内置函数是指已经定义好的函数,无需另外安装也无需导入就可以直接在Python中使用的函数。这篇文章将…