LoRA からフルパラメータ微調整へ移行する前の 3 つの検証テスト
本文の状態
日本語全文を表示中
詳細モードで約32分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
Fireworks AI Blog
Fireworks AI は Qwen3.5-9B を用いた実験を通じて、LoRA の性能不足が必ずしもアダプタ自体の欠陥ではなく、データカバレッジや最適化手法、ランク設定に起因する可能性を示し、FullFT 移行前の検証手順を提案した。
Continue in AI NEW LAB
このニュースを、実務の判断につなげる
AI NEW LABで、試したことや先に確認したい条件を共有できます。まずはログインなしで読めます。
AI NEW LABで論点を見るAI深層分析を開く2026年8月8日 01:10
AI深層分析
キーポイント
LoRA 性能不全の原因特定
Fireworks AI の実験では、LoRA が期待通りの結果を出さない場合、アダプタ自体の問題ではなくデータカバレッジや最適化レシピの不足が原因である可能性が高いことが示された。
FullFT 移行の判断基準
広範な目標や本質的に新規なターゲットに対しては、LoRA よりも Full Parameter Fine-Tuning (FullFT) の方が有効であるという判断基準が再確認された。
コスト対効果の検証プロセス
より高価な FullFT を実行する前に、データ品質、トレーニングレシピ、およびランク調整によって性能差を埋められるかどうかを確認すべきであるとする具体的な手順が提示された。
LoRAとFullFTの性能差を検証する3つの仮説
LoRAがFullFTより劣る場合、データのカバレッジ不足、最適化設定の不備、またはアダプタ容量の限界のいずれかが原因である可能性を検討する。
自動検証可能な合成タスクを用いた実験
チップ設計やコンパイラ分野由来の3つの合成タスクを用意し、人間による評価を介さずに厳密なプログラムチェックで両手法を比較した。
重要な引用
If training with LoRA isn't producing the results you were expecting, the adapter itself may not be the problem.
Before you reach for that more expensive FullFT, you should know that in our experiments when a FullFT beat a simple LoRA run, it was hard to tell whether the adapter simply needed better data, a better training recipe, more rank to close the gap.
An intervention shows which change helped under the tested conditions. It does not prove that the lever was the only cause or rule out other contributing factors.
That matters because a model can reach nearly zero training loss and still fail when one wrong decision invalidates the whole answer.
編集コメントを表示
編集コメント
LoRA の限界を論じる際、単に「設定が悪い」と断じるのではなく、データカバレッジやランクといった具体的な技術要素に焦点を当てた分析は非常に示唆に富む。開発現場ではコストと性能のバランスが常に課題となるため、この検証フレームワークは実務において即座に活用できる価値がある。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
LoRA でのトレーニングが期待通りの結果をもたらさない場合、アダプター自体に問題があるとは限りません。Qwen3.5-9B を用いた制御実験では、データのカバレッジ、最適化手法、ランク(rank)の調整が、フルパラメータファインチューニング(FullFT)との品質格差をどのように生み出し、あるいは埋めるかを明らかにしました。
どのレバーを動かしたか?
実験内での変更点のみ。灰色のセルはテスト対象外でした。

以前の Kimi K3 の取り組み では、LoRA は高速で低コストかつ効果的であり、限定された目標に対しては十分な性能を発揮すると結論づけました。その際、「広範な範囲」や「真に新規な目標」を扱う場合は、FullFT のテストを検討すべきだと判断しました。
より高価な FullFT に手を出す前に知っておくべきことは、私たちの実験において LoRA を上回る結果を出したケースでも、それが単にアダプターにより良いデータが必要だったのか、トレーニングレシピの改善が求められたのか、それとも格差を埋めるためにランクを増やす必要があったのか、あるいはそもそも FullFT が最初から優れた手法だったのかを、明確に見分けることがいかに難しいかということです。
LoRA での実験
LoRA はベースモデルを凍結し、小さなアダプターのみをトレーニングします。一方、FullFT はすべてのモデル重み値を更新します。FullFT の方が性能が良い場合、アダプターが単に小さすぎるだけだと結論したくなるのは自然なことです。しかし私たちの実験では、その背後にある3つの可能性を探りました。
• カバレッジ不足: 学習データにタスクの多様性が十分反映されていなかった。対策:データを拡充し、再度評価を行う。
• 最適化の問題: 学習レシピ、特に学習率や各トレーニングステップのサイズ調整が不適切だった。対策:学習率とスケジューリングをスweep(探索)して調整する。
• アダプタ容量不足: LoRA アダプタのランクを上げる必要がある。つまり、より大きなアダプタが必要だ。対策:更新のスケーリングやレシピの他の部分は固定したままランクを上げ、有効性と品質が同時に向上するかを確認する。
これらの介入は、特定の条件下でどの変更が効果があったかを示すものであり、「その要因だけが原因だった」ことを証明したり、他の寄与因子を完全に否定するものではない。
テスト環境:Qwen3.5-9B
Qwen3.5-9B に対して教師あり微調整(SFT)を行い、LoRA と FullFT を比較した。各比較では、両手法とも同じプロンプト、ターゲット、評価コードを使用している。
自動チェック機能付きの合成タスクを 3 つ用意してテストを行った。各タスクにはユニットテストスイートに相当する仕組みが備わっており、人間の判定者なしで回答を採点できる。
• 配置(チップ設計から借用): 部品を直線上に並べ、配線長を最小化しつつ厳格な制約を守ります。1 つでも制約が違反されると回答は無効となります。
• レジスタ割り当て(コンパイラから借用): プログラム実行中に同時に使用される値が同じレジスタを共有しないように、プロセッサのレジスタを割り当てます。
• Nexa VM: 合成命令言語で記述されたプログラムを実行し、中間状態をすべて報告します。プログラムの「深さ」とは、そのプログラムに含まれる命令の数です。
これらのタスクを選んだのは、妥当性・解の質・正確な実行結果をプログラムによって自動検証できるからです。これは重要です。モデルが訓練損失をほぼゼロにまで下げても、1 つでも誤った判断を下せば回答全体が無効になる可能性があるためです。
先行研究との関連
Biderman ら(LoRA Learns Less and Forgets Less, 2024)は、コードや数学といった難易度の高いドメインでは LoRA が FullFT に劣る一方、ベースモデルの知識をより多く保持できると報告しました。Thinking Machines(LoRA Without Regret, 2025)は、適切に設定された LoRA はポストトレーニングの大部分で FullFT と同等のパフォーマンスを発揮し、最適な学習率は FullFT の約 10 倍程度であると報告しています。私たちの結果も同様の方向性を示しています:今回の実験における最良の LoRA 学習率 8e-5 は、Nexa での最良の FullFT 学習率 1e-6 よりもはるかに高い値でした。私たちが追加した点はより狭く、特定の FullFT の優位性が「カバレッジ」「最適化」、あるいは「アダプタの容量」のいずれに起因するかを検証するための、ギャップごとのプロトコルです。
配置:ランクテスト → データ被覆率 → 調整済み学習率
配置タスクでは、モデルはセルを直線上に並べながら総ワイヤー長さを最小化する必要があります。ハードバージョンでは、単一の禁止位置違反または分離違反が回答の無効化につながり、この「すべてかゼロか」の評価方法によって、LoRA と FullFT の間に明確な差があることが明らかになりました。まずランクをテストし、次にデータのカバレッジを確認しました。
| 配置カバレッジテスト | LoRA-r32 | LoRA-r128 | FullFT |
|---|---|---|---|
| 2k 行、元のシード | 34.33% | 31.67% | 57.00% |
| 2k 行、新しいデータとトレーニング用シード | 37.33% | 36.67% | 61.67% |
| 20k 行、デフォルトレシピ | 68.33% | 69.33% | 80.33% |
各ホールドアウトセットには 300 の例が含まれており、別途生成したデータセットとトレーニングシードを用いた再現実験で、ランク 32 とランク 128 の結果の差および FullFT のギャップの方向性が確認されました。両方のアダプターはサンプリングされたトレーニングプロンプトに対して 100% の妥当性を達成しましたが、ランクを大きくしてもホールドアウトデータでの一般化性能は向上しませんでした。
ここでいう妥当性(validity)とは、最終出力がタスクのチェッカーに合格することを指します。完全一致シーケンス(exact sequence)または完全一致トレース(exact trace)とは、参照回答に対してステップごとに完全に一致するものを意味します。
練習問題を完璧に解けたからといって、新しい試験に合格できるわけではありません。
同じ 6,000 ステップの計算予算の中で、ユニークなデータ量を約 10 倍に増やすと、LoRA の妥当性はほぼ 2 倍になり、FullFT とのギャップは半分になりました。一方、ランクを 4 倍にしても結果が 1 ポイントしか変わりませんでした。
データの被覆率(coverage)だけが全てではありません。一般的な評価セットでは、デフォルト設定のランク 32 の LoRA は妥当性 76.33%、FullFT は 83.00% を達成しました。データ量とトレーニング予算を固定したまま、LoRA のピーク学習率を引き上げました。
| 20k配置レシピ、共通スイート | 妥当性 |
|---|---|
| LoRA-r32, 2e-5 | 76.33% |
| LoRA-r128, 2e-5 | 74.00% |
| LoRA-r32, 8e-5 | 82.67% |
| LoRA-r128, 8e-5 | 82.00% |
| FullFT | 83.00% |
このサンプルサイズでは、微調整済みランク32のLoRAとFullFTを評価で区別することはできませんでした。0.33ポイントの差には95%信頼区間(-4.33〜+5.00ポイント)があり、これは両手法が同等であることを示す証拠ではありません。その後、選択されたランク32のレシピは未使用の最終テストスイートで81.67%を達成し、FullFTの80.33%を上回りました。
結論: アダプタが小さすぎたわけではありません。差が生じたのは学習データと学習率の違いによるものです。多様なデータを追加し、学習率を上げればこの差は埋まりました。アダプタを4倍に大きくしても結果の改善は1ポイントにとどまります。
レジスタ割り当て:ランクが結果を変えたケース
レジスタ割り当ては、干渉する仮想レジスタを異なる物理レジスタにマッピングする処理です。競合が1つでも発生すると、割り当ては無効となります。今回の主要な評価では400本の保持グラフ(held-out graphs)を使用しました。
配置の分析から、ランク(rank)が常に正解とは限らないことがわかります。ここでは、ランクの変更によって観測結果が変動した事例を示しています。
| 手法 | 有効なアロケーション | 参照レジスタ数と一致 | 正確な決定シーケンス |
|---|---|---|---|
| LoRA-r8 | 80.50% | 65.75% | 3.50% |
| LoRA-r32 | 82.50% | 69.00% | 6.00% |
| LoRA-r128 | 90.50% | 81.00% | 25.50% |
| FullFT | 93.00% | 83.75% | 35.50% |
ランクを 32 から 128 に引き上げることで、妥当性(validity)が 8 ポイント向上しました。これに伴い、解決策の質や完全なポリシー模倣も同様に改善されています。ランク 128 では、FullFT との間の運用上のギャップのほとんどを回復することができました。ただし、Exact Trace Reproduction(完全な実行トレースの再現)においては、依然として FullFT が優位性を保っています。
この最後の指標が何を測っているのか注意が必要です。
2 つの妥当な割り当てとは、同じ目的地に到達する 2 つの経路のことです。しかし、「完全な順序(exact sequence)」を要求される場合、それは参照された特定の経路を取ることを意味します。
完全な順序での優位性は模倣能力の向上を示しますが、それがそのまま実用的な品質の向上に直結するわけではありません。
別の 60 グラフによる制御実験でも同様の傾向が確認されました。r32、r128、FullFT の妥当性率はそれぞれ 83.33%、90.00%、90.00% を記録しました。サンプル数が少ないため効果を精密に推定することはできませんし、配置スタイルのカバレッジや学習率の制御についてはまだ完了していません。ただし、今回のテストレシピの下ではランクの変更が妥当性と品質を明確に変化させたことは確かです。配置実験の場合と同様に、カバレッジや最適化の影響を完全に排除したわけではありません。
すべてのレジスタ割り当て LoRA は、アテンションとフィードフォワードの重み行列に対して適応を行いました。α(アルファ)はランクに比例して増加させ、「alpha/rank = 2」を維持しました。これにより、アダプターの容量を増やしつつも、名目上の更新スケーリングは一定に保たれています。
結論: 今回はアダプターサイズが鍵となりました。より大きなアダプターを採用することで、妥当性と解決策の質の両方が向上し、これは「サイズ」が要因であることを示す典型的なパターンです。これを裏付けるデータと学習率に関する検証はまだ完了していません。
Nexa VM:固定レシピ → 調整済み学習率 → ランクスイープ → より広範なカリキュラム
Nexa VM は、モデルに対して短いプログラムの実行と正確な状態トレースの再現を求めます。これにより、レシピ、ランク、カバレッジという 3 つのテストを 1 つのタスクに統合できます。
最小限のホールドアウトプログラムは、厳密な実行形式を示しています:
12345678910Execute the Nexa VM program using the learned opcode semantics.Return each bound register in order, then the final output.program {input r0 := -0027.input r1 := -0025.input r2 := +0012.bind r3 := baf<r0>.yield r3.}trace正確な軌跡は以下の通りです:
12r3 = -0027.output -0027.より深い深度 24 のスイートでは、同じフォーマットを 24 の依存する命令に適用します。ここで 1 つでも後方展望(ポスト・ホライズン)の誤りが生じると、その後の処理全体でエラーが連鎖・蓄積する可能性があります。
まず、レシピチューニングによって固定されたレシピを持つ FullFT の優位性が消滅しました。
初期の 10,000 行規模の比較では、FullFT がサンプル効率において非常に有利であるように見えました。元のレシピ条件下では、深度 8 の最終回答で LoRA を 20 ポイント、正確なトレースでは 31 ポイント上回っていました。
しかし、同一スイートにおける学習率のスウィープ実験により、この解釈は覆されました:
| チューニング済み 10k レシピ、深さ 8 サブセット (n=64) | ピーク学習率 | 最終回答 | 正確なトレース |
|---|---|---|---|
| LoRA-r64 | 8e-5 | 98.44% | 96.88% |
| FullFT | 1e-6 | 96.88% | 95.31% |
表は、64 例の深さ 8 のサブセットの結果を報告しています。全体の 480 例からなるテストスイート全体では、LoRA と FullFT はそれぞれ最終回答で 478 件と 476 件の正解を達成し、完全な実行トレースでも 475 件と 474 件でした。学習率のチューニングにより、固定されたレシピによる FullFT の優位性は解消されました。
結論: FullFT がより速く学習しているように見えた 31 ポイントの差は、実際には学習率が調整されていなかったことが原因でした。これを調整することは最もコストのかからないステップであり、今回の研究で確認された最大の手法間の違いを解消する結果となりました。
サポートされる動作においては、ランクの上限に達した
その後、深さ 1〜8 のプログラム 10 万個を用いて学習を行い、LoRA のランクを {64, 32, 16, 8, 4, 2, 1} でスweep しました。完全な実行トレースの精度は 99.17% から 100% の間にとどまり、サポートされる動作においてはテストしたランク間で差は見られませんでした。
同じトークン数で学習した別のコントロール実験でも、同様の上限に近い結果が得られました:
| トークン一致型 Nexa コントロール | 最終回答精度 | 完全一致トレース精度 | 深さ外挿の完全一致 | サンプリングされた訓練適合度 |
|---|---|---|---|---|
| LoRA-r32 | 99.17% | 97.92% | 92.97% | 100% |
| LoRA-r128 | 99.17% | 98.33% | 94.53% | 100% |
| FullFT | 96.88% | 95.42% | 82.81% | 100% |
制御実験において、r128 は r32 に比べて 480 例中 2 例の精度向上を示しました。ただし、すべてのランクはすでに天井値に近い状態だったため、Nexa の挙動をテストしてもアダプターの容量がボトルネックになっていることは確認できませんでした。一方、FullFT の結果はテストされたレシピを反映したものであり、LoRA が本質的に優れているという証拠ではありません。
先を見据えたカリキュラムのカバレッジが結果を変えた
より長いプログラムになると失敗モードも変化しました。固定されたレジスタ位置の範囲で訓練されたモデルは、深さ 16 のプログラムによって新しい位置が登場した際に信頼性が低下しました。ランクを増やしても回復が単調に改善するわけではありませんでした。しかし、訓練中にレジスタの開始位置をランダム化することで回復が見られました。
| Depth-16 の正確なトレース | 固定されたレジスタ範囲 | ランダムなレジスタ開始位置 |
|---|---|---|
| LoRA-r64 | 96.09% | 100.00% |
| FullFT | 64.84% | 99.22% |

カバレッジ・ホライズン(学習の到達範囲): 固定されたカリキュラムでは、学習が慣れ親しんだレジスタ位置での遷移しか教えていませんでした。ランクを増やしても不足している例を追加することはできず、ランダムなレジスタ開始点によってサポート範囲が広がり、深度 16 のトレースが修復されました。
より広いレジスタ位置のカバレッジは、FullFT で 34.38 ポイント、LoRA では 3.91 ポイントの向上をもたらしました。ランク単体では回復が単調にはなりませんでした。深度 24 における正確性は依然として低く(LoRA は 89.84%、FullFT は 80.47%)、カバレッジを広げることで信頼性の境界線は消滅せず、延長されるだけでした。
これらは手法固有のレシピです。FullFT はランダムオフセットのカリキュラム上で freshly LR-swept(学習率を掃引)したわけではありません。また、レジスタ割り当ての掃引とは異なり、Nexa のランク・ラダーでは絶対的なアルファ値が固定されたままだったため、ランクと有効な更新スケールは同時に変化しました。その結果、Nexa のランク評価からはアダプターの容量を完全に分離して評価することはできません。これらの結果は、最適化とカバレッジへの応答を示すものであり、すべてのランク・レシピの相互作用を除外するものではありません。
Nexa は中心的な教訓を具体的に示しています。ここでは、平坦なランク曲線が「天井での余剰容量」か「カバレッジ境界での不足したサポート」のどちらかを表しているのかを明確に示すものでした。介入による応答がその 2 つを区別しましたが、曲線だけでは判断できませんでした。
モデルは、トレーニングで見たレジスタ位置に対してのみルールを学習しました。完璧なトレーニングスコアや flawless なステップバイステップのトレースからはそれが分かりませんでした。このギャップが現れたのは、新しい位置が登場した時だけでした。
判定: このタスクでは 3 つのレバーすべてがテストされ、そのうち 2 つが機能しました。まず学習率、次に広範なトレーニングデータです。広範なデータによって FullFT が得た 34 ポイントの向上は、本研究における単一の効果の中で最大のものでした。
3 タスク混合:一致する露出 → 固定予算 → レシピスイープ
これまでに実施された実験はすべて、1 つの限定されたタスクへの適応に焦点を当てていました。では、1 つのモデルがすべての 3 つのタスクを学習しなければならない場合、どうなるでしょうか?
配置(placement)、レジスタ割り当て(register allocation)、Nexa の 3 つをタグ付きの混合データセットとして組み合わせました。
まず、各タスクの元のトークン露出量を維持しました。これには 18,000 ステップが必要で、単一タスク時の予算の 3 倍に相当します。
以下の 3 タスク平均は、配置の有効性、レジスタ割り当ての有効性、Nexa の正確なトレース精度に対して等しい重み付けを行っています。これは全サンプルに対するプールされた精度ではありません。
| 曝露量一致の混合 | LoRA-r32 | LoRA-r128 | FullFT |
|---|---|---|---|
| 3タスク平均 | 86.92% | 86.11% | 84.58% |
| 配置妥当性 | 70.33% | 73.33% | 75.00% |
| レジスタ割り当て妥当性 | 96.67% | 93.33% | 88.33% |
| Nexa 厳密トレース精度 | 93.75% | 91.67% | 90.42% |
タスクごとの学習機会を維持したまま、ランク数を増やしても、テストされた FullFT の手法でもマクロスコアは向上しませんでした。この組み合わせでは、広がりによる容量のボトルネックは顕在化していません。
次に、単一タスクレベルでトークン数とステップ数の予算を固定しました。各タスクに割り当てられる学習機会は、およそ元の 3 分の 1 に減らされます。
| 固定予算混合 | LoRA-r32 | LoRA-r128 | FullFT |
|---|---|---|---|
| 3タスク平均 | 69.64% | 71.65% | 80.89% |
| 配置妥当性 | 61.00% | 59.33% | 62.67% |
| レジスタ割り当て妥当性 | 60.00% | 66.67% | 85.00% |
| Nexa 厳密トレース精度 | 87.92% | 88.96% | 95.00% |
このプロトコルは、同じデータとオプティマイザのステップ数でどちらの方法が優れているかを問うものであり、同等の計算量(FLOPs)での効率性を比較するものではありません。結果として FullFT が勝利しましたが、レシピの質が交絡因子となったため、LoRA の学習率とスケジューリングにおける妥協点を探るためのスウィープを実施しました。
以下の表は、6 つの新規スウィープアームを、2 つの元の4e-5 cosine ベースラインと組み合わせたものです。
| 固定予算の LoRA レシピ | 3 つのタスクの平均値 |
|---|---|
| r32, 2e-5, cosine | 63.29% |
| r32, 4e-5, cosine (original) | 69.64% |
| r32, 4e-5, constant | 71.54% |
| r32, 8e-5, cosine | 75.25% |
| r128, 2e-5, cosine | 59.60% |
| r128, 4e-5, cosine (original) | 71.65% |
| r128, 4e-5, constant | 70.86% |
| r128, 8e-5, cosine | 76.60% |
ランク 32 の条件で学習率を 8e-5 に調整すると、元のレシピに対して 5.61 ポイントの向上が確認されました。さらに学習率を最適化し、ランクを 128 に上げると、追加で 1.35 ポイントの上昇があり、最終スコアは 76.60% となりました。この結果、レシピとランクの調整によって、元の r32 における 11.25 ポイントの差のうち 6.96 ポイントを挽回することができました。ただし、完全微調整(FullFT)はまだ最良のアダプターよりも 4.29 ポイント上回っています。
結果はレシピに依存します。低学習率での r128 は元の結果から 12.05 ポイントも下回り、一定の 4e-5 の条件では 70.86% に留まりました。一方、最適化された r128 では、3 つのタスクすべてでサンプリングされたトレーニング例に対して有効な出力が生成されましたが、FullFT はすべての検証用タスク(配置、レジスタ割り当て、Nexa)において依然として上回っていました。
固定予算での結果は単一のシードに基づくものです。再現用のシードを準備中であり、確定次第このセクションを更新します。テストした最良の LoRA レシピとの比較では以下のようになります。
固定されたマルチタスク予算の下では、FullFT はテストしたレシピにおいて、タスクごとの曝露量が希釈されても影響を受けにくいことが示されました。元の r32 における差の大部分は最適化の違いによるものであり、ランクの調整は二次的な回復要因に過ぎません。最良の LoRA レシピに対する 4.29 ポイントのリードは残っていますが、これは LoRA そのものに容量不足があることを証明するものではありません。
タスクごとの曝露量を維持できる場合、テストした LoRA のレシピは FullFT のレシピと同等かそれ以上の性能を発揮します。一方、予算が固定されタスクごとの曝露量が希釈される条件下では、これまでの試みにおいて FullFT の方がより寛容な手法であると言えます。どちらのケースも絶対的な正解ではなく、実験プロトコル自体が結果の一部となっています。
残りの 4.29 ポイントを埋めるには、どのような実験が必要でしょうか。まだ実施していない候補として、チューニング済みレートでのランク 256 のアーム、混合データに対するパーランクアルファと学習率のスイープ、共有アダプターではなくタスクごとに別々のアダプターを並列で動作させる方式、そしてレシピが同様に未調整ではないかを確認するための混合データレベルでの新たな FullFT(フル微調整)学習率スイープがあります。これらが次の実験セットとなりますが、いずれにせよ結果は公開します。
固定予算における混合データの比較:差はどこへ消えたのか
3 タスクの平均値を学習率とランクの介入後に測定した結果

固定予算での実行にはどれほどのコストがかかったのか?
4 つの実行すべてで、損失計算の対象となる監督付き応答トークンが計 1,202 万トークン処理されました。これは B200 GPU 2 台上で 6,000 ステップにわたって実行されたものです。Fireworks の公開料金表に基づく専用トレーニングレート(B200 GPU 時間あたり 10 ドル)を使用した場合の計算です:
| 手法 | マクロ平均スコア | アクティブな学習時間 | アクティブコスト下限値 |
|---|---|---|---|
| 元の LoRA-r32 | 69.64% | 2.70 h | $53.97 |
| 調整済み LoRA-r32 | 75.25% | 2.57 h | $51.38 |
| 調整済み LoRA-r128 | 76.60% | 3.23 h | $64.53 |
| FullFT | 80.89% | 3.50 h | $70.06 |
LoRA からフル微調整(FullFT)へ切り替える前に検討すべき 3 つのテスト
最終的に FullFT は r128 を 4.29 ポイント上回りましたが、そのためには tuned r128 よりも 8.6% 多い計算リソースをアクティブなトレーニングに費やす必要がありました。ただし、この数値は重みの更新に要した時間に基づく下限値であり、プロビジョニングやチェックポイント作成、評価、待機時間のコストは含まれていません。
| サーバーレストレーニングの見積もり | 値 |
|---|---|
| トレーニングデータトークン数 | 62.74M |
| Qwen3.5 9B のトレーニング価格 | $1.463 / 1M トークン |
| 推定コスト | $91.79 |
サーバーレス課金では、トレーニングデータに含まれるすべてのトークンがカウントされるため、この数値(6274 万)は前述の 1202 万トークンの応答数よりも大きくなります。これは定価ベースの見積もりであり、上記の専用リソースにおける数値は、実際の課金総額ではなく稼働時間の下限値を示しています。
トレーニングコストは比較の一部に過ぎません。ここで学習したアダプターは、1 つのベースモデルデプロイメントで共有できます。つまり、同じレプリカ上で複数の LoRA を同時に提供し、リクエストごとに切り替えることが可能です。一方、FullFT モデルには専用のデプロイメントが必要になります。チームが複数の専門的な動作を扱う場合、運用側のコスト差は単発のトレーニングコスト差を上回る可能性があります。したがって、以下の比較では、実際に展開する予定のファーム全体における「トレーニング+運用」のコストを対比させるべきです。わずかな性能向上を得るために、専用デプロイメントを追加するコストが正当化されるかどうかを判断する必要があります。
結果を変えた要因
ターゲットデータのカバレッジ強化、レシピの最適化、アダプターのランク増加など、いくつかの要素が FullFT との品質差を縮めることに寄与しました。しかし、タスクごとの学習機会が分散し、単一の対策ですべてのシナリオで差を解消できなかった場合、FullFT は依然として性能面でリードを保ちました。
| 設定 | 結果を動かした介入 | 根拠 | 残差の結果 |
|---|---|---|---|
| 配置 | より多様なデータ、その後学習率の改善 | データセットを 10 倍に増やすことで LoRA の妥当性が 34.33% から 68.33% に向上し、一般的な比較スイートでは学習率を引き上げることでさらに 6.34 ポイント増加した。 | FullFT は妥当性で 0.33 ポイントリードしたが、これは信頼区間内である。 |
| レジスタ割り当て | より大きなアダプター | ランクを 8 から 128 に引き上げることで妥当性が 10 ポイント増加した。ソリューションの質と正確なシーケンス精度は同じ方向に変化した。 | FullFT は厳格な模倣指標である正確なシーケンスで 10 ポイントリードを維持した。カバレッジと学習率の制御は未解決のまま。 |
| 訓練済みプログラム長における Nexa VM | より良い学習率 | 学習率のスイープにより、一見 31 ポイントの FullFT の優位性が逆転した。 | 調整された LoRA がわずかに先行:480 の例において最終回答が 2 つ多く、正確なトレースが 1 つ多かった。 |
| 訓練済みプログラム長を超える Nexa VM | より代表的なデータ | 初期のレジスタ位置をランダム化することで、FullFT は 34.38 ポイント、LoRA は 3.91 ポイント向上した。 | LoRA は正確なトレースで 100% に達し、FullFT は 99.22% に達した。 |
| 単一タスク相当の訓練予算で 3 つのタスクを一つのモデルに統合 | より良い学習率、その後より大きなアダプター | 学習率の調整により 3 つのタスクの平均スコアで 5.61 ポイント回復し、ランクを 128 に引き上げることでさらに 1.35 ポイント回復した。 | FullFT は 3 つのタスクの平均で 4.29 ポイントリードを維持し、テストされたどの介入もこれを解消できなかった。 |
| データ露出が一致した同じ 3 タスク混合 | 比較プロトコル | データ露出を一致させることで、どちらの方法が先行するかが変化した。 | LoRA がリードした。 |
単一タスクの 4 つの設定において、データのカバレッジ拡大または最適化によって、3 つのケースでフル微調整(FullFT)が持つ明確な優位性が消滅しました。残りの 1 つでは高いランク設定が効果をもたらしましたが、データカバレッジと学習率の制御についてはまだ検討が必要です。
複合タスク実験の結果は、比較条件をどこに固定するかによって変わりました。単一タスク相当の計算リソースで訓練した場合、フル微調整(FullFT)は 3 タスク平均で 4.29 ポイントのリードを維持しました。一方、データへの曝露量を一致させた場合、LoRA が上回りました。
フル微調整(FullFT)が勝利したという事実は、性能差が存在することを示すだけで、その原因までは教えてくれません。LoRA からフル微調整(FullFT)へ移行する前には、データカバレッジ、訓練レシピ、そして LoRA のランクを必ず検討してください。
LoRA からフル微調整(FullFT)へ切り替える前に
LoRA から FullFT へ移行する前に実行すべき 3 つのテスト
まず、リリースする出力を評価してください。トレーニングロスだけに注目するのは危険です。モデルが学習データを完璧に再現できたとしても、新しい事例や厳しい制約条件、あるいは多段階の実行処理において失敗する可能性があります。
次に、範囲が狭く検証可能なタスクで LoRA を試すことから始めましょう。目標とする挙動を明確に記述でき、モデルがそれを習得したかどうかを測定できるタスクである必要があります。
もし失敗事例が特定のケースに集中している場合は、データの幅を広げるフェーズへ移行します。モデルが誤っている組み合わせやエッジケース、タスクのバリエーションを追加してデータセットを拡張してください。
さらにデータを追加しても改善が見られず、まだギャップが残る場合は、トレーニングの設定を見直しましょう。学習率やスケジューリングを変更するテストを行い、FullFT のデフォルト設定をそのまま流用するのは避けてください。LoRA は通常、より高い学習率を好む傾向があります。
最後にアダプターの容量についてテストしてください。ランク数を上げることが有効性と品質の両方を改善する場合、元の小さなアダプターがボトルネックになっていたことがわかります。
複数の手法が品質基準を満たした時点で、総コストを比較検討しましょう。トレーニング費用だけでなく、反復速度、推論時のサービスコスト、そして FullFT 専用のデプロイメントを維持し続けるためのランニングコストもすべて含めて計算する必要があります。
これらのテストを通過し、その品質上の優位性が追加コストに見合うと判断された場合にのみ、FullFT を採用すべきです。
今回の実験は 1 つのモデルを対象に、3 つの合成タスクで検証を行いました。これは実際の生産環境での負荷試験というより、風洞実験に近いアプローチです。
診断プロセス自体は普遍的ですが、具体的な数値がそのまま通用するとは限りません。
Fireworks: 推論と学習を統合したワンプラットフォーム
これらの実験は、Fireworks Serverless Training and Inference を利用してご自身で実行できます。公開されている Qwen3.5-9B のレートに基づくと、上記の固定予算での混合コストは 91.79 ドルでした。
そこから、複数のランクでアダプターをトレーニングし、共有ベースデプロイメント上で提供しながら、本番環境での失敗事例を収集できます。
LoRA から脱却すべきという証拠が揃った場合、同じ SDK を使ってワークフローの再構築なしに、GPU 時間あたり 10 ドルで専用 B200 トレーニングへ移行可能です。LoRA は始めるのに最適な選択肢ですが、上限は開けておき、手法の選択をインフラの制約ではなく実験として捉えるべきです。
原文を表示
If training with LoRA isn't producing the results you were expecting, the adapter itself may not be the problem. We did controlled experiments on Qwen3.5-9B showing how data coverage, optimization, and rank can create or close the quality gap to Full Parameter Fine-Tuning, or FullFT.
Which lever moved?
Within-experiment changes; gray cells were not tested

In our earlier Kimi K3 work, LoRA was fast, inexpensive, and effective for bounded objectives, and we drew a line: broad or genuinely novel targets are stronger reasons to test FullFT.
Before you reach for that more expensive FullFT, you should know that in our experiments when a FullFT beat a simple LoRA run, it was hard to tell whether the adapter simply needed better data, a better training recipe, more rank to close the gap, or whether FullFT was genuinely the better method all along.
Experimenting with LoRA
LoRA freezes the base model and trains a small adapter instead. FullFT updates every model weight. When FullFT performs better, it is tempting to conclude that the adapter is simply too small. Our experiments explored three possible explanations:
- •Coverage: The training data did not show enough of the task's variety. The test: broaden the data and re-measure.
- •Optimization: The training recipe, especially the learning rate, the size of each training adjustment, was poorly tuned. The test: sweep the learning rate and schedule.
- •Adapter capacity: The LoRA adapter needed a higher rank — a larger adapter. The test: increase rank while holding update scaling and the rest of the recipe fixed, and look for validity and quality to improve together.
An intervention shows which change helped under the tested conditions. It does not prove that the lever was the only cause or rule out other contributing factors.
The test bed: Qwen3.5-9B
We used Supervised Fine-Tuning (SFT) on Qwen3.5-9B and compared LoRA with FullFT. Within each comparison, both methods received the same prompts, targets, and evaluation code.
We tested three synthetic tasks with automatic checkers: each task comes with the equivalent of a unit-test suite, so every answer could be scored without a human judge:
- •Placement, borrowed from chip design: Arrange components on a line to minimize wiring while obeying hard constraints. One violated constraint invalidates the answer.
- •Register allocation, borrowed from compilers: Assign processor registers so values that are in use at the same time never share one.
- •Nexa VM: Execute a program written in a synthetic instruction language and report every intermediate state. Program "depth" is its number of instructions.
We picked tasks that have programmatic checks for validity, solution quality, and exact execution. That matters because a model can reach nearly zero training loss and still fail when one wrong decision invalidates the whole answer.
How this relates to prior work
Biderman et al. (LoRA Learns Less and Forgets Less, 2024) reported that LoRA trails FullFT on demanding domains such as code and math while preserving more of the base model. Thinking Machines (LoRA Without Regret, 2025) reported that a well-configured LoRA can match FullFT across much of post-training, with an optimal learning rate roughly an order of magnitude above FullFT's. Our results point the same direction: the best LoRA rate here, 8e-5, sat far above the best FullFT rate, 1e-6 on Nexa. What we add is narrower: a per-gap protocol for testing whether coverage, optimization, or adapter capacity explains a specific FullFT advantage.
Placement: rank test → data coverage → tuned learning rate
Placement asks the model to arrange cells on a line while minimizing total wire length. In the hard version, a single forbidden position or separation violation invalidates the answer, and that all-or-nothing check revealed a clear LoRA–FullFT gap. We first tested rank, then data coverage:
| Placement coverage test | LoRA-r32 | LoRA-r128 | FullFT |
|---|---|---|---|
| 2k rows, original seed | 34.33% | 31.67% | 57.00% |
| 2k rows, new data and training seed | 37.33% | 36.67% | 61.67% |
| 20k rows, default recipe | 68.33% | 69.33% | 80.33% |
Each held-out set contains 300 examples, and a separately generated dataset and training seed reproduced both the flat rank-32 versus rank-128 result and the direction of the FullFT gap. Both adapters reached 100% validity on sampled training prompts, yet more rank did not improve held-out generalization. We define validity as the final output passing the task's checker. An exact sequence or exact trace matched the reference answer step for step.
Acing the practice questions did not mean passing the new exam.
On the same 6,000-step budget, ten times more unique data roughly doubled LoRA validity and cut the FullFT gap in half; quadrupling rank moved the result by one point.
Coverage was only part of the story. On a common selection suite, default rank-32 LoRA reached 76.33% validity and FullFT reached 83.00%. Holding the data and training budget fixed, we raised LoRA's peak learning rate:
| 20k placement recipe, common suite | Validity |
|---|---|
| LoRA-r32, 2e-5 | 76.33% |
| LoRA-r128, 2e-5 | 74.00% |
| LoRA-r32, 8e-5 | 82.67% |
| LoRA-r128, 8e-5 | 82.00% |
| FullFT | 83.00% |
At this sample size, the evaluation could not distinguish tuned rank-32 LoRA from FullFT: the 0.33-point difference had a 95% confidence interval of −4.33 to +5.00 points, which is not evidence that the two methods are equivalent. The selected rank-32 recipe then reached 81.67% on an untouched final suite, compared with 80.33% for FullFT.
Verdict: The adapter was not too small. The gap came from the training data and the learning rate. More varied data and a higher learning rate closed it; making the adapter four times larger moved the result by one point.
Register allocation: where rank moved the result
Register allocation maps interfering virtual registers onto different physical registers. One conflict makes the allocation invalid. The main evaluation contains 400 held-out graphs.
Placement shows why rank is not always the answer. Here, rank moved the observed result.
| Method | Valid allocation | Matches reference register count | Exact decision sequence |
|---|---|---|---|
| LoRA-r8 | 80.50% | 65.75% | 3.50% |
| LoRA-r32 | 82.50% | 69.00% | 6.00% |
| LoRA-r128 | 90.50% | 81.00% | 25.50% |
| FullFT | 93.00% | 83.75% | 35.50% |
Moving from rank 32 to 128 improved validity by eight points. It also improved solution quality and exact policy imitation in the same direction. Rank 128 recovered most of the operational gap to FullFT. FullFT retained an advantage in exact trace reproduction. Note what that last metric measures.
Two valid allocations are two routes reaching the same destination. Exact sequence requires taking the reference route.
A lead on exact sequence is a lead in imitation, and does not translate one-for-one into practical quality.
A separate 60-graph control reproduced the direction: r32/r128/FullFT reached 83.33%/90.00%/90.00% validity. The sample is too small to estimate the effect precisely, and we have not completed placement-style coverage and LR controls here. Rank clearly moved validity and quality under the tested recipe, and we have not excluded coverage or optimization as we did for placement.
All register-allocation LoRAs adapted the attention and feed-forward weight matrices. Alpha increased proportionally with rank, keeping alpha/rank = 2, which held the nominal update scaling constant while increasing adapter capacity.
Verdict: Here, adapter size was the lever. A larger adapter improved validity and solution quality together, which is the pattern that points to size. The data and learning-rate checks that would confirm it are still open.
Nexa VM: fixed recipe → tuned learning rate → rank sweep → broader curriculum
Nexa VM asks the model to execute short programs and reproduce the exact state trace. It gives us all three tests (recipe, rank, and coverage) inside one task.
A minimal held-out program shows the exact-execution format:
`
12345678910Execute the Nexa VM program using the learned opcode semantics.Return each bound register in order, then the final output.program {input r0 := -0027.input r1 := -0025.input r2 := +0012.bind r3 := baf<r0>.yield r3.}trace`
The exact trajectory is:
`
12r3 = -0027.output -0027.`
The longer depth-24 suite applies the same format across 24 dependent instructions, where one post-horizon error can compound through the remainder.
First, recipe tuning erased a fixed-recipe FullFT advantage
An early 10,000-row comparison made FullFT look much more sample efficient. Under the original recipes, it led LoRA by 20 points on depth-eight final answers and 31 points on exact traces.
A same-suite learning-rate sweep reversed that interpretation:
| Tuned 10k recipe, depth-8 subset (n=64) | Peak LR | Final answer | Exact trace |
|---|---|---|---|
| LoRA-r64 | 8e-5 | 98.44% | 96.88% |
| FullFT | 1e-6 | 96.88% | 95.31% |
The table reports the 64-example depth-8 subset. Across the full 480-example suite, LoRA and FullFT reached 478 versus 476 correct final answers and 475 versus 474 exact traces. Learning-rate tuning removed the fixed-recipe FullFT advantage.
Verdict: A 31-point gap that looked like FullFT learning faster was really an untuned learning rate. Tuning it is the cheapest step in the ladder, and it removed the largest apparent method difference in the study.
On supported behavior, the rank ladder hit a ceiling
We then trained on 100,000 depth-1–8 programs and swept LoRA ranks {64, 32, 16, 8, 4, 2, 1}. Exact-trace accuracy stayed between 99.17% and 100%. Supported behavior did not separate the tested ranks.
A separate control trained on the same token count landed near the same ceiling:
| Token-matched Nexa control | Final-answer accuracy | Exact-trace accuracy | Depth-extrapolation exact | Sampled train fit |
|---|---|---|---|---|
| LoRA-r32 | 99.17% | 97.92% | 92.97% | 100% |
| LoRA-r128 | 99.17% | 98.33% | 94.53% | 100% |
| FullFT | 96.88% | 95.42% | 82.81% | 100% |
In the control, r128 improved exactness over r32 by two of 480 examples. All ranks were already near ceiling, so supported Nexa behavior did not expose an active adapter-capacity bottleneck. The lower FullFT result describes its tested recipe; it is not evidence that LoRA is intrinsically better.
Beyond the horizon, curriculum coverage moved the result
The failure mode changed on longer programs. Models trained on a fixed range of register positions became less reliable when depth-16 programs introduced new positions. Increasing rank did not produce a monotonic recovery. Randomizing register starts during training did:
| Depth-16 exact trace | Fixed register range | Random register starts |
|---|---|---|
| LoRA-r64 | 96.09% | 100.00% |
| FullFT | 64.84% | 99.22% |

The coverage horizon: The fixed curriculum taught transitions only at familiar register positions. Increasing rank could not supply missing examples; random register starts expanded the support and repaired the depth-16 trace.
Broader register-position coverage moved FullFT by 34.38 points and LoRA by 3.91. Rank had not produced a monotonic recovery. Depth-24 exactness remained lower (89.84% for LoRA and 80.47% for FullFT), so coverage extended rather than eliminated the reliability boundary.
These are method-specific recipes: FullFT was not freshly LR-swept on the random-offset curriculum. And unlike the register-allocation sweep, the Nexa rank ladder held absolute alpha fixed, so rank and effective update scale changed together; the Nexa rank results do not isolate adapter capacity as cleanly. The results establish optimization and coverage responses without excluding every rank-recipe interaction.
Nexa makes the central lesson concrete. Here, a flat rank curve marked either spare capacity at a ceiling or missing support at a coverage boundary. The intervention response distinguished the two; the curve alone could not.
The model learned the rule only for the register positions it saw in training. A perfect training score and flawless step-by-step traces did not reveal that. The gap appeared only when new positions showed up.
Verdict: On this task all three levers got tested, and two of them did the work: first the learning rate, then broader training data. The 34-point jump FullFT gained from broader data is the largest single effect in the study.
Three-task mixture: matched exposure → fixed budget → recipe sweep
So far, every experiment adapts one bounded task. What happens when one model has to learn all three?
We combined placement, register allocation, and Nexa into one tagged mixture.
First, we preserved each task's original token exposure. That required 18,000 steps, three times the single-task budget.
The three-task average below gives equal weight to placement validity, register-allocation validity, and Nexa exact-trace accuracy; it is not a pooled accuracy over all examples.
| Exposure-matched mixture | LoRA-r32 | LoRA-r128 | FullFT |
|---|---|---|---|
| Three-task average | 86.92% | 86.11% | 84.58% |
| Placement validity | 70.33% | 73.33% | 75.00% |
| Register-allocation validity | 96.67% | 93.33% | 88.33% |
| Nexa exact-trace accuracy | 93.75% | 91.67% | 90.42% |
With per-task exposure preserved, neither higher rank nor the tested FullFT recipe improved the macro score. This mixture did not expose a breadth-induced capacity bottleneck.
Then we held the total token and step budget fixed at the single-task level. Each task received roughly one-third as much exposure.
| Fixed-budget mixture | LoRA-r32 | LoRA-r128 | FullFT |
|---|---|---|---|
| Three-task average | 69.64% | 71.65% | 80.89% |
| Placement validity | 61.00% | 59.33% | 62.67% |
| Register-allocation validity | 60.00% | 66.67% | 85.00% |
| Nexa exact-trace accuracy | 87.92% | 88.96% | 95.00% |
This protocol asks which method performs better with the same data and number of optimizer steps, and does not ask which is more compute-efficient at matched training FLOPs. FullFT led, and recipe quality remained a confound, so we swept the mixture's compromise LoRA learning rate and schedule.
The table combines six new sweep arms with the two original 4e-5 cosine baselines:
| Fixed-budget LoRA recipe | Three-task average |
|---|---|
| r32, 2e-5, cosine | 63.29% |
| r32, 4e-5, cosine (original) | 69.64% |
| r32, 4e-5, constant | 71.54% |
| r32, 8e-5, cosine | 75.25% |
| r128, 2e-5, cosine | 59.60% |
| r128, 4e-5, cosine (original) | 71.65% |
| r128, 4e-5, constant | 70.86% |
| r128, 8e-5, cosine | 76.60% |
At rank 32, 8e-5 added 5.61 points over the original recipe. At that tuned rate, rank 128 added another 1.35 points, reaching 76.60%. Together, recipe and rank recovered 6.96 of the original 11.25-point r32 deficit. FullFT still led the best adapter by 4.29 points.
The response is recipe-dependent. Low-LR r128 fell 12.05 points below its original result, while constant 4e-5 reached only 70.86%. Tuned r128 produced valid outputs on every sampled training example across all three tasks, yet FullFT remained ahead on every held-out task: placement, register allocation, and Nexa.
The fixed-budget result is single-seed; a replication seed is queued and we will update this section with it. Relative to the best LoRA recipe tested:
Under a fixed multi-task budget, FullFT is less sensitive to diluted per-task exposure in our tested recipes. Optimization explains most of the original r32 deficit, and rank provides a smaller secondary recovery. A 4.29-point lead remains over the best LoRA recipe tested so far. That remaining gap does not prove that LoRA itself lacks capacity.
When per-task exposure is preserved, the tested LoRA recipes match or beat the tested FullFT recipe. When the budget is fixed and per-task exposure is diluted, FullFT is the more forgiving method under the recipes tried so far. Neither row is the general answer; the protocol is part of the result.
What would resolve the remaining 4.29 points? The candidates we have not yet run: a rank-256 arm at the tuned rate, a per-rank alpha and LR sweep on the mixture, per-task adapters served side by side instead of one shared adapter, and a fresh FullFT LR sweep at the mixture level to confirm its recipe is not similarly undertuned. That is the follow-up experiment set, and we will publish it either way.
Fixed-budget mixture: where the gap went
Three-task average after learning-rate and rank interventions

What did the fixed-budget runs cost?
All four runs processed 12.02 million supervised response tokens (the tokens the loss is computed on) for 6,000 steps on two B200 GPUs. Using Fireworks' public $10 per B200 GPU-hour dedicated-training rate:
| Method | Macro score | Active training time | Active-cost lower bound |
|---|---|---|---|
| Original LoRA-r32 | 69.64% | 2.70 h | $53.97 |
| Tuned LoRA-r32 | 75.25% | 2.57 h | $51.38 |
| Tuned LoRA-r128 | 76.60% | 3.23 h | $64.53 |
| FullFT | 80.89% | 3.50 h | $70.06 |
FullFT's final 4.29-point lead cost 8.6% more active training compute than tuned r128. These are lower bounds from time spent updating weights: they exclude provisioning, checkpointing, evaluation, and idle time.
| Serverless Training estimate | Value |
|---|---|
| Training-datum tokens | 62.74M |
| Qwen3.5 9B train price | $1.463 / 1M tokens |
| Estimated cost | $91.79 |
Serverless billing counts training-datum tokens, meaning every token in the training rows, which is why this figure (62.74M) is larger than the 12.02M response tokens above. This is a list-price estimate, and the dedicated figures above are active-time lower bounds rather than billed totals.
Training cost is only half of the comparison. Adapters trained here can share one base-model deployment: many LoRAs served concurrently on the same replica, each swapped in per request. A FullFT model needs its own dedicated deployment. For a team running several specialized behaviors, the serving-side difference can outweigh a single-run training delta, so the cost gate in the ladder below should compare training plus serving for the fleet you actually plan to run, and a small quality lead has to pay for a dedicated deployment before it wins.
What moved the results
Targeted data coverage, recipe optimization, and increased adapter rank all had a part in closing the quality gap to FullFT, but FullFT retained a lead when per-task exposure was diluted and no single intervention eliminated the gap across all scenarios.
| Setting | Intervention that moved the result | Evidence | Residual result |
|---|---|---|---|
| Placement | More varied data, then a better learning rate | Increasing the dataset 10× raised LoRA validity from 34.33% to 68.33%. Raising its learning rate added another 6.34 points on a common comparison suite. | FullFT led by 0.33 validity points, within the confidence interval. |
| Register allocation | A larger adapter | Increasing rank from 8 to 128 added 10 validity points. Solution quality and exact-sequence accuracy moved in the same direction. | FullFT retained a 10-point lead on exact sequence, a stricter imitation metric. Coverage and learning-rate controls remain open. |
| Nexa VM at trained program lengths | A better learning rate | A learning-rate sweep reversed an apparent 31-point FullFT advantage. | Tuned LoRA finished slightly ahead: two more correct final answers and one more exact trace across 480 examples. |
| Nexa VM beyond trained program lengths | More representative data | Randomizing the initial register positions raised FullFT by 34.38 points and LoRA by 3.91 points. | LoRA reached 100% exact trace and FullFT reached 99.22%. |
| All three tasks in one model, with a one-task-equivalent training budget | A better learning rate, then a larger adapter | Learning-rate tuning recovered 5.61 points on the three-task average score. Increasing rank to 128 recovered another 1.35 points. | FullFT retained a 4.29-point lead on the three-task average that none of the tested interventions eliminated. |
| The same three-task mixture, with data exposure matched | The comparison protocol | Matching data exposure changed which method finished ahead. | LoRA led. |
Across the four single-task settings, data coverage or optimization eliminated the apparent FullFT advantage in three. Higher rank materially improved the fourth, although coverage and learning-rate controls remain open.
In the combined-task experiment, the result depended on what the comparison held constant. Under a one-task-equivalent training budget, FullFT retained a 4.29-point lead on the three-task average. With data exposure matched, LoRA led.
A FullFT win tells you that a performance gap exists. It does not tell you what caused it. Before replacing LoRA with FullFT, consider your coverage, recipe, and LoRA rank.
Before you switch from LoRA to FullFT
- Evaluate the outputs you will ship. That means don't focus on training loss alone. A model can fit the training data and still fail on new examples, hard constraints, or multi-step execution.
- Start with LoRA on a task that is narrow and testable. You should be able to describe the target behavior clearly and measure whether the model learned it.
- When failures cluster around missing cases, begin broadening the data. Add more combinations, edge cases, and task variation the model is getting wrong.
- When more data helps but a gap remains, tune the training recipe. Test the learning rate and schedule rather than reusing FullFT defaults. LoRA often prefers a substantially higher learning rate.
- Test adapter capacity last. If higher rank improves both validity and quality, the smaller adapter was part of the constraint.
- Compare total economics once multiple methods meet the quality bar. Include training, iteration speed, serving, and the cost of maintaining a separate FullFT deployment.
Use FullFT when its quality advantage survives these tests and justifies the added cost.
These experiments cover one model and three synthetic, verifiable tasks, closer to a wind tunnel than a production workload.
The diagnostic process travels; the specific numbers may not.
Fireworks: one platform for inference and training
You can run these experiments yourself with Fireworks Serverless Training and Inference. The fixed-budget mixture above cost $91.79 at the public Qwen3.5-9B rate at time of publishing. From there, train adapters at multiple ranks, serve them on a shared base deployment, and collect failures in production.
When the evidence points beyond LoRA, the same SDK extends to dedicated B200 training at $10 per GPU-hour without rebuilding the workflow. LoRA is the right way to start; keep the ceiling open, and make the method choice an experiment instead of an infrastructure constraint.
関連記事
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み