第七篇-Tesla P40+ChatGLM2+P-Tuning

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

本文目的

本文仅仅是测试一下ptuning技术方案,使用少量数据测试下微调流程

环境

  系统:CentOS-7
  CPU: 14C28T
  显卡:Tesla P40 24G
  驱动: 515
  CUDA: 11.7
  cuDNN: 8.9.2.26

模型文件

https://huggingface.co/THUDM/chatglm2-6b
下载模型相关文件到自己目录
我的是/models/chatglm2-6b

[root@ai-server chatglm2-6b]# pwd
/models/chatglm2-6b
[root@ai-server chatglm2-6b]# ll -h
total 12G
-rw-r--r--. 1 root root   678 Jul 29 09:30 cli.py
-rw-r--r--. 1 root root  1.2K Jul 29 09:30 config.json
-rw-r--r--. 1 root root  2.2K Jul 29 09:30 configuration_chatglm.py
-rw-r--r--. 1 root root   50K Jul 29 09:30 modeling_chatglm.py
-rw-r--r--. 1 root root  4.1K Jul 29 09:30 MODEL_LICENSE.txt
-rw-r--r--. 1 root root  1.8G Jul 29 09:33 pytorch_model-00001-of-00007.bin
-rw-r--r--. 1 root root  1.9G Jul 29 09:33 pytorch_model-00002-of-00007.bin
-rw-r--r--. 1 root root  1.8G Jul 29 09:33 pytorch_model-00003-of-00007.bin
-rw-r--r--. 1 root root  1.7G Jul 29 09:33 pytorch_model-00004-of-00007.bin
-rw-r--r--. 1 root root  1.9G Jul 29 09:33 pytorch_model-00005-of-00007.bin
-rw-r--r--. 1 root root  1.8G Jul 29 09:33 pytorch_model-00006-of-00007.bin
-rw-r--r--. 1 root root 1005M Jul 29 09:32 pytorch_model-00007-of-00007.bin
-rw-r--r--. 1 root root   20K Jul 29 09:30 pytorch_model.bin.index.json
-rw-r--r--. 1 root root   15K Jul 29 09:30 quantization.py
-rw-r--r--. 1 root root   348 Jul 29 09:30 README-env.md
-rw-r--r--. 1 root root  7.9K Jul 29 09:30 README.md
-rw-r--r--. 1 root root  9.9K Jul 29 09:30 tokenization_chatglm.py
-rw-r--r--. 1 root root   244 Jul 29 09:30 tokenizer_config.json
-rw-r--r--. 1 root root  995K Jul 29 09:30 tokenizer.model

创建环境安

conda create --name glm2 python=3.10
conda activate glm2

下载代码工程

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

安装依赖

pip install rouge_chinese nltk jieba datasets  -i https://pypi.tuna.tsinghua.edu.cn/simple

准备训练数据

参考数据

data/train.json 文章开头【自我意识-训练数据train.json】
可以替换【AI小木】【小吕】来构建你自己的自我认识数据集

一定注意数据中格式,符号中英文等等

data/dev.json
我使用和train.json一致,正式使用是要使用真实数据

调整代码

cd ptuning
修改 train.sh
    --train_file data/train.json \
    --validation_file data/dev.json \
    --model_name_or_path /models/chatglm2-6b \
    --max_steps 100 \
    --logging_steps 1 \
    --save_steps 50 \

开始微调

sh train.sh
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.65.01    Driver Version: 515.65.01    CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla P40           Off  | 00000000:03:00.0 Off |                    0 |
| N/A   78C    P0   196W / 250W |   7845MiB / 23040MiB |    100%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+


{'train_runtime': 2787.9684, 'train_samples_per_second': 0.574, 'train_steps_per_second': 0.036, 'train_loss': 1.142700309753418, 'epoch': 20.0}                                 
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [46:27<00:00, 27.88s/it]***** train metrics *****
  epoch                    =       20.0
  train_loss               =     1.1427
  train_runtime            = 0:46:27.96
  train_samples            =         80
  train_samples_per_second =      0.574
  train_steps_per_second   =      0.036

train_loss 要小,如果1,2这种未调出的效果很差

如果调整了数据集,要清理缓存,缓存目录如下
/root/.cache/huggingface/datasets

验证新模型

output/adgen-chatglm2-6b-pt-128-2e-2/checkpoint-100

命令行验证

vim cli.py

import logging
import os
import sys
import json

import torch
from transformers import AutoConfig, AutoModel, AutoTokenizer

# 载入Tokenizer
tokenizer = AutoTokenizer.from_pretrained("/models/chatglm2-6b", trust_remote_code=True)

config = AutoConfig.from_pretrained("/models/chatglm2-6b", trust_remote_code=True, pre_seq_len=128)
model = AutoModel.from_pretrained("/models/chatglm2-6b", config=config, trust_remote_code=True)
prefix_state_dict = torch.load(os.path.join("./output/adgen-chatglm2-6b-pt-128-2e-2/checkpoint-100", "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)

# 之后根据需求可以进行量化
# Comment out the following line if you don't use quantization
#model = model.quantize(4)
model = model.half().cuda()
model.transformer.prefix_encoder.float()
model = model.eval()

response, history = model.chat(tokenizer, "你是谁", history=[])

print(response)

python cli.py

Web验证

cat web_demo.sh 
PRE_SEQ_LEN=128

CUDA_VISIBLE_DEVICES=0 python3 web_demo.py \
    --model_name_or_path /models/chatglm2-6b \
    --ptuning_checkpoint output/adgen-chatglm2-6b-pt-128-2e-2/checkpoint-100 \
    --pre_seq_len $PRE_SEQ_LEN

注意

web_demo.py
    外网访问
    demo.queue().launch(share=False, inbrowser=True,server_name='0.0.0.0')
sh web_demo.sh 
http://192.168.0.0:7860/

好,可以体验了文章来源地址https://www.toymoban.com/news/detail-636485.html

到了这里,关于第七篇-Tesla P40+ChatGLM2+P-Tuning的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ChatGLM-6B 部署与 P-Tuning 微调实战-使用Pycharm实战

    ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优

    2024年02月15日
    浏览(45)
  • LLMs之ChatGLM2:基于ChatGLM Efficient Tuning(微调工具包)实现对ChatGLM2进行LoRA微调(CLI/GUI【text-generation-webui】)并进

    LLMs之ChatGLM2:基于ChatGLM Efficient Tuning(微调工具包)实现对ChatGLM2进行LoRA微调(CLI/GUI【text-generation-webui】)并进行推理测试图文教程之详细攻略 目录 1、硬件要求和Python依赖 2、代码和模型权重下载 (1)、项目代码下载

    2024年02月08日
    浏览(44)
  • chatglm2-6b在P40上做LORA微调

    目前,大模型的技术应用已经遍地开花。最快的应用方式无非是利用自有垂直领域的数据进行模型微调。chatglm2-6b在国内开源的大模型上,效果比较突出。本文章分享的内容是用chatglm2-6b模型在集团EA的P40机器上进行垂直领域的LORA微调。 github: https://github.com/THUDM/ChatGLM2-6B ch

    2024年02月10日
    浏览(46)
  • chatglm2-6b在P40上做LORA微调 | 京东云技术团队

    目前,大模型的技术应用已经遍地开花。最快的应用方式无非是利用自有垂直领域的数据进行模型微调。chatglm2-6b在国内开源的大模型上,效果比较突出。本文章分享的内容是用chatglm2-6b模型在集团EA的P40机器上进行垂直领域的LORA微调。 github: https://github.com/THUDM/ChatGLM2-6B ch

    2024年02月09日
    浏览(45)
  • LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+

    LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM-2/LLaMA-2/Baichuan等】的高效工具【预训练+指令监督微调+奖励模型训练+PPO 训练+DPO 训练】)的简介、安装、使用方法之详细攻略 目录 相关文章 LLMs之ChatGLM:ChatGLM Efficient Tuning(一款高效微调ChatGLM-6B/Ch

    2024年02月09日
    浏览(70)
  • [论文笔记]P-tuning

    今天带来第四篇大模型微调的论文笔记GPT Understands, Too。 本篇工作提出的方法是P-tuning,使用可训练的连续提示嵌入,使GPT在NLU上表现比传统的全量微调的GPT更好的效果。P-tuning还提高了BERT在少样本和监督设定下的性能,大幅减少了提示工程的需求。 根据训练目标,预训练语

    2024年02月07日
    浏览(40)
  • [论文阅读笔记75]P-Tuning v2

    题目 论文作者与单位 来源 年份 P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks Xiao Liu等Tsinghua University 清华大学 2021 Citations, References 论文链接:https://arxiv.org/pdf/2110.07602.pdf [1] Liu X , Ji K , Fu Y , et al. P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Unive

    2024年02月16日
    浏览(48)
  • LLM微调 | Prefix-Tuning, Prompt-Tuning, P-tuning, P-tuning-v2

    🔥 下面我只是分析讲解下这些方法的原理以及具体代码是怎么实现的,不对效果进行评价,毕竟不同任务不同数据集效果差别还是挺大的。 hard prompt (离散):即人类写的自然语言式的prompt。 soft prompt (连续):可训练的权重,可以理解为伪prompt。【毕竟nn是连续的模型,在连续

    2024年02月14日
    浏览(46)
  • [论文阅读笔记76]GPT Understands, Too(P-tuning)

    题目 论文作者与单位 来源 年份 GPT Understands, Too 清华大学 Citations, References 论文链接:https://arxiv.org/pdf/2103.10385.pdf 论文代码: 研究主题 问题背景 核心方法流程 亮点 数据集 结论 论文类型 微调大模型 采用传统微调的gpt在自然语言理解(NLU)方面未能取得良好的效果

    2024年02月09日
    浏览(54)
  • Tesla M40 使用分享

    这是在咸鱼上花800元购买的的M40 12G显卡进行深度学习的使用说明(时间节点2022.1) 注意这里使用的Tesla显卡是专门的计算卡,所以没有视频输出接口,网上查到的资料说可以有两种使用方法,一是使用核心输出;二是使用另一张quadro亮机卡的双卡输出模式。 注意安装M40等大于

    2024年02月05日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包