MobileLLM: オンデバイスのユースケース向けサブビリオンパラメータ言語モデルの最適化
(github.com/facebookresearch)- MobileLLM リポジトリは、ICML 2024 論文 “MobileLLM: Optimizing Sub-billion Parameter Language Models for On-Device Use Cases” の学習コードを提供し、10億未満のパラメータ言語モデルの品質を高める設計を扱う
- モデル設計では SwiGLU、深く細い構造、埋め込み共有、grouped-query attention を統合して MobileLLM を構成している
- MobileLLM-125M/350M はゼロショット常識推論課題で既存の 125M/350M SoTA モデルよりそれぞれ 2.7%/4.3% の精度向上を達成し、更新版は 600M/1B/1.5B でも SoTA の結果を示している
- 学習コードは Python 3.9 と PyTorch 2.0 以上を要求し、
pretrain.shは 1x8 GPU ノードでtorchrunにより開始され、ノード数やバッチサイズを増やす場合は学習率を線形に増やす必要がある - 1T トークン基準の学習コストは、32 基の NVIDIA A100 80G GPU で 125M は約 3 日、350M は約 6 日、600M は約 8 日、1B は約 12 日、1.5B は約 18 日かかる
MobileLLM の目的と公開範囲
- MobileLLM は、オンデバイスのユースケース向けに サブビリオンパラメータ言語モデルを最適化する学習コードを収めたリポジトリである
- 元となる論文は MobileLLM: Optimizing Sub-billion Parameter Language Models for On-Device Use Cases で、ICML 2024 に掲載された
- 中核的な目標は、10億未満のパラメータでも高品質な LLM を作るために、複数の設計要素を総合的に考慮することである
モデル設計要素
- MobileLLM は次の設計要素を統合している
- SwiGLU 活性化関数
- 深く細い アーキテクチャ
-
埋め込み共有
- grouped-query attention
- 更新版では、この設計思想がより大きなモデルにも拡張されることが示されており、MobileLLM-600M/1B/1.5B で SoTA の結果を示している
公開および後続モデルの動向
- 2024 年 10 月 30 日に MobileLLM モデルが HuggingFace で公開された
- 2025 年 9 月に後続研究 MobileLLM-R1 が公開された
- 約 2T の事前学習トークン、合計 5T 未満のトークンで、MATH、GSM8K、MMLU、LiveCodeBench において Qwen3-0.6B の 36T トークン結果に匹敵、またはそれを上回る
- コード、モデル、データ、学習レシピが公開されている
- HuggingFace コレクションが提供されている
- 2025 年 11 月に MobileLLM-R1.5 が公開された
- MobileLLM-R1.5-950M は、評価されたすべての数学およびコーディングベンチマークで DeepSeek-R1-Distill-Qwen-1.5B を上回る
- パラメータ数は 0.95B 対 1.5B でより少ない
- 2026 年 1 月に MobileLLM-R1 が ICLR 2026 に採択された
実行と学習構成
- 要件は Python 3.9、PyTorch 2.0 以上、
pip install -r requirement.txtである - データ前処理は、トークン化済みデータセットを分割するか独自データセットをトークン化した後、学習ノード総数に合わせて分散する方式である
- 各ノードは 1x8 GPU で構成される
- データ構造は
basepath/1,basepath/2, ...,basepath/#nodes配下にxxx.jsonlファイルを置く形式である - 各
jsonlの行は{"token_ids": [1,2,3,4,...]}形式のトークン化データのキー・バリューペアである - 学習コードは LLM360/amber-data-prep のデータ前処理方式と互換性がある
pretrain.shは 1x8 ノード設定でtorchrunにより学習を開始するスクリプトである--nnodesやその他の設定を変更することで、Slurm や TorchX のようなマルチノード構成に合わせられる- スクリプトの学習率は 1x8 ノード、バッチサイズ 32 を基準としている
- ノード数やバッチサイズを増やす場合は、学習率を 線形に増加させる必要がある
- 実行手順は、
pretrain.shで--train_data_local_pathに前処理済みデータを指定し、--input_model_filenameを./configs/{model_size}/に設定した後、bash pretrain.shを実行する方式である - Wiki 評価は、モデルをダウンロードして
eval.shのチェックポイントパスを更新した後、bash eval.shで実行する
学習コスト
- 1T トークンで MobileLLM を学習する際、32 基の NVIDIA A100 80G GPU 基準の所要時間は次のとおりである
- 125M: 約 3 日
- 350M: 約 6 日
- 600M: 約 8 日
- 1B: 約 12 日
- 1.5B: 約 18 日
ゼロショット常識推論の結果
- MobileLLM-125M は arc_easy、arc_challenge、boolq、piqa、siqa、hellaswag、obqa、winogrande の平均で 46.3 を記録した
- OPT-125M は 42.6、GPT-neo-125M は 42.9、Pythia-160M は 42.5 である
- MobileLLM-LS-125M の平均は 47.0 である
- MobileLLM-350M は平均 51.3 を記録した
- OPT-350M は 43.9、Pythia-410M は 46.6 である
- MobileLLM-LS-350M の平均は 52.1 である
- MobileLLM-600M は平均 54.3 を記録した
- Qwen1.5-500M は 48.8、BLOOM-560M は 44.2、MobiLlama-800M は 50.7 である
- MobileLLM-1B は平均 57.3 を記録した
- Pythia-1B は 48.7、MobiLlama-1B は 55.2、Falcon-1B は 56.3、BLOOM-1.1B は 46.9、TinyLlama-1.1B は 54.2 である
- MobileLLM-1.5B は平均 59.4 を記録した
- GPT-neo-1.3B は 50.6、OPT-1.3B は 52.3、BLOOM-1.7B は 49.6、Qwen1.5-1.8B は 56.5 である
- GPT-neo-2.7B は 52.8、OPT-2.7B は 55.1、Pythia-2.8B は 55.8、BLOOM-3B は 52.3 である
関連プロジェクトとライセンス
- コードは HuggingFace の Transformers リポジトリを一部ベースにしており、同リポジトリは Apache License を採用している
- 関連プロジェクトとして次が挙げられている
- 次のステップとして MobileLLM-R1 と MobileLLM-R1.5 モデルが提示されている
- MobileLLM は現在 FAIR NC ライセンスを使用している
1件のコメント
Hacker News のコメント
小型モデルは少し改善されたものの、オンラインモデルと同じ用途に使うにはまだ力不足に見える。それでも漸進的な進歩自体は悪くない。
15億パラメータモデルはかなり大きな飛躍に見えるし、より大きなモデルにも大差で勝っている。なぜもっと大きくしなかったのかは分からない。Raspberry Pi 程度のハードウェアに収まる、より効率的なモデルはゲームチェンジャーになり得る。記憶では TinyLlama 7B もかろうじて動く程度だった
この用途では、小型モデルをクラウドモデルと比較するのは公平ではない。小型モデルの精度が少し上がるだけでも意味があり、そのまま売上につながり得る
7B モデルが Raspberry Pi で「よく動く」としても、個人的には Web ベースのインターフェースでダウンロードして実行するには 7B モデルは少し大きい。一方で、まともな 125M モデルなら Web ページ上で動かせるし、ローカルブラウザにダウンロードする時間や帯域コストも過度ではない
必ずモバイル端末上になければならないのか? ニッチな用途ではあるが、リソースをあまり食わないなら、ゲームでNPC の会話をもっと面白くするのに使えそうだ。
さらに良いのは、何らかの形でチューニングして、会話が NPC の振る舞いやアクションに影響するようにできることだ
ゲームデータで LLM を学習させ、NPC が実際のゲーム世界を説明するようにすることは想像できる。ただ、それが人間にセリフを書かせるより安くなるには、どの程度の規模が必要なのか分からない。Ubisoft くらいの規模なら可能かもしれない。知る限り Ubisoft も AI によるライティングを調査してきたが、主に戦闘中の掛け声のような、非常に反復的で実質的にはノイズに近い用途だ
今 iPhone でこうしたモデルを動かせるアプリは何がある? 知っているのは MLC だけだが、そこには古いモデルが3つしかない
https://llm.mlc.ai/docs/deploy/android.html
より深く、より細くするやり方をどこまで押し進められるのか気になる。どこかの時点で FFN 全体が L2 キャッシュに収まると、性能がかなり跳ねる領域が出てきそうだ
だとすると、このアプローチが通用する小規模ネットワークの限界点があるはずだ。そうでなければ結果が互いに矛盾している。あるいは、この新しいモデル群をはるかに改善できるという意味かもしれない
何か見落としているのかもしれないが、知識蒸留のようなものはここで役に立たないのか?
関連部分の HTML ディープリンク: https://ar5iv.labs.arxiv.org/html/2402.14905#S3.SS5
「これまでは次トークンをハードラベルとして使い、小さなモデルをゼロから学習してきた。知識蒸留(KD)も探索した……残念ながら KD は学習時間を増やし(2.6〜3.2倍遅くなり)、ラベルベースの学習と同程度か、それより低い精度を示した(詳細は付録)。」
今まさに端末内での wake-word 風の音声認識が必要だ。Raspberry Pi 4B で動かせて WER が最も低いモデルは何だろう? DIY 在庫管理システム向けに openWakeWord を見ている
小さなモデルは、線形ヘッドとトークン埋め込みの間の埋め込み共有/重み共有で、サイズを最も大きく削減しているように見える。そこからさらに削減する研究が進んでいるのか気になる
残念ながら、これについて見つけたのは、大きなモデルは別レイヤーでメリットを得るという程度だった。ただし Discord のどこかで見た話なので、読むべき論文はないし、個人的な直感としては大きなモデルにも効くはずだと思う。結局 GPT-3 も GPT-2 を拡大したものだった
個人的な実験では、モデルにより難しい課題を与えると、よりよく学習した。共有された重みはその一つかもしれないし、マルチトークン予測もそうかもしれず、bitnet もそう見なせる。ドロップアウトも同じだ
デスクトップで生成 AI ではなく、ただのデスクトップ AIならどうだろう。自分のすべてのファイル、メール、ノートを整理し、自分のデータから情報を検索できるようにしてくれるとよい
いいね。これを Windows PC 向けモデルの学習にも使えるのだろうか。RAM が多くない
それでも最終的な目標は、こうしたモデルをダウンロードするか、ファインチューニング費用を払って受け取ったうえで、最適化されたニューラルネットワークチップ経由で使う方向になる可能性が高い
今は、いつそうなるかという問題に近い。最新の Windows 認証もすでに何らかのニューラルネットワークチップを要求しているし、私の Google Pixel 8 Pro も小さなモデルをホストできる。Pixel は安いスマホではないが、補助プロセッサは大きな GPU よりはるかに安いはずだ
興味深くはあるが、より優れたオートコンプリート以外に用途が何なのか気になる
Apple が向かっているように見えるアプローチが気に入っている。日常的なタスクはファインチューニングされた小さなモデルが処理し、自信を持って処理できないものはデバイス外の大きなモデルに渡す方式だ。低信頼度の回答を出すべき例を含む学習セットを作り、事実上「助けを求める」に相当する出力を追加して、その選択肢を選ぶように学習させられそうだ。小さなモデルなら複数を並列に動かし、さらに別のモデルがリクエストを適切な専門家へルーティングすることもできる
基本的に、知識ではなく行動が必要なあらゆるタスク。「妻に遅れると知らせて」と言えば、設定済みの魔法のような方法で何らかのサービスとやり取りして処理するような形だ
Siri はインターネットなしでもホームオートメーションをかなりうまくこなすが、昔の Google アシスタントや Alexa はまったくそうではなく、オフラインで可能だったこともなかったように思う。これはローカルファーストでうまく動作するアシスタントを可能にする
ユーザーのリクエストを自然言語の形で該当するアプリケーションに渡し、アプリケーション群を調整できる。デバイス機能を超えるリクエストはクラウドモデルに送れる。デバイスとのやり取りの仕方を変えられるので強力だ
望む AI アシスタントは、1) 英語と私の母語を理解し、2) 自分が Android や KDE/Linux 上で実行されていることを認識し、「Android 設定のアプリケーションセクションを開いて」「ブラウザで開いているページを読んで」「いま開いているポップアップのテキストを読んで」といった命令を理解し、公開 API で OS と統合されているべきだ。大手 AI 企業は、とくに多言語ユーザーにより良いアシスタントを売る形で競争できる
3) モデルは小さくあるべきで、地理、歴史、音楽バンドのような知識は知らなくてもよい。ユーザーが質問するタスクは、検索エンジンやオンライン LLM に渡す選択肢があればよい