GitHub Copilot 大規模言語モデル (LLM)

完了

GitHub Copilot は、コードをシームレスに記述するのに役立つ大規模言語モデル (LLM) を利用しています。 このユニットでは、GitHub Copilot での LLM の統合と影響について理解することに重点を置きます。 次のトピックを確認しましょう。

  • LLM とは
  • GitHub Copilot での LLM の役割とプロンプト
  • LLM の微調整
  • LoRA による微調整

LLM とは

大規模言語モデル (LLM) は、人間の言語を理解、生成、操作するために設計およびトレーニングされた人工知能モデルです。 トレーニングに使用される膨大なテキスト データのおかげで、これらのモデルには、テキストを含む幅広いタスクを処理する能力が組み込まれています。 LLM について理解する上で重要な側面を次に示します。

トレーニング データの量

LLM は、さまざまなソースからの膨大な量のテキストにさらされます。 この露出により、さまざまな形式のコミュニケーションに関連する言語、コンテキスト、複雑性に関する幅広い理解が得られます。

コンテキストの理解

コンテキストに関連する一貫性のあるテキストを生成するのに優れています。 コンテキストを理解する能力により、文や段落の完成や、コンテキストに適したドキュメント全体の生成など、有意義な貢献を行うことができます。

機械学習と AI の統合

LLM は、機械学習と人工知能の原則に基づいています。 テキストを効果的に理解して予測するためにトレーニング プロセス中に微調整される数百万の (または数十億もの) パラメーターを持つニューラル ネットワークです。

汎用性

これらのモデルは、特定の種類のテキストや言語に限定されません。 特殊なタスクを実行するように調整および微調整することができ、汎用性が高く、さまざまな分野や言語に適用できます。

GitHub Copilot での LLM の役割とプロンプト

GitHub Copilot では、LLM を利用してコンテキストに対応したコード提案が提供されます。 LLM は、現在のファイルだけでなく、IDE 内の他の開いているファイルやタブも考慮して、正確で関連するコード補完を生成します。 この動的なアプローチにより、調整された提案を保証し、生産性を向上させます。

LLM の微調整

微調整は重要なプロセスであり、事前トレーニング済みの大規模言語モデル (LLM) を特定のタスクや分野に向けて調整できます。 これには、ソース モデルと呼ばれる大規模な事前トレーニング済みデータセットから得られた知識とパラメーターを使用しながら、ターゲット データセットと呼ばれる、より小さなタスク固有のデータセットでモデルをトレーニングする必要があります。

大規模言語モデルで微調整がどのように使用されるかを示す図。

微調整は、特定のタスクに合わせて LLM を調整し、パフォーマンスを向上させるために不可欠です。 ただし、GitHub では、LoRA による微調整方法を使用してさらに一歩前進させました。これについては、次に説明します。

LoRA による微調整

従来の完全な微調整は、低速でリソースに大きく依存する場合があるニューラル ネットワークのすべての部分をトレーニングすることを意味します。 しかし、LoRA (低ランク適応) ファインチューニングは、巧妙な代替手段です。 すべてのトレーニングを再実行することなく、事前トレーニング済みの大規模言語モデル (LLM) を特定のタスクに対してより適切に機能させるために使用されます。

LoRA のしくみをこちらに示します。

  • LoRA では、すべてを変更する代わりに、事前トレーニング済みモデルの各レイヤーに小さなトレーニング可能なパーツが追加されます。
  • 元のモデルは同じままであるため、時間とリソースが節約されます。

LoRA の優れた点:

  • アダプターやプレフィックスチューニングなどの他の適応方法に勝ります。
  • これは、動的なパーツを少なくして素晴らしい結果を得るようなものです。

簡単に言えば、LoRA による微調整は、Copilot を使用する際の特定のコーディング要件に合わせて LLM を向上させるために、よりスマートに作業することです。