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

前のユニットでは、次のような汎用的な LLM について説明しました。

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

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

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

ファインチューニング

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

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

トレーニング サンプルの数は比較的少ないものの、標準のファインチューニングは計算コストが高いことがよくあります。これは、標準のファインチューニングでは、各backpropagationの反復処理ですべてのパラメータの重みとバイアスを更新する必要があるためです。幸い、パラメータ効率調整というスマートなプロセスを使用すると、誤差逆伝播法の反復処理ごとにパラメータのサブセットのみを調整することで 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 パラメータを追加(または削除または変更)しません。