blog.anqou.net
rss
author
tags

NixOS 26.05 で Strata を使う

この記事は人間が書いていて、不正確な情報が含まれることがあります。

手元の NixOS 26.05 で Strata を使うのに若干試行錯誤したので、最終的にうまくいった方法をまとめます。環境は以下の通りです:

#Strata を使う

ドキュメント通りに作業すれば立ち上がりました……と安直に言えないのが LLM 時代のつらいところで、やたら大量にドキュメントがある上に誤っていたり古かったりする情報が載っているので結構面倒でした。最終的に以下のように docker run を叩くと動きました:

docker run -d --name strata -p 127.0.0.1:8080:8080 --device=nvidia.com/gpu=all \
    --ulimit memlock=-1:-1 --shm-size 2g --stop-timeout 120 \
    -v ./data:/data -e FAMILY=coder -e MODEL=IQ1_M -e API_KEY=c2c1f9090927e4763b903a5e92a5eb5ad1ef6a1a6d52635c \
    ghcr.io/niko1221/strata:0.2.12-cuda13

ただし事前に nvidia-container-tools を有効化しておく必要があります。NixOS 26.05 の場合は configuration.nix に以下を書いて nixos-rebuild boot して再起動すれば OK でした:

hardware.nvidia-container-toolkit.enable = true;

docker run のポイントは --device=nvidia.com/gpu=all 辺りで、最近は CDI の流儀で Docker も動いているみたいです。あと API_KEY の値は openssl rand -hex 24 とかで作れます。

-d がついているので、起動してもすぐに制御が返ってきます。ログを見たい場合は docker logs -f strata とします。しばらく待っているとモデルのダウンロードが終わって HTTP リクエストを受け付けるようになるので、好きなコーディングエージェントをつなぎましょう。コーディングエージェントの設定方法は docker exec strata strata connect で調べられます。OpenCode を Home Manager でセットアップしてつなぐ場合は以下のように書いておくと良いようです:

programs.opencode = {
  enable = true;
  settings = {
    model = "strata/qwen3.8-flash-next-coder-iq1_m";
    small_model = "strata/qwen3.8-flash-next-coder-iq1_m";
    autoupdate = false;
    compaction = {
      auto = true;
      buffer = 60548;
    };
    share = "disabled";
    provider = {
      strata = {
        npm = "@ai-sdk/openai-compatible";
        name = "Strata (local)";
        options = {
          baseURL = "http://127.0.0.1:8080/v1";
          apiKey = "c2c1f9090927e4763b903a5e92a5eb5ad1ef6a1a6d52635c";
        };
        models = {
          "qwen3.8-flash-next-coder-iq1_m" = {
            name = "Qwen3.8-Flash-Next (local)";
            tool_call = true;
            reasoning = true;
            limit = {
              context = 131072;
              input = 126976;
              output = 16384;
            };
          };
        };
      };
    };
  };
};

コーディングエージェントを動かすマシンと Strata が動いているマシンとが異なる場合は、SSH トンネルを掘って繋ぐのが便利です:

ssh -R 8080:localhost:8080 <Strata が動いているマシン名>

docker exec -it strata strata monitor を実行すると綺麗なモニタリング画面が表示されます。GPU がぶん回っている様子が見れて楽しいです。

Strata を終了させるときは以下のようにしておきます:

docker stop strata
docker rm strata

#Strata(Coder IQ1_M)の実力

Kubernetes のマニフェスト生成を Jsonnet から Nix へ移行する作業や、Home Manager の設定をいじって OpenCode で Context7 を有効化する作業などをさせてみたのですが、普通に動いたのでびっくりしました。今まで触ってきたローカル LLM の中で一番まともに動いていそうです。

その代わり日本語出力は壊滅的で、日本語と英語と中国語が混ざった謎の言語で応答してきます。日本語入力は理解してくれていそうなので、AGENT.md に英語で回答しろと書いておくのが良さそうです。