同じモデルファミリー(Qwen 3.5)の4B、9B、27B、35Bバージョンを実データの製品タスクで上回るように、2Bパラメータのファインチューニングを行ったモデルを評価しました。評価は161個のホールドアウトサンプルで実施され、すべての差は統計的に有意でした(p < .0001)。
課題は、私がコードエージェントと対話するために使用している macOS のディクテーションアプリ VoiceInk のリアルタイムディクテーション・クリーンアップです。生の音声認識結果にはフィラー語、フランス語文法パターン、そして発音の誤認識が含まれており——「Claude Code」ではなく「cloud code」、また「chicane 17」ではなく「chicken 17」と聞こえることがあります。
これを作る中で学んだことをいくつか挙げます:
→ 完成部分のみのトレーニング (completions-only) は品質向上の最大の要因でした。アシスタントの応答以外のすべての損失をマスクすることで、訓練損失を約0.85から約0.15へ低下させました。
→ アプリとモデルサーバーの間にリバースプロキシを設置することで、通常の使用をデータセット収集へ転換しました。1451件の実サンプル、アノテーション作業ゼロ。プロジェクト全体で最善の決定でした。
→ モデルは評価を通過しましたが、生産環境での運用時には問題が発生しました。GT Coach(私が開発しているシミューレースコーチングアプリ)の長時間QAデブリーフが、反復増幅を引き起こしました:入力3266語、出力7215語。根本原因は、1451件のサンプルのうち500語を超える出力を伴う訓練サンプルが10件しかなかったことです。これを受けて160件の合成サンプルで修正しました。
総計算コストは£1未満です(主な費用は私の Claude Code のサブスクリプション😅)。ラベリング、合成データ、評価のすべてが Claude を通じて行われました。
方法論、コード、評価結果を含む完全な解説は以下のGitHubに公開されています:https://github.com/hourliert/VoiceInk-Qwen3.5-2B-FT/blob/master/docs/BLOG_POST.md
[リンク] [コメント]