メルマガ登録
こんにちは、アナリティクスサービス部の辻です。
今回は、LLMを効率的に再学習する手法として今後重要性が高まっていくと考えられるPEFT(Parameter-Efficient Fine Tuning)という技術について紹介したいと思います。
ChatGPT*1がリリースされて以来、大規模言語モデル(LLM)が世界中から注目を集めています。
ChatGPTやBERTなどのモデルは、膨大なテキストから一般的な言語知識を獲得し、さまざまなタスクに対応できる能力を持っています。例えば、ChatGPTやAlpaca*2などのLLMは、要約、翻訳、分類、生成などの多くのタスクを行うことができます。
しかし、LLMをそのまま利用するだけでは、特定の目的や自社のビジネスに適した性能を発揮するとは限りません。LLMが学習しているのはWEB上で得られるデータやデータ化されている論文や会話が中心であり、ビジネスに関わる正確な知識は獲得できていないと考えられます。そこで、LLMを追加のデータやタスクに合わせて学習させることで、自社のビジネスやワークフローに沿うようにモデルをカスタマイズする方法が必要となります。この方法をファインチューニング(Fine Tuning)と呼びます。
ファインチューニングを行うことで、LLMのような事前学習済みモデルのパラメータを一部または全体的に更新し、モデルの振る舞いを変化させます。
しかし、事前学習済みモデルを特定の下流タスク*3に適応させるためには、通常、モデルの全パラメータを再学習する必要があります。しかし、現在の事前学習済みモデルのパラメータは数千億を超えるものも出てきており、容易には実行できない状態となっています。
LLMや大規模な事前学習モデルを用いたサービスやビジネスが広く社会に普及していくには、通常のファインチューニング(Full FT)とは異なる効率的なファインチューニングのアプローチが必要とされており、社会的なニーズに応えるように現在PEFT(Parameter-Efficient Fine-Tuning)が大きな発展を遂げています。
なお、本記事では通常のファインチューニング手法をFull FT(Full Fine Tuning)と呼び、効率的なファインチューニング手法であるPEFT(Parameter-Efficient Fine-Tuning)と区別します。
PEFTの具体的なアプローチを紹介する前にFull FTの性質について整理しておきます。
Full FTは高い精度と汎化性能を達成できる反面、ビジネスや実社会での利用を考えた場合には乗り越えるべき障壁が複数存在します。仮に、企業固有のタスクや事業ドメインを適用させるためにFull FTを利用するのであれば、下記のような問題に悩まされることになるでしょう。
全パラメータの更新には膨大な計算コストが掛かる
壊滅的忘却が発生するリスクがある
学習データが少ない場合にオーバーフィットしやすい
モデルサイズが大きく管理運用コストが大きい
これらの問題を解決するために、PEFTと呼ばれる手法が提案されています。
PEFTとは、LLMのような事前学習済みモデルを、新しいタスクに効率的に適応させるための手法です。モデルの全体ではなく、一部のパラメータだけをファインチューニングすることで、Full FTの持つ問題を解決できる手法として注目を集めています。
PEFTのアプローチは数多く提案されていますが、どのアプローチにも共通する特徴があり、性能面でも管理運用面でもビジネス適用において好ましい性質を持っています。
計算コストとストレージコストを削減
致命的な忘却を抑制
未知の状況に対する優れた汎化性
モデルサイズが小さく管理運用コストが小さい
PEFTは発展中の技術であるため、今後も様々なアプローチが提案されることが考えられますが、現時点(2023年5月)で発表されているアプローチはコンセプトの違いによって3つに分類が可能であると考えます。
トークン追加型
Adapter型
LoRA型
以降はコンセプト毎にどのようなアプローチがあるかを解説していきます。
トークン追加型に属するアプローチは、事前学習済みモデルの重みをファインチューニングする代わりに、入力層に仮想トークンを追加することで、特定のタスクに固有の特徴を学習するアプローチとなります。
Huggingfaceでは、Prefix TuningとP TuningとPrompt Tuningの3つのアプローチがすでに実装されています。事前学習済みモデルの重みを更新しないアプローチという点は共通していますが、どのような形で学習を行うかはアプローチごとに特徴がありますので、それぞれ簡単にご紹介していきます。
アプローチ概要
Prefix Tuning*4は事前学習済みモデルのパラメータを凍結し、入力の先頭にk個の連続したタスク固有のベクトル(プレフィックス)を追加した上で、プレフィックスのみを学習し、事前学習済みモデルの各層に加算する手法です(下図参照)。プレフィックス自体は学習可能なパラメータであるため、プレフィックスにタスク固有の情報を与えることになります。
また、プレフィックスは、タスクに応じてファインチューニングされるため、モデルの出力をタスクに適したものに変えることができます。下図では翻訳用のプレフィックスや要約用のプレフィックスを付与し、プレフィックスがタスク固有の情報を獲得しています。
Prefix Tuningは、事前学習済みモデルのパラメータ数に比べて、非常に少ないパラメータ数でタスクを学習できるため、効率的なファインチューニングが可能となっています。
特徴
トークン追加型のアプローチ全てに共通する点ではありますが、事前学習済みモデルのパラメータを凍結することで、学習に必要な計算資源や時間を大幅に削減できます。
プレフィックスは連続的なベクトルであり、実際のトークンではないため、語彙サイズや入力長に制限されないところが大きな特徴となります。
また、プレフィックスはタスク固有のものであり、複数のタスクに対して同じ事前学習モデルを使い回すことができます。
パラメータ全体のうち0.1%のパラメータを学習しただけで、Prefix TuningはFull FTと同等の性能を獲得し、データ量の少ない場合ではFull FTの精度を上回っていることが論文内で報告されています。
アプローチ概要
P Tuning*5とは、事前学習済みモデルの入力に、パラメータ化されたプロンプトを追加することで、タスク固有の情報を与える手法です。Prefix Tuningと同様にプロンプトは、タスクに応じてファインチューニングされるため、言語モデルの出力をタスクに適したものに変えることができます。
P Tuningもまた、事前学習済みモデルのパラメータ数に比べて、非常に少ないパラメータ数でタスクを学習できるため、効率的なファインチューニングが可能となっています。
特徴
モデルのパラメータ数に依存しないため、大規模なLLMでも低コストでファインチューニング可能でありプロンプトが連続的なトークンであるため、LLMの入力長制限に影響されない点が大きな特徴となります。
P Tuningはプロンプトエンジニアリングの手間を減らし、論文発表時点でのSuperGLUEベンチマークにおいて、最先端のアプローチを凌駕する性能を発揮しました。
アプローチ概要
Prompt Tuning*6は、事前学習済みモデルのパラメータを凍結し、事前学習済みモデルのパラメータを更新する代わりに、ソフトプロンプトを学習しラベル付けされたサンプルを取り込むことでファインチューニングを行うアプローチとなります。下図のようにPrompt Tuningでは、タスクごとにモデルのチューニングを行う代わりにタスクごとに小規模なプロンプトを付与することでチューニングを行います。
特徴
タスクごとに付与されるソフトプロンプトはモデルに依存しないため、頑健にドメイン転送が可能である点がこのアプローチの特徴と言えます。
論文ではモデルサイズが大きくなるほど性能が改善することが示されており、モデルのパラメータが数十億を超えると大きな性能改善が見られています。
次に、Adapterと呼ばれる特殊なサブモジュールを事前学習済みモデルの外部に追加するアプローチをご紹介します。Adapterは事前学習済みモデルに付加される独立したコンポーネントとして機能するため、Adapterを追加/除去するだけで事前学習済みモデルを再利用可能です。
HuggingfaceにおいてPEFTのライブラリーとして取り込まれていないもののLoRAとのコンセプトの違いを明確にするためにAdapterのアプローチについてもご紹介しておきます。
アプローチ概要
Adapter*7は事前学習済みモデルの外部に追加される特殊なサブモジュールで、下図にあるようにTransformerのMulti-Head Attention層とFeed -foward層の後に挿入することで、ファインチューニングの際に事前学習済みモデルのパラメータを凍結したままAdapterのパラメータのみを更新するアプローチとなります。
特徴
AdapterはTransformerのMulti-Head Attention層とFeed Foward層の出力を入力として受け取り、出力を生成する仕組みとなっているためTransformerの機能に直接影響を与えない構造となっています。
柔軟にAdapterの挿入と削除ができる代わりに、推論が行われるたびに凍結された重みを持つTransformerの出力をAdapterが入力として受け取り出力を返す必要があるため推論に時間がかかる傾向があります。
最後にLoRAと呼ばれる低ランク行列のみを更新することで効率的にパラメータをファインチューニングするコンセプトのアプローチをご紹介します。
HuggingfaceのPEFTのライブラリーとしてはLoRAとAda LoRAが実装されています。LoRAは言語タスクのみに留まらず画像タスクに対しても効率的なファインチューニングが可能となっており、非常に応用範囲の広いアプローチとなっています。
アプローチ概要
LoRA(Low-Rank Adaptation)*8は、事前学習済みモデルのAttention層のクエリとバリューに対して、低ランク行列を適用することで、パラメータ数を大幅に削減しながら、元のモデルと同等かそれ以上の性能を達成する手法です。
具体的には、下図のように事前学習済みモデルのパラメータを凍結した上で、クエリとバリューの行列に対して低ランク行列を掛け合わせて新たな行列を作ります。この低ランク行列は、ファインチューニング時に学習される唯一のパラメータとなります。
特徴
LoRAは事前学習済みモデルの99.9%以上のパラメーターを凍結した上で新しいタスクを学習するために低ランク行列のみを更新しています。これによりFull FTと同等の性能を実現する一方で、パラメータ数と計算要件を大幅に削減することに成功しています。
Adapter では、事前学習済みのモデルにトレーニング可能なパラメーターが追加されるため、推論の待ち時間が長くなる可能性がありましたが、LoRAでは、トレーニング可能な低ランク行列が事前学習済みモデルの各層に注入され、推論中に凍結された重みと更新された重みをマージできるため、推論の遅延が発生しにくくなります。
LoRAを用いることで、計算リソースとストレージコストがシビアとなる本番環境において、LLMをデプロイしやすくなります。
大きな有用性のあるLoRAですがいくつか課題も指摘されています。
変換した低ランク行列が元のモデルの表現力をある程度損なう可能性がある点やパラメータの更新が元の事前学習済みモデルに依存しているために、その事前学習済みモデルの性能と制限事項を受け継ぐ点が課題として指摘されています。
アプローチ概要
Ada LoRA*9とは、Adaptive Low-Rank Adaptationの略で、LoRAを拡張した手法です。Ada LoRAは、低ランク行列を追加するだけでなく、各層に適応的な学習率を与えることで、パラメータ数や学習時間をさらに削減します。
Ada LoRAは、LoRAよりも高い性能を達成できる可能性がありますが、パラメータ数や計算量が増加することが想定されます。
特徴
事前学習済みの言語モデルのパラメータを凍結し、追加した低ランクな行列だけを学習することでパラメータ数や計算量を抑えるという点は、LoRAと同じですが層の重要度に応じて学習率を変化させることで、重要な層はより多く学習し、重要でない層はより少なく学習している点が改良点となります。
また、Ada LoRAではファインチューニング時に使用するデータセットやタスクに応じて、最適な低ランク行列や学習率を自動的に決定することができます。
一方、LoRAと比較すると低ランク行列や学習率を決定するために必要なハイパーパラメータが多いため、そのチューニングが難しい場合があります。
今回は大規模な事前学習済みモデルに対して、効率的に新たなタスクを適用可能にするPEFTという技術を紹介させていただきました。本記事では、PEFTにどのようなアプローチがあるのかを中心にご紹介しましたが、今後は実際にPEFTを用いてどの程度学習コストが低下したか、どの程度の精度を保つことができたかについてもご報告していく予定です。
*1:OpenAIが2022年11月に公開したAIチャットボット
*2:スタンフォード大学の研究チームが開発したオープンソースLLM
*3:ダウンストリームタスクとも言われる
*4:Prefix Tuning: https://aclanthology.org/2021.acl-long.353.pdf
*5:P Tuning: https://arxiv.org/pdf/2103.10385.pdf
*6:Prompt Tuning: https://arxiv.org/pdf/2104.08691.pdf
*7:Adapter: https://arxiv.org/pdf/1902.00751.pdf
*8:LoRA: https://arxiv.org/pdf/2106.09685.pdf
*9:Ada LoRA:https://arxiv.org/pdf/2303.10512.pdf
あなたにオススメの記事
2023.12.01
生成AI(ジェネレーティブAI)とは?ChatGPTとの違いや仕組み・種類・活用事例
2023.09.21
DX(デジタルトランスフォーメーション)とは?今さら聞けない意味・定義を分かりやすく解説【2024年最新】
2023.11.24
【現役社員が解説】データサイエンティストとは?仕事内容やAI・DX時代に必要なスキル
2023.09.08
DX事例26選:6つの業界別に紹介~有名企業はどんなDXをやっている?~【2024年最新版】
2023.08.23
LLM(大規模言語モデル)とは?生成AIとの違いや活用事例・課題
2024.03.22
生成AIの評価指標・ベンチマークとそれらに関連する問題点や限界を解説