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

Unsloth ガイド: AMD GPU での LLM ファインチューニング

Unsloth を使って AMD GPU で大規模言語モデル(LLM)をファインチューニングする方法を学びます。

AMD ハードウェア上で、NVIDIA 不要、メモリ使用量を約70%削減しつつ、LLM を最大 2 倍高速にファインチューニングできます。Unsloth は AMD Radeon RDNA 2/3/3.5/4(RX 6000〜9000 シリーズ)と、MI300X(192GB)を含むデータセンター向け GPU をサポートしています。

1

ワンラインインストーラー

最も簡単なインストール: 以下の手順をすべてスキップして、ワンラインインストーラーを使ってください。AMD GPU を自動検出し、ROCm 最適化版 PyTorch と bitsandbytes をインストールして、Unsloth Studio を起動します:

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

以下の手動手順は、Studio なしで Python ライブラリのみをインストールしたいユーザー向けです。

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 以降を取得しないためのものです。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 decode の NaN バグがあります。注意: この手順では 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)として扱わせます。これがないと、一部のカーネルがコンパイルまたは実行に失敗することがあります。

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 ゲームに勝つための平均報酬を最大化することです。

Unsloth を使って 2048 の RL 例を実行するために AMD MI300X マシン(192GB)を使用しましたが、うまく動作しました!

また、私たちの 📒自動カーネル生成 RL ノートブック も gpt-oss で使って、Python で行列乗算カーネルを自動生成できます。このノートブックには、報酬ハッキングを防ぐための複数の手法も用意されています。

これらのカーネルを自動生成するために使ったプロンプトは次のとおりです:

RL プロセスは、たとえば Python 内でより高速な行列乗算のために Strassen アルゴリズムを適用する方法を学習します。

📚AMD 無料ワンクリックノートブック

AMD は、以下を備えたワンクリックノートブックを提供しています 無料の 192GB VRAM 搭載 MI300X GPU を Dev Cloud 経由で利用できます。サインアップやクレジットカード不要で、大規模モデルを完全無料で学習できます:

任意の Unsloth ノートブックは、先頭に https://amd-ai-academy.com/github/unslothai/notebooks/blob/main/nb を付けることで Unsloth ノートブック にあるリンクを 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

最終更新

役に立ちましたか?