実践ガイド・10分で読了

# 70Bモデルを1枚のカードでファインチューニングする。

QLoRAは、ラック1台分を必要としていた学習ジョブを、48 GB GPU1枚で済むものに変えます。ここでは、何が収まるか、1か月でいくらかかるか、そしてこの技術がどこで通用しなくなるかを示します。

簡潔な答え

- **70BでのQLoRA:** 約61GB—シーケンス長が短ければ48GBカード1枚に収まり、80GBカードなら余裕を持って収まります
- **70Bのフルファインチューニング:** 約1,232GB—複数ノードにまたがるクラスターで、当社では貸し出していません
- **その比率:** 多くのタスクで品質のほとんどに到達できる技術でありながら、メモリはおよそ**20×**少なく済みます
- **ここでの費用:** $286/月から。カードは1回の実行のためだけでなく、月全体を通じて専有できます。

## 実際に収まるもの

LoRAはモデルを凍結し、各重み行列の脇に小さな低ランク行列の対を学習させます。QLoRAはさらに踏み込み、凍結された重みを4ビットで保持します。その結果、メモリに保持しておくべきものが根本的に変わります。

凍結された重み パラメータあたり4ビット 70Bモデルで35 GB。すべてのステップで読み込まれますが更新されることはなく、そのため勾配も不要です。

アダプター パラメータの約1–2% BF16で1〜2ギガバイト程度。変化するのはこの重みだけであり、最終的に手元に残るのもこれだけです。

オプティマイザ状態 Adam（アダプターのみに適用） 学習対象パラメータ1つにつき2つのモーメント。フルファインチューニングを支配する項であり、ここではほぼ消えます。

アクティベーション 可変の部分 バッチサイズとシーケンス長に比例して増えます。勾配チェックポイントは、計算量をおよそ30%増やす代わりに大幅な削減をもたらします。実行が収まらないときに使う定番の手段です。

## フルファインチューニングでは効かない理由

BF16でのフルファインチューニングは、パラメータあたり約16バイトを必要とします。重みに2バイト、その勾配に2バイト、FP32でのAdamの二つのモーメントに8バイト、それにマスターコピー分です。これは固定の倍率であり、容赦がありません。

**学習メモリ、QLoRAとフルファインチューニングの比較**

| モデル | QLoRA | フルファインチューニング | 比率 | その意味するところ |
|---|---|---|---|---|
| Llama 3.1 8B 8Bパラメータ | 13 GB | 141 GB | 11× | 24 GBカード1枚 フル: 8GPUノード |
| Gemma 3 27B 27Bパラメータ | 27 GB | 475 GB | 17× | 48 GBカード1枚 フル: 8GPUノード |
| Qwen 3 32B 32Bパラメータ | 31 GB | 563 GB | 18× | 48 GBカード1枚 フル: 8GPUノード |
| Llama 3.3 70B 70Bパラメータ | 61 GB | 1,232 GB | 20× | 80 GBカード1枚 フル: 2ノード以上 |

これらはアクティベーション分をやや多めに見込んだ、桁数レベルの概算値です。マシンを選ぶには十分ですが、特定の実行を保証するものではありません。シーケンス長とバッチサイズはQLoRAの列を大きく動かしますが、フルファインチューニングの列はほとんど動きません。固定の「パラメータあたり16バイト」が支配的だからです。

## モデルごと

各モデルをQLoRAで学習できる、カタログ内の最安ノードと、その結果を推論するのに必要なマシンです。

**QLoRA学習と、その結果の推論に使う最安ノード**

| モデル | 学習メモリ | 学習に使う最安ノード | 推論に使う最安ノード |
|---|---|---|---|
| Llama 3.1 8B | 13 GB | [NVIDIA L4](https://gpuserver.io/ja/gpu/nvidia-l4) カードあたり24GB·$125/月 | [NVIDIA L4](https://gpuserver.io/ja/gpu/nvidia-l4) $125/月 |
| Mistral Small 24B | 25 GB | [NVIDIA RTX A6000](https://gpuserver.io/ja/gpu/rtx-a6000) カードあたり48GB·$286/月 | [NVIDIA L4](https://gpuserver.io/ja/gpu/nvidia-l4) $125/月 |
| Gemma 3 27B | 27 GB | [NVIDIA RTX A6000](https://gpuserver.io/ja/gpu/rtx-a6000) カードあたり48GB·$286/月 | [NVIDIA L4](https://gpuserver.io/ja/gpu/nvidia-l4) $125/月 |
| Qwen 3 32B | 31 GB | [NVIDIA RTX A6000](https://gpuserver.io/ja/gpu/rtx-a6000) カードあたり48GB·$286/月 | [NVIDIA L4](https://gpuserver.io/ja/gpu/nvidia-l4) $125/月 |
| Llama 3.3 70B | 61 GB | [NVIDIA A100 PCIe](https://gpuserver.io/ja/gpu/a100-80gb) カードあたり80GB·$1,091/月 | [2 × NVIDIA L4](https://gpuserver.io/ja/gpu/nvidia-l4) $285/月 |

学習に必要なのはメモリですが、推論に必要なのはメモリ*と*帯域幅です。学習に向いたカードは安価で大容量メモリのもの、推論に向いたカードは高価で高速なものになりがちです。ここではどちらも月額制のため、一台で妥協するより、別々のマシンで動かすほうが安く済むこともよくあります。

## 実行する

Axolotlはコンフィギュレーターのイメージの一つとしてプリインストールされています。これは、まっさらなマシンから始める、単体カードでの一連の実行例です。

1枚のカードで行うQLoRA

```
$ mkdir -p /scratch/ft && cd /scratch/ft
$ cat > qlora.yml <<'YAML'
base_model: meta-llama/Llama-3.3-70B-Instruct
load_in_4bit: true
adapter: qlora
lora_r: 16
lora_alpha: 32
lora_dropout: 0.05
lora_target_linear: true

sequence_len: 2048
sample_packing: true
gradient_checkpointing: true
micro_batch_size: 1
gradient_accumulation_steps: 16
num_epochs: 2
learning_rate: 0.0001
optimizer: paged_adamw_8bit
bf16: true

datasets:
  - path: /scratch/ft/data.jsonl
    type: chat_template
output_dir: /scratch/ft/out
YAML

$ docker run --rm --gpus all --ipc=host --shm-size=16g \
    -v /scratch/ft:/workspace -v /scratch/models:/root/.cache/huggingface \
    -e HF_TOKEN="$HF_TOKEN" \
    axolotlai/axolotl:main-latest \
    axolotl train /workspace/qlora.yml
```

最初の2分間は、ロスではなくメモリを見てください。

```
$ nvidia-smi dmon -s um

# If memory sits just under the card's total, you are one long batch
# away from an out-of-memory error four hours into the run.
# Lower sequence_len or micro_batch_size now, not then.
```

## 重要な設定

lora_r 16〜64 ランクです。品質とメモリのトレードオフを調整する主なつまみでもあります。16が妥当なデフォルト値で、フォーマットやスタイルではなく本当に新しい知識を教え込むのでない限り、64を超えても割に合うことはほとんどありません。

lora_target_linear true アテンションだけでなく、すべての線形層に適応します。コストはわずかで、アテンションのみのデフォルト設定を常に上回ります。

sequence_len メモリを左右する最大の要因 アクティベーションはこれに比例して増減します。半分にすれば、メモリの可変部分もおおよそ半分になります。モデルの最大値ではなく、実際のデータの長さに合わせて設定してください。

gradient_checkpointing ほぼ常にtrue 約30%遅くなりますが、これがあるからこそ70Bの実行が1枚のカードに収まります。オフにするのはメモリに余裕があるときだけにしてください。

micro_batch_size & 勾配累積 トレードオフの関係 実効バッチサイズはこの二つの積です。マイクロバッチは1のままにし、メモリが厳しいときは積算のステップ数を増やしてください。勾配は同じままメモリのピークが下がり、少しだけ遅くなります。

オプティマイザ paged_adamw_8bit セーフティバルブとしてCPUページングを備えた8ビットのオプティマイザ状態です。これがなければ4時間目で実行を止めてしまうようなスパイクを吸収します。

## 1か月の費用

月極めが推論よりも学習で重要になる理由は、ファインチューニングのプロジェクトが1回の実行では終わらないからです。データのバグで失敗する最初の実行があり、過学習する2回目があり、うまくいく3回目があり、さらに異なるランクで5回以上の実行が続きます。

**ファインチューニングプロジェクトのコスト（マシン別）**

| マシン | カードメモリ | 月額 | 向いているケース |
|---|---|---|---|
| [NVIDIA L4](https://gpuserver.io/ja/gpu/nvidia-l4) 300 GB/s | 24 GB | $125/月 | 8BまでのQLoRA |
| [NVIDIA RTX 5090](https://gpuserver.io/ja/gpu/rtx-5090) 1,792 GB/s | 32 GB | $335/月 | 32BまでのQLoRA |
| [NVIDIA A100 PCIe](https://gpuserver.io/ja/gpu/a100-40gb) 1,555 GB/s | 40 GB | $392/月 | 32BまでのQLoRA |
| [NVIDIA RTX A6000](https://gpuserver.io/ja/gpu/rtx-a6000) 768 GB/s | 48 GB | $286/月 | 32BまでのQLoRA |
| [NVIDIA A100 PCIe](https://gpuserver.io/ja/gpu/a100-80gb) 1,935 GB/s | 80 GB | $1,091/月 | 70BまでのQLoRA |

これを、1回の実行ではなくプロジェクト全体にわたる時間課金と比べてみてください。計算そのものは[損益分岐点のガイド](https://gpuserver.io/ja/guides/monthly-vs-hourly)にまとめています。試行錯誤しながら3週間存在し続けるマシンこそ、まさに従量課金が定額契約より高くつくケースです。

## LoRAが効かなくなるところ

これは非常に優れた技術であると同時に、明確な限界を持っており、何かを借りる前に自分がその限界のどちら側にいるのかを知っておく価値があります。

**まったく新しい領域を教え込むこと。**LoRAは振る舞いの適応には向いていますが、知識の追加は苦手です。あなたの分野を一度も見たことのないモデルは、低ランクアダプターからそれを学ぶことはありません。

**語彙やトークナイザーを変更すること。**新しいトークンには埋め込みの学習が必要であり、これはアダプターが触れる範囲の外にあります。

**数十億トークン規模の継続事前学習を行うこと。**それはフルファインチューニングにあたり、上の表の右側の列にあるマシンが必要になります。それは1ノードを超え、私たちが貸し出す範囲を超えます。

**ベンチマークの最後の数ポイントを絞り出すこと。**その僅差では、フルファインチューニングが依然として勝ります。その僅差のために報酬を得ているのであれば、LoRAは適したツールではありません。

それ以外のあらゆる場合、たとえばトーン、フォーマット、スキーマ、ベースモデルがすでに半分知っている領域であれば、単体カードでのQLoRAは、はるかに小さなマシンで品質のほとんどに到達します。それがトレードオフであり、実際に多くの人がファインチューニングしているモデルにおいては、良いトレードオフです。

## カードを選んだら、プロジェクトの間ずっとそれを使い続けてください。

すべての構成は月極めで、rootアクセスがあり、従量課金もありません。これこそ、ファインチューニングを試行錯誤する上で本当に必要なものです。

[カタログを見る](https://gpuserver.io/ja/#catalog) [ガイドを読む](https://gpuserver.io/ja/guides)

## その他のガイド

- [支払い · 8分 サーバー代金を暗号資産で支払う 支払いをクリックしてからrootを取得するまでに実際に起こること、どのコインを選ぶべきか、そして初回の支払いで損をする4つの間違い。 ガイドを読む](https://gpuserver.io/ja/guides/pay-in-crypto)
- [サイジング · 9分 モデルが実際に必要とするVRAM容量 「モデルが収まるか」を決める計算の中身：重み、KVキャッシュ、そして経験則が3倍もずれてしまう2つの落とし穴を解説します。 ガイドを読む](https://gpuserver.io/ja/guides/vram-sizing)
- [サイジング · 7分 NVLinkかPCIeか：ジョブに必要なのはどちらか カード間の接続がスループットを左右する場合、まったく影響しない場合、そして間違ったノードに支払う前にどちらの状況かを見分ける方法。 ガイドを読む](https://gpuserver.io/ja/guides/nvlink-vs-pcie)

---

出典: https://gpuserver.io/ja/guides/lora-finetune/。このファイルはウェブサイトと同じデータから生成されています。ここに記載された数値がページの内容と異なる場合、ページの内容が正となり、このファイルは古い情報です。正式な出典はhttps://gpuserver.io/です。
