当前位置: 首页 > news >正文

当我们想用GPU(nlp模型篇)

在个人设备上“把 GPU 真正用起来”做 NLP,分五步:准备 → 安装 → 验证 → 训练/推理 → 踩坑排查。下面每一步都给出可复制命令和常见错误。

──────────────────

1. 硬件准备

• 一张 NVIDIA GPU,算力 ≥ 6.1(GTX 1660 Ti/RTX 2060 及以上)。

• 显存 ≥ 6 GB(7B 模型 LoRA 微调够用)。

• PCIe 供电充足,电源 ≥ 500 W。

──────────────────

2. 驱动 & CUDA 一键装

Ubuntu 20.04 为例(Win11 直接在官网下 EXE 即可):

sudo apt update && sudo apt install -y nvidia-driver-535
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/12.3.0/local_installers/ ubuntu2004 main"
sudo apt install -y cuda-12-3

重启后执行 nvidia-smi,能看到 GPU 型号即 OK。

──────────────────

3. Conda + PyTorch GPU 版

conda create -n nlp python=3.10 -y
conda activate nlp
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

验证:

import torch
print(torch.cuda.is_available(), torch.cuda.get_device_name(0))

输出 True 和显卡型号即可。

──────────────────

4. 训练脚本里显式用 GPU

示例:用 transformers + LoRA 微调 7B 模型

from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
from peft import LoraConfig, get_peft_modelmodel_name = "baichuan-inc/Baichuan2-7B"
model = AutoModelForCausalLM.from_pretrained(model_name,torch_dtype="auto",device_map="auto"        # 自动分到 GPU
)
lora_config = LoraConfig(task_type="CAUSAL_LM", r=8, lora_alpha=32)
model = get_peft_model(model, lora_config)args = TrainingArguments(output_dir="out",per_device_train_batch_size=1,gradient_accumulation_steps=16,fp16=True,                # 混合精度dataloader_pin_memory=True,logging_steps=10
)
trainer = Trainer(model=model, args=args, train_dataset=dataset)
trainer.train()

关键参数

device_map="auto" 自动把不同层放到 GPU / CPU / 磁盘。

fp16=Truebf16=True 可省 40% 显存。

gradient_checkpointing=True 再省 20% 显存,速度略慢。

──────────────────

5. 推理显存最小化

• 仅推理:

from transformers import pipeline
pipe = pipeline("text-classification", model="IDEA-CCNL/Erlangshen-Mini", device=0)  # device=0 强制 GPU

• 量化示例(4-bit):

from transformers import BitsAndBytesConfig
bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype=torch.float16)
model = AutoModelForCausalLM.from_pretrained(model_name, quantization_config=bnb)

显存占用从 14 GB 降到 6 GB。

──────────────────

6. 常见报错速查

报错 原因 解决
CUDA out of memory batch 过大 降 batch / 开 gradient checkpointing
cuDNN version mismatch 驱动与 PyTorch 不匹配 conda install cudatoolkit=11.8 与驱动对应
NCCL error 多卡通讯 单机单卡可 CUDA_VISIBLE_DEVICES=0 规避

──────────────────

7. 一键脚本(保存即用)

setup_gpu.sh

#!/bin/bash
conda create -n nlp python=3.10 -y
conda activate nlp
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install transformers datasets accelerate peft bitsandbytes
python -c "import torch; print('GPU OK:', torch.cuda.is_available())"

执行 bash setup_gpu.sh,30 秒后可直接跑 GPU 训练。

http://www.dtcms.com/a/345156.html

相关文章:

  • MySQL诊断系列(6/6):系统监控——实时掌握数据库“生命体征”
  • 【jar包启动,每天生成一个日志文件】
  • 本地 Graph-RAG(图 + RAG) 部署与使用落地方案
  • Unreal Engine AActor
  • 机器学习--线性回归
  • K8S - NetworkPolicy的使用
  • Spring发布订阅模式详解
  • 国产CANFD芯片技术特性与应用前景综述:以ASM1042系列为例
  • 宝可梦:去吧皮卡丘/去吧伊布 PC/手机双端(Pokemon-Lets Go Pikachu)免安装中文版
  • MeterSphere接口自动化共享cookie
  • 开发避坑指南(33):Mybatisplus QueryWrapper 自定义查询语句防注入解决方案
  • 【Cmake】Cmake概览
  • C2039 “unref“:不是“osgEarth::Symbology::Style”的成员 问题分析及解决方法
  • 【RA-Eco-RA4E2-64PIN-V1.0 开发板】步进电机驱动
  • 育教大师广州专插本培训机构指南
  • STM32项目分享:基于STM32的焊接工位智能排烟系统
  • 视频编码异常的表现
  • 【Linux系列】Linux 中替换文件中的字符串
  • 基于SpringBoot的考研学习交流平台【2026最新】
  • Nginx 创建和配置虚拟主机
  • 掌握设计模式--命令模式
  • 全面解析 `strchr` 字符串查找函数
  • Java面试宝典:Redis底层原理(持久化+分布式锁)
  • 智慧农业新基建:边缘计算网关在精准农业中的落地实践案例
  • C#_高性能内存处理:Span<T>, Memory<T>, ArrayPool
  • const(常量)
  • Android.bp 基础
  • 安全帽检测算法如何提升工地安全管理效率
  • AI 向量库:从文本到数据的奇妙之旅​
  • 编排之神--Kubernetes中包管理Helm工具详解