第八篇-Tesla P40+ChatGLM2+LoRA

2023-08-02 21:45:50

部署环境

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

目的

验证P40部署可行性,只做验证学习lora方式微调

创建环境

conda create --name glm-tuning python=3.10
conda activate glm-tuning

克隆项目

git clone https://github.com/hiyouga/ChatGLM-Efficient-Tuning
cd ChatGLM-Efficient-Tuning

安装依赖

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

准备数据-少量测试-项目已提供分词好数据

准备数据
我们将下载好的数据集解压到 data 文件夹中,解压后的文件目录为:
data/
├── dataset_info.json
└── self_cognition/
├── dev.json
└── train.json
接下来,我们修改 dataset_info.json,增加以下两列内容,从而使训练框架能够识别自定义数据集。
测试dev.json与train.json一样的,生产环境需要分离

,
"self_cognition_train": {
    "file_name": "self_cognition/train.json",
    "columns": {
        "prompt": "content",
        "query": "",
        "response": "summary",
        "history": ""
    }
},
"self_cognition_dev": {
    "file_name": "self_cognition/dev.json",
    "columns": {
        "prompt": "content",
        "query": "",
        "response": "summary",
        "history": ""
    }
}

微调代码调整

accelerate launch src/train_bash.py \
    --stage sft \
    --do_train \
    --model_name_or_path  /models/chatglm2-6b \
    --dataset self_cognition_train \
    --finetuning_type lora \
    --output_dir self_cognition_lora \
    --overwrite_cache \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 2 \
    --lr_scheduler_type cosine \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate 1e-3 \
    --num_train_epochs 2.0 \
    --lora_rank 32 \
    --ddp_find_unused_parameters False \
    --source_prefix 你现在是一名销售员,根据以下商品标签生成一段有吸引力的商品广告词。 \
    --plot_loss \
    --fp16
如果调整了数据集,要清理缓存,缓存目录如下
/root/.cache/huggingface/datasets
Tue Aug  1 10:45:02 2023
+-----------------------------------------------------------------------------+
| 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   61C    P0   184W / 250W |  13503MiB / 23040MiB |     94%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
{'train_runtime': 73.3871, 'train_samples_per_second': 2.18, 'train_steps_per_second': 0.545, 'train_loss': 1.7150115966796875, 'epoch': 2.0}                                    
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 40/40 [01:13<00:00,  1.83s/it]***** train metrics *****
  epoch                    =        2.0
  train_loss               =      1.715
  train_runtime            = 0:01:13.38
  train_samples_per_second =       2.18
  train_steps_per_second   =      0.545

参数:参数根据自己硬件配置自己调整
温度:P40自己改个风冷散热,散热效果不好,奔着80度去了
显存:占用大概14G

模型测试

CUDA_VISIBLE_DEVICES=0 python src/cli_demo.py \
    --model_name_or_path  /models/chatglm2-6b \
    --checkpoint_dir self_cognition_lora
python src/web_demo.py --checkpoint_dir self_cognition_lora --model_name_or_path  /models/chatglm2-6b

Input: 你是谁
ChatGLM-6B: The dtype of attention mask (torch.int64) is not bool
我是AI小木,一个由小吕开发的人工智能助手,我可以回答各种问题,提供信息,甚至进行闲聊。

Input: 你是谁开发的
ChatGLM-6B: 我不是开发的,是由小吕开发的人工智能助手,旨在为用户提供有用的回答和帮助

总结

效果还行,我的参数都设置的比较小,速度挺快的2分钟,模型微调之后认识已经调整过来了
后面准备调整更大数据集,再做数据评测

–model_name_or_path /models/chatglm2-6b 注意指定

参考

https://hub.nuaa.cf/hiyouga/ChatGLM-Efficient-Tuning/blob/main/examples/ads_generation.md
更多推荐

SpringBoot+Redis BitMap 实现签到与统计功能

最近项目里需要集成签到和统计功能,连续签到后会给用户发放一些优惠券和奖品,以此来吸引用户持续在该品台进行活跃。下面我们一些来聊一聊目前主流的实现方案。因为签到和统计的功能涉及的数据量比较大,所以在如此大的数据下利用传统的关系型数据库进行计算和统计是非常耗费性能的,所以目前市面上主要依赖于高性能缓存RedisBitMap

STM32 Cubemx 基本定时器Basic Timers

文章目录前言简介Cubemx使用前言持续学习stm32中…简介基本定时器有TIM6和TIM7,是一个16位的向上定时器。基本定时器的用途较少,只能用于纯粹的定时器以及驱动DAC模块。注:基本定时器各自独立,不存在共用的资源。基本定时器TIMxCLK来自于RCC中的APB1。因此在使用基本定时器时需注意时钟树中APB1的

STM32的HAL库SPI操作(master 模式)-根据时序图配置SPI

SPI相关基础知识SPI基本概念请自行百度,参考:百度百科SPI简介.我们讲重点和要注意的地方。master模式下要关注的地方接线一一对应也就是说主控的MISO,MOSI,SCLK,[CSn]分别和设备的MISO,MOSI,SCLK,[CSn]一一对应相连,不交叉,不交叉,不交叉…(重要的事情说三遍)。从设备的时序图这

arcgis js 缓冲区分析(GP服务)

arcgis文档中的有提供缓冲区的接口geometryService,但要4.19后版本才提供案例中使用的版本为4.16,因此这里的缓冲区分析借助gp工具新建服务1、打开arcmap选择工具将要存放的文件夹,右键=>new=>Toolbox对新建好的工具的model(右键工具new=>model)进行编辑,如图2、打开

[当人工智能遇上安全] 9.基于API序列和深度学习的恶意家族分类实例详解

您或许知道,作者后续分享网络安全的文章会越来越少。但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个《当人工智能遇上安全》系列博客,详细介绍人工智能与安全相关的论文、实践,并分享各种案例,涉及恶意代码检测、恶意请求识别、入侵检测、对抗样本等等。只想更好地帮助初学者,更加成体系的分享新知识。该系列文

laravel 使用mpdf将html转化成pdf

安装方式composerrequirempdf/mpdf常用配置$defaultConfig=(new\Mpdf\Config\ConfigVariables())->getDefaults();//获取默认的字体包文件路径$fontDirs=$defaultConfig['fontDir'];$defaultFont

基于SpringBoot+Vue的MOBA类游戏攻略分享平台

1简介MOBA类游戏攻略分享平台,为用户随时随地查看游戏攻略信息提供了便捷的方法,更重要的是大大的简化了管理员管理MOBA类游戏攻略信息的方式方法,更提供了其他想要了解MOBA类游戏攻略信息及运作情况以及挑选方便快捷的可靠渠道。相比于传统游戏攻略管理方法,这样的电子信息管理更为简洁方便,在MOBA类游戏攻略维护信息反馈

软件测试面试题 —— 整理与解析(3)

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。📡主页地址:【Austin_zhai】🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。💎声明:博主日常工作较为繁忙,文章会不定期更新,各类行业或职场问题欢迎大家私信,有空必回。阅读目录1.接上回2.题目解析2.1请介

day14 02-Shell控制条件与循环详解

文章目录1.9.条件控制1.9.1.if条件语句-单分支1.9.2.if条件语句-多分支1.9.3.case1.10.循环1.10.1.for循环1.10.2.while循环1.9.条件控制1.9.1.if条件语句-单分支if-else语句,是非常简单,也是非常基础的条件语句。在Java中我们已经非常熟悉它的逻辑了,在

乒乓球廉价底板和套胶对比分析

手机最近没办法写微博,在火车上没事,折腾了下,升级后可以了,我近期又打了很多套胶,我还录了段粘拍的视频一会分享。这次我还是说几款底板和套胶的感受,最近买了dj200不带A底板,paliocc和银河cn2,套胶方面用的更多一一解读。首先说为什么买dj200底板,作为我这种低端用户来说,我认为dj200就是我的天花板,这个

前后端分离毕设项目之基于springboot+vue的笔记记录分享网站设计与实现(内含源码+文档+部署教程)

博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌🍅由于篇幅限制,想要获取完整文章或者源码,或者代做,拉到文章底部即可看到个人VX。🍅2023年-2024年最新计算机毕业设计本科选题大全汇总感兴趣的可以先收藏

热文推荐