For the complete documentation index, see llms.txt. This page is also available as Markdown.

使用 Unsloth 在 AMD GPU 上微调 LLM 指南

了解如何使用 Unsloth 在 AMD GPU 上微调大型语言模型(LLM)。

在 AMD 硬件上微调 LLM,速度最高快 2 倍,显存占用减少约 70%,无需 NVIDIA。Unsloth 支持 AMD Radeon RDNA 2/3/3.5/4(RX 6000–9000 系列)以及数据中心 GPU,包括 MI300X(192GB)。

1

一行安装程序

最简单的安装: 使用一行安装程序即可跳过下面所有步骤,它会自动检测你的 AMD GPU,安装针对 ROCm 优化的 PyTorch、bitsandbytes,并启动 Unsloth Studio:

curl -fsSL https://unsloth.ai/install.sh | sh

下面的手动步骤适用于只想安装 Python 库、不使用 Studio 的用户。

2

创建新的隔离环境(可选)

为了不破坏任何系统包,你可以创建一个隔离的 pip 环境。记得检查你使用的 Python 版本!它可能是 pip3, pip3.13, python3, python.3.13 等等。

apt update && apt install python3.10-venv python3.11-venv python3.12-venv python3.13-venv -y

python3 -m venv unsloth_env
source unsloth_env/bin/activate
pip install uv
3

安装 PyTorch

从以下地址安装支持 ROCm 的 PyTorch: https://pytorch.org/ 通过 `amd-smi --version` 检查你的 ROCm 版本,然后将 https://download.pytorch.org/whl/rocm7.1 修改为匹配你的版本。 需要 ROCm 6.0 或更新版本。 ROCm 5.x 及以下没有 PyTorch wheel 包。

uv pip install "torch>=2.4,<2.11.0" "torchvision<0.26.0" "torchaudio<2.11.0" \
    --index-url https://download.pytorch.org/whl/rocm7.1 --upgrade --force-reinstall

版本上限可以防止意外拉取 torch 2.11+,因为它只提供 ROCm 7.2 的 wheel 包,会导致出错。像前面一样,将 rocm7.1 更新为与你检测到的版本相匹配。

如果有帮助,我们也编写了一个单行终端命令来提取正确的 ROCM 版本。

ROCM_TAG="$({ command -v amd-smi >/dev/null 2>&1 && amd-smi version 2>/dev/null | awk -F'ROCm version: ' 'NF>1{split($2,a,"."); print "rocm"a[1]"."a[2]; ok=1; exit} END{exit !ok}'; } || { [ -r /opt/rocm/.info/version ] && awk -F. '{print "rocm"$1"."$2; exit}' /opt/rocm/.info/version; } || { command -v hipconfig >/dev/null 2>&1 && hipconfig --version 2>/dev/null | awk -F': *' '/HIP version/{split($2,a,"."); print "rocm"a[1]"."a[2]; ok=1; exit} END{exit !ok}'; } || { command -v dpkg-query >/dev/null 2>&1 && ver="$(dpkg-query -W -f="${Version}\n" rocm-core 2>/dev/null)" && [ -n "$ver" ] && awk -F'[.-]' '{print "rocm"$1"."$2; exit}' <<<"$ver"; } || { command -v rpm >/dev/null 2>&1 && ver="$(rpm -q --qf '%{VERSION}\n' rocm-core 2>/dev/null)" && [ -n "$ver" ] && awk -F'[.-]' '{print "rocm"$1"."$2; exit}' <<<"$ver"; })"; [ -n "$ROCM_TAG" ] && uv pip install "torch>=2.4,<2.11.0" "torchvision<0.26.0" "torchaudio<2.11.0" --index-url "https://download.pytorch.org/whl/$ROCM_TAG" --upgrade --force-reinstall

注意:如果你的 ROCm 版本是 7.2 或更高,请将 $ROCM_TAG 在上面的命令中替换为 rocm7.1, 因为 7.2+ 目前还没有 PyTorch wheel 包。

4

安装 Unsloth

使用 AMD 附加组件安装 Unsloth:

uv pip install unsloth[amd]

⚠️ AMD 必需:安装与 ROCm 兼容的 bitsandbytes 所有 ROCm 系统都需要预发布版本的 bitsandbytes 构建,版本 ≤ 0.49.2 在所有 AMD GPU 上都有 4-bit 解码 NaN bug。注意:这一步请使用 pip 而不是 uv 来执行, uv 因为它会由于文件名中的版本不匹配而拒绝该预发布 wheel 包。

# x86_64 系统:
pip install --force-reinstall --no-cache-dir --no-deps \
    "https://github.com/bitsandbytes-foundation/bitsandbytes/releases/download/continuous-release_main/bitsandbytes-1.33.7.preview-py3-none-manylinux_2_24_x86_64.whl"

# aarch64 系统:将上面 URL 中的 x86_64 替换为 aarch64

# 如果 URL 无法访问,则回退:
# pip install --force-reinstall --no-cache-dir --no-deps "bitsandbytes>=0.49.1"
5

开始使用 Unsloth 进行微调吧!

就是这样。欢迎在我们的 Unsloth Notebooks 页面里试试一些示例!

你还可以查看我们专门的 微调强化学习 指南。下面也给出一个简短示例:

1. 设置环境变量

export HSA_OVERRIDE_GFX_VERSION=9.4.2  # AMD MI300X 所需
export HF_HUB_DISABLE_XET=1            # 修复 AMD 上的 HuggingFace 下载问题

注意: HSA_OVERRIDE_GFX_VERSION=9.4.2 告诉 ROCm 将你的 GPU 视为 gfx942(MI300X)。如果没有这个设置,某些 kernel 可能无法编译或运行。

2. 加载并配置模型

from unsloth import FastModel

model, tokenizer = FastModel.from_pretrained(
    model_name = "unsloth/gemma-4-26b-a4b-it",
    max_seq_length = 2048,
    load_in_4bit = True,
)

model = FastModel.get_peft_model(
    model,
    r = 16,
    lora_alpha = 16,
    target_modules = ["q_proj", "k_proj", "v_proj", "o_proj"],
)

3. 训练

from trl import SFTTrainer, SFTConfig

trainer = SFTTrainer(
    model = model,
    tokenizer = tokenizer,
    train_dataset = dataset,
    formatting_func = formatting_func,
    args = SFTConfig(
        per_device_train_batch_size = 1,
        gradient_accumulation_steps = 4,
        max_steps = 60,
        output_dir = "outputs",
        report_to = "none",
    ),
)

trainer_stats = trainer.train()

注意: 在 AMD GPU 上,Flash Attention 2 不可用。Unsloth 会自动回退到 Xformers,它在 ROCm 上提供等效性能。这个警告可以安全忽略。

🔢 AMD GPU 上的强化学习

你可以使用我们的 📒gpt-oss RL auto win 2048 在 MI300X(192GB)GPU 上的示例。目标是自动玩 2048 游戏,并通过 RL 赢得它。LLM(gpt-oss 20b)会自动制定赢得 2048 游戏的策略,我们会对获胜策略计算高奖励,对失败策略计算低奖励。

大约 300 步左右后,奖励随时间在增加!

RL 的目标是最大化平均奖励,以赢得 2048 游戏。

我们使用一台 AMD MI300X 机器(192GB)运行了 2048 RL 示例,并且效果很好!

你还可以使用我们的 📒automatic kernel gen RL notebook 也可配合 gpt-oss 自动在 Python 中创建矩阵乘法 kernel。该 notebook 还设计了多种方法来对抗 reward hacking。

我们用于自动创建这些 kernel 的提示词是:

例如,RL 过程会学习如何在 Python 中应用 Strassen 算法来更快地进行矩阵乘法。

📚AMD 免费一键笔记本

AMD 提供配备以下资源的一键笔记本: 免费的 192GB 显存 MI300X GPU 通过他们的 Dev Cloud 提供。可完全免费训练大型模型(无需注册或信用卡):

你可以通过在前面添加 https://amd-ai-academy.com/github/unslothai/notebooks/blob/main/nbUnsloth 笔记本 并将链接从 https://github.com/unslothai/notebooks/blob/main/nb/AMD-gpt_oss_(20B)_Reinforcement_Learning_2048_Game_BF16.ipynb 改为 https://amd-ai-academy.com/github/unslothai/notebooks/blob/main/nb/AMD-Gemma4_(E2B)_Reinforcement_Learning_Sudoku_Game.ipynb

最后更新于

这有帮助吗?