AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Apple Silicon Local Llm Serving

skill-shimo4228-contemplative-agent-apple-silicon-local-llm-serving · by shimo4228

Apple Silicon (M1–M5) でローカル LLM の推論ランタイムを選ぶ・足す・最適化するときの判断軸。mlx_lm.server は Ollama 比 ~1.8x 速だが生成専用(埋め込み endpoint なし・response_format/JSON schema 拘束なし)なので埋め込みは Ollama に残す2サーバ構成になる点、ユニファイドメモリは VRAM 容量でなくメモリ帯域律速で MoE は RAM を節約しない点、コンテナは Metal 非対応な点を扱う。Use when 「Mac でもっと速く / 大きいモデルを動かしたい」「mlx-lm / MLX を入れたい」「Ollama から乗り換え / 併用したい」「16GB で実用的なモデルは」を検討するとき、生成を MLX に寄せて埋め込みの扱いで詰まったとき、ローカル LLM のベンチ A/B でメモリ…

No reviews yet
0 installs
29 views
0.0% view→install

Install

$ agentstack add skill-shimo4228-contemplative-agent-apple-silicon-local-llm-serving

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-shimo4228-contemplative-agent-apple-silicon-local-llm-serving)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Apple Silicon Local Llm Serving? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Apple Silicon ローカル LLM serving: mlx_lm.server vs Ollama

Apple Silicon で「もっと速く / もっと大きいモデルを」運用したくなったとき、NVIDIA 前提の知識(VRAM の壁・量子化ラベル・MoE オフロード)はそのまま当てはまらない。Ollama から MLX (mlx_lm.server) に寄せる際は、非自明な3つの制約(埋め込み非対応・構造化出力非対応・コンテナ不可)で詰まりやすい。このスキルはその判断軸と落とし穴を持つ。

Contemplative Agent では ADR-0064 でこの判断を実装している(LLM_BACKEND=mlx で生成のみ mlx_lm.server、埋め込みは Ollama 据え置き)。以下は実測・ソース精読で確定した汎用知見。

ランタイム選択

  • mlx_lm.server(Apple 純正 MLX ランタイム)は同一重みで速い・軽い。M1/16GB・Qwen 9B 実測で Ollama (Metal/GGUF) 比 生成 ~1.8x 速・メモリ 8.6→5.2GB。差は本質的(後述の交絡チェックで確認済み)。API は OpenAI /v1/chat/completions 形式。
  • ただし生成専用。2つの「無い」に注意:
  1. 埋め込み endpoint が無い → 埋め込み(nomic-embed-text 等)は Ollama (/api/embed) に残す。結果は「生成 = mlx_lm.server :8080 / 埋め込み = Ollama :11434」の2サーバ併走になる。
  2. response_format / JSON schema 拘束が無い(Ollama の format= 相当が無い)→ 構造化出力は プロンプト指示 + パース fallback で代替する。単純スキーマ({"items":[...]} 等)なら instruct モデルは十分クリーンな JSON を返す(実測でフォールバック発動0)。複雑スキーマで崩れるなら、その呼び出しだけ Ollama に残す。
  • thinking 系モデルの thinking off は per-request chat_template_kwargs={"enable_thinking": false}(または起動時 --chat-template-args '{"enable_thinking": false}')。
  • mlx-lm を依存に入れない: アプリは HTTP を叩くだけなので uvx --from mlx-lm / uv tool install mlx-lm で server を回し、アプリの依存は increase させない。

ユニファイドメモリの効き方(NVIDIA 知識の翻訳)

  • 「VRAM 容量の壁」→「メモリ帯域の問い」に変わる。CPU/GPU が同一メモリプールをゼロコピー共有するので容量制約は緩いが、生成(デコード)は帯域律速: 生成 tok/s ≈ メモリ帯域 ÷ モデルサイズ。無印 M1=68GB/s は Pro(200)/Max(400) の数分の一で、これが tok/s の天井を直接決める。プロンプト処理(プリフィル)は計算律速。
  • MoE は Apple Silicon では RAM を節約しない。トークン毎に一部エキスパートしか活性化しなくても全エキスパート重みが常駐必須(別 VRAM プールが無いので NVIDIA のエキスパート CPU オフロード手法は無効)。「8GB GPU で 120B」式の MoE オフロードは Apple Silicon に移植できない。
  • 16GB で重みに使えるのは実用 ~11GB(Metal の recommendedMaxWorkingSetSize が物理 RAM の ~67–75% にソフト制限)。sudo sysctl iogpu.wired_limit_mb で引き上げ可(ハード上限ではない)。9–10GB の重み + KV キャッシュ + OS で枠を超えればスワップする。
  • コンテナ不可: macOS Docker は Metal パススルー非対応で、コンテナ内 MLX/Ollama は CPU 推論に落ちて 3–5x 遅い → 推論サーバはホスト実行(→ docker-local-llm-tradeoff 参照)。

ベンチ A/B の落とし穴

  • メモリ圧(スワップ)の交絡: 重いモデルを 16GB で測ると、片方がスワップ中・もう片方が低スワップだと差が不当に出る。疑わしい arm を低スワップ条件に揃えて再測定し、速度差がランタイム本質か資源圧の副産物かを切り分ける(今回 Ollama を低スワップで再測定し、~7 tok/s で不変 → MLX の優位は本質と確定した)。
  • 公平性の統一: thinking ON/OFF・temperature・max_tokens・量子化ビットを両 arm で揃える。特に thinking 不一致はトークン数と速度を別物にする。ウォームアップ1回を捨て、3回の中央値を取る(初回はモデルロードと Metal シェーダコンパイルが混ざる)。
  • 量子化は arm 間でバイト等価でない(GGUF Q4KM ≠ MLX 4bit)。速度比較は妥当だが、品質差はランタイムでなく量子化方式の差が混ざる。品質を測るなら量子化を近づける(混合精度の OptiQ 系など)。

When to Use

  • Apple Silicon でローカル LLM ランタイム(Ollama / mlx-lm / LM Studio)を選ぶ・併用するとき
  • mlx_lm.server を既存 Ollama 構成に足すとき(埋め込み・構造化出力で詰まる前に)
  • 「16GB でもっと速く / 大きいモデルを」を NVIDIA 前提(VRAM の壁・MoE オフロード)で考えてしまったとき
  • ローカル LLM のベンチ A/B が腑に落ちないとき(メモリ圧の交絡を疑う)

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.