広告

M5-Max Macbook Pro 128GB RAM - Qwen3 Coder Next 8-Bit ベンチマーク

Reddit r/LocalLLaMA / 2026/3/29

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical UsageModels & Research

要点

  • この記事では、2つのローカル推論バックエンド(Apple MLX(mlx-lm経由)とOllama(llama.cppベース))を用いて、Apple Silicon上でQwen3-Coder-Nextを8-bit量子化した場合のコーディング性能をベンチマークし、比較します。
  • ストリーミングを有効にした共通のPythonハーネスで、スループット(tokens/sec)、最初のトークンまでのレイテンシ(TTFT)、応答の総ウォールクロック時間、システムのメモリ使用量を測定します。
  • 报告されている主要結果は、128GB RAM搭載のM5-Max MacBook Proが、MLXバックエンドで8-bitモデルを72 tokens/秒で処理できることです。
  • テストは各プロンプトにつき複数回の反復を実行し、平均結果を算出します。加えて、最初のプロンプトに関するコールドスタートのTTFTは負荷時間の偏りを減らすために除外します。
  • プロンプトのセットには、短いコード補完から、より長く推論を要する実装までの6つのプログラミング向けタスクが含まれており、実用的なコーディング能力を評価します。

Qwen3-Coder-Next 8-Bit ベンチマーク:MLX vs Ollama

TLDR: RAM 128gb 搭載の M5-Max は、MLX を使って Qwen3-Coder-Next 8-Bit から 1 秒あたり 72 トークンを出力します

概要

このベンチマークでは、同一の Qwen3-Coder-Next モデルを Apple Silicon 上で 8-bit 量子化して実行する、2 つのローカル推論バックエンド――MLX(Apple のネイティブ ML フレームワーク)とOllama(llama.cpp ベース)――を比較します。目的は、生のスループット(トークン/秒)、最初のトークンまでの時間(TTFT)、そして実世界のさまざまなプログラミング課題に対する全体的なコーディング能力を測定することです。

手法

セットアップ

  • MLX バックエンド: mlx-lm v0.29.1 が内蔵の OpenAI 互換 HTTP サーバーで mlx-community/Qwen3-Coder-Next-8bit をポート 8080 にて提供。
  • Ollama バックエンド: Ollama が OpenAI 互換 API でポート 11434 にて qwen3-coder-next:Q8_0 を提供。
  • 両バックエンドは、ストリーミングを有効にした OpenAI クライアントライブラリを用いて、同一の Python ベンチマークハーネス経由でアクセスしました。
  • 各テストはプロンプトごとに3 回実行しました。結果は平均化し、最初の反復の TTFT(モデルの初期コールドスタート:ロード)を除外しました。

指標

指標 説明
Tokens/sec(tok/s) 1 秒あたりに生成された出力トークン数。高いほど良い。ストリーミングされたチャンクを数えることで概算(1 チャンク ≈ 1 トークン)。
TTFT(Time to First Token:最初のトークンまでの時間) リクエスト送信から最初のトークンを受信するまでのレイテンシ。低いほど良い。プロンプト処理+初期デコードを測定。
総時間 応答全体にかかったウォールクロック時間。低いほど良い。
メモリ psutil により、各実行の前後でのシステムメモリ使用量を測定。

テストスイート

6 つのプロンプトを設計し、簡単な補完から複雑な推論まで幅広いコーディング課題をカバーしました:

テスト 説明 最大トークン 測定するもの
短い補完 回文チェック関数を書く 150 最小レイテンシのコード生成
中程度の生成 型ヒント付きで LRU キャッシュクラスを実装する 500 構造化されたクラス設計、API の正しさ
長い推論 例を挙げて async/await とスレッド(threading)を説明する 1000 拡張された文章生成、技術的な正確さ
デバッグ課題 マージソート+二分探索のバグを見つけて修正する 800 バグの特定、コード理解、説明
複雑なコーディング コンテキストマネージャ付きの、スレッドセーフな上限付きのブロッキングキュー 1000 高度な並行性パターン、API 設計
コードレビュー 性能/正確性/スタイルの観点で 3 つの関数をレビューする 1000 複数関数の分析、具体的な提案

結果

スループット(1 秒あたりのトークン数)

テスト Ollama(tok/s) MLX(tok/s) MLX の優位性
短い補完 32.51* 69.62* +114%
中程度の生成 35.97 78.28 +118%
長い推論 40.45 78.29 +94%
デバッグ課題 37.06 74.89 +102%
複雑なコーディング 35.84 76.99 +115%
コードレビュー 39.00 74.98 +92%
全体平均 35.01 72.33 +107%

短い補完のウォーム実行平均(コールドスタートの反復を除外)。*

最初のトークンまでの時間(TTFT)

テスト Ollama TTFT MLX TTFT MLX の優位性
短い補完 0.182s* 0.076s* 58% 速い
中程度の生成 0.213s 0.103s 52% 速い
長い推論 0.212s 0.105s 50% 速い
デバッグ課題 0.396s 0.179s 55% 速い
複雑なコーディング 0.237s 0.126s 47% 速い
コードレビュー 0.405s 0.176s 57% 速い

ウォーム実行の値のみ。コールドスタートは 65.3s(Ollama)対 2.4s(MLX)で、最初のモデルロードに要しました。*

コールドスタート

各バックエンドへの最初のリクエストには、モデルのロード時間が含まれます:

バックエンド コールドスタート TTFT 注記
Ollama 65.3 秒 84 GB の Q8_0 GGUF をメモリにロード
MLX 2.4 秒 事前にシャーディングされた MLX 重みをロード

MLX のコールドスタートは 27 倍高速 です。MLX の重みは Apple Silicon の統一メモリアーキテクチャ向けにあらかじめシャーディングされているのに対し、Ollama は llama.cpp を通して GGUF の重みを変換・マッピングする必要があるためです。

メモリ使用量

バックエンド メモリ(Before) メモリ(After:安定化後)
Ollama 89.5 GB ~102 GB
MLX 54.5 GB ~93 GB

両バックエンドは、モデルが完全にロードされると(84 GB モデルに対して約 90〜102 GB:ランタイムのオーバーヘッド込み)同程度のメモリ使用量に落ち着きます。MLX はモデルがまだメモリ上に常駐していなかったため、ベースラインのメモリ使用量が低い状態から開始しました。

能力評価

生の速度のほかにも、両バックエンドで、モデルはすべてのコーディング課題において高品質な出力を生成しました(同一のモデル重みのため、出力品質はバックエンドに依存しません):

  • バグ検出: テストコード内の両方のバグ(マージでの末尾要素の欠落、二分探索での整数除算と無限ループ)を、両方のバックエンドにおいて全反復で正しく特定できました。
  • コード生成: LRUキャッシュとブロッキングキューのための、構造化された型ヒント付きの実装を作成しました。適切な標準ライブラリ要素(OrderedDictthreading.Condition)を使用しました。
  • コードレビュー: 実際の問題(素朴なメールの正規表現、Counterを使わない手動の単語カウント、type()isinstance()の使い分け)を特定し、具体的に改善された実装を提示しました。
  • 一貫性: 応答品質は反復を通じて安定していました——同じバグが見つかり、同じパターンが使われ、トークン数も同程度で、テストした温度(0.7)での決定的な挙動が示されました。

結論

  1. MLXはOllamaより2倍高速 です。Apple Silicon上のこのモデルで、平均72.3 tok/s vs 35.0 tok/s
  2. TTFTはMLXで約50%低いです。すべてのプロンプト種別で、ウォームアップ後は一定です。
  3. コールドスタートはMLXで劇的に改善されています(2.4s vs 65.3s)。これはインタラクティブ用途で重要です。
  4. MLX上でのQwen3-Coder-Next 8-bitは約75 tok/s で、リアルタイムのコーディング支援に十分な速さです。短い補完では即時感があり、長い出力ではスムーズにストリーミングされます。
  5. Apple Silicon上での大規模モデルのローカル推論では、MLXが明確な勝者です。Ollamaのllama.cppバックエンドよりも有利で、統合メモリアーキテクチャとMetal GPUアクセラレーションをより効果的に活用しています。
投稿者:

広告