Apple Silicon と macOS VM を活用した llama.cpp による高速化された大規模言語モデルの推論

2026/08/11 23:50

Apple Silicon と macOS VM を活用した llama.cpp による高速化された大規模言語モデルの推論

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Apple は、ゲストプロセスに対して GPU 機能の報告方法を補正することで、macOS の仮想マシンにおける大規模言語モデル(LLM)推論のパフォーマンスをネイティブ環境(bare-metal)に近づける研究用ツールを発表しました。本ツールは、プロセスごとの「Metal 能力シム」を採用し、仮想マシンが Apple ファミリー 9 GPU への対応をサポートしていることを報告するとともに、最大スレッドグループメモリを 32 KB から 64 KB に増加させます。これにより、llama.cpp は従来の標準仮想マシンでは利用不可能であった高度な Metal カーネル(SIMD グループ演算による削減、SIMD グループ行列、bfloat16)を選択できるようになります。M1 Ultra(48 コア GPU)、macOS 26.6.1、Tahoe Cua イメージ、Lume 0.5.1 を使用したテストにおいて、シムはワークロードによりますが、プロンプト処理速度ではネイティブ環境の約 98–100%、生成速度では 72–95%のパフォーマンスを達成しました。Meta の Muse Glimmer 30B の場合、64 GiB のゲスト環境において、プロンプト段階では約 7.5 倍、トークン生成段階では約 8.9 倍の高速化を実現しました。本アプローチは Apple の既存のパラ仮想化グラフィックスパスを利用しており(物理的な PCI 割り当てや VFIO は不使用)、プロセス単位でのスコープ化により堅牢な実行ファイルには影響を与えず、Lume および Cua と同一の許諾条件を持つ自由なライセンスで公開されています。Virtualization.framework 内の非公開の Metal 詳細に依存するため、本ツールは macOS のバージョンに対して敏感であり、実験的なローカル AI 研究向けです。

本文

Apple Silicon と macOS VM で LLM 推論を高速化する:llama.cpp を用いた実績(11〜16 倍の改善)

2026 年 8 月 11 日公開
著者:Francesco Bonacci および Johnny Franks


背景と課題:既存 VM の性能制限

  • Cua が発表した macOS 仮想化スタック Lume を用いると、ホストの Apple GPU に基づく仮想 GPU が利用可能ですが、標準搭載の Tahoe VM では以下の問題が発生していました。
    • 控えめな Metal 機能プロフィール(capability profile)を報告する。
      • supportsFamily
        : false
      • 最大スレッドグループメモリ:32 KB
      • SIMD グループ行列サポート:不可
    • llama.cpp が新しいカーネルを選択せず、より遅い GPU コード経路を実行していた。

従来の問題点の概要

  • アプリケーションは報告された情報に基づきカーネルやレンダリング経路を選択するため、本来の性能が発揮できていない状態でした。
    • llama.cpp は「保守的な回答」によって、能力のある GPU パスから制限されていた。

解決策:プロセス固有の Metal 能力シム(Shim)の開発

軽量なプロセス固有の互換性レイヤー(シム)を開発し、特定のゲストプロセスのみに対して選択的な能力回答を変更します。

シムの仕組み

  • アプリケーションと API の間に挿入される互換性レイヤーとして動作する「小さな Metal 能力シム」を開発した。
    • 単一のゲストプロセス内で動作し、Metal 能力クエリーを傍受して回答を変更する。
    • これにより、llama.cpp に新しい GPU カーネルの選択を促すことができる。

変更されるプロフィール(テスト済み)

能力項目標準搭載ゲストテスト済みプロフィール
supportsFamily
(Apple Family)
false (利用不可)true (利用可能,第 9 世代:1009)
最大スレッドグループメモリ32 KB64 KB
SIMD グループ行列処理offon
SIMD グループ削減処理offon
bfloat16offon
  • 影響範囲: 報告される「Apple ファミリー」と「スレッドグループメモリ上限」のみを変更。
    • 他の値(Mac / Common Metal、ワーキングセットサイズなど)は標準設定のまま。
    • 誤ったまたは欠落した構成情報はプロセスを標準の能力パス上に留めるよう機能する。

ベンチマーク結果:llama.cpp を用いたモデルテスト

1. TinyLlama 1.1B(M1 Ultra / macOS 26.6.1)

  • 環境: 48 コア GPU を備えた Apple M1 Ultra、macOS 26.6.1。
  • 使用モデル: TinyLlama 1.1B Chat Q4_K_M GGUF (公式 llama.cpp b10167)。
  • ベンチマークコマンド:
llama-bench -m tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf \
  -p 512 -n 128 -r 10 -t 8 -ngl -1 -o json

比較結果(中位数:サンプル 10 件の平均)

ワークロードホスト (Bare-metal)標準搭載ゲストロック解除済みゲストゲストでの向上率ロック解除済み / ホスト
プロンプト処理 (512 トークン)4,871.99 tok/s431.86 tok/s4,786.70 tok/s11.08×98.25%
トークン生成 (128 トークン)286.71 tok/s12.63 tok/s206.60 tok/s16.36×72.06%
  • プロンプト処理: ホスト環境(bare-metal)の結果にほぼ達し、98% の性能を発揮
  • トークン生成: VM のギャップが確認され、ホスト速度の約 72% に留まる。

生データには正確なイメージダイジェスト、モデルハッシュ値、コマンド、JSON 出力が含まれており、再現可能です。


2. Google Gemma 4 12B QAT Q4_0 モデル

  • 環境: 同じ llama.cpp バイナリを使用。推測的デコードは無効化し、マルチモーダルプロジェクターをロードしない設定で比較。
  • 結果:
ワークロードホスト (Bare-metal)標準搭載ゲストロック解除済みゲストゲストでの向上率ロック解除済み / ホスト
プロンプト処理 (512 トークン)517.88 tok/s71.66 tok/s515.76 tok/s7.20×99.59%
トークン生成 (128 トークン)52.38 tok/s3.41 tok/s49.67 tok/s14.54×94.82%
  • Gemma 4 の証拠には、Google モデルの修正版と SHA-256 ハッシュ値が含まれています。
  • 標準搭載およびロック解除済みのデータは、同一の無競争(uncontended)ウィンドウから取得しています。

3. Meta Muse Glimmer 30B Q4_K-M GGUF モデル

  • 環境: 64 GiB のゲスト環境。llama.cpp b10359 を使用。
  • 設定: 8 スレッドおよびフル GPU オフロード。テキスト専用テスト(Ollama やマルチモーダルは未使用)。
  • 結果(llama-bench サンプル 3 件の中位数):
ワークロード標準搭載ゲストロック解除済みゲストゲストでの向上率標準搭載範囲ロック解除済み範囲
プロンプト処理 (512 トークン)25.83 tok/s194.97 tok/s7.55×25.76-26.10194.57-195.33
トークン生成 (128 トークン)2.38 tok/s21.08 tok/s8.87×2.15-2.4121.07-21.10
  • 全プロセス正常終了。利用可能メモリの 98%、スワップゼロを維持。
  • stderr: 標準搭載では Apple ファミリー 5 で SIMD/bfloat パスが無効、ロック解除済みではファミリー 9 で有効と報告。

注記: この結果はテキスト専用 GGUF に適用されます。Ollama のスループットやマルチモーダルコンポーネントに対する解釈には注意が必要です。


4. MLX-LM での検証(比較対象)

  • 環境: MLX 0.32.0、mlx-community/Llama-3.2-3B-Instruct-4bit。
  • 結果: 標準搭載 VM で既に高速なため、パフォーマンスは平坦化(変化なし)。
ワークロード標準搭載ゲストロック解除済みゲスト比率
プロンプト処理 (512 トークン)1,656.55 tok/s1,665.47 tok/s1.005×
トークン生成 (128 トークン)172.09 tok/s170.86 tok/s0.993×
  • MLX はパラバーチャライズされたデバイスを通じて利用不可なレジデンスセットを要求するようになりましたが、リリース用シムは Apple ファミリー列挙子のみを変更し、Metal 3 を標準値に維持することで回避可能です。

他の仮想化ツールにおける同様の問題点

  • Tart などの macOS 仮想化 CLI ツールでも、「macOS ゲスト内部でのグラフィックスおよび LLM パフォーマンスにおける GPU のパススルーが不可能」というオープンな問題が存在します。
  • Apple の Virtualization.framework は、ホストが物理 GPU を制御する「パラバーチャル化(paravirtualization)」アーキテクチャを採用しており、x86 Linux 環境で一般的である VFIO/IOMMU ベースの「GPU パススルー」とは異なるモデルです。

Lume VM で試す:具体的な実装手順

ソースコードは

libs/lume/metal-capability-shim
にあります。

1. アーテファクトのビルドと検証

cd libs/lume/metal-capability-shim
./Scripts/build.sh
./Scripts/verify.sh

2. VM での有効化(ホスト側)

VM を停止し、MacOS ユーザーによって起動される VM に対して不制限機能レベルを有効化し、再開します。

lume stop my-vm
defaults write com.apple.gpusw.ParavirtualizedGraphics ForceUnrestrictedDeviceFeatureLevel -bool true
lume run my-vm

3. ゲストへのインストールと起動

一致する dylib とプローブをゲストにコピーし、アクティベーションをプロセスに限定します。

lume ssh my-vm "DYLD_INSERT_LIBRARIES=/path/to/LumeMetalCapabilities-arm64.dylib \
    LUME_METAL_APPLE_FAMILY_MAX=1009 /path/to/metal-capabilities 1009"
  • 長期間動作するサーバーの場合: ワークロード固有の LaunchAgent を使用し、環境変数に
    DYLD_INSERT_LIBRARIES
    を設定してください。
  • ロールバック: 環境変数を削除しワークロードを再起動することで、標準動作に戻ることができます。ホストのプリファレンスを復元するには、VM を停止し
    ForceUnrestrictedDeviceFeatureLevel
    を削除してから起動します。

Lume ガイドには完全なテンプレート、チェックサムおよび検証手順、ロールバック手順が含まれています。


制限事項と注意点

  • 実験的かつバージョン依存: シムはゲスト側の Metal 実装の詳細な非公開機能に依存しており、macOS リリースのいずれかで動作が変更される可能性があります。
  • プロセス固有: 注入されたワークロードとその子プロセスのみを影響させます。ハードニング済みまたはプラットフォーム保護された実行可能ファイルはライブラリの注入を拒否する場合があります。
  • 構成された能力プロフィール: テストで網羅した Apple ファミリー(9)の値のみを報告します。物理 GPU の能力発見はその範囲外です。
  • 限定的な検証: 現在の証拠は、llama.cpp モデル、M1 Ultra ホストおよび Tahoe ゲスト上の MLX-LM 互換性ランのみをカバーしています。追加のチップやモデルについては個別のテストが必要です。
  • VM のままである: 既存の Virtualization.framework レンダリングおよび仮想化制限は残存します。

まとめと今後の展望

主要な成果

  • 狭い範囲の能力変更(2 つ)で、llama.cpp を用いた LLM の推論速度を劇的に向上させました。
    • TinyLlama 1.1B: プロンプト処理 432→4,787 tok/s、生成 12→206 tok/s(最大 16.36 倍)。
    • Gemma 4 12B: プロンプト処理 71→515 tok/s、生成 3→49 tok/s(最大 14.54 倍)。
    • Muse Glimmer 30B: プロンプト処理 25→195 tok/s、生成 2→21 tok/s(最大 8.87 倍)。
  • 各ワークロードは Apple の既存の GPU ブリッジ上で動作を維持しています。

コミュニティへの呼びかけ

  • Lume は開発者のために macOS VM を実用的なものにする手段としてスタートしました。
  • GitHub で Cua をスターし、シムを貴方のセットアップでテストしてください。
  • ホストチップ、ホストおよびゲストバージョン、正確なワークロード、ならびに結果を開示するイシューを作成してください。
  • 新しい組み合わせを検証したり、シムを改善したらプルリクエストを送ってください。

Metal や Virtualization.framework を担当する Apple エンジニアは、vz@trycua.com までご連絡ください。

同じ日のほかのニュース

一覧に戻る →

2026/08/12 4:35

Nvidia Nemotron 3.5 Lightning および NeMo Switchyard

## Japanese Translation: NVIDIA は、マルチエージェントシステム内の長期間にわたるエージェント型 AI ワークロードおよび専門的なタスク向けに設計された、300 億パラメータを持つ混合物専門家(MoE)オープンモデル「Nemotron 3.5 Lightning」を発表しました。本モデルは最先端レベルの精度を提供するとともに、出力速度が最大で 4 倍高速化し、エージェント型タスクの完了速度も約 30% 向上しています。これにより、大量の実装が可能になりつつ運用コストを削減できます。本モデルは、NVIDIA NeMo を用いて組織固有のデータを用いた後学習が可能であり、Nemotron Coalitions の貢献に基づいています。また、データのプライバシーと制御を維持するため、ローカル AI システム(NVIDIA RTX PC、DGX Spark、DGX Station、Jetson)、エッジデバイス、ワークステーション、データセンター、クラウド環境への展開をサポートしています。 効率を最大化するため、NVIDIA は開発者がアプリケーションを書き直す必要なく、品質、遅延、予算に基づいて自動的にリクエストを開封モデル、プロプライエタリモデル、または NVIDIA の混合モデルの最も適したものへ導くオープンソースのインテリジェントルーティングライブラリ「NeMo Switchyard」を発表しました。パートナー企業は既に Switchyard を統合し、精度を維持しつつコスト削減を実現しています。具体的な事例としては、Boomi(ドメインルーティング精度 100%)、Ramp(コスト削減 58%)、Classmethod(コスト削減 27%)、Cognition(Devin Desktop のコスト削減 28%)があり、Kong、LangChain、LiteLLM、Nous Research、Siemens による統合も進んでいます。 業界での採用は加速しており、組織はセキュリティ対策(CrowdStrike)、法務サービス、コードレビュー、ソフトウェア開発(Harvey との Trajectory、CodeRabbit との Baseten、Lila Sciences、Fastino Labs など)といったドメイン特化のエージェント型タスクに Nemotron 3.5 Lightning をカスタマイズしています。Nemotron 3.5 Lightning は Hugging Face、ModelScope、OpenRouter、build.nvidia.com(NVIDIA NIM マイクロサービスとして)、ならびに幅広い NVIDIA クラウドパートナーのエコシステムを通じて提供可能です。一方、NeMo Switchyard は GitHub で利用可能で、近々パートナープラットフォームにも展開されます。

2026/08/12 4:49

圧縮とは予測である

## Japanese Translation: ## 概要: Annie Sexton は ngrok で開発者教育担当として在籍し、Heroku、Render、Fly.io など PaaS 企業にて 10 年以上にわたって経験を持つ人物です。彼女は、「nerd-sniping」と呼ばれる遊び心のある用語で表される開発者への情熱——すなわち共有する技術的熱情を即座に惹きつけ、彼らを魅了する能力——によって際立っています。彼女の主な価値は、複雑なクラウドインフラストラクチャとそれを構築する人間クリエイターの間を取り持つことにあります。この深い歴史的文脈とエンジニアリングの craft に対する真摯な共感を活用することで、Annie は抽象的な技術概念をアクセスしやすく魅力的な学習体験へと転換させます。これにより開発者が支えられていると感じることが保証され、混同ではなくつながりを通じて革新が育まられるエコシステムが醸成されます。

2026/08/12 1:56

Mojo 1.0

## Japanese Translation: Mojo言語のバージョン1.0がリリースされ、2023年の初リリース以来確立された安定した、プロダクション対応の基盤へと、急激な実験段階からの移行を象徴しています。1.xシリーズではC++などの成熟した言語の標準に従い、破損を引き起こすシフトを避けるために追加的な変更を優先します。約20万人のコードラインと、ほぼ200人の貢献者から寄せられた1,100以上のプルリクエストを基盤としており、一貫性のある`var`を用いた変数宣言、統合されたクロージャ、単一のPointerType、そして正確な語彙再命名といった主要な簡素化がリリースに含まれています。新しい機能には、Python風のラムダ構文、参照無効化に対する改良されたメモリ安全性診断、より優れた`where`節、VS Code向けのより安定したLSPサーバーが含まれます。開発者は今や、信頼性の高い「1.0対応」のAIスキルを使用でき、`uv pip install --upgrade mojo`または`uv pip install max[all]`などのコマンドでインストールできます。MAXの強化(GLM-5.2およびNemotron-Hへのサポートなど)は`max["serve"]`を通じて利用可能で、skills.shを通じてオープンソースのエージェントスキル7,200以上がダウンロードされ、モデル全体のライフサイクル導入を加速しています。不安定なモジュール化パッケージはバージョン26.6で廃止予定となっており、長期的耐久性に向けた完全なアーキテクチャシフトを示しています。今後の投資には非同期プログラミングモデル、パターンマッチング、ユニオンが含まれ、また2026年までにMojoコンパイラとツールチェーンの段階的なオープンソース化も進められます。Mojo、MAX、オープンソースに関する詳細および計画については、8月18日にサンフランシスコで開催されるModConにて共有され、完全な変更ログの詳細はmojolang.orgおよびGitHubリポジトリで入手可能です。

Apple Silicon と macOS VM を活用した llama.cpp による高速化された大規模言語モデルの推論 | そっか~ニュース