24 ポイント 投稿者 GN⁺ 2025-05-14 | 2件のコメント | WhatsAppで共有
  • LLM APIやクラウドに依存せず、オンデバイスで動作する個人向け音声アシスタントを自分で作る方法
  • このアシスタントは自然言語を理解し個人用の関数呼び出しを実行し完全にローカルで動作するため、完全なプライバシー保護が可能
  • そのために、LLaMA 3.1モデルをLoRA方式でファインチューニングし、Whisperを使って音声をテキストに変換したうえで、それをコマンドとして解釈し、デバイス上で直接実行する
  • プロジェクトはデータセット生成 → ファインチューニング → 音声インターフェース接続 → テストとデプロイで構成され、それぞれを扱う5部構成の無料ミニ講座として提供される
  • 「オンデバイス実行 = 単純」という誤解に注意を促し、ローカルでもMLOps的な思考と徹底した品質管理が不可欠であることを強調

なぜ今、ローカル音声アシスタントを作るべきなのか?

  • ChatGPTとの対話は便利だが、単純な命令までクラウドに送るべきだろうか?
  • 自分のデバイスにモデルが直接インストールされていれば、速度プライバシー制御権のすべてを確保できる
  • とくに医療、法務、社内ツールなど機密性の高い環境で有用

全体アーキテクチャ概要

プロジェクト構成要素

  1. 音声認識 (Whisper) → テキストに変換
  2. LLM (LLaMA 3.1) → コマンドを解釈
  3. 関数実行器lock_screen() のような実際の機能を実行

Part 1: アーキテクチャとMLOpsの考え方

ローカルでもMLOpsが必要な理由

  • モデルドリフトプロンプトの変化データセットの信頼性デバッグ用ログ不足といった問題が存在
  • 「ローカルだけで十分だ」という考えは危険であり、体系的なアプローチが必要

オンライン開発 vs オフライン実行

  • 開発(ファインチューニング、データ生成)はクラウドで実施し、実行はローカルで動作
  • この過程を明確に分離し、体系的に管理することがMLOpsの核心

データセット生成 (Dataset Generation Flow)

  • 単なるプロンプト収集ではなく、構造化された関数呼び出しパターンと対話型リクエスト構造の設計
  • 多様な表現、意図、失敗ケースを網羅する高品質なデータセットを生成

重要ポイント

  • lock_screen() → 「画面をロックして」のような多様な自然言語表現を含める
  • 自動検証エンジンによって、出力が意図した形式かどうかを確認

ファインチューニング (Instruction Tuning for Function Calling)

  • 正確なコマンドマッピングのために、小型モデルをSFT方式でファインチューニング
  • UnslothW&BGGUF形式の書き出しなど実務向けツールを活用

目標

  • LLaMA 3.1 8Bをローカルで動作可能な4bitモデルへ変換
  • Raspberry Piまで対象にできる軽量化を目指す

モデル接続と実際の実行

  • Whisperで音声入力をテキストへ変換
  • ファインチューニング済みLLMがコマンドを解釈
  • ローカルAPIの関数実行器(lock_screen(), get_battery_status() など)と接続

結果

  • リアルタイム音声アシスタントとして動作可能
  • ネットワーク不要個人情報流出なし完全なユーザー制御が可能

オフライン段階におけるリスク管理

  • さまざまなデバイス、OSでのテストが必要
  • ログ収集システムの構築が必須(opt-in形式で手動提出)
  • 正式リリース前にストレステストとユーザーフィードバックで問題を早期発見

今後の計画

  • 次回の講座では関数呼び出し用データセット生成の実践を行う
  • 自然言語コマンド → API呼び出しマッピングを学習する専用データセットを構造的に構築
  • スクレイピング禁止プロンプトベースのシミュレーションと自動検証データのみを使用

結論

  • ローカルAIシステムはシンプルに見えても、安定性と品質にはより高い水準の管理が求められる
  • クラウドログやホットフィックスに依存しないため、より高い信頼性と責任感が必要
  • そのために、MLOps的な考え方と構造的設計を最初から適用すべき

> 「プライバシー重視、ローカルファーストの本物のAIアシスタントを作る時代が来た」
> 次回は実際のコマンド-関数マッピング用データセット生成の実践を始める。

2件のコメント

 
asheswook 2025-05-15

3.1は英語以外のユーザーには使いづらく、3.3や4なら韓国語もいけそうですが、オンデバイスで動かすなら英語以外は少なくとも32B以上でないと意味があるレベルにならないことを考えると、まだ厳しそうです…

 
GN⁺ 2025-05-14
Hacker Newsのコメント
  • こういうアイデアは気に入っていて自分でも作ってみたいが、whisper の小さいモデルをローカルで使った経験は期待外れだった。この程度のユースケースで十分な品質を得られた人がいるのか気になる。自分のマイクが良くなかったのかもしれない
    • マイクの状態はぜひもう一度確認したほうがいい。うちの会社では Whisper を使って会議全体をリアルタイムで文字起こし・翻訳しているが、非常に優れた性能を見せている
    • どのモデルを使っているのか気になる。私はたいてい large モデルを GPU で使っていて、速度も速く本当によく動く。ただし、一度に認識できるのは1言語だけという点には注意が必要で、指定しなければ自動検出になる。小さいモデルはそのぶん性能が足りず、主に英語しか対応していないことが多い。私にとっては large が最高の性能を出すが、実用的な速度を出すには GPU ハードウェアが必須だ。faster-whisperinsanely-fast-whisper と組み合わせても同じ
  • そのままインストールして使える製品やアプリの形だったら本当に良いのに。UI で簡単に設定して学習させたい。それでもこのガイドのおかげで、自分が欲しいものを作れそうで本当にありがたい
  • 本当に素晴らしい資料で、お礼を伝えたい。まだ全部は試していないが、このモデルが iPhone で実際によく動くのか気になる。うちの9歳の子は ollama で Qwen 0.6B モデルは問題なく動かせたが、それ以外のモデルは遅すぎて実用的なユーザー体験ではなかった
    • ああ、9年前の電話の話だったのか。私は小学生が自分でモデルをデプロイしているのかと思って驚いた。その年齢のころの私は、まだ九九を勉強していた
    • MLC の資料によると、8B 規模のモデルまでは iOS でも動かせるらしい。ただ、1〜3B くらいのほうが現実的に見える。参考資料: https://llm.mlc.ai/docs/deploy/ios.html#bring-your-own-model
  • なぜ LLM が書いた文章である必要があるのか疑問
    • こういう要約スタイル、つまり強いフォーマットと (!) すべての段落が箇条書きになっている点がひどく混乱を招く。特に長文だと画面が散漫でのっぺりして見え、読みやすさが落ちる感じがする
  • 最近になって(自分が告知を見落としていただけかもしれないが)Siri が少なくとも一部のコマンドについてはローカルで動作していることに気づいた。たとえば Apple Watch を機内モードにして、タイマーやリマインダーを頼んでみるとよい
    • Siri は少なくとも iOS 15 の時点で限定的なオフライン機能を備えていた。ただ大半のユーザーはそれに気づいていなかった。Siri コマンドのほとんどがネットワーク接続を必要としているからだ
  • Apple はなぜデータを分析して、上位およそ1000件ほどの利用用途に対してハードコードされたハンドラを用意しなかったのだろう
    • 実際にはその作業自体はすでに進めているのだが、ペースがあまりに遅い。明るさや電源関連の機能は追加している一方で、オフラインで何が使えるのかをきちんと案内していない。ユーザーは機内モードに切り替えて、あれこれ自分で試してみないと確認できない。ユーザー体験としてひどい
  • すてきなプロジェクトで、まとめ方も良い
  • Apple が Siri を別のアシスタントに置き換えることを許すのか気になる。Android では Google 以外のアシスタントは長いあいだ、バックグラウンドリスニングやハードキー、ジェスチャー、ショートカットの利用に制限があった。Google アシスタントが今も優遇を維持しているのかは分からないが、そうだとしても特に驚きはしない
    • 問題の一部は “hey siri” のウェイクワードを処理する別個のコプロセッサ(AOP)にある。モデルもファームウェアにコンパイルされている。技術的に不可能ではないが、単に Google アプリをバックグラウンドで動かしておくだけでは実現できない。というのも、AP がスリープしている状態でジェスチャーが発生するからだ。側面のアクションボタンなどでアシスタントアプリを起動することはできるだろうが、満足できる体験にはならないはずだ(アプリが開いていない可能性など)。詳しくは以下を参照: https://machinelearning.apple.com/research/hey-siri
    • 新しく追加されたアクションボタンを使えば、カスタムショートカット経由で代替アシスタントアプリを起動するのはかなり簡単
    • Perplexity もこの方式で動いている
  • この1年半、iPhone で ChatGPT を忠実に使ってきたが、Siri のもどかしさがひどくてますます嫌いになっている。OpenAI が Microsoft の支援を受けて、iPhone に対抗する GPTフォンをいつ出すのか気になる。私は退屈な iPhone に飽きた。ロック画面からすぐに GPT が何でも代わりにやってくれる GPTフォンが必要だ。早く出てほしいと心待ちにしているし、たぶん水面下で開発中なのではと期待している