LLM: ファインチューニング、抽出、プロンプト エンジニアリング

前のセクションでは、次のようにさまざまな名前で呼ばれる汎用 LLM について説明しました。

  • 基盤となる LLM
  • ベースの LLM
  • 事前トレーニング済み LLM

基盤 LLM は、文法、単語、慣用句について驚くほど多くのことを「知っている」ほど十分な量の自然言語でトレーニングされています。基盤言語モデルは、トレーニングを受けたトピックに関する有用な文章を生成できます。さらに、基盤となる LLM は、詩の作成など、従来「創造的」と呼ばれていた特定のタスクを実行できます。ただし、基盤 LLM の生成テキスト出力は、回帰や分類など、他の一般的な ML 問題の解決策ではありません。このようなユースケースでは、基盤となる LLM はソリューションではなくプラットフォームとして機能します。

基盤となる LLM をアプリケーションのニーズを満たすソリューションに変換するには、ファインチューニングというプロセスが必要です。抽出と呼ばれるセカンダリ プロセスにより、ファインチューニングされたモデルの小さいバージョン(パラメータ数の少ないバージョン)が生成されます。

ファインチューニング

研究によると、基盤言語モデルのパターン認識能力は非常に強力であるため、特定のタスクを学習するために追加のトレーニングを比較的少量で済ませられる場合があります。この追加トレーニングにより、モデルは特定のタスクでより正確な予測を行うことができます。この追加トレーニングはファインチューニングと呼ばれ、LLM の実用的な側面を解き放ちます。

ファインチューニングは、アプリケーションが実行するタスクに固有のサンプルでトレーニングを行います。エンジニアは、数百または数千のトレーニング例で基盤 LLM をファインチューニングできる場合があります。

トレーニング サンプルの数は比較的少ないにもかかわらず、標準のファインチューニングは計算コストが高いことがよくあります。これは、標準のファインチューニングでは、各バックプロパゲーションの反復処理ですべてのパラメータの重みとバイアスを更新する必要があるためです。幸い、パラメータ エフィシエント チューニングと呼ばれるよりスマートなプロセスでは、各バックプロパゲーションの反復処理でパラメータのサブセットのみを調整することで、LLM をファインチューニングできます。

通常、ファインチューニングされたモデルの予測は、基盤 LLM の予測よりも優れています。ただし、ファインチューニングされたモデルには、基盤 LLM と同じ数のパラメータが含まれています。したがって、基盤 LLM に 100 億個のパラメータが含まれている場合、ファインチューニングされたバージョンにも 100 億個のパラメータが含まれます。

蒸留

ほとんどのファインチューニング済み LLM には膨大な数のパラメータが含まれています。そのため、基盤となる LLM では、予測を生成するために膨大な計算リソースと環境リソースが必要になります。通常、これらのパラメータの大部分は特定のアプリケーションには関係ありません。

蒸留では、LLM の小さいバージョンが作成されます。抽出された LLM は、完全な LLM よりもはるかに高速に予測を生成し、コンピューティング リソースと環境リソースの使用量も少なくなります。ただし、通常、抽出モデルの予測は元の LLM の予測ほど優れていません。パラメータが多い LLM は、ほとんどの場合、パラメータが少ない LLM よりも優れた予測を生成します。

プロンプト エンジニアリング

プロンプト エンジニアリングにより、LLM のエンドユーザーはモデルの出力をカスタマイズできます。つまり、エンドユーザーは LLM がプロンプトにどのように応答するかを明確にします。

人間は例からよく学びます。LLM も同様です。LLM に 1 つの例を示すことをワンショット プロンプトと呼びます。たとえば、モデルで次の形式を使用して果物の科を出力するとします。

ユーザーが果物の名前を入力すると、LLM はその果物のクラスを出力します。

ワンショット プロンプトでは、上記の形式の 1 つの例を LLM に示し、その例に基づいてクエリを完成させるよう LLM に指示します。次に例を示します。

peach: drupe
apple: ______

1 つの例で十分な場合もあります。正しい場合は、LLM は有用な予測を出力します。次に例を示します。

apple: pome

一方、1 つの例では不十分な場合もあります。つまり、ユーザーは LLM に複数の例を示さなければなりません。たとえば、次のプロンプトには 2 つの例が含まれています。

plum: drupe
pear: pome
lemon: ____

複数の例を提供する方法を少数ショット プロンプトと呼びます。上記のプロンプトの最初の 2 行はトレーニング例と考えることができます。

LLM は例なしで有用な予測を提供できますか(ゼロショット プロンプト)?場合によっては、LLM はコンテキストを好みます。コンテキストがないと、次のゼロショット プロンプトでは、果物ではなくテクノロジー企業に関する情報が返される可能性があります。

apple: _______

オフライン推論

LLM のパラメータ数が非常に多い場合、オンライン推論が遅すぎて、回帰や分類などの実際のタスクに実用的でないことがあります。そのため、多くのエンジニアリング チームは、オフライン推論(一括推論または静的推論とも呼ばれます)に依存しています。つまり、トレーニング済みモデルは、サービング時にクエリに応答するのではなく、事前に予測を行い、その予測をキャッシュに保存します。

LLM がタスクを完了するまでに時間がかかるとしても、LLM がタスクを実行する必要があるのは週に 1 回または月に 1 回だけであれば問題ありません。

たとえば、Google 検索では LLM を使用してオフライン推論を行い、50 を超える言語で COVID-19 ワクチンの 800 を超える類義語のリストをキャッシュに保存しました。Google 検索では、キャッシュに保存されたリストを使用して、リアルタイム トラフィックでワクチンに関するクエリを特定しました。

LLM を責任を持って使用する

他の ML と同様に、LLM は通常、次のバイアスを共有します。

  • トレーニングに使用したデータ。
  • 抽出されたデータ。

データモジュール公平性モジュールに記載されているガイドラインに沿って、LLM を公平かつ責任を持って使用します。

演習: 理解度を確認する

LLM に関する次の記述のうち、正しいものはどれですか。
抽出された LLM には、基盤となる言語モデルよりも少ないパラメータが含まれています。
はい。蒸留によりパラメータの数は減ります。
ファインチューニングされた LLM には、トレーニングに使用した基盤言語モデルよりも少ないパラメータが含まれています。
ファインチューニングされたモデルには、元の基盤言語モデルと同じ数のパラメータが含まれています。
ユーザーがプロンプト エンジニアリングを実行するほど、LLM のパラメータ数は増加します。
プロンプト エンジニアリングでは、LLM パラメータを追加(または削除または変更)しません。