Cohere が開発者向けコード生成モデル「North Mini Code」を発表:30B パラメータの MoE アーキテクチャで 3B アクティブ
Cohere は、ソフトウェアエンジニア向けのオープンウェイト MoE モデル「North Mini Code」を公開し、 Sovereign AI の実現に向けた効率的なコード生成・エージェント機能を提供した。
キーポイント
30B/3B パラメータの MoE アーキテクチャ
総パラメータ数 300 億、1 トークンあたり 30 億が活性化される Mixture-of-Experts モデルであり、高性能と低コストを両立する設計となっている。
Sovereign AI とセルフホスティングの強化
大規模 GPU クラスタ不要で単一の H100 で動作可能とし、企業が自社のインフラ上でモデルを管理・運用する「主権ある AI」の実現を支援する。
コード生成とエージェントタスクへの最適化
コード生成、自律的なソフトウェアエンジニアリング、ターミナル操作に特化し、256K トークンのコンテキストウィンドウと 64K の最大出力長を備える。
Apache 2.0 ライセンスでの完全公開
モデル重みは Hugging Face で Apache 2.0 ライセンス下で公開され、Cohere API や OpenRouter を通じてのアクセスも可能である。
パフォーマンスの優位性
同ハードウェア・同時接続条件下で出力スループットが最大2.8倍向上し、トークン間レイテンシも30%改善されています。
自律型コーディングワークフローへの最適化
サブエージェントのオーケストレーション、システムアーキテクチャのマッピング、コードレビュー、ターミナルタスクなど、複雑な自律作業に特化して設計されています。
導入と推論設定
Hugging Face Transformersからのソースインストールが必須であり、vLLMでのサービングにはCohereのMelodyライブラリを併用して正確なレスポンス解析を行う必要があります。
影響分析・編集コメントを表示
影響分析
このリリースは、大規模なクラウド依存から脱却し、企業が自社のセキュリティ要件やコスト構造に合わせて AI モデルを柔軟に運用できる「Sovereign AI」の潮流を加速させる重要な一歩です。特に、コード生成と自律的なタスク実行(エージェント機能)に特化しつつ、単一の高性能 GPU で動作可能な点は、開発現場におけるローカル開発環境の標準化や、機密性の高いコードベースでの AI 活用を現実的なものにするでしょう。
編集コメント
「Sovereign AI」という文脈で、大規模モデルを小規模ハードウェアで動作させる実用性を示した点は非常に注目すべき進展です。開発者にとって、コード生成タスクのローカル実行が現実的な選択肢として広がります。
今週、Cohere AI チームは開発者向け初のコーディングモデル「North Mini Code」をリリースしました。「North Mini Code」はオープンウェイトでソフトウェアエンジニアを対象としており、30B の総パラメータを持つ混合専門家(MoE)モデルです。トークンごとにアクティブになるのはそのうちの 3B に過ぎません。
今回のリリースは「主権 AI」を中心に位置づけられています。考え方はシンプルです:自らの条件で能力のあるモデルを実行するのです。小型で効率的なコーディングモデルにより、チームは大規模な GPU クラスタなしでセルフホストが可能になります。「North Mini Code」はこのギャップに直接アプローチしています。
North Mini Code
「North Mini Code」は 30B-A3B パラメータのモデルです。A3B は、フォワードパスごとに 30 億個のアクティブパラメータを意味します。Cohere はこれをコード生成、エージェント型ソフトウェアエンジニアリング、ターミナルタスクという 3 つの業務に最適化しました。このモデルはテキスト入力・テキスト出力形式であり、画像やビデオの入力は受け付けません。
コンテキストウィンドウは 256K トークンです。最大出力長は 64K トークンです。Cohere が提示する最小ハードウェア要件は、FP8 精度での H100 を 1 基搭載することです。重みは Apache 2.0 ライセンスの下で Hugging Face で提供されています。また、Cohere API、Model Vault、OpenRouter を通じてアクセスすることも可能です。
FieldNorth-Mini-Code-1.0
LicenseApache 2.0
Model size30B total; 3B active
Context length256K total; 64K max generation
Optimized forCode generation, agentic software engineering, terminal tasks
AvailabilityHugging Face, Cohere API, Cohere Model Vault, OpenRouter
Hardware (minimum)1× H100 @ FP8
The Architecture
North Mini Code は、スパース MoE レイヤーを備えたデコーダー専用 Transformer です。そのアテンションは 3:1 の比率で 2 種類のタイプがインターリーブされています。スライディングウィンドウアテンションでは RoPE が位置情報に使用され、グローバルアテンションでは位置埋め込みは一切使用されません。フィードフォワードブロックには 128 個のエキスパート(専門化ユニット)が保持されており、トークンごとに 8 個のエキスパートが活性化します。各エキスパートは SwiGLU 活性化関数を持つ FFN です。
ルーターは top-k 選択の前にシグモイドを適用し、スパースレイヤーの手前には単一の密層(dense layer)が存在します。この構成により、アクティブな計算量を小さく保ちつつ総容量を広げています。Cohere は重みを BF16 で公開しました。
ポストトレーニングは 2 つのフェーズで実施されました。まず、2段階のカスケード型教師あり微調整(SFT)が行われ、その後、検証可能な報酬を用いた強化学習(RLVR)が実行されました。ポストトレーニングではアジェンティックコーディングに焦点を当てており、モデルはインターリーブ思考とネイティブツール使用にも対応しています。
ベンチマーク
Cohere によると、Artificial Analysis Coding Index では 33.4 を記録しました。これは同規模のモデル群の中で競争力のある位置であると説明されています。評価には SWE-Bench Verified、SWE-Bench Pro、Terminal-Bench v2 が使用されました。また、Terminal-Bench Hard、SciCode、LiveCodeBench v6 も評価対象に含まれています。
手法は特定のものです。SWE-Bench には SWE-agent ハーネス v1.1.0 を使用し、Terminal-Bench v2 では単一のターミナルツールを持つシンプルな ReAct ハーネスを採用しました。Terminal-Bench Hard には Terminus-2 ハーネスを使用しています。各ベンチマークは 3 つのシードで実行され、その平均値が報告されています。サンプリングでは温度(temperature)を 1.0、top_p を 0.95 に設定しました。
速度
Cohere の内部テストでは、North Mini Code は最大 2.8 倍の高い出力スループットを達成しました。これは同一の並行処理数とハードウェア条件下での結果です。また、トークン間のレイテンシにおいても 30% の優位性を示しました。最初のトークンまでの時間(Time-to-first-token)は両者でほぼ同等でした。Devstral Small 2 はわずかに TTFT でリードしていました。
メトリクス比較:North Mini Code vs Devstral Small 2
出力スループット:最大 2.8 倍高い(同一の並行処理数とハードウェア条件下)
トークン間レイテンシ:North Mini Code が 30% 優れている
最初のトークンまでの時間:Devstral Small 2 にわずかに劣る
使用例付きユースケース
Cohere は、エージェントワークフロー向けに North Mini Code を構築しました。
その独自の枠組みにおいて、3 つのパターンが際立っています:
サブエージェントのオーケストレーション:メインのエージェントが下位タスクをヘルパーに委任します。例:あるエージェントがユニットテストを作成し、別のエージェントが失敗したコードを修正する。
システムアーキテクチャのマッピング:モデルはリポジトリを読み込み、その構造をスケッチします。例:大規模なリファクタリング前に、サービス間での呼び出し関係をトレースする。
コードレビュー:モデルは差分(diff)を検索して問題点を特定します。例:マージ前にガードされていない null 参照解除を警告する。
ターミナルタスクもこのモデルに適しています。例:ファイルの一覧表示、ビルドの実行、その後エラーのために出力を解析すること。
始め方
最速の経路は Hugging Face Transformers です。このモデルにはソースから Transformers をインストールすることを推奨します。推奨されるサンプリング設定は、温度(temperature)1.0 と top_p 0.95 です。
コードをコピーしました別のブラウザを使用してください
このモデルにはソースコードからの Transformers インストールが必要です:
pip install "git+https://github.com/huggingface/transformers.git"
from transformers import AutoTokenizer, AutoModelForCausalLM
model_id = "CohereLabs/North-Mini-Code-1.0"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
prompt = "文字列が回文かどうかを確認する Python プログラムを書いてください。"
messages = [{"role": "user", "content": prompt}]
return_dict=True を指定すると辞書 (input_ids + attention_mask) が返されるため、**inputs のアンパックがスムーズに行われます
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
gen_tokens = model.generate(
**inputs,
max_new_tokens=1024,
do_sample=True,
temperature=1.0,
top_p=0.95,
)
生成されたトークンのみをデコードし、プロンプト部分は除外します
output = tokenizer.decode(gen_tokens[0][inputs["input_ids"].shape[-1]:])
print(output)
推論には vLLM が利用可能です。vLLM のメインリポジトリと Cohere の melody ライブラリーが必要です。正確なレスポンスの解析にはこれらが不可欠です。
コードをコピーしました別のブラウザを使用してください
uv pip install "git+https://github.com/vllm-project/vllm.git"
uv pip install "cohere_melody>=0.9.0"
vllm serve CohereLabs/North-Mini-Code-1.0 \
-tp 2 \
--max-model-len 320000 \
--tool-call-parser cohere_command4 \
--reasoning-parser cohere_command4 \
--enable-auto-tool-choice
Quantized builds exist for Ollama, LM Studio, and llama.cpp. You can also try the model before downloading. Cohere offers free access through OpenCode and a hosted Hugging Face Space.
Key Takeaways
Cohere’s first coding model, North Mini Code, is a 30B mixture-of-experts that activates just 3B parameters per token.
It runs on a single H100 at FP8, with 256K context and 64K max output.
Weights ship under Apache 2.0, though the Hugging Face card adds a non-commercial note.
Cohere official release reports 33.4 on the Artificial Analysis Coding Index, and up to 2.8x throughput over Devstral Small 2.
Built for agentic coding—sub-agent orchestration, architecture mapping, code reviews with native tool use
Marktechpost’s Interactive Explainer
/* ---- wpautop suppression (scoped) ---- */
#mtp-nmc hr, #mtp-nmc p:empty, #mtp-nmc del, #mtp-nmc s { display:none !important; }
/* ---- トークン+リセット ---- */
#mtp-nmc {
--coral:#FF7759 !important;
--coral-deep:#E8553B !important;
--purple:#B57BD6 !important;
--cream:#FBF7F0 !important;
--paper:#FFFFFF !important;
--ink:#1C1B1A !important;
--soft:#6B6560 !important;
--line:#ECE5D8 !important;
--good:#2E7D5B !important;
all:initial !important;
display:block !important;
box-sizing:border-box !important;
width:100% !important;
max-width:920px !important;
margin:0 auto !important;
background:var(--cream) !important;
color:var(--ink) !important;
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif !important;
-webkit-font-smoothing:antialiased !important;
border:1px solid var(--line) !important;
border-radius:18px !important;
overflow:hidden !important;
line-height:1.5 !important;
}
#mtp-nmc *,#mtp-nmc *::before,#mtp-nmc *::after{ box-sizing:border-box !important; }
/* ---- header ---- */
#mtp-nmc .nmc-head{
padding:30px 30px 24px !important;
background:
radial-gradient(120% 140% at 100% 0%, rgba(255,119,89,.16) 0%, rgba(255,119,89,0) 55%),
var(--cream) !important;
border-bottom:1px solid var(--line) !important;
}
#mtp-nmc .nmc-eyebrow{
display:inline-flex !important; align-items:center !important; gap:8px !important;
font-size:11px !important; font-weight:700 !important; letter-spacing:.16em !important;
text-transform:uppercase !important; color:var(--coral-deep) !important; margin:0 0 12px !important;
}
#mtp-nmc .nmc-dot{ width:7px !important; height:7px !important; border-radius:50% !important; background:var(--coral) !important; display:inline-block !important; }
#mtp-nmc h2.nmc-title{
margin:0 !important; font-size:34px !important; line-height:1.08 !important;
font-weight:800 !important; letter-spacing:-.02em !important; color:var(--ink) !important;
}
#mtp-nmc .nmc-dek{ margin:10px 0 0 !important; font-size:15.5px !important; color:var(--soft) !important; max-width:62ch !important; }
#mtp-nmc .nmc-chips{ margin:18px 0 0 !important; display:flex !important; flex-wrap:wrap !important; gap:8px !important; }
#mtp-nmc .nmc-chip{
font-size:12.5px !important; font-weight:600 !important; color:var(--ink) !important;
background:var(--paper) !important; border:1px solid var(--line) !important;
padding:6px 11px !important; border-radius:999px !important;
}
#mtp-nmc .nmc-chip b{ color:var(--coral-deep) !important; font-weight:800 !important; }
/* ---- tabs ---- */
#mtp-nmc .nmc-tabs{
display:flex !important; gap:4px !important; padding:10px 14px 0 !important;
background:var(--paper) !important; border-bottom:1px solid var(--line) !important;
overflow-x:auto !important;
}
#mtp-nmc .nmc-tab{
appearance:none !important; cursor:pointer !important; white-space:nowrap !important;
font-family:inherit !important; font-size:13.5px !important; font-weight:700 !important;
color:var(--soft) !important; background:transparent !important; border:0 !important;
border-bottom:2px solid transparent !important; padding:12px 14px 13px !important; margin:0 !important;
}
#mtp-nmc .nmc-tab:hover{ color:var(--ink) !important; }
#mtp-nmc .nmc-tab[aria-selected="true"]{ color:var(--ink) !important; border-bottom-color:var(--coral) !important; }
#mtp-nmc .nmc-tab:focus-visible{ outline:2px solid var(--coral) !important; outline-offset:2px !important; border-radius:6px !important; }
/* ---- panels ---- */
#mtp-nmc .nmc-panel{ display:none !important; padding:26px 30px 28px !important; background:var(--paper) !important; }
#mtp-nmc .nmc-panel.is-on{ display:block !important; }
#mtp-nmc .nmc-h3{ margin:0 0 4px !important; font-size:13px !important; font-weight:800 !important; letter-spacing:.04em !important; text-transform:uppercase !important; color:var(--coral-deep) !important; }
#mtp-nmc .nmc-lead{ margin:0 0 18px !important; font-size:15px !important; color:var(--soft) !important; }
#mtp-nmc .nmc-note{ font-size:12.5px !important; color:var(--soft) !important; margin:12px 0 0 !important; }
/* ---- spec grid ---- */
#mtp-nmc .nmc-grid{ display:grid !important; grid-template-columns:repeat(3,1fr) !important; gap:10px !important; margin:0 0 18px !important; }
#mtp-nmc .nmc-cell{ background:var(--cream) !important; border:1px solid var(--line) !important; border-radius:12px !important; padding:14px !important; }
#mtp-nmc .nmc-cell .k{ font-size:11px !important; font-weight:700 !important; letter-spacing:.06em !important; text-transform:uppercase !important; color:var(--soft) !important; margin:0 0 5px !important; }
#mtp-nmc .nmc-cell .v{ font-size:15px !important; font-weight:700 !important; color:var(--ink) !important; }
#mtp-nmc .nmc-cell .v small{ font-weight:600 !important; color:var(--soft) !important; font-size:12.5px !important; }
#mtp-nmc .nmc-label{ font-size:12px !important; font-weight:800 !important; letter-spacing:.05em !important; text-transform:uppercase !important; color:var(--ink) !important; margin:18px 0 9px !important; }
#mtp-nmc .nmc-tags{ display:flex !important; flex-wrap:wrap !important; gap:8px !important; }
#mtp-nmc .nmc-tag{ font-size:13px !important; font-weight:600 !important; color:var(--ink) !important; background:var(--cream) !important; border:1px solid var(--line) !important; border-radius:8px !important; padding:7px 11px !important; }
#mtp-nmc .nmc-tag b{ color:var(--coral-deep) !important; }
/* ---- context slider ---- */
#mtp-nmc .nmc-ctx{ background:var(--cream) !important; border:1px solid var(--line) !important; border-radius:14px !important; padding:18px !important; margin:6px 0 0 !important; }
#mtp-nmc .nmc-ctx .row{ display:flex !important; align-items:baseline !important; justify-content:space-between !important; gap:12px !important; margin:0 0 12px !important; }
#mtp-nmc .nmc-ctx .val{ font-size:24px !important; font-weight:800 !important; color:var(--ink) !important; letter-spacing:-.01em !important; }
#mtp-nmc .nmc-ctx .val em{ font-style:normal !important; color:var(--coral-deep) !important; }
#mtp-nmc .nmc-ctx .tier{ font-size:13px !important; font-weight:700 !important; color:var(--coral-deep) !important; text-align:right !important; }
#mtp-nmc input[type=range].nmc-range{
-webkit-appearance:none !important; appearance:none !important; width:100% !important;
height:6px !important; border-radius:99px !important; background:#EAE3D5 !important;
outline:none !important; margin:6px 0 6px !important; padding:0 !important;
}
#mtp-nmc input[type=range].nmc-range::-webkit-slider-thumb{
-webkit-appearance:none !important; appearance:none !important; width:20px !important; height:20px !important;
border-radius:50% !important; background:var(--coral) !important; border:2px solid #fff !important;
box-shadow:0 1px 5px rgba(232,85,59,.5) !important; cursor:pointer !important;
}
#mtp-nmc input[type=range].nmc-range::-moz-range-thumb{
width:18px !important; height:18px !important; border-radius:50% !important;
background:var(--coral) !important; border:2px solid #fff !important; cursor:pointer !important;
}
#mtp-nmc .nmc-ticks{ display:flex !important; justify-content:space-between !important; font-size:11px !important; color:var(--soft) !important; font-weight:600 !important; margin:2px 0 0 !important; }
/* ---- pipeline ---- */
#mtp-nmc .nmc-pipe{ display:flex !important; flex-wrap:wrap !important; align-items:center !important; gap:6px !important; margin:0 0 16px !important; }
#mtp-nmc .nmc-stage{
appearance:none !important; cursor:pointer !important; font-family:inherit !important;
font-size:13px !important; font-weight:700 !important; color:var(--ink) !important;
background:var(--cream) !important; border:1.5px solid var(--line) !important; border-radius:10px !important;
padding:9px 12px !important; margin:0 !important;
}
#mtp-nmc .nmc-stage:hover{ border-color:var(--coral) !important; }
#mtp-nmc .nmc-stage[aria-pressed="true"]{ background:var(--coral) !important; color:#fff !important; border-color:var(--coral-deep) !important; }
#mtp-nmc .nmc-stage:focus-visible{ outline:2px solid var(--ink) !important; outline-offset:2px !important; }
#mtp-nmc .nmc-arrow{ color:var(--soft) !important; font-weight:700 !important; font-size:14px !important; }
#mtp-nmc .nmc-detail{ background:var(--cream) !important; border:1px solid var(--line) !important; border-left:4px solid var(--coral) !important; border-radius:0 12px 12px 0 !important; padding:14px 16px !important; margin:0 0 4px !important; }
#mtp-nmc .nmc-detail h4{ margin:0 0 5px !important; font-size:14.5px !important; font-weight:800 !important; color:var(--ink) !important; }
#mtp-nmc .nmc-detail p{ margin:0 !important; font-size:13.5px !important; color:var(--soft) !important; }
/* ---- MoE ルーター ---- */
#mtp-nmc .nmc-divider { height:1px !important; background:var(--line) !important; margin:22px 0 !important; border:0 !important; }
#mtp-nmc .nmc-moe-wrap { display:grid !important; grid-template-columns:1.05fr .95fr !important; gap:22px !important; align-items:start !important; }
#mtp-nmc .nmc-grid128 { display:grid !important; grid-template-columns:repeat(16,1fr) !important; gap:4px !important; }
#mtp-nmc .nmc-exp { aspect-ratio:1/1 !important; border-radius:3px !important; background:#EFE9DD !important; border:1px solid #E4DCCB !important; transition:background .18s ease, transform .18s ease !important; cursor:default !important; }
#mtp-nmc .nmc-exp.dim { background:#F2EEE5 !important; opacity:.7 !important; }
#mtp-nmc .nmc-exp.seen { background:#F6C9B6 !important; border-color:#E9A98F !important; opacity:1 !important; }
#mtp-nmc .nmc-exp.active { background:var(--coral) !important; border-color:var(--coral-deep) !important; transform:scale(1.12) !important; box-shadow:0 2px 8px rgba(232,85,59,.35) !important; opacity:1 !important; }
#mtp-nmc .nmc-readout { background:var(--cream) !important; border:1px solid var(--line) !important; border-radius:14px !important; padding:18px !important; }
#mtp-nmc .nmc-readout .big { font-size:30px !important; font-weight:800 !important; letter-spacing:-.02em !important; color:var(--ink) !important; line-height:1 !important; }
#mtp-nmc .nmc-readout .big em { font-style:normal !important; color:var(--coral-deep) !important; }
#mtp-nmc .nmc-readout .sub { font-size:13px !important; color:var(--soft) !important; margin:6px 0 14px !important; }
#mtp-nmc .nmc-meter { height:8px !important; border-radius:99px !important; background:#EAE3D5 !important; overflow:hidden !important; margin:0 0 6px !important; }
#mtp-nmc .nmc-meter > i { display:block !important; height:100% !important; width:6.25% !important; background:linear-gradient(90deg,var(--coral),var(--coral-deep)) !important; border-radius:99px !important; transition:width .4s ease !important; }
#mtp-nmc .nmc-mlabel { display:flex !important; justify-content:space-between !important; font-size:11.5px !important; font-weight:600 !important; color:var(--soft) !important; margin:0 0 14px !important; }
#mtp-nmc .nmc-ctrls { display:flex !important; gap:8px !important; }
#mtp-nmc .nmc-btn {
appearance:none !important; cursor:pointer !important; font-family:inherit !important;
font-size:14px !important; font-weight:700 !important; color:#fff !important;
background:var(--coral) !important; border:0 !important; border-radius:10px !important;
padding:11px 16px !important; flex:1 1 auto !important;
}
#mtp-nmc .nmc-btn:hover { background:var(--coral-deep) !important; }
#mtp-nmc .nmc-btn:focus-visible { outline:2px solid var(--ink) !important; outline-offset:2px !important; }
#mtp-nmc .nmc-btn2 {
appearance:none !important; cursor:pointer !important; font-family:inherit !important;
font-size:14px !important; font-weight:700 !important; color:var(--ink) !important;
background:var(--paper) !important; border:1.5px solid var(--line) !important; border-radius:10px !important;
padding:11px 14px !important; flex:0 0 auto !important;
}
#mtp-nmc .nmc-btn2:hover { border-color:var(--coral) !important; }
#mtp-nmc .nmc-btn2:focus-visible { outline:2px solid var(--ink) !important; outline-offset:2px !important; }
#mtp-nmc .nmc-reset { background:transparent !important; border:0 !important; color:var(--soft) !important; font-size:12px !important; font-weight:700 !important; cursor:pointer !important; text-decoration:underline !important; padding:0 !important; margin:12px 0 0 !important; font-family:inherit !important; }
/* ---- performance ---- */
#mtp-nmc .nmc-statline{ display:grid !important; grid-template-columns:repeat(3,1fr) !important; gap:10px !important; margin:0 0 22px !important; }
#mtp-nmc .nmc-stat{ background:var(--cream) !important; border:1px solid var(--line) !important; border-radius:12px !important; padding:16px !important; }
#mtp-nmc .nmc-stat .n{ font-size:26px !important; font-weight:800 !important; color:var(--coral-deep) !important; letter-spacing:-.02em !important; line-height:1 !important; }
#mtp-nmc .nmc-stat .l{ font-size:12px !important; color:var(--soft) !important; margin:6px 0 0 !important; }
#mtp-nmc .nmc-seg{ display:inline-flex !important; background:var(--cream) !important; border:1px solid var(--line) !important; border-radius:10px !important; padding:3px !important; margin:0 0 14px !important; }
#mtp-nmc .nmc-segbtn{ appearance:none !important; cursor:pointer !important; font-family:inherit !important; font-size:13px !important; font-weight:700 !important; color:var(--soft) !important; background:transparent !important; border:0 !important
原文を表示
This week, Cohere AI team shipped its first developer-facing coding model named ‘North Mini Code‘. ‘North Mini Code’ is open-weight and focused at software engineers. It is a mixture-of-experts (MoE) model with 30B total parameters. Only 3B of those parameters activate per token.
The release is positioned around “sovereign” AI. The idea is simple: run capable models on your own terms. Small, efficient coding models let teams self-host without large GPU clusters. North Mini Code targets that gap directly.
North Mini Code
North Mini Code is a 30B-A3B parameter model. The A3B stands for three billion active parameters per forward pass. Cohere optimized it for three jobs: code generation, agentic software engineering, and terminal tasks. The model is text-in, text-out. There is no image or video input.
The context window is 256K tokens. Maximum output length is 64K tokens. Cohere lists a minimum hardware bar of one H100 at FP8. Weights ship under Apache 2.0 on Hugging Face. You can also reach it through the Cohere API, Model Vault, and OpenRouter.
FieldNorth-Mini-Code-1.0
LicenseApache 2.0
Model size30B total; 3B active
Context length256K total; 64K max generation
Optimized forCode generation, agentic software engineering, terminal tasks
AvailabilityHugging Face, Cohere API, Cohere Model Vault, OpenRouter
Hardware (minimum)1× H100 @ FP8
The Architecture
North Mini Code is a decoder-only Transformer with sparse MoE layers. Its attention interleaves two types in a 3:1 ratio. Sliding-window attention uses RoPE for positions. Global attention uses no positional embeddings at all. The feed-forward block holds 128 experts. Eight experts activate per token. Each expert is an FFN with SwiGLU activation.
The router applies a sigmoid before top-k selection. A single dense layer sits before the sparse layers. That mix keeps active compute small while widening total capacity. Cohere released the weights in BF16.
Post-training ran in two phases. First came two-stage cascaded supervised fine-tuning (SFT). Then came reinforcement learning with verifiable rewards (RLVR). The post-training focused on agentic coding. The model also supports interleaved thinking and native tool use.
Benchmarks
Cohere reports a 33.4 on the Artificial Analysis Coding Index. It describes this as a competitive position among similarly sized models. The company evaluated on SWE-Bench Verified, SWE-Bench Pro, and Terminal-Bench v2. It also used Terminal-Bench Hard, SciCode, and LiveCodeBench v6.
The methodology is specific. SWE-Bench used the SWE-agent harness v1.1.0. Terminal-Bench v2 used a simple ReAct harness with one terminal tool. Terminal-Bench Hard used the Terminus-2 harness. Each benchmark ran with three seeds, then averaged. Sampling used temperature 1.0 and top_p 0.95.
The Speed
In Cohere’s internal tests, North Mini Code reached up to 2.8x higher output throughput. That held at identical concurrency and hardware. It also showed a 30% edge in inter-token latency. Time-to-first-token was closer between the two. Devstral Small 2 kept a slight TTFT lead.
MetricNorth Mini Code vs Devstral Small 2
Output throughputUp to 2.8x higher (same concurrency and hardware)
Inter-token latency30% better for North Mini Code
Time-to-first-tokenSlightly behind Devstral Small 2
Use Cases With Examples
Cohere built North Mini Code for agentic workflows.
Three patterns stand out in its own framing:
Sub-agent orchestration: A main agent delegates subtasks to helpers. Example: one agent writes unit tests while another fixes failing code.
Systems architecture mapping: The model reads a repository and sketches its structure. Example: tracing how services call each other before a large refactor.
Code reviews: The model scans a diff for problems. Example: flagging an unguarded null dereference before a merge.
Terminal tasks fit the model as well. Example: listing files, running a build, then parsing the output for errors.
Getting Started
The fastest path is Hugging Face Transformers. Install Transformers from source for this model. Recommended sampling is temperature 1.0 and top_p 0.95.
Copy CodeCopiedUse a different Browser
Install Transformers from source (required for this model):
pip install "git+https://github.com/huggingface/transformers.git"
from transformers import AutoTokenizer, AutoModelForCausalLM
model_id = "CohereLabs/North-Mini-Code-1.0"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
prompt = "Write a python program to check if a string is a palindrome or not."
messages = [{"role": "user", "content": prompt}]
return_dict=True yields a dict (input_ids + attention_mask) so **inputs unpacks cleanly
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
gen_tokens = model.generate(
**inputs,
max_new_tokens=1024,
do_sample=True,
temperature=1.0,
top_p=0.95,
)
Decode only the newly generated tokens, not the prompt
output = tokenizer.decode(gen_tokens[0][inputs["input_ids"].shape[-1]:])
print(output)
For serving, vLLM works. You need vLLM main plus Cohere’s melody library. Accurate response parsing depends on it.
Copy CodeCopiedUse a different Browser
uv pip install "git+https://github.com/vllm-project/vllm.git"
uv pip install "cohere_melody>=0.9.0"
vllm serve CohereLabs/North-Mini-Code-1.0 \
-tp 2 \
--max-model-len 320000 \
--tool-call-parser cohere_command4 \
--reasoning-parser cohere_command4 \
--enable-auto-tool-choice
Quantized builds exist for Ollama, LM Studio, and llama.cpp. You can also try the model before downloading. Cohere offers free access through OpenCode and a hosted Hugging Face Space.
Key Takeaways
Cohere’s first coding model, North Mini Code, is a 30B mixture-of-experts that activates just 3B parameters per token.
It runs on a single H100 at FP8, with 256K context and 64K max output.
Weights ship under Apache 2.0, though the Hugging Face card adds a non-commercial note.
Cohere official release reports 33.4 on the Artificial Analysis Coding Index, and up to 2.8x throughput over Devstral Small 2.
Built for agentic coding—sub-agent orchestration, architecture mapping, code reviews with native tool use
Marktechpost’s Interactive Explainer
/* ---- wpautop suppression (scoped) ---- */
#mtp-nmc hr, #mtp-nmc p:empty, #mtp-nmc del, #mtp-nmc s { display:none !important; }
/* ---- tokens + reset ---- */
#mtp-nmc{
--coral:#FF7759 !important;
--coral-deep:#E8553B !important;
--purple:#B57BD6 !important;
--cream:#FBF7F0 !important;
--paper:#FFFFFF !important;
--ink:#1C1B1A !important;
--soft:#6B6560 !important;
--line:#ECE5D8 !important;
--good:#2E7D5B !important;
all:initial !important;
display:block !important;
box-sizing:border-box !important;
width:100% !important;
max-width:920px !important;
margin:0 auto !important;
background:var(--cream) !important;
color:var(--ink) !important;
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif !important;
-webkit-font-smoothing:antialiased !important;
border:1px solid var(--line) !important;
border-radius:18px !important;
overflow:hidden !important;
line-height:1.5 !important;
}
#mtp-nmc *,#mtp-nmc *::before,#mtp-nmc *::after{ box-sizing:border-box !important; }
/* ---- header ---- */
#mtp-nmc .nmc-head{
padding:30px 30px 24px !important;
background:
radial-gradient(120% 140% at 100% 0%, rgba(255,119,89,.16) 0%, rgba(255,119,89,0) 55%),
var(--cream) !important;
border-bottom:1px solid var(--line) !important;
}
#mtp-nmc .nmc-eyebrow{
display:inline-flex !important; align-items:center !important; gap:8px !important;
font-size:11px !important; font-weight:700 !important; letter-spacing:.16em !important;
text-transform:uppercase !important; color:var(--coral-deep) !important; margin:0 0 12px !important;
}
#mtp-nmc .nmc-dot{ width:7px !important; height:7px !important; border-radius:50% !important; background:var(--coral) !important; display:inline-block !important; }
#mtp-nmc h2.nmc-title{
margin:0 !important; font-size:34px !important; line-height:1.08 !important;
font-weight:800 !important; letter-spacing:-.02em !important; color:var(--ink) !important;
}
#mtp-nmc .nmc-dek{ margin:10px 0 0 !important; font-size:15.5px !important; color:var(--soft) !important; max-width:62ch !important; }
#mtp-nmc .nmc-chips{ margin:18px 0 0 !important; display:flex !important; flex-wrap:wrap !important; gap:8px !important; }
#mtp-nmc .nmc-chip{
font-size:12.5px !important; font-weight:600 !important; color:var(--ink) !important;
background:var(--paper) !important; border:1px solid var(--line) !important;
padding:6px 11px !important; border-radius:999px !important;
}
#mtp-nmc .nmc-chip b{ color:var(--coral-deep) !important; font-weight:800 !important; }
/* ---- tabs ---- */
#mtp-nmc .nmc-tabs{
display:flex !important; gap:4px !important; padding:10px 14px 0 !important;
background:var(--paper) !important; border-bottom:1px solid var(--line) !important;
overflow-x:auto !important;
}
#mtp-nmc .nmc-tab{
appearance:none !important; cursor:pointer !important; white-space:nowrap !important;
font-family:inherit !important; font-size:13.5px !important; font-weight:700 !important;
color:var(--soft) !important; background:transparent !important; border:0 !important;
border-bottom:2px solid transparent !important; padding:12px 14px 13px !important; margin:0 !important;
}
#mtp-nmc .nmc-tab:hover{ color:var(--ink) !important; }
#mtp-nmc .nmc-tab[aria-selected="true"]{ color:var(--ink) !important; border-bottom-color:var(--coral) !important; }
#mtp-nmc .nmc-tab:focus-visible{ outline:2px solid var(--coral) !important; outline-offset:2px !important; border-radius:6px !important; }
/* ---- panels ---- */
#mtp-nmc .nmc-panel{ display:none !important; padding:26px 30px 28px !important; background:var(--paper) !important; }
#mtp-nmc .nmc-panel.is-on{ display:block !important; }
#mtp-nmc .nmc-h3{ margin:0 0 4px !important; font-size:13px !important; font-weight:800 !important; letter-spacing:.04em !important; text-transform:uppercase !important; color:var(--coral-deep) !important; }
#mtp-nmc .nmc-lead{ margin:0 0 18px !important; font-size:15px !important; color:var(--soft) !important; }
#mtp-nmc .nmc-note{ font-size:12.5px !important; color:var(--soft) !important; margin:12px 0 0 !important; }
/* ---- spec grid ---- */
#mtp-nmc .nmc-grid{ display:grid !important; grid-template-columns:repeat(3,1fr) !important; gap:10px !important; margin:0 0 18px !important; }
#mtp-nmc .nmc-cell{ background:var(--cream) !important; border:1px solid var(--line) !important; border-radius:12px !important; padding:14px !important; }
#mtp-nmc .nmc-cell .k{ font-size:11px !important; font-weight:700 !important; letter-spacing:.06em !important; text-transform:uppercase !important; color:var(--soft) !important; margin:0 0 5px !important; }
#mtp-nmc .nmc-cell .v{ font-size:15px !important; font-weight:700 !important; color:var(--ink) !important; }
#mtp-nmc .nmc-cell .v small{ font-weight:600 !important; color:var(--soft) !important; font-size:12.5px !important; }
#mtp-nmc .nmc-label{ font-size:12px !important; font-weight:800 !important; letter-spacing:.05em !important; text-transform:uppercase !important; color:var(--ink) !important; margin:18px 0 9px !important; }
#mtp-nmc .nmc-tags{ display:flex !important; flex-wrap:wrap !important; gap:8px !important; }
#mtp-nmc .nmc-tag{ font-size:13px !important; font-weight:600 !important; color:var(--ink) !important; background:var(--cream) !important; border:1px solid var(--line) !important; border-radius:8px !important; padding:7px 11px !important; }
#mtp-nmc .nmc-tag b{ color:var(--coral-deep) !important; }
/* ---- context slider ---- */
#mtp-nmc .nmc-ctx{ background:var(--cream) !important; border:1px solid var(--line) !important; border-radius:14px !important; padding:18px !important; margin:6px 0 0 !important; }
#mtp-nmc .nmc-ctx .row{ display:flex !important; align-items:baseline !important; justify-content:space-between !important; gap:12px !important; margin:0 0 12px !important; }
#mtp-nmc .nmc-ctx .val{ font-size:24px !important; font-weight:800 !important; color:var(--ink) !important; letter-spacing:-.01em !important; }
#mtp-nmc .nmc-ctx .val em{ font-style:normal !important; color:var(--coral-deep) !important; }
#mtp-nmc .nmc-ctx .tier{ font-size:13px !important; font-weight:700 !important; color:var(--coral-deep) !important; text-align:right !important; }
#mtp-nmc input[type=range].nmc-range{
-webkit-appearance:none !important; appearance:none !important; width:100% !important;
height:6px !important; border-radius:99px !important; background:#EAE3D5 !important;
outline:none !important; margin:6px 0 6px !important; padding:0 !important;
}
#mtp-nmc input[type=range].nmc-range::-webkit-slider-thumb{
-webkit-appearance:none !important; appearance:none !important; width:20px !important; height:20px !important;
border-radius:50% !important; background:var(--coral) !important; border:2px solid #fff !important;
box-shadow:0 1px 5px rgba(232,85,59,.5) !important; cursor:pointer !important;
}
#mtp-nmc input[type=range].nmc-range::-moz-range-thumb{
width:18px !important; height:18px !important; border-radius:50% !important;
background:var(--coral) !important; border:2px solid #fff !important; cursor:pointer !important;
}
#mtp-nmc .nmc-ticks{ display:flex !important; justify-content:space-between !important; font-size:11px !important; color:var(--soft) !important; font-weight:600 !important; margin:2px 0 0 !important; }
/* ---- pipeline ---- */
#mtp-nmc .nmc-pipe{ display:flex !important; flex-wrap:wrap !important; align-items:center !important; gap:6px !important; margin:0 0 16px !important; }
#mtp-nmc .nmc-stage{
appearance:none !important; cursor:pointer !important; font-family:inherit !important;
font-size:13px !important; font-weight:700 !important; color:var(--ink) !important;
background:var(--cream) !important; border:1.5px solid var(--line) !important; border-radius:10px !important;
padding:9px 12px !important; margin:0 !important;
}
#mtp-nmc .nmc-stage:hover{ border-color:var(--coral) !important; }
#mtp-nmc .nmc-stage[aria-pressed="true"]{ background:var(--coral) !important; color:#fff !important; border-color:var(--coral-deep) !important; }
#mtp-nmc .nmc-stage:focus-visible{ outline:2px solid var(--ink) !important; outline-offset:2px !important; }
#mtp-nmc .nmc-arrow{ color:var(--soft) !important; font-weight:700 !important; font-size:14px !important; }
#mtp-nmc .nmc-detail{ background:var(--cream) !important; border:1px solid var(--line) !important; border-left:4px solid var(--coral) !important; border-radius:0 12px 12px 0 !important; padding:14px 16px !important; margin:0 0 4px !important; }
#mtp-nmc .nmc-detail h4{ margin:0 0 5px !important; font-size:14.5px !important; font-weight:800 !important; color:var(--ink) !important; }
#mtp-nmc .nmc-detail p{ margin:0 !important; font-size:13.5px !important; color:var(--soft) !important; }
/* ---- MoE router ---- */
#mtp-nmc .nmc-divider{ height:1px !important; background:var(--line) !important; margin:22px 0 !important; border:0 !important; }
#mtp-nmc .nmc-moe-wrap{ display:grid !important; grid-template-columns:1.05fr .95fr !important; gap:22px !important; align-items:start !important; }
#mtp-nmc .nmc-grid128{ display:grid !important; grid-template-columns:repeat(16,1fr) !important; gap:4px !important; }
#mtp-nmc .nmc-exp{ aspect-ratio:1/1 !important; border-radius:3px !important; background:#EFE9DD !important; border:1px solid #E4DCCB !important; transition:background .18s ease, transform .18s ease !important; cursor:default !important; }
#mtp-nmc .nmc-exp.dim{ background:#F2EEE5 !important; opacity:.7 !important; }
#mtp-nmc .nmc-exp.seen{ background:#F6C9B6 !important; border-color:#E9A98F !important; opacity:1 !important; }
#mtp-nmc .nmc-exp.active{ background:var(--coral) !important; border-color:var(--coral-deep) !important; transform:scale(1.12) !important; box-shadow:0 2px 8px rgba(232,85,59,.35) !important; opacity:1 !important; }
#mtp-nmc .nmc-readout{ background:var(--cream) !important; border:1px solid var(--line) !important; border-radius:14px !important; padding:18px !important; }
#mtp-nmc .nmc-readout .big{ font-size:30px !important; font-weight:800 !important; letter-spacing:-.02em !important; color:var(--ink) !important; line-height:1 !important; }
#mtp-nmc .nmc-readout .big em{ font-style:normal !important; color:var(--coral-deep) !important; }
#mtp-nmc .nmc-readout .sub{ font-size:13px !important; color:var(--soft) !important; margin:6px 0 14px !important; }
#mtp-nmc .nmc-meter{ height:8px !important; border-radius:99px !important; background:#EAE3D5 !important; overflow:hidden !important; margin:0 0 6px !important; }
#mtp-nmc .nmc-meter > i{ display:block !important; height:100% !important; width:6.25% !important; background:linear-gradient(90deg,var(--coral),var(--coral-deep)) !important; border-radius:99px !important; transition:width .4s ease !important; }
#mtp-nmc .nmc-mlabel{ display:flex !important; justify-content:space-between !important; font-size:11.5px !important; font-weight:600 !important; color:var(--soft) !important; margin:0 0 14px !important; }
#mtp-nmc .nmc-ctrls{ display:flex !important; gap:8px !important; }
#mtp-nmc .nmc-btn{
appearance:none !important; cursor:pointer !important; font-family:inherit !important;
font-size:14px !important; font-weight:700 !important; color:#fff !important;
background:var(--coral) !important; border:0 !important; border-radius:10px !important;
padding:11px 16px !important; flex:1 1 auto !important;
}
#mtp-nmc .nmc-btn:hover{ background:var(--coral-deep) !important; }
#mtp-nmc .nmc-btn:focus-visible{ outline:2px solid var(--ink) !important; outline-offset:2px !important; }
#mtp-nmc .nmc-btn2{
appearance:none !important; cursor:pointer !important; font-family:inherit !important;
font-size:14px !important; font-weight:700 !important; color:var(--ink) !important;
background:var(--paper) !important; border:1.5px solid var(--line) !important; border-radius:10px !important;
padding:11px 14px !important; flex:0 0 auto !important;
}
#mtp-nmc .nmc-btn2:hover{ border-color:var(--coral) !important; }
#mtp-nmc .nmc-btn2:focus-visible{ outline:2px solid var(--ink) !important; outline-offset:2px !important; }
#mtp-nmc .nmc-reset{ background:transparent !important; border:0 !important; color:var(--soft) !important; font-size:12px !important; font-weight:700 !important; cursor:pointer !important; text-decoration:underline !important; padding:0 !important; margin:12px 0 0 !important; font-family:inherit !important; }
/* ---- performance ---- */
#mtp-nmc .nmc-statline{ display:grid !important; grid-template-columns:repeat(3,1fr) !important; gap:10px !important; margin:0 0 22px !important; }
#mtp-nmc .nmc-stat{ background:var(--cream) !important; border:1px solid var(--line) !important; border-radius:12px !important; padding:16px !important; }
#mtp-nmc .nmc-stat .n{ font-size:26px !important; font-weight:800 !important; color:var(--coral-deep) !important; letter-spacing:-.02em !important; line-height:1 !important; }
#mtp-nmc .nmc-stat .l{ font-size:12px !important; color:var(--soft) !important; margin:6px 0 0 !important; }
#mtp-nmc .nmc-seg{ display:inline-flex !important; background:var(--cream) !important; border:1px solid var(--line) !important; border-radius:10px !important; padding:3px !important; margin:0 0 14px !important; }
#mtp-nmc .nmc-segbtn{ appearance:none !important; cursor:pointer !important; font-family:inherit !important; font-size:13px !important; font-weight:700 !important; color:var(--soft) !important; background:transparent !important; border:0 !important
関連記事
DiffusionGemma:Google の高速テキスト生成モデルが再登場
Google は昨年実験的に公開した Gemini Diffusion モデルの研究を再開し、DiffusionGemma として再発表しました。このモデルは以前 1 秒間に 857 トークンの生成速度を記録しており、テキスト生成の高速化に寄与する技術です。
DiffusionGemma:テキスト生成が4倍高速化
Google DeepMind は、新しい手法「DiffusionGemma」を発表し、テキスト生成の速度を従来の4倍に向上させることに成功しました。
チャットボットが「灯台守エライアス・ソーン」の物語を語る理由、その正体が判明か
404 Media は、ChatGPT など主要な大規模言語モデルが、時計職人や司書など異なる設定で「灯台守エライアス・ソーン」という架空人物の物語を生成し続けている現象について分析している。この一貫した誤情報が自己出版された AI 生成書籍や YouTube、偽ニュースサイトを溢れさせている背景にある理由を探っている。
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み