全6のデータセンターが正常稼働中

暗号資産で支払い · 本人確認不要 · 5分未満でrootアクセス

実践ガイド・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 8B8Bパラメータ 13 GB 141 GB 11× 24 GBカード1枚 フル: 8GPUノード
Gemma 3 27B27Bパラメータ 27 GB 475 GB 17× 48 GBカード1枚 フル: 8GPUノード
Qwen 3 32B32Bパラメータ 31 GB 563 GB 18× 48 GBカード1枚 フル: 8GPUノード
Llama 3.3 70B70Bパラメータ 61 GB 1,232 GB 20× 80 GBカード1枚 フル: 2ノード以上

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

モデルごと

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

QLoRA学習と、その結果の推論に使う最安ノード
モデル学習メモリ学習に使う最安ノード推論に使う最安ノード
Llama 3.1 8B 13 GB NVIDIA L4カードあたり24GB·$125/月 NVIDIA L4$125/月
Mistral Small 24B 25 GB NVIDIA RTX A6000カードあたり48GB·$286/月 NVIDIA L4$125/月
Gemma 3 27B 27 GB NVIDIA RTX A6000カードあたり48GB·$286/月 NVIDIA L4$125/月
Qwen 3 32B 31 GB NVIDIA RTX A6000カードあたり48GB·$286/月 NVIDIA L4$125/月
Llama 3.3 70B 61 GB NVIDIA A100 PCIeカードあたり80GB·$1,091/月 2 × 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_r16〜64ランクです。品質とメモリのトレードオフを調整する主なつまみでもあります。16が妥当なデフォルト値で、フォーマットやスタイルではなく本当に新しい知識を教え込むのでない限り、64を超えても割に合うことはほとんどありません。
lora_target_lineartrueアテンションだけでなく、すべての線形層に適応します。コストはわずかで、アテンションのみのデフォルト設定を常に上回ります。
sequence_lenメモリを左右する最大の要因アクティベーションはこれに比例して増減します。半分にすれば、メモリの可変部分もおおよそ半分になります。モデルの最大値ではなく、実際のデータの長さに合わせて設定してください。
gradient_checkpointingほぼ常にtrue約30%遅くなりますが、これがあるからこそ70Bの実行が1枚のカードに収まります。オフにするのはメモリに余裕があるときだけにしてください。
micro_batch_size & 勾配累積トレードオフの関係実効バッチサイズはこの二つの積です。マイクロバッチは1のままにし、メモリが厳しいときは積算のステップ数を増やしてください。勾配は同じままメモリのピークが下がり、少しだけ遅くなります。
オプティマイザpaged_adamw_8bitセーフティバルブとしてCPUページングを備えた8ビットのオプティマイザ状態です。これがなければ4時間目で実行を止めてしまうようなスパイクを吸収します。

1か月の費用

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

ファインチューニングプロジェクトのコスト(マシン別)
マシンカードメモリ月額向いているケース
NVIDIA L4300 GB/s 24 GB $125/月 8BまでのQLoRA
NVIDIA RTX 50901,792 GB/s 32 GB $335/月 32BまでのQLoRA
NVIDIA A100 PCIe1,555 GB/s 40 GB $392/月 32BまでのQLoRA
NVIDIA RTX A6000768 GB/s 48 GB $286/月 32BまでのQLoRA
NVIDIA A100 PCIe1,935 GB/s 80 GB $1,091/月 70BまでのQLoRA

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

LoRAが効かなくなるところ

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

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

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

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

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

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

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

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

ログイン

コンソール、請求書、アウトオブバンドアクセス。

アカウントをお持ちでないですか?

個別のサインアップはありません。最初の注文を行う際にアカウントが作成されます。支払いのステップでメールアドレスとパスワードを選択していただき、マシンの用意ができる頃にはコンソールも利用可能になっています。

サーバーを設定

Language