*当ブログではアフィリエイト広告を利用しています。

AI実装ノート

Qwen3-Coder 30BとQwen3.6 27Bを12GB PCで比較|速度・テスト・危険なバグ

ルミィがQwen3-CoderとQwen3.6の12GB PC実機比較を説明するアイキャッチ
ルミィ

ローカルLLMにコードを書かせるなら、コード特化のQwen3-Coder 30Bと、コーディングも強化されたQwen3.6 27Bのどちらが良いのでしょうか。

速度だけで選ぶと、見逃しやすい落とし穴があります。今回はRTX 4070 Ti 12GBの同じPCで、Pythonの3課題を各モデルに1回ずつ一発生成させました。モデルに見せた公開テストと、回答後だけ実行する隠しテストで確認しています。

先に結果をまとめます。

項目Qwen3-Coder 30BQwen3.6 27B
3課題の合計実時間182.711秒(約3分03秒)1,148.696秒(約19分09秒)
加重平均生成速度16.2458 token/s2.0520 token/s
Task 1の隠しテスト4/54/5
Task 2循環importでテスト収集不能service.py未実装、0/2・0/7
Task 3・当初の8件8/85/8
Task 3・生成後の追加監査8/9、無関係な注文を削除6/9、不要な書込みを1回実行

このPCの主比較では、Qwen3-Coderの合計実時間が約6.3倍短く、ロード後のトークン生成速度は約7.9倍でした。ただし、両モデルとも異なる重大な失敗を残したため、正確性の勝者は決められません。

ルミィ
ルミィ

8/8は「用意した8条件に通った」という意味です。テストしていない動きまで安全とは言えません。

動画で検証の流れとバグを見る

実測画面とバグの動きを約10分で確認したい方はこちら

YouTubeで動画を開く

動画では速度差とデータ削除バグを順に見せ、この記事では条件、各課題の採点、数字の意味、実際に使うときの確認手順を詳しく整理します。

Qwen3-Coder 30BとQwen3.6 27Bの違い

Qwen3-Coder 30Bはコード作業向けのMoEモデルで、30.5Bのうち入力ごとに約3.3Bを使う構造です。MoEは、大きなモデルの中から必要な部分を選んで計算する仕組みです。

Qwen3.6 27Bは約27.8Bを使うDenseモデルで、基本的にモデル全体を使って計算します。汎用モデルですが、コーディングも強化されています。そのため、今回は「コード専用対普通の汎用AI」という単純な比較ではありません。

速度差には、MoEとDenseの違い、CPUとGPUへの配置、Ollamaの処理、回答の長さが混ざります。「Qwen3-Coderの賢さが7.9倍」という意味ではありません。

検証環境と固定条件

項目条件
GPUNVIDIA GeForce RTX 4070 Ti 12GB
RAM64GB
Ollama0.32.5
Qwen3-Coderqwen3-coder:30b、Q4_K_M
Qwen3.6qwen3.6:27b、Q4_K_M
実行方式Ollama APIへ構造化JSONを一発生成
context32,768
最大出力8,192
seed42
試行数各モデル・各課題1回

ローカルのollama listでは、検証モデルのファイルサイズがQwen3-Coderは18GB、Qwen3.6は17GBでした。これはモデルファイルの容量であり、VRAM使用量ではありません。どちらも12GBのVRAMより大きいため、このPCではCPU側も使う実行になります。

主比較は両方ともnon-thinkingの一発生成です。Qwen3.6はthink=falseを明示し、Qwen3-Coderはthinkを指定せず、生回答にthinking出力が無いことを確認しました。一方、各モデルの推奨寄り設定を使ったため、repeat penaltyなどの細かな生成設定は完全同一ではありません。

公開テストと隠しテストの使い分け

公開テストは、課題文や元コードと一緒にモデルへ見せました。隠しテストはモデルへ見せず、完成コードを受け取った後に外部から実行しています。

モデル自身にテストは実行させず、失敗ログを返す修正ラウンドもありません。そのため、エージェントが何度も直す仕事ではなく、「同じ入力から完成コードを1回だけ返すと、どこまでできるか」を見るケーススタディです。

3課題の実測結果

課題Qwen3-CoderQwen3.6
1. テナント別キャッシュ37.312秒、公開2/2・隠し4/592.206秒、公開2/2・隠し4/5
2. CSVユーザー一括取込84.203秒、テスト収集不能512.391秒、公開0/2・隠し0/7
3. 注文イベント・当初8件61.196秒、公開2/2・隠し8/8544.099秒、公開2/2・隠し5/8

Task 1|明記したコロン入りIDを両方が見逃した

1つ目は、テナントごとにキャッシュを分け、別の利用者の情報を混ぜない課題です。課題文には、IDにコロンを含んでも衝突させないことを明記しました。

しかし両モデルとも、tenant_iduser_idをコロンでつないでいます。その結果、("a:b", "c")("a", "b:c")が同じキーになりました。両方とも公開2/2、隠し4/5です。

Qwen3-Coderは要約で特殊文字にも対応したと説明しましたが、実装はそうなっていません。AIの完了報告ではなく、実際の差分を見る必要がある例です。

Task 2|両方とも「未完成」だが、止まり方が違った

2つ目は、CSVからユーザーを読み、1件でも問題があれば全件を取り消す一括取込です。

Qwen3-Coderはparser.pyservice.pyを返しましたが、parser.pyが自分自身から例外クラスをimportしました。読込み時点で止まり、個別のテストを開始できないため、「0点」ではなく「テスト収集不能」としました。

Qwen3.6は許可された2ファイルのうち、parser.pyだけを返しました。service.pyは元のNotImplementedErrorが残った一方、要約では両方を実装したと説明しています。

Qwen3.6の生回答はdone_reason=stop、998トークンで自発終了しています。最大出力8,192トークンに達した切詰めではありません。出力上限に達しなくても、必要ファイルを返さず終了する場合があると分かりました。

Task 3|当初8/8のコードにデータ削除バグが残った

3つ目は、順番が前後して届く注文イベントを反映する課題です。1件でも失敗したら、途中の変更も含めて反映しない動きを求めました。

当初の隠しテスト8件では、Qwen3-Coderが61.196秒で8/8、Qwen3.6が544.099秒(約9分04秒)で5/8でした。ここだけ見れば、Qwen3-Coderが速度と点数の両方で上に見えます。

しかし生成後に人がQwen3-Coderのコードを読むと、「今回のバッチに含まれない既存注文を保持する」確認がテストに無いことに気づきました。9件目として追加し、初回の生成物を変えずに両方へ同じ9件を実行しています。

モデル追加監査後残った問題
Qwen3-Coder8/9バッチに無関係な既存注文を削除
Qwen3.66/9エラー時に状態は戻すが、不要な書込みを1回実行

ここでいう「データ削除」は、検証用に作ったPythonの注文データ内で、無関係な既存注文が消えたという意味です。PC内の実ファイルや利用者のデータをAIが削除した事件ではありません。

Qwen3.6は追加した9件目には合格し、無関係な注文を保持しました。残る3失敗は、エラー時に状態の中身を元へ戻した後、replace_all(original)を1回呼んだためです。そのため「ロールバックに失敗」ではなく、「状態を戻した後に不要な書込みをした」が正確です。

9件目は生成前から固定した評価ではなく、Qwen3-Coderのコードを読んだ後に見つけたポストホックテストです。同じ9件を両生成物へ実行しましたが、8/9対6/9を最初から公平に設計したランキングの点数としては使いません。

速度は約6.3倍と7.9倍を分けて見る

指標Qwen3-CoderQwen3.6
3課題の合計実時間182.711秒1,148.696秒Coderが約6.3倍短い
ロード後の合計生成時間112.7秒1,064.8秒Coderが約9.4倍短い
加重平均生成速度16.2458 token/s2.0520 token/sCoderが約7.9倍

約6.3倍はモデル読込みを含む合計実時間の比較です。約7.9倍はロード後にトークンを生成した速度の比較です。指標が違うため、同じ「速さ」として混ぜないようにします。

また、3課題を各1回ずつ実行した結果であり、成功率や中央値ではありません。別の言語、PC、大規模リポジトリでも同じ倍率になるとは限りません。

参考追試|67秒5/9と720秒時点で採点不能

Task 3の後、課題文へ「失敗時は書込みを1度も行わない」「バッチに無関係な既存注文を残す」と追加し、temperatureなど記録できたサンプラー設定も両方で統一した参考追試を行いました。

Qwen3-Coderは67.021秒で完了し、公開2/2、隠し5/9でした。Qwen3.6は予備上限720秒までに完成した構造化JSONを返さなかったため、テストを実行できず採点不能です。Qwen3.6の中断記録にはthinking指定が残っていないため、この追試でthinkingがOFFだったとは確認できません。720秒は「0点」や「必ず12分を超える」という意味ではありません。

この追試では課題文とサンプラー設定を同時に変えています。そのため、主比較の再現試験でも、一つの条件だけを比べた実験でもありません。別条件の参考値として扱います。

どちらを選ぶべきか

反復速度を優先するならQwen3-Coder

この12GB PCで、Pythonの修正案を何度も出し直したいなら、Qwen3-Coderの速度は大きな利点です。Qwen3.6の回答を1回待つ間に、Qwen3-Coderで小さな修正とテストを複数回試す使い方ができます。

正確性だけでQwen3.6を勝者にはできない

Qwen3.6はTask 3で無関係な注文を保持した一方、失敗時の不要な書込みを残しました。Task 2では必要ファイルを返していません。Qwen3-Coderと失敗の形が違うだけで、今回の3課題から正確性の勝者は決められません。

一発生成をそのまま本番へ入れない

どちらを選ぶ場合も、実用の中心はモデル名ではなく確認工程です。速いモデルで下書きし、テストで壊し、最後に人が差分を読んで採用を決める使い方が安全です。

AI生成コードを安全に試す6ステップ

  1. Gitやバックアップですぐ戻せる状態を作る
  2. 本番データではなく、別コピーや使い捨て環境で試す
  3. 1度の変更を小さくする
  4. 公開テストと、別に用意した隠しテストを実行する
  5. 最大・最小値、既存データ、失敗時の書込みを別に確認する
  6. AIの要約ではなく、人が実際の差分を読んで決める
ルミィ
ルミィ

「テストが通ったか」に加えて、「そのテストに何が無いか」も見るのが大切です。

よくある質問

Qwen3-CoderはQwen3.6より速いですか?

このRTX 4070 Ti 12GB、Python 3課題、各1回の主比較ではQwen3-Coderが大幅に速く、合計実時間は約6.3倍短く、ロード後の生成速度は約7.9倍でした。ただし、別のPC、課題、設定でも同じ倍率になるとは限りません。

隠しテスト8/8なのに、なぜデータが消えたのですか?

当初の8件に「バッチに含まれない既存注文を保持する」確認が無かったからです。生成後に人がコードを読んで穴を見つけ、9件目を追加したところ8/9になりました。

どちらの方が正確ですか?

今回は決められません。Qwen3-Coderは無関係な注文を削除し、Qwen3.6は必要ファイルの欠落や失敗時の不要な書込みを残しました。各1回の3課題では、成功率や正確性の勝者を一般化できません。

VRAM 12GBで両モデルを使えますか?

今回はどちらも実行できました。ただし、ローカルで確認した18GB・17GBはモデルファイルサイズで、どちらも12GB VRAMより大きいためCPU側も使います。特にQwen3.6は、今回の条件で待ち時間が長くなりました。

Qwen3.6の720秒は0点という意味ですか?

いいえ。参考追試で予備上限720秒までに完成したJSONを返さず、テストを開始できなかったため採点不能です。主比較とは課題文と設定の両方が違うため、別条件の参考値です。

まとめ|速いモデル、強いテスト、人の差分確認

  • 12GB PCの主比較でQwen3-Coderは合計実時間が約6.3倍短かった
  • ロード後の加重平均生成速度は16.2458対2.0520 token/sで約7.9倍
  • Task 1では明記したID条件を両方が見逃した
  • Task 2ではQwen3-Coderがテスト収集不能、Qwen3.6が必要ファイル未実装だった
  • Task 3のQwen3-Coderは当初8/8だったが、生成後の追加監査で既存注文の削除が見つかった
  • 8/9対6/9はポストホック監査であり、正確性ランキングには使えない
  • 生成コードは、別環境でテストし、人が差分を読んでから採用する

今回の一番大きな発見は、「隠しテスト8/8」でも安全性は保証されないことです。テストは、書いた条件しか確認できません。ローカルAIのコードは、速いモデルで下書きし、強いテストで壊し、人が差分を読んでから使ってください。

公式資料・関連記事

本記事の実測結果は2026年7月31日の検証、同年8月1日の追加監査に基づきます。

ABOUT ME
記事URLをコピーしました