Note
GitHub Copilot Enterprise のカスタム モデルは パブリック プレビュー 段階であり、変更される可能性があります。 パブリック プレビュー の間、 パブリック プレビュー に登録した Copilot Enterprise のお客様には、カスタム モデルを作成または使用するための追加のコストは発生しません。
前提条件
カスタム モデルをトレーニングするコードは、GitHub 上の Organization が所有するリポジトリでホストされている必要があります。
制限事項
- パブリック プレビュー の場合、Enterprise は 1 つの Organization に 1 つのカスタム モデルをデプロイできます。
- カスタム モデルに基づくコード補完候補は、カスタム モデルがデプロイされている Organization から Copilot Enterprise サブスクリプションを取得するマネージド ユーザーのみが使用できます。 詳しくは、「Enterprise Managed Users について」を参照してください。
- カスタム モデルは、GitHub Copilot Chat による応答で提案されるコードには使用されません。
GitHub Copilot のカスタム モデルについて
既定では、GitHub Copilot では、多数のパブリック コード リポジトリでトレーニングされた大規模言語モデルが使用されるため、さまざまなコンテキストで幅広いプログラミング言語にコード補完を提供できます。 このモデルは、独自のコードで特別にトレーニングするカスタム大規模言語モデルを作成するための基礎として使用できます。 このプロセスは、多くの場合、微調整と呼ばれます。
カスタム モデルを作成することで、GitHub Copilot が次のような特徴を持つコード補完候補を表示できるようにします。
- 独自に指定したリポジトリ内のコードに基づきます。
- 独自のプログラミング言語または一般にあまり代表的でないプログラミング言語用に作成されます。
- Organization のコーディング スタイルとガイドラインに従って調整されます。
これにより、次のような機能が提供されます。
- パーソナル化 - Copilot には、使用可能なモジュール、関数、内部ライブラリなど、コードベースに関する詳細な知識があります。 カスタム モデルは、基本モデルのトレーニングに使用される幅広いコードの中でコードが一般的でない場合に特に役立つ場合があります。
- 効率と品質 - Copilot の方が、コードをより迅速かつ少ないエラーで記述するのに役立ちます。
- プライバシー - カスタム モデルのトレーニング プロセス、ホスティング、推論は、セキュリティで保護され、Organization の外には公開されません。 データは常に自分が所有したままであり、別の顧客のモデルのトレーニングに使用されることは決してなく、カスタム モデルは共有されません。
モデルの作成について
現在、パブリック プレビュー では、Enterprise 内の 1 つの Organization のみがカスタム モデルの作成を許可されています。
カスタム モデルの作成を許可されている Organization のオーナーは、モデルのトレーニングに使用する Organization のリポジトリを選択できます。 モデルは、Organization 内の 1 つ、複数、またはすべてのリポジトリでトレーニングできます。 モデルは、選択したリポジトリの既定のブランチの内容に基づいてトレーニングされます。 必要に応じて、特定のプログラミング言語で記述されたコードのみをトレーニングに使用することを指定できます。 カスタム モデルは、その種類のファイルがトレーニングに使用されたかどうかに関係なく、すべてのファイルの種類でコード補完候補を生成するために使用されます。
モデルのトレーニング時に、利用統計情報 (ユーザーが入力したプロンプトや Copilot によって生成された提案など) を使用するかどうかを選択することもできます。 詳細については、この記事で後述する「カスタム モデルの利用統計情報収集と使用」を参照してください。
開始されると、カスタム モデルの作成が完了するまでに何時間もかかります。 トレーニングの進行状況は、Organization の設定で確認できます。 モデルの作成が完了した場合、または完了に失敗した場合は、モデル トレーニングを開始したユーザーに Email で通知されます。
モデルの作成に失敗した場合、Copilot は、コード補完候補の生成に現在のモデルを引き続き使用します。
モデルの使用について
カスタム モデルが正常に作成されるとすぐに、カスタム モデルがデプロイされている Organization から Copilot Enterprise アクセス権を取得した Enterprise 内のすべてのマネージド ユーザーに、カスタム モデルを使用して生成された Copilot コード補完候補が表示されるようになります。 カスタム モデルは、コードが存在する場所に関係なく、これらのユーザーが編集するすべてのコードに常に使用されます。 ユーザーは、表示されるコード補完候補の生成に使用するモデルを選択できません。
カスタム モデルを活用できる場合
カスタム モデルの価値は、次のような環境で最も高くなります。
- 独自のプログラミング言語または一般にあまり代表的でないプログラミング言語
- 内部ライブラリまたはカスタム フレームワーク
- カスタム標準と会社固有のコーディング プラクティス
ただし、標準化された環境でも、微調整を行うと、Copilot コード補完を Organization の確立されたコーディングプラクティスと標準に合わせることができる可能性があります。
カスタム モデルの有効性を評価する
一部のコーディング環境では微調整のメリットが得られる可能性が高くなりますが、コードベース内の特定の動作と、カスタム モデルから得られる結果の品質との間に、確実な相関関係はありません。 カスタム モデルの実装の前後に、GitHub Copilot コード補完候補の使用レベルと満足度レベルを評価することをお勧めします。
- GitHub API を使用して、GitHub Copilot の使用を評価します。 「GitHub Copilot の使用状況メトリックの REST API エンドポイント」を参照してください。
- 開発者からアンケートを取って、GitHub Copilot コード補完候補に対する満足度を評価します。
API と開発者アンケートの結果をカスタム モデルの実装の前後で比較すると、カスタム モデルの有効性が示されます。
カスタム モデルの作成
Organization の設定を使用して、カスタムの大規模言語モデルを作成できます。
-
GitHub の右上隅で、プロフィール写真を選択し、 あなたの組織をクリックします。
-
組織の隣の [設定] をクリックします。
-
左側のサイドバーで、[ Copilot] をクリックし、次に [カスタム モデル] をクリックします。
-
[カスタム モデル] ページで、[新しいカスタム モデルのトレーニング] をクリックします。
-
[リポジトリの選択] で、[選択したリポジトリ] または [すべてのリポジトリ] を選択します。
-
[選択したリポジトリ] を選択した場合、トレーニングに使用するリポジトリを選択し、[適用] をクリックします。
-
必要に応じて、特定のプログラミング言語で記述されたコードでのみモデルをトレーニングする場合は、[言語の指定] で、含める言語の名前の入力を開始します。 表示されたリストから必要な言語を選択します。 含める言語それぞれについて、このプロセスを繰り返します。
-
モデルのパフォーマンスを向上させるには、[プロンプトと提案からのデータを含める] というラベルの付いたチェック ボックスをオンにします。
Note
選択するためのチェック ボックスがない場合は、カスタム モデルの利用統計情報収集ポリシーが Organization の設定で無効になっていることを示します。 Organization のポリシーを変更する方法については、「organization 内での Copilot のポリシーの管理」を参照してください。
このオプションを選択すると、Copilot は、ユーザーが送信したプロンプトと生成されたコード補完候補のデータを収集できます。 十分なデータが収集されると、Copilot はこれをモデル トレーニング プロセスの一部として使用し、より効果的なモデルを生成できるようになります。
詳細については、この記事で後述する「カスタム モデルの利用統計情報収集と使用」を参照してください。
-
[新しいカスタム モデルの作成] をクリックします。
モデル作成の進行状況の確認
Organization の設定で、モデル作成の進行状況の指標を確認できます。
-
Copilot カスタム モデルについては、Organization の設定を参照してください。 上記の「カスタム モデルの作成」を参照してください。
-
モデルを初めてトレーニングするときに、表示されるページにトレーニング結果が表示されます。
これが最初のトレーニングでない場合は、現在および以前のトレーニング試行が一覧表示されます。 現在のトレーニング プロセスの詳細を表示するには、最初の省略記号ボタン ([...]) をクリックし、[トレーニングの詳細] をクリックします。
トレーニング失敗の理由
モデルのトレーニングは、次のようなさまざまな理由で失敗する可能性があります。
- データが不十分または代表的でない。 トレーニング用に提供されるデータが不足していたり、データに繰返しが多すぎたりすると、微調整が不安定になる可能性があります。
- データが差別化されていない。 データに、ベース モデルがトレーニングされたパブリック データと十分な違いがない場合、トレーニングが失敗したり、カスタム モデルからのコード補完候補の品質がわずかに向上するだけだったりする可能性があります。
- データの前処理手順では、予期しないファイルの種類と形式が存在し、それが原因で失敗する可能性があります。 トレーニング用に特定のファイルの種類のみを指定することで解決する可能性があります。
カスタム モデルの再トレーニングまたは削除
Organization のオーナーは、Organization の設定ページからカスタム モデルを更新または削除できます。
モデルを再トレーニングすると、トレーニング用に選択したリポジトリに追加された新しいコードが含まれるようモデルが更新されます。 モデルは週に 1 回再トレーニングできます。
- Copilot カスタム モデルについては、Organization の設定を参照してください。 上記の「カスタム モデルの作成」を参照してください。
- モデルのトレーニング ページで、最初の省略記号ボタン ([...]) をクリックし、[モデルの再トレーニング] または [モデルの削除] をクリックします。
モデルを再トレーニングすると、Copilot は新しいモデルの準備ができるまで現在のモデルを引き続き使用して、コード補完候補を生成します。 新しいモデルの準備ができたら、Organization から Copilot Enterprise サブスクリプションを取得するすべてのマネージド ユーザーのコード補完候補に自動的に使用されます。
カスタム モデルを削除すると、Copilot は、Organization から Copilot サブスクリプションを取得するすべてのユーザーに対してコード補完候補を生成するために基本モデルを使用します。
カスタム モデルの利用統計情報の収集と使用
カスタム モデルを作成するときに、GitHub がモデルのトレーニングのために利用統計情報を収集できるようにすることを選択できます。 このデータは、モデルが生成できるコード補完候補の品質を向上させるために使用されます。
どのような利用統計情報が収集されますか?
- プロンプト: Copilot 拡張機能によって GitHub Copilot 言語モデルに送信されるすべての情報が含まれます。これには、開いているファイルからのコンテキストも含まれます。
- 提案: Copilot が生成するコード補完候補。
- コード スニペット: 提案が受け入れられた 30 秒後のコードのスナップショット。提案がコードベースにどのように統合されたかをキャプチャします。 これにより、最終的な統合の前に、ユーザーが提案をそのまま受け入れたか、変更したかを判断できます。
利用統計情報はどのように使用されますか?
利用統計情報は、主に Copilot カスタム モデルを微調整して、Organization のコーディング パターンをより深く理解して予測するために使用されます。 具体的には、次のように役立ちます。
- モデルの正確性を高める: 収集された利用統計情報を分析することで、Copilot はカスタム モデルを調整して、将来のコーディング提案の妥当性と正確性を向上させます。
- パフォーマンスの監視: 利用統計情報を使用すると、GitHub を使用して、基本モデルと比較してカスタム モデルのパフォーマンスを監視できるため、継続的な改善が可能になります。
- フィードバック ループ: データは、GitHub がフィードバック ループを作成するのに役立ちます。このループでは、モデルが実際の使用状況から学習し、時間の経過とともに特定のコーディング環境に適応します。
データの保存と保持
- データ ストレージ: 収集されたすべての利用統計情報は、セキュリティで保護された制限付き環境である Copilot データ ストアに格納されます。 データは暗号化され、未承認のアクセスを防ぐために隔離されます。
- 保持期間: 利用統計情報は、循環的に 28 日間保持されます。 この期間が経過すると、データは GitHub のシステムから自動的に削除され、モデルのトレーニングと改善に最新の関連データのみが使用されます。
プライバシーとデータ セキュリティ
GitHub は、Organization のデータが非公開のままでセキュリティで保護されることを保証することに取り組んでいます。
- 排他的な使用: Organization から収集された利用統計情報は、その Organization のカスタム モデルのトレーニングのみに使用され、他の Organization と共有されたり、他の顧客のモデルのトレーニングに使用されたりすることはありません。
- データ漏洩防止: GitHub は、異なる Organization 間でデータが互いに混合することを防ぐために、厳密なデータ分離プロトコルを実装しています。 つまり、独自のコードと情報は、他の Organization や個人に公開されないように保護されます。
重要な考慮事項
-
利用統計情報のオプトイン: 利用統計情報収集への参加はオプションであり、Organization の管理者ポリシーを使用して制御されます。 利用統計情報は、カスタム モデルのトレーニングを明示的に有効にしている場合にのみ収集されます。
-
潜在的なリスク: GitHub はデータ漏洩を防ぐために広範な対策を講じていますが、内部リンクや名前などの機密データが利用統計情報に含まれ、その後のトレーニングで使用される可能性があるというシナリオがあります。 これらのリスクを最小限に抑えるために、トレーニングのために送信するデータをレビューしてフィルター処理することをお勧めします。
データの取り扱いに関するプラクティスの詳細については、GitHub Copilot トラスト センターを参照するか GitHub の データ保護契約を参照してください。