最近、Appleのオンデバイス3Bモデルを使ってシェルアシスタントを作り、精度をベンチマークすることについて投稿しました。ベアモデルと動的リトリーバルを使いました。
次のステップとして、モデル用のLoRAアダプタを学習してみたいと思いました。精度が向上するかを確かめたかったのはもちろんですが、それ以上に、Appleの学習ツールキットがどんなものかを理解し、アクセス可能なハードウェアで動かせるのかを確認したかったのです。興味がある人がいれば共有したいと思いまして。
Appleは12GBのチェックポイント付きのPython学習ツールキットを提供しています。通常のLoRAは、モデルを読み込むだけで約24GB必要で、学習にはさらに15GBのGPUが必要です。手元の24GB MacはOOM(メモリ不足)になりました。そこで、カスタムのQLoRAパイプラインを作りました。メモリマップ読み込み+4-bit量子化により、RAMを約1GB、GPUを約5GBにまで削減します。無料のColab T4で動き、また24GB Macでもローカルで動作します。
Macでの学習に関しては特に:bitsandbytesはネイティブのMetalカーネルをマージするようになりました(PR #1875、まだリリースには入っていないのでgitからインストール)。CPUへのフォールバックよりもローカル学習が約2倍速くなります。それでもT4よりは約4倍遅いですが、完全にローカルで、アップロード不要です。
3つの経路はいずれも同等のアダプタを生成します。A100 LoRA、T4 QLoRA、Mac QLoRAで、ノイズの範囲内で同じ精度になります。学習データを最小限にしても、アダプタはベアモデルを約40%から約75%に改善し、リトリーバルと組み合わせると約86%になります。まだ学習データを最適化していないので、さらに余地があるはずです。
**知っておく価値のあるバグ:** アダプタの仕組みが、CLIツールから呼び出すたびに、SIPで保護されたキャッシュへ約160MBのアダプタのコピーを黙って書き込みます。クリーンアップはありません。私は約300回のベンチマーク実行で、見えないディスク使用量が269GBまで増えました。Recovery Modeでのみ確認できます。Appleはこのバグを認めています。
学習ノートブック、QLoRAスクリプト、MPSセットアップ手順はすべて、興味がある人向けにリポジトリにあります。https://github.com/es617/hunch/tree/main/training
詳細はこちら:https://es617.dev/2026/04/19/training-apple-on-device-llm.html
[リンク] [コメント]



