1
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にも『向いている工程』がある? Gemma・Qwen・gpt-ossを開発で使って気づいたこと

1
Posted at

(初投稿です、お手柔らかによろしくお願いします)

最近、ローカルLLMを個人開発でいろいろ触っています。

普段は仕事でもシステム開発に携わっていますが、この記事は厳密なベンチマークや研究というより、

休日にローカルLLMを触っている一人のオタクが、実際に使っていて感じたこと

をまとめたものです。

最新のモデルや流行りの手法を試したくなるというより、実運用を考えたときに

「こいつは何が得意なんだろう」

と試したくなるタイプです。


最初は「コーディング性能」だけ見ていた

LLMの記事を読んでいると、

  • このモデルはコーディングが強い
  • このモデルは文章生成が得意
  • このモデルは推論性能が高い
  • このモデルは軽量なのに高性能

といった比較をよく見かけます。

自分も最初は、

開発に使うなら、コーディング性能が高いモデルを選べばいいのでは?

くらいに考えていました。

ただ、実際に個人開発で使っていると、少し違う感覚が出てきました。

ソフトウェア開発は、コードを書くことだけではありません。

実際に仕事していると、

  1. 曖昧な要望を理解する
  2. 現在の仕様を整理する
  3. 制約や見送り事項を確認・決定する
  4. 設計を考える
  5. 変更による影響を調べる
  6. 実装する
  7. 仕様通りか確認する
  8. リリース・運用/保守・改修

といった工程があります。

そこでふと、

単純な性能ではなく、モデルによって「得意な工程」や「仕事の進め方の癖」が違うのでは?

と思い始めました。


既存プロジェクトを読ませてみた

検証には、自分で以前作った小さなアプリを使いました。

暗号化したデータをローカルに保存し、必要に応じて外部ストレージも利用するデスクトップアプリです。

今回の目的はコードを書かせることではなく、

既存のコードや設計をどれくらい理解できるか

を見ることでした。

主に以下のような質問をしました。

  • システム全体の設計を説明してください
  • この設計を採用している理由は何ですか
  • 設計と実装に矛盾はありますか
  • 新しい機能を追加した場合、どこに影響しますか

試したモデルは主に、

  • Gemma
  • Qwen
  • gpt-oss

です。


Gemma:事実を整理するのがかなり上手い

まず印象が良かったのがGemmaでした。

特に、

  • 現在の構造を整理する
  • ファイルごとの責務をまとめる
  • 長い情報を短くする
  • 入力された情報を大きく崩さず説明する

といった仕事がかなり安定していました。

以前、別用途で長文文書の要約にも使っていたのですが、そのときも似た印象がありました。

コードと自然言語の文章は全く違うものですが、

大量の事実を読んで、関係を壊さず整理する

という意味では共通しているのかもしれません。

Gemmaは「何か新しいことを考えさせる」というより、

事実整理

の使い方と相性が良いのでは、と感じました。


Qwen:すぐに「どう実装するか」を考え始める

一方で、Qwenはかなり違う印象でした。

例えば、既存システムに対して、

Google Drive API連携を追加して利便性を上げる提案があります。
既存設計への影響を評価してください。

と質問しました。

するとQwenは、

  • OAuth認証
  • API呼び出し
  • 設定ファイルの変更
  • 保存処理の変更
  • テスト追加
  • エラーハンドリング

などをかなり具体的に整理し始めました。

悪い回答という意味ではありません。

むしろ、

「それを実現するなら何を変更すればいいか」

を考える能力はかなり高い印象でした。

ただ、今回自分が知りたかったのは、

そもそも既存設計と衝突していないか

という部分でした。
※APIを直接使わず、同期フォルダを通常の外部ストレージとして扱う、というのが既存方針

Qwenは「採用するかどうか」より、

どうやって実現するか

へ進む力が強いように感じました。

これは実装担当として考えると、むしろ長所なのかもしれません。


制約を書けば止まると思った

そこで、質問の先頭に以下を追加してみました。

見送り事項: GoogleドライブのAPI直接連携

これで、

「Google Drive APIは見送り事項なので、この提案は既存方針と衝突します」

と回答するかなと思いました。

しかし、実際はQwenはそのままGoogle Drive APIを追加した場合の設計変更を説明し続けました。

ここで一つ気づきました。

Contextの中に情報が存在することと、その情報を拘束条件として使うことは別なのでは?
≒情報と指示は別物なのでは?

ということです。


Contextを構造化してみた

上記を受けて、モデル比較とは別に、Contextの与え方そのものにも興味がでてきました。

そこで、単なる見送り事項の一行ではなく、Contextを少し構造化してみました。

例えば、

既存アーキテクチャ

不変事項

見送り事項

決定優先度

対立時の処理方針

エビデンス方針

といった形です。

さらに、

不変事項
↓
見送り事項
↓
既存アーキテクチャ
↓
今回の指示
↓
実装改善案

という優先順位も明示しました。

また、

提案が不変事項 / 見送り事項と衝突する場合、
まず衝突を報告する。

明示的に方針変更を依頼されていない限り、
その実装設計には進まない。

というルールも追加しました。

すると、同じQwen 14Bが、

この提案は不変事項および見送り事項と直接衝突しています。

と回答し、

既存設計を破るため実装に移行すべきではない

という結論に変わりました。

モデル自体は変えていません。

変えたのはContextだけです。


大きいモデルなら全部解決するのか?

gpt-ossの20B、120Bでも同じような質問を試しました。

大型モデルになるほど、

  • 何がコードから確認できる事実か
  • 何が推測なのか
  • 何が不明なのか

といった区別はかなり丁寧になりました。

特に120Bは、設計を読み取る能力や不確実性の扱いが明らかに強い印象でした。

ただし、

既存のプロジェクトのガバナンスまで自動的に理解し、すべての提案をそのルールに照らして判断する

ところまでは必ずしも行いませんでした。

モデルサイズを大きくすれば、すべて解決するわけでもなさそうです。


開発工程によってモデルの使い方を変えてもいいのかもしれない

まだ試行回数も少なく、厳密な比較ではないです。

ただ、今回使ってみた範囲では、こんな印象を持ちました。

工程 向いていそうな特性
既存情報の整理 事実を崩さず構造化できる
曖昧な要求の解釈 推論能力が高い
設計判断 トレードオフや制約を扱える
仕様の固定 勝手に意味を広げず整理できる
変更影響分析 コード理解と依存関係推論
実装 タスク遂行力、コーディング能力
仕様との照合 エビデンス重視、差分検出
最終判断 人間 ←重要

今回の事例を受けて、自分の中では、

  • Gemma:整理役
  • Qwen:実行役
  • gpt-oss:分析・レビュー役

のような印象があります。

もちろん、これはモデルそのものの絶対的な能力を示すものではありません。

プロンプトやContext、量子化、モデルサイズによっても結果は大きく変わると思います。


「一番強いモデル」より「どこで使うか」

今回、一番の気づきでもあり、面白かった点は、

どのモデルが一番強いか

ではなく、

このモデルに、開発工程のどの仕事を任せると強みが出るのか

と考えるようになったことでした。

特にローカルLLMでは、計算資源にも制約があります。

すべての処理に最大モデルを使うより、

  • 軽量モデルで情報整理
  • 推論が必要なところだけ大型モデル
  • 実装はコーディング向けモデル

のように分けた方が、意外と実用的なのかもしれません。


Contextについても考えさせられた

今回もう一つ気がついたのは、

良いContextを渡せば、モデルが万能になるわけではない

ということです。

Contextの役割は、

モデルを正しく動作させること

というより、

プロジェクトの現在の知識状態を保持し、必要なときに正しく参照できるようにすること

なのかもしれません。

そのContextを読んだあと、

  • どう推論するか
  • 何を優先するか
  • どう実装するか

は、また別の問題です。

このあたりは、もう少し試してみたいと思っています。


おわりに

この記事はベンチマークではありません。

一つの個人開発プロジェクトに複数のローカルLLMを使ってみて、

モデルによって仕事の進め方にかなり違いがあるように感じた

という観察記録です。

まだ偶然やプロンプト依存の可能性もあります。

ただ、

LLMを「性能ランキング」で見るだけではなく、開発工程のどこに配置するかで考えてみる

という視点は、個人的にはかなり面白いと感じています。

今後、気が向いたらそれぞれのモデルについて「どの工程で使いやすかったか」をもう少し掘ってみたいと思います。

(でもメインは個人開発かな...)


Ark, are you sunk?

1
0
2

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
1
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?