ドメイン適応を使用して大規模言語モデル (LLM) をファインチューニングする
ドメイン適応の微調整により、事前トレーニング済みの基盤モデルを活用し、限られたドメイン固有データを使用して特定のタスクに適応させることができます。プロンプトエンジニアリング作業では十分なカスタマイズができない場合は、ドメイン適応の微調整を使用して、業界用語、専門用語、その他の特殊データなど、ドメイン固有の言語でモデルを動作させることができます。この微調整プロセスにより、モデルの重みが変わります。
ドメイン固有のデータセットでモデルをファインチューニングするには:
-
トレーニングデータを準備します。手順については、ドメイン適応のファインチューニング用にトレーニングデータを準備してアップロードする を参照してください。
-
ファインチューニングのトレーニングジョブを作成します。手順については、インストラクションベースのファインチューニング用のトレーニングジョブを作成する を参照してください。
エンドツーエンドの例は、「サンプルノートブックの例」で確認できます。
ドメイン適応の微調整は、以下の基盤モデルで利用できます。
注記
Llama 2 7B などの一部の JumpStart 基盤モデルでは、ファインチューニングや推論の実行前にエンドユーザー使用許諾契約への同意が必要です。詳細については、「エンドユーザーライセンス契約」を参照してください。
-
Bloom 3B
-
Bloom 7B1
-
BloomZ 3B FP16
-
BloomZ 7B1 FP16
-
GPT-2 XL
-
GPT-J 6B
-
GPT-Neo 1.3B
-
GPT-Neo 125M
-
GPT-NEO 2.7B
-
Llama 2 13B
-
Llama 2 13B Chat
-
Llama 2 13B Neuron
-
Llama 2 70B
-
Llama 2 70B Chat
-
Llama 2 7B
-
Llama 2 7B Chat
-
Llama 2 7B Neuron
ドメイン適応のファインチューニング用にトレーニングデータを準備してアップロードする
ドメイン適応のファインチューニング用のトレーニングデータは、CSV、JSON、または TXT ファイル形式で用意できます。すべてのトレーニングデータを 1 つのフォルダ内の 1 つのファイルにまとめる必要があります。
トレーニングデータは、CSV または JSON のトレーニングデータファイルの [Text] 列から取得されます。[Text] というラベルが付いた列がない場合、トレーニングデータは CSV または JSON トレーニングデータファイルの最初の列から取得されます。
以下は、ファインチューニングに使用する TXT ファイルの本文の例です。
This report includes estimates, projections, statements relating to our business plans, objectives, and expected operating results that are “forward- looking statements” within the meaning of the Private Securities Litigation Reform Act of 1995, Section 27A of the Securities Act of 1933, and Section 21E of ....
トレーニングとテスト用にデータを分割する
オプションで、検証データを含む別のフォルダを指定できます。このフォルダにも、CSV、JSON、または TXT 形式のファイルを 1 つ含める必要があります。検証データセットが指定されていない場合、所定量のトレーニングデータの一部が検証目的で確保されます。検証に使用されるトレーニングデータの割合は、モデルのファインチューニング用の該当するハイパーパラメータで調整できます。
Amazon S3 にファインチューニングデータをアップロードする
JumpStart 基盤モデルのファインチューニング時に使用できるように、準備したデータを Amazon Simple Storage Service (Amazon S3) にアップロードします。次のコマンドを使用して、データをアップロードできます。
from sagemaker.s3 import S3Uploader import sagemaker import random output_bucket = sagemaker.Session().default_bucket() local_data_file =
"train.txt"
train_data_location = f"s3://{output_bucket}/training_folder"
S3Uploader.upload(local_data_file, train_data_location) S3Uploader.upload("template.json", train_data_location) print(f"Training data: {train_data_location}")
インストラクションベースのファインチューニング用のトレーニングジョブを作成する
Amazon S3 にデータをアップロードしたら、JumpStart 基盤モデルをファインチューニングしてデプロイできます。Studio でモデルをファインチューニングするには、「Studio でモデルをファインチューニングする」を参照してください。SageMaker Python SDK を使用してモデルをファインチューニングするには、「公開されている基盤モデルを JumpStartEstimator クラスでファインチューニングする」を参照してください。
サンプルノートブックの例
ドメイン適応のファインチューニングの詳細については、次のサンプルノートブックを参照してください。