| TL;DR: ついにこれが動くようになって、32GB RAMのMacというかなり厳しい条件の中で、ちゃんと実作業できるようになりました。 では、Julien Chaumondのように飛びたい人のために、更新版のHOW-TOと、私がやったことの理由の説明、そして実際にどれくらいちゃんと動くのかについての私見をまとめます。 これはある時点のスナップショットです。セットアップが良くなるにつれて、修正版を継続して投稿します。 HOW-TO * モデルはローカルで動かすために llama.cpp を使います。ただし、これらのモデルは本当に新しく、バグは常に修正されています。なので llama.cpp はソースからビルドする必要があります。思ったより簡単です。 もし一度もやったことがないなら、MacOS のコマンドライン開発者ツールをインストールしてください: これで llama.cpp をビルドできます: * この * モデル本体をダウンロードします。私はこれらをそのまま直接ダウンロードするのが好きです: * ホームディレクトリ内に * https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF にアクセスします * UD-IQ4_XS をクリック * Download をクリック * ダウンロードしたファイルを * 一致するビジョンアダプタをダウンロードするために、https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF/blob/main/mmproj-BF16.gguf にアクセス * Download をクリック(そこにあります、よく見てください) * そのファイルも * CHROME と TERMINAL 以外のすべてのアプリを閉じてください。はい、vscode も含めてです。できる限りブラウザのタブをたくさん閉じてください。 長時間の徹夜セッションなら、Chrome も閉じてください。Chrome は大量のRAMを使い、無駄なRAMは敵です。このモデルは……ぎりぎり……なんとか収まります。 * 動作確認: これらのオプションをそれぞれ使った理由は、後で説明します。 これはシンプルなチャットUIを起動し、完全にあなたのマシン上だけで動作します。 最初の問い合わせはかなり時間がかかります!ただし、放置しない限り、後続の応答はずっと速くなります。llama.cpp は、使っていないときは身を引いてリソースをシステムに返すように設計されています。 * 次に、.bashrc または .zshrc にエイリアスを追加して、いつでもチャットUI、または OpenAI 互換のAPIサーバを起動できるようにします: * * * 別のターミナルウィンドウで opencode をインストールします。最新リリースを最短で取る方法は: 繰り返しになりますが、状況はどんどん変わっていくので、最新リリースを使うのが良いです。別の手段でインストールしたい場合や、私が変なアドバイスをしていないことを確認したい場合は、opencode のサイトを見てください。 * たぶん * opencode がローカルモデルと通信するように設定します。
各設定値は後で説明します。 * では、 * opencode のUIが出てきたら、正しいモデルを選びます。間違えて無料のデフォルトのクラウドモデルで30分も作業しないでください。まあ、そんなことをする人は知らないですけどね。ええと。 具体的には、このモデルを選びます:
見当たらない場合、たぶん * 「hello」と言って応答を待ちます(繰り返しですが、最初はとても遅いかもしれません。後続の応答は速くなります)。 * これで準備完了です! うまくいかないこと * うっかりして electron アプリやブラウザのタブに大量のRAMを使ってしまうと、非常に遅くなるか、 * ときどき、XMLっぽい思考トレースを表示して、そのまま……止まることがあります。続行するようにプロンプトすれば動きます。おそらく qwen がツール呼び出しをうまくやれておらず、opencode 側にその種類の応答を上手く認識して再試行するためのコードがないのが原因だと思われます。 「なぜその量子化モデルを選んだの?」 Mac は素晴らしいです。統一メモリ(unified RAM)を搭載しているので、CPU と GPU の両方がそのRAMを100%見ることができます。とはいえ、32GB RAM はこれらのモデルにとっては単に超・超・きついです。そもそも収まるのが奇跡みたいなものです。知能や精度をある程度犠牲にすることになっても、量子化モデルを選ばざるを得ません。 フルサイズのモデルは絶対に入りません。そこで最初は、多くのガイドに載っている Q4_K_M を試しました。技術的には入るのですが、十分なコンテキストサイズのためのメモリが残りませんでした。 IQ4-XS(Extra Small)モデルは、さらに数GB分のRAMを取り戻してくれます。しかも必要なのはまさにそのすべてです。 「なぜそれらのオプションを全部使うの?」 そのコマンドがこれ: * * * * * * * * 「なぜこれらの opencode 設定を使うのですか?」 大部分は、単に「正しい場所」(正しいポート付きの正しい API URL、正しいモデル名)を指しているだけです。 ただ、より面白いのは次の設定です:
「じゃあ、なぜただ…しないのですか?」 * Claude Code は使いませんか? 小さなコンテキストウィンドウ向けの最適化が足りないせいで問題がありました。長時間かけて大きなプロジェクトを独立して完了させるようなタスクは、私にとって重要です。だから Claude Code は使いません。 * pi.dev は使いませんか? ええ、知っています。限定されたコンテキストウィンドウには、そっちの方がなお良いです。とはいえ、コンテキストを保存できるのが常に理想です。それが次の候補です。 * エージェントに対して Web 検索ツールを提供しませんか? これも私のリストにあります。 * すごい!でも…どれくらい使えますか? まあ… 実際の作業から、かなり現実的な 2 つの難題(フェアな挑戦)を与えました。これらは Claude Code が Opus 4.6 で完了できたものです。そして最近の経験から、Opus 4.5 の頃までさかのぼっても、たぶん同様に動いていたと思います。あの有名な 11 月のリリースの日です。私のような経験豊富な開発者の多くが、それまでキーボードを叩いてコードを書いていたのをやめて、代わりに Claude Code を指揮するようになった日。 1 つ目は、挨拶カードを作るためのかなりシンプルな Web アプリです。私は、前から「自分では調べるのが面倒で放置していた」古いバグを見つけるように頼みました。バグは、Web ベースの CSS 駆動エディタと、pdfkit ベースの PDF サポートの間で、カード上の画像の位置に不一致があることに関係していました。 2 つ目は、ApostropheCMS の代替データベースバックエンドとして SQLite サポートを追加することです。ApostropheCMS のデフォルトは MongoDB です。 さて、1 つ目はもっと簡単そうに思うでしょう。ですが、このモデルは幾何学(ジオメトリ)の理解がどうしても少し足りません。たいてい実際の問題(これは Opus がすでに正確に当てていたので私には分かっています)を言い当てますが、その後の実装では大きく迷走します。これまでに複数回、2 つのサイズの間でエディタのサイズが激しくチラつく(strobe)ような実装を作ってしまいました。ええ、つらかったです(でも、ちょっと面白かった)。ただ 1 回だけ、なんとか直ったように見えたのですが、画像の下に余計に見えるスペースが追加されてしまい、それを取り除けませんでした。 なので次は 2 つ目の問題に取り掛かりました。そしてそれも、最初はやっぱりがっかりでした。 Qwen は Opus と同様の推論の流れで進めました。ApostropheCMS における mongodb の Node.js API の既存の利用箇所を棚卸しし、同じ API を使ったエミュレーションを作る。 しかし最初の実装は、私がそうするように指示したにもかかわらず、実際の JSONB の操作を使いませんでした。データベース全体を取得してから、RAM 上でドキュメントをフィルタリングする、というものでした。うーん…違います。 Qwen はまた、ApostropheCMS のユニットテストをすべて通そうとしても迷走しました…というより、どれか一つでも通すのが難しい感じでした。さまざまなプロパティがどこから来ているのかを追跡しようとするのですが、常に行き詰まり、CMS 本体のコードまで修正し始めました。あーもう、絶対にダメ。 私は Qwen に、ユニットテストやアプリケーションコードには決して触れず、アダプタコードそのものだけを修正するよう指示しました。mongodb で通るなら、受け入れ可能なエミュレーションでも通るはずだからです。Qwen はその方針を受け入れましたが、それでも問題を追い切れませんでした。 正直、この限られたコンテキストウィンドウではコードベースがそもそも理解しきれないほど大きかったのかもしれません。とはいえ Claude はコンテキストを 2 倍ちょっと(256K)にしただけでうまくいっていました。 そこで私は、Opus 自身が自然に気づいたようなヒントを Qwen に与えました。mongodb API の操作について、まず自分のテストスイートを書き、それを両方のアダプタが通ることを確認することです。もちろん mongodb が通らないなら、テスト自体を壊していることになります。 そして…これでかなりうまくいきました。Qwen は実際の JSONB の操作を使う本物のアダプタを作りました。ちゃんと小さめのテストスイートが用意されていて、そのテストは sqlite と実際の mongodb の両方で通ります。 なので、次は Qwen に実際の apostrophecms テストを通すためのイテレーションに戻るよう頼みました。これらも mocha テストです。ただしユニットテストよりも、機能テストにずっと近いです。なぜならシステムの多くを実際に動かして検証するからです。私の仮説は、単純なところがデバッグできた今なら、統合のこのレベルで発生する問題を追跡するのも、Qwen のほうがうまくいくはずだということです。 もしくは単に圧倒されてしまっているだけかもしれません。どうなるか見てみます。 では…役に立ちますか? いくつかのタスクでは、私は「はい」だと思います。 私の 2 つ目のタスクは、実は AI コーディングエージェントにとっての定番の勝ちパターンです。アダプタパターンです。「これは動いている。しかも大規模なテストスイートがある。同じテストスイートを通る互換のものを作れ。テストがすべて通るまで完了ではない。」 そして最終的に、Qwen もそれなりにうまくやれたと思います。Claude Code よりはより多くのガイダンスが必要でしたが、それでも、あれだけ多くの MongoDB っぽいクエリロジックを手でゴリゴリ作り込むよりは、私は Qwen を選びます。 ただし、私の 1 つ目のタスクは難題で、Qwen がそれでも思考ループに詰まる可能性があることを示しています。少なくともこの量子化設定とコンテキストサイズでは(ここは公平に書きます)。 Edit: 2 つ目のテストを本来の規模で扱うのも、依然として課題です。長い自律実行の途中で、まさに今そういうやりとりがありました。私は改めて「これがやりたいことだ」と伝えましたが、また同じ場所に戻ってしまうかもしれません: * ドキュメントを読むために、Web検索ツールの提供を試す。 * クラウドホスティングされたQwen 3.6 35B A3Bを、量子化なしで、それでもなお現実的な家庭用ハードウェアからどこまで得られるかを見るために、試してみる。 AIの資金調達バブルが縮み始めているのを見ながら、妻と私はどちらも「これを自宅で動かせる? 無理なら、他に持続可能で手の届く価格の選択肢はある?」のような疑問を持っています。 私のMacがこれをできるのは、すでにクールで役に立ちます。でも、もう少しRAMが多い(OK、2倍)専用のマシンと、より強力なGPUで動かせば、「クールで役に立つ」から、費用のかかるクラウドAI提供者にある程度の作業を“日常的に”オフロードするところまで、一段進めるかもしれません。私の仕事は、このコストに見合うだけ十分なのかを調べることです……特に、DeepSeek 4のような安価なクラウドAPIオプションも存在するのですから。 ありがとうございます 過去の投稿に対して、助言をくれた多くの皆さんへ:ありがとうございます!あなたたちは、正しい方向へ私を導いてくれました。 [link] [comments] |
M2 MacBook Pro(32GB RAM)でQwen 3.6 35B-A3Bを回してコーディングするフィールドレポート
Reddit r/LocalLLaMA / 2026/4/25
💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage
要点
- 著者は、llama.cppを使い構成を丁寧に調整することで、M2 MacBook Pro(32GB RAM)上でQwen 3.6 35B-A3Bをローカル実行できたという結果を報告しています。
- macOS上でllama.cppをソースからビルドし、PATHを設定し、必要なコマンドライン開発者ツールを導入するまでの手順を、実用的なHOW-TOとして提示しています。
- Hugging Faceから適切なGGUFモデルと対応するmmproj(ビジョンアダプタ)を取得し、それらをローカルのmodelsディレクトリに配置する方法が説明されています。
- 重要な制約はメモリであり、著者はモデルが安定して収まるために、Chromeを含めほとんどのアプリやブラウザタブを閉じることを推奨しています。
- この結果はある時点のスナップショットであり、環境やllama.cppの改善に合わせて手順が更新される可能性があると述べています。




