インストラクションベースの微調整 - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

インストラクションベースの微調整

インストラクションベースの微調整では、ラベル付きの例を使用して、特定のタスクで事前トレーニング済み基盤モデルのパフォーマンスを向上させます。ラベル付きの例は、プロンプトとレスポンスのペアとしてフォーマットされ、インストラクションとしてフレーズ化されます。この微調整プロセスにより、モデルの重みが変わります。インストラクションベースの微調整についての詳細は、「Introducing FLAN: More generalizable Language Models with Instruction Fine-Tuning」および「Scaling Instruction-Finetuned Language Models」という論文を参照してください。

FLAN-Tuned Language Net (FLAN) モデルでは、インストラクションチューニングを使用して、モデルが一般的なダウンストリーム NLP タスクをより簡単に解決できるようにします。Amazon SageMaker JumpStart は、FLAN モデルファミリーに多数の基盤モデルを提供しています。例えば、FLAN-T5 モデルは、さまざまな一般的なユースケースでゼロショットパフォーマンスを向上させるために、幅広いタスクでインストラクションを微調整しています。追加データと微調整により、インストラクションベースのモデルを、事前トレーニングでは考慮されなかったより具体的なタスクにさらに適用させることができます。

命令ベースの微調整と互換性のあるモデル

JumpStart 基礎モデルのサブセットのみが、命令ベースの微調整と互換性があります。インストラクションベースの微調整は、以下の基盤モデルで使用可能です。

注記

Llama 2 7B などの一部の JumpStart 基盤モデルでは、微調整と推論の実行の前にエンドユーザーライセンス契約の承諾が必要です。詳細については、「エンドユーザーライセンス契約」を参照してください。

  • Flan-T5 ベース

  • Flan-T5 Large

  • Flan-T5 スモール

  • Flan-T5 XL

  • Flan-T5 XXL

  • ラマ 2 13B

  • Llama 2 13B チャット

  • ラマ 2 13B Neuron

  • ラマ 2 70B

  • Llama 2 70B チャット

  • ラマ 2 7B

  • ラマ 2 7B チャット

  • ラマ 2 7B ニューロン

  • 霧状 7B

  • RedPajama INCITE ベース 3B V1

  • RedPajama INCITE ベース 7B V1

  • RedPajama INCITE Chat 3B V1

  • RedPajama INCITE Chat 7B V1

  • RedPajama INCITE 命令 3B V1

  • RedPajama INCITE 命令 7B V1

命令ベースの微調整のためのトレーニングデータの準備とアップロード

命令ベースの微調整のためのトレーニングデータは、JSON Lines テキストファイル形式で提供する必要があります。各行はディクショナリです。すべてのトレーニングデータは 1 つのフォルダにある必要があります。フォルダには複数の .jsonl ファイルを含めることができます。

トレーニングフォルダには、データの入力形式と出力形式を記述するテンプレート JSON ファイル (template.json) を含めることもできます。テンプレートファイルが指定されていない場合は、次のテンプレートファイルが使用されます。

{ "prompt": "Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.\n\n### Instruction:\n{instruction}\n\n### Input:\n{context}", "completion": "{response}" }

template.json ファイルによると、トレーニングデータの各 .jsonl エントリには、{instruction}{context}、および {response}フィールドが含まれている必要があります。

カスタムテンプレート JSON ファイルを指定する場合は、 キー"prompt""completion"キーを使用して独自の必須フィールドを定義します。次のカスタムテンプレート JSON ファイルによると、トレーニングデータの各 .jsonl エントリには、{question}{context}、および {answer}フィールドが含まれている必要があります。

{ "prompt": "question: {question} context: {context}", "completion": "{answer}" }

トレーニングとテストのためのデータの分割

オプションで、検証データを含む別のフォルダを指定できます。このフォルダには、1 つ以上の .jsonl ファイルも含める必要があります。検証データセットが指定されていない場合、一定の量のトレーニングデータが検証目的で確保されます。モデルを微調整するためのハイパーパラメータを選択すると、検証に使用されるトレーニングデータの割合を調整できます。

微調整データを Amazon S3 にアップロードする

準備したデータを Amazon Simple Storage Service (Amazon S3) にアップロードして、 JumpStart 基盤モデルの微調整に使用します。次のコマンドを使用してデータをアップロードできます。

from sagemaker.s3 import S3Uploader import sagemaker import random output_bucket = sagemaker.Session().default_bucket() local_data_file = "train.jsonl" train_data_location = f"s3://{output_bucket}/dolly_dataset" 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 で基盤モデルを微調整する。SDK を使用してモデルを SageMaker Python微調整するには、「」を参照してくださいJumpStartEstimator クラスで公開されている基盤モデルを微調整する

サンプルノートブックの例

命令ベースの微調整の詳細については、次のサンプルノートブックを参照してください。