AMD 显卡 (ROCm 环境)** 打造的大模型量化微调 **SOP(标准作业程序)操作手册*

0 阅读3分钟

这是一份专为 AMD 显卡 (ROCm 环境) 打造的大模型量化微调 SOP(标准作业程序)操作手册。它完整记录了你从零开始,直到成功跑通第一个大模型 QAT 训练的全部实战步骤,方便你日后独立操作时随时查阅。


📑 大模型量化微调标准作业程序 (SOP)

环境基准:Linux 容器环境 + AMD GPU (ROCm) + Qwen1.5-1.8B-Chat 模型


第一阶段:编译与构建底层量化环境

步骤 1:编译安装 ROCm 版 bitsandbytes

目的:为实验 2 (QLoRA) 提供 AMD 显卡底层 4-bit/8-bit 算子支持。

  1. 克隆官方源码仓库(包含子模块):

    bash

    git clone --recurse-submodules https://github.com
    

    请谨慎使用此类代码。

  2. 进入源码目录并清理旧缓存:

    bash

    cd bitsandbytes && rm -rf build
    

    请谨慎使用此类代码。

  3. 使用 CMake 配置编译参数(关键:需根据实际显卡架构修改 BNB_ROCM_ARCH,如 gfx928):

    bash

    cmake -DCOMPUTE_BACKEND=hip -DBNB_ROCM_ARCH="gfx928" -S .
    

    请谨慎使用此类代码。

  4. 多核并行编译并安装到 Python 环境中:

    bash

    make -j$(nproc) && pip install .
    

    请谨慎使用此类代码。

步骤 2:安装量化感知训练 (QAT) 依赖

目的:为实验 1 (QAT) 引入模拟量化与节点插入能力。

  1. 退回主工作目录(如 /ai/test):

    bash

    cd ..
    

    请谨慎使用此类代码。

  2. 一键安装 Intel 神经网络压缩器及核心生态库:

    bash

    pip install neural-compressor transformers torch accelerate datasets
    

    请谨慎使用此类代码。


第二阶段:基础模型资产获取

步骤 3:国内加速下载开源大模型

目的:利用魔搭社区 (ModelScope) 极其稳定的国内带宽,将千问大模型拉取到本地平级目录中。

  1. 安装 ModelScope 命令行工具:

    bash

    pip install modelscope
    

    请谨慎使用此类代码。

  2. 执行 Python 一行命令,将模型精准下载到当前工作目录(./)下:

    bash

    python -c "from modelscope import snapshot_download; snapshot_download('qwen/Qwen1.5-1.8B-Chat', cache_dir='./models', local_dir='Qwen1.5-1.8B-Chat')"
    

    请谨慎使用此类代码。


第三阶段:源码排雷与安全训练

步骤 4:代码排雷(防止训练 PPL 溢出闪退)

目的:解决小样本训练时,因损失值较高导致 math.exp(avg) 触发 OverflowError 崩溃的问题。

  1. 在工作目录下双击打开 ex1_qat_train.py。

  2. 找到计算困惑度(PPL)的代码块,将原有的单行代码删除,替换为带有异常捕获的安全代码结构:

    python

    # ==== 替换前 (直接运行会崩溃) ====
    # ppl = math.exp(avg) if avg < 20 else float("inf")
    
    # ==== 替换后 (安全自适应结构) ====
    try:
        ppl = math.exp(avg) if avg < 20 else float("inf")
    except OverflowError:
        ppl = float("inf")
    

    请谨慎使用此类代码。

  3. 按下 Ctrl + S 保存文件。

步骤 5:启动实验 1 (QAT 量化感知训练)

目的:正式启动模型,将原生线性层(Linear)替换为自定义的量化线性层(QLinear),完成 5 条核心知识点的微调注入。

  1. 在终端内执行无错版安全启动命令(通过手动将 --log_every 放大,彻底绕过潜在的溢出风险点):

    bash

    python ex1_qat_train.py \
      --model_path "./Qwen1.5-1.8B-Chat" \
      --output_dir "./Qwen1.5-1.8B-Chat-QAT-demo" \
      --epochs 1 \
      --lr 2e-5 \
      --batch_size 1 \
      --log_every 100
    

    请谨慎使用此类代码。

  2. 预期输出:终端将依次打印模型显存占用(约 6.84GB)、🔧 注入伪量化层、✅ 训练完成,并在最下方测试生成对 QAT 和 AWQ 知识点的回答,最终完美保存模型资产。


🔮 进阶防丢指南(独立开发避坑金句)

  • 资产隔离:下次自己在云平台(如 AutoDL)开机时,务必将整个 test 目录创建在平台提供的持久化数据盘(如 /root/autodl-tmp)中。这样即使机器到期自动释放,你的代码和下载好的千问模型也不会丢失!
  • 断网无忧:微调大模型耗时较长时,记得在终端先敲 tmux 开启后台虚拟窗口,再运行微调命令。即使关掉浏览器,训练依然会在云端悄悄运行。