GitHub Modelsを使えば、OpenAI、Cohere、Microsoft、MistralなどのAIモデルを簡単に利用、比較、実験、構築することができます。

最近では、AIモデルの選択肢が増えました。OpenAI、Google、Anthropicといったプロプライエタリな基盤モデルから、MetaやMistralのような小規模でオープンなオプションまで。最新のモデルを試したくなりますね。しかし、モデルが新しいからといって、あなたのユースケースにとってより良いパフォーマンスを発揮するとは限りません。
GitHubでは、AnthropicのClaude 3.7 Sonnet、GoogleのGemini 2.0 Flash、OpenAIのo2-miniやGPT-4.5などのサポートを追加し、GitHub Copilotで利用できるモデルを拡大しました。GitHub Copilotにモデルを追加する際、パフォーマンス、品質、安全性を常に最優先しています。この記事では、GitHub CopilotチームがAIモデルを評価した経験を、オフライン評価(本番環境に変更を加える前に行うテスト)に焦点を当てて紹介します。私たちの経験が皆さんの評価の参考になれば幸いです。
AIモデルの評価とは?
AIモデルとは、コード、アルゴリズム、学習データを組み合わせて、人間の知能を何らかの方法でシミュレートするシステムのことです。GitHub Copilotでは、大規模言語モデル(Large Language Model、LLM)として知られる、人間の言語に基づいて訓練された多数のAIモデルを使用する選択肢をユーザーに提供しています。OpenAIのモデルは、ChatGPTの人気により最もよく知られたLLMの一部ですが、Claude、Gemini、MetaのLlamaモデルなどの他のモデルも人気が高まっています。
AIモデルの評価とは、これらのモデルの性能、品質、安全性を評価することです。評価には、自動テストと手動使用の両方があり、利用可能なフレームワークやベンチマークツールは数多くありますが、私たちは独自の評価ツールを構築しています。
自動テストを活用することで、大規模な評価が可能になり、多数のタスクに対してモデルがどの程度うまく機能するかを見ることができます。欠点は、出力を評価するために客観的な基準が必要な場合があることです。手動テストは、アウトプットの品質と精度をより主観的に評価できますが、時間がかかります。この二つのアプローチを組み合わせることで、膨大な時間をかけて無数の回答を手作業で精査したり、個々の事例に頼りすぎたりすることなく、回答の主観的な質を把握できるようになります。
コード品質テストの自動化
私たちは4,000以上のオフラインテストを実行しており、そのほとんどは自動化されたCIパイプラインの一部として実行されています。また、カナリアテストに似た内部評価もライブで実施しており、多数の Hubber(GitHub社員) が新しいモデルを使用できるようにしています。新しいモデルの可能性だけでなく、GitHub Copilotの主要な変更はすべてこの方法でテストしています。
ここではオフラインテストに焦点を当てます。例えば、コードベースを評価・修正する能力によって、候補となるモデルを評価します。私たちは、CIテストに合格した約100のコンテナ化されたリポジトリのコレクションを持っています。これらのリポジトリを修正してテストに不合格にし、そのモデルがコードベースを修正して再び不合格のテストに合格できるかどうかを確認します。
異なるプログラミング言語やフレームワークで、できる限り多くの異なるシナリオを作成します。また、サポートする言語の複数の異なるバージョンを使用するなど、実行するテストの数を常に増やしています。この作業には多くの時間がかかりますが、モデルの品質を評価する最善の方法です。
AIをテストするためにAIを使用する
GitHub Copilotはコードを生成するだけではありません。GitHub Copilot Chatでは、コードに関する質問に答えたり、問題解決へのさまざまなアプローチを提案したりできます。私たちは、モデルのチャット機能の品質を評価するために使用する1,000以上の技術的な質問を集めています。これらの中には、私たちが簡単に自動評価できる単純な真偽を問う質問もあります。しかし、より複雑な質問については、別のLLMを使用して、評価対象のモデルが提供する回答をチェックします。
このような目的には、私たちの作業全体にわたって一貫した評価を保証するために、優れたパフォーマンスを持つことが分かっているモデルを使用します。また、このLLMが正しく動作していることを確認するために、評価シナリオの中でこのLLMの出力を日常的に監査しています。回答を評価するために使用するLLMが、人間のレビュアーと一致し、多くのリクエストにわたって一貫した性能を発揮することを保証するのは大変なことです。
私たちはまた、これらのテストを毎日本番モデルに対して実行しています。劣化が見られた場合は、監査を行って、モデルが以前ほどうまく機能していない理由を探ります。時には、私たちが期待する品質レベルに戻すために、プロンプトの一部を修正するなど、変更を加える必要があります。
テストの実行
私たちのセットアップが優れている点は、製品コードを変更することなく新しいモデルをテストできることです。私たちのインフラには、コード補完機能が使用するプロキシサーバーが組み込まれています。クライアント側を変更することなく、プロキシサーバーがレスポンスのために呼び出すAPIを簡単に変更することができます。これにより、製品コードを変更することなく、新しいモデルを迅速に反復することができます。
これらのテストはすべて、主にGitHub Actionsで構築された独自のカスタムプラットフォーム上で実行されます。結果は、Apache KafkaやMicrosoft Azureのようなシステムから出し入れされ、データを探索するために様々なダッシュボードを活用しています。
採用するかどうかの判断
収集したデータをどうするかが大きな課題です。あるモデルが全体的に不振だった場合など、決断が簡単なこともあります。しかし、あるモデルが受入率を大幅に向上させたが、同時に待ち時間も増加させたとしたらどうでしょうか?
メトリクスの間には時に逆相関があります。待ち時間が長くなると、ユーザーが見る提案の数が少なくなるため、実際には受理率が高くなるかもしれません。
GitHubの目標は、可能な限り最高品質で責任あるAIコーディング・アシスタントを作ることであり、それが、製品内でどのモデルをサポートするかという決断の指針となっています。しかし、私たちの評価手順が提供する質の高いデータなしには、それを作ることはできません。この記事が、あなた自身のユースケースに適用できるアイデアを提供できていれば幸いです。
The post How we evaluate models for GitHub Copilot appeared first on The GitHub Blog.