0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカルLLM のコーディング能力をベンチマークから調査してみた

0
Posted at

はじめに

前回の記事で aider + Ollama(qwen2.5-coder:7b)に Python スクリプトを生成させたところ、骨格は正しいもののバグが 4 つ混じるという結果でした。「7B だとこんなもんなのか?」という疑問がわいてきたので、公開ベンチマークでの評価結果を確認してみました。


対象者

  • ローカル LLM のコード生成能力がどの程度か客観的に知りたい人
  • モデルのパラメータ数(7B, 14B, 32B 等)で性能がどう変わるか知りたい人
  • 商用 API(GPT, Claude 等)とローカル LLM の差を把握したい人

ベンチマーク 1: aider Leaderboard

概要

aider 公式が運営するベンチマークです。6 言語(C++, Go, Java, JavaScript, Python, Rust)の 225 問でモデルのコード編集能力をランキングしています。

見方

列名 意味
モデル名 使用モデル
正解率(%) 225 問中の正答率
コスト 全問解くのにかかった API 費用
Edit Format コード変更の出力形式(whole / diff / diff-fenced / architect)

Edit Format とは

aider がLLM に「コードの変更をどういう形式で出力させるか」の指定です。

フォーマット 説明 向いているモデル
whole ファイル全体を丸ごと出力 小さいモデル・ローカル LLM
diff 差分だけを出力 高性能モデル(GPT-4, Claude 等)
diff-fenced マークダウンのコードブロック内に差分を出力 Gemini 等
architect 設計用モデルと編集用モデルの 2 段階 モデルを 2 つ組み合わせる場合

whole はトークン消費が多いが安定する。diff は効率的だがモデルが書式を間違えるとファイルが壊れる。ローカル LLM では whole が推奨です。

主要モデルの結果

モデル 種別 正解率
gpt-5 (high) 商用API 88.0%
Gemini 2.5 Pro 商用API 83.1%
Qwen2.5-Coder-32B(ローカル最上位) ローカル 16.4%

商用 API モデルが 80% 超なのに対し、ローカルで動かせるモデルは 32B でも 16% 程度です。7B のエントリはそもそもありません。

このベンチマークの特徴

  • aider でのコード編集能力 を測るベンチマーク。単なるコード生成ではなく、指示に従って既存コードを修正する能力を評価している
  • 6 言語(C++, Go, Java, JavaScript, Python, Rust)の Exercism 問題 225 問を、人間の介入なしで解けるかを測定
  • 商用 API モデルが中心で、ローカル LLM のサイズ別比較をしたい場合は、次の BigCodeBench の方が参考になる

ベンチマーク 2: BigCodeBench

概要

HuggingFace の BigCode コミュニティが運営するコーディング特化ベンチマークです。オープンモデル(ローカルで動かせるモデル)が中心で、パラメータ数別の比較ができます。

見方

列名 意味
Complete 詳細なドキュメント(docstring)を与えてコードを補完させるタスクのスコア
Instruct 自然言語の指示だけを与えてコードを生成させるタスクのスコア
Average Complete と Instruct の平均
#Act Params (B) モデルの実効パラメータ数(Billion 単位)

どの列を見るべきか

aider のようなツールで使う場合は Instruct が一番参考になります。

  • Instruct = 「こういうコード書いて」→ コード生成。aider での使い方そのもの
  • Complete = 途中まで書いたコードの続きを補完。GitHub Copilot のインライン補完に近い

このベンチマークから分かること

  • 掲載モデルは全て HuggingFace 上のオープンモデル(ローカルで動かせる)
  • Instruct の正答率は上位モデルでも 30% 程度
  • ランクインしているのは 32B 以上のモデルがほとんど
  • #Act Params (B) を見れば、同じモデルファミリのサイズ別性能差が分かる

ベンチマークから見えた現実

観点 現実
7B モデルの立ち位置 両ベンチマークとも上位に 7B クラスはほぼ不在。性能的にランク外
32B でも正答率は低い aider ベンチで 16%、BigCodeBench の Instruct で 30% 程度
商用 API との差 GPT-5 や Claude は 80% 超。ローカル LLM とは桁違いの性能差
メモリの壁 32B モデルは 20GB 以上のメモリが必要。8GB 環境では動かせない

前回 qwen2.5-coder:7b で Python スクリプトにバグが 4 つ混じったのは、ベンチマークの数字を見れば妥当な結果です。7B で完璧なコードを期待する方が無理がある、ということがデータからも裏付けられました。


じゃあローカル LLM は意味がないのか?

ベンチマークの数字だけ見ると絶望的ですが、使い方次第で十分価値はあります。

観点 商用 API ローカル LLM
コード生成品質 高い(80% 超) 低い(たたき台レベル)
コスト 従量課金 無料
ネットワーク 必要 不要(オフライン OK)
プライバシー コードが外部に送信される 完全ローカル
速度 高速 CPU 推論だと遅い

完璧なコードを求めるなら商用 API、コストゼロ・オフライン・プライバシー重視なら用途を絞ってローカル LLM、という使い分けが現実的です。


まとめ

項目 内容
aider Leaderboard 商用モデル 80% 超 vs ローカル 32B で 16%。7B はランク外
BigCodeBench Instruct 正答率は上位でも 30% 程度。32B 以上が中心
7B の現実 ベンチマーク的にもバグ混じりは妥当。たたき台として使うのが正解
ローカル LLM の価値 無料・オフライン・プライバシー。用途を絞れば十分役に立つ

ベンチマークの数字は厳しいですが、「無料でオフラインでコードのたたき台が作れる」という価値は変わりません。数字を理解した上で、期待値を適切に設定して使うのが大事です。


関連記事

henagineer のプログラミング・開発記事まとめ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?