第八篇-Tesla P40+ChatGLM2+LoRA

文章介绍了如何在CentOS7环境中使用TeslaP40GPU进行ChatGLM模型的lora方式微调,包括环境配置、数据处理和参数设置,最后评估了初步效果并计划扩展数据集

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

部署环境

  系统: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
<think>我们被要求解释nvidia-smi命令的输出内容。根据引用[1],nvidia-smi是一个功能强大的工具,用于管理和监控NVIDIA GPU设备。我们将详细解释其输出内容。 nvidia-smi的输出通常包含以下几个部分: 1. 驱动版本和CUDA版本信息 2. GPU列表及其状态 3. 每个GPU的详细信息,包括: - 名称 - 温度 - 风扇速度 - 性能状态(P-state) - 显存使用情况 - GPU使用率 - 当前运行的进程 下面是一个典型的nvidia-smi输出示例(注意:实际输出可能因驱动版本和GPU型号而略有不同): ``` +-----------------------------------------------------------------------------+ | NVIDIA-SMI 450.102.04 Driver Version: 450.102.04 CUDA Version: 11.0 | |-------------------------------+----------------------+----------------------+ | 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 V100-SXM2... On | 00000000:00:04.0 Off | 0 | | N/A 34C P0 24W / 300W | 0MiB / 16160MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ | 1 Tesla V100-SXM2... On | 00000000:00:05.0 Off | 0 | | N/A 35C P0 25W / 300W | 0MiB / 16160MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ ``` **详细解释:** 1. **驱动和CUDA版本**:第一行显示NVIDIA-SMI的版本、驱动版本和CUDA版本。例如:`NVIDIA-SMI 450.102.04 Driver Version: 450.102.04 CUDA Version: 11.0`。 2. **表头信息**: - `GPU`:GPU的序号(从0开始)。 - `Name`:GPU的名称(如Tesla V100-SXM2)。 - `Persistence-M`:持久模式状态(On或Off)。持久模式可以让GPU在无任务时保持唤醒状态,减少任务启动延迟(引用[4]提到可以通过`nvidia-smi -pm 1`开启)。 - `Bus-Id`:GPU的总线ID(用于定位硬件位置)。 - `Disp.A`:显示是否启用(Off表示未用于显示)。 - `Volatile Uncorr. ECC`:ECC错误计数(0表示没有错误)。 3. **性能指标**: - `Fan`:风扇转速(百分比或N/A,如果不可用)。 - `Temp`:GPU温度(摄氏度)。 - `Perf`:性能状态(P0到P12,P0为最高性能状态,P12为最低)。 - `Pwr:Usage/Cap`:当前功耗/最大功耗(瓦特)。 - `Memory-Usage`:显存使用情况(当前使用量/总量)。 - `GPU-Util`:GPU使用率(百分比)。 - `Compute M.`:计算模式(Default表示默认模式,允许多个进程同时使用GPU)。 4. **其他信息**:可能包括MIG(Multi-Instance GPU)模式的状态。 **其他常用命令**(引用[3]): - 动态监控:`watch -n 1 nvidia-smi`(每秒刷新一次)。 - 查看指定GPU:`nvidia-smi -i 0`(查看GPU0)。 - 查询详细信息:`nvidia-smi -q`(显示所有GPU的详细信息)。 - 开启持久模式:`nvidia-smi -pm 1`(开启所有GPU的持久模式)。 **注意**:如果nvidia-smi输出缓慢,可能是由于节能模式(Persistence-M为Off)导致。开启持久模式可以改善响应速度(引用[4])。 §§相关问题§§ 1. 如何开启nvidia-smi的持久模式? 2. nvidia-smi输出中的性能状态(Perf)具体含义是什么? 3. 如何通过nvidia-smi监控特定GPU的使用情况? 4. nvidia-smi输出中的ECC错误是什么?如何解决?</think>### `nvidia-smi` 命令输出内容详解 `nvidia-smi`(NVIDIA System Management Interface)是 NVIDIA 提供的 GPU 监控与管理工具,其输出包含多个关键字段。以下是典型输出的逐项解析(以常见输出为例): --- #### **1. 头部信息** ```plaintext +-----------------------------------------------------------------------------+ | NVIDIA-SMI 535.161.07 Driver Version: 535.161.07 CUDA Version: 12.2 | |-------------------------------+----------------------+----------------------+ ``` - **`NVIDIA-SMI`版本**:工具自身版本(如 `535.161.07`)。 - **`Driver Version`**:GPU 驱动程序版本,需与 CUDA 兼容[^1]。 - **`CUDA Version`**:支持的 CUDA 计算能力版本(如 `12.2`)[^3]。 --- #### **2. GPU 状态表格** ```plaintext | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 NVIDIA A100 80G... On | 00000000:3B:00.0 Off | 0 | | N/A 45C P0 72W / 300W | 15476MiB / 81920MiB | 30% Default | ``` - **`GPU`**:GPU 序号(从 `0` 开始)。 - **`Name`**:GPU 型号(如 `NVIDIA A100 80G`)。 - **`Persistence-M`**:持久模式状态: - `On`:GPU 持续供电,减少任务启动延迟(建议开启,可通过 `nvidia-smi -pm 1` 启用)[^3][^4]。 - `Off`:节能模式,响应可能变慢[^4]。 - **`Bus-Id`**:GPU 的 PCI 总线位置(如 `00000000:3B:00.0`)。 - **`Disp.A`**:显示输出状态(`Off` 表示未用于图形显示)。 - **`Volatile Uncorr. ECC`**:ECC 内存错误计数(`0` 表示无错误)。 - **`Fan`**:风扇转速(`N/A` 表示服务器 GPU 无风扇)。 - **`Temp`**:GPU 温度(如 `45°C`),临界值通常为 `80–90°C`。 - **`Perf`**:性能状态(`P0`=最高性能,`P12`=最低功耗)[^3]。 - **`Pwr:Usage/Cap`**:实时功耗 / 最大功耗(如 `72W / 300W`)。 - **`Memory-Usage`**:显存使用量 / 总量(如 `15476MiB / 81920MiB`)。 - **`GPU-Util`**:GPU 计算核心利用率(如 `30%`)。 - **`Compute M.`**:计算模式(`Default` 允许多进程共享 GPU)。 --- #### **3. 进程信息** ```plaintext | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 12345 C python 15476MiB | ``` - **`PID`**:占用 GPU 的进程 ID。 - **`Type`**:进程类型(`C`=计算任务,`G`=图形任务)。 - **`Process name`**:进程名称(如 `python`)。 - **`GPU Memory Usage`**:进程占用的显存。 --- ### **常见问题排查** - **输出刷新缓慢**: - 开启持久模式:`sudo nvidia-smi -pm 1`[^4]。 - 检查 GPU 健康状况(ECC 错误激增可能预示硬件故障)[^4]。 - **动态监控**: - 每秒刷新:`watch -n 1 nvidia-smi`[^2]。 - 指定 GPU 监控:`nvidia-smi -i 0 -l 1`(监控 GPU 0,每秒刷新)[^3]。 > 提示:完整参数可通过 `nvidia-smi --help` 查看[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值