618ZXW

第 1 回 AI ウィンター キャンプからの優れた学習ノートです。

データホエール

データホエールウィンターキャンプ

学習: タスク 01、作成者: Reacal_Zixuan

序文

大規模モデルとは、多数のパラメータと複雑な計算構造を持つ機械学習モデルを指します。通常、数百万から数十億のパラメータを持ち、学習と推論に大量のデータと計算リソースを必要とします。大規模モデルはディープラーニングの分野で重要な役割を果たし、自然言語処理、コンピュータービジョン、音声認識といった複雑なタスクを処理できます。

独自の大規模モデルを作成する方法を学ぶ

1. 大型模型製作プラットフォーム

iFlytek の MaaS プラットフォームは、さまざまなドメインに対するゼロコード、参入障壁の低い微調整、および大規模モデル効果のカスタマイズを加速するフルスタック ツールチェーンを提供します。

2. データセットの作成

典型的なファインチューニングデータセットは、Alpaca形式に準拠する必要があります。データ保存形式:通常はJSONファイルとして保存されます。これにより、データの読み取り、処理、およびさまざまな機械学習フレームワークでの使用が容易になります。例えば、シンプルなAlpaca形式のJSONデータセットを以下に示します。

[
{

 "instruction": "用“梦想”、“坚持”和“成功”这三个词组成一个句子。", "input": "", "output": "只有坚持追逐梦想,才能最终取得成功。"

},
{

 "instruction": "对《三国演义》这本书做一个简短的介绍。", "input": "", "output": "《三国演义》是中国古典四大名著之一,描写了从东汉末年到西晋初年之间近百年的历史风云,诉说了东汉末年的群雄割据混战和魏、蜀、吴三国之间的政治和军事斗争,塑造了一群叱咤风云的三国英雄人物。"

}
]

フィールドの説明:

  • 指示: タスクの指示、モデルが実行する必要がある特定の操作。通常は、ユーザーによるプロンプト入力に対応します。
  • input: タスクに必要な入力内容。タスクがオープンエンド型の場合、または明示的な入力を必要としない場合は、空の文字列を指定できます。
  • 出力: 指示と入力が与えられると、モデルは対応する正しい結果または参照回答である期待される出力を生成する必要があります。

完全な形式:

{
"instruction": "人間による指示(必須)",
"input": "人間の入力(オプション)",
"出力": "モデル応答(必須)",
"system": "システムプロンプトワード(オプション)",
"歴史": [

 \["第一轮指令(选填)", "第一轮回答(选填)"\], \["第二轮指令(选填)", "第二轮回答(选填)"\]

]
}
]

作り方:

1. 手動処理。必要なデータを整理し、対応する形式に従ってコードを使用してデータセットを構築します。

2. 大規模モデルを使用して完成しました。プロジェクトの推奨事項:リポジトリ: https://github.com/KMnO4-zx/e...

DIYカスタム大型モデル

ケーススタディ:ジェン・フアン

データソース: https://github.com/datawhalec...

Huanhuanを体験

プロンプト: フアンフアン、私はエモです!出力:

考えてみてください。大規模モデルのファインチューニングでは、主にAlpaca形式が使用されます。このデータセットの形式特性に関して、正しい記述は次のうちどれでしょうか?

データセット A では、一部のタスクでは指示が必要ないため、指示フィールドは空になる場合があります。

B. 入力フィールドには実際の入力内容が含まれている必要があります。そうでない場合、データセットは無効になります。

出力フィールドはオプションです。すべてのサンプルに標準的な回答が必要なわけではありません。

D 入力フィールドは、オープンエンド タスクでは空の文字列にすることができます。これはフォーマットによって許可されています。

ヒント: "instruction": "人間による指示(必須)", "input": "人間による入力(任意)", "output": "モデルによる応答(必須)"。Alpaca形式のデータセットには、instruction(タスク指示)、input(入力内容)、output(期待される出力)という3つの主要フィールドが含まれています。タスクがオープンエンド型、または明示的な入力を必要としない場合、inputは空文字列でよいことが明示的に示されています。これはオプションDに該当します。その他のオプションは誤りです。オプションAでは、instructionはモデルが実行する必要がある特定の操作を表すため、空にすることはできません。オプションBでは、inputにコンテンツが含まれている必要があると誤って想定しています。オプションCでは、outputはモデルのトレーニングに必要な正しい結果または参照回答を表すため、必須です。

1. 大規模モデルをカスタマイズするにはどうすればいいですか? 主にどのような技術が使用されていますか?

カスタマイズされた大規模モデルとは、特定のタスクまたはデータセットに合わせて事前トレーニング済みの大規模言語モデルを調整および最適化し、パフォーマンスを向上させるプロセスを指します。

  1. ファインチューニング:これは最も一般的に用いられる手法です。事前学習済みの大規模モデル(GPT-3、LLaMAなど)を使用し、タスク固有のデータセットでさらに学習を行います。このプロセスでは、モデルのパラメータを調整して、対象タスクにより適合させます。データセットには通常、対象アプリケーションに関連する入力と出力のペアが含まれています。
  2. プロンプトエンジニアリング:これは、入力プロンプトを慎重に作成することで、モデルが望ましい出力を生成するように導く手法です。モデル自体を変更するよりも、モデルの出力を制御することに重点を置いています。手法としては、少数のサンプルをプロンプトに提供するFew-Shot Learning、推論プロセスを通じてモデルを導くThought Chain Prompt、プロンプトに制約を指定することなどが挙げられます。
  3. パラメータ効率の高いファインチューニング(PEFT):これらの手法は、ファインチューニングの計算コストとメモリ要件を削減することを目的としています。モデルパラメータのごく一部のみを更新するため、限られたリソースでもカスタマイズが可能です。
  • 低ランク適応(LoRA):元のモデルの重みに低ランク分解行列を追加します。微調整時には、これらの小さな行列のみが更新されます。
  • プレフィックスチューニング:小さなプレフィックストークンのセットを学習し、入力シーケンスの先頭に追加します。これらのプレフィックスは、モデルの挙動を決定します。
  • アダプターモジュール:モデルの各層に小さなアダプターモジュールが追加されます。トレーニング中、元のモデルの重みは変更されません。
  • 指示の微調整は、モデルが指示に適切に従えるようにトレーニングすることに重点を置いています。データセットは通常、指示とそれに対応する応答で構成されます。このアプローチにより、モデルが自然言語で記述されたさまざまなタスクを理解し、実行する能力が向上します。
  • 人間のフィードバックからの強化学習(RLHF):これは、強化学習を用いてモデルを学習する高度な手法であり、人間のフィードバックを報酬信号として利用します。モデルの出力を人間の好みに合わせることで、より有益で安全な応答を生成できるようにします。

2. 微調整とは何ですか?なぜ微調整が必​​要なのですか?微調整によって何を達成できるのですか?

微調整とは何ですか?

ファインチューニングとは、事前学習済みモデルを新しいデータセットを用いてさらに学習させるプロセスを指します。この事前学習済みモデルは通常、大規模なデータセットを用いて豊富な知識と特徴表現を学習しており、ファインチューニングの目的は、この一般的な知識と能力を、より具体的な新しいタスクやドメインに適応させることです。

なぜ微調整をする必要があるのでしょうか?

  1. 計算リソースの節約:大規模モデルをゼロから学習させるには膨大な計算リソースと時間が必要となり、ほとんどの個人や機関にとって現実的ではありません。ファインチューニングでは、事前学習済みのモデルを出発点として用いるため、新しいデータセットを用いた学習は比較的少なくて済み、良好な結果を得ることができます。これにより、計算コストと時間を大幅に節約できます。
  2. モデルパフォーマンスの向上:事前学習済みモデルは一定の一般的な能力を備えていますが、特定のタスクにおけるパフォーマンスは必ずしも理想的とは限りません。ファインチューニングでは、タスク固有のデータセットを用いてモデルのパラメータを調整し、そのタスクに適したモデルにすることで、モデルの精度と効率を向上させます。
  3. 新しいドメインへの適応:事前学習済みモデルは通常、一般的なデータセットで学習されるため、特定のドメインのデータ特性にうまく適応できない場合があります。微調整を行うことで、モデルを新しいドメインに適応させ、そのドメインのデータをより適切に理解・処理できるようになります。

微調整によって何が得られますか?

ファインチューニングにより、調整されたモデルが生成されます。このモデルは、事前学習済みモデルのアーキテクチャに基づいていますが、パラメータは新しいタスクまたはドメインに適合するように更新されています。具体的には、ファインチューニングプロセスでは、事前学習済みモデルのパラメータの一部またはすべてを変更し、新しいデータセットでのパフォーマンスを向上させます。この調整されたモデルは、特定のタスクを実行するためにデプロイできます。

例えば:

様々な一般的な物体を認識できる、事前学習済みの画像分類モデルがあるとします。このモデルで特定の種類の花を認識させたい場合、様々な花の画像とそれに対応するラベルを含むデータセットを用いて微調整することができます。微調整後、モデルのパラメータが変化し、より正確に花を認識できるようになります。

3. 微調整されたモデルは何に使用できますか?どのように使用できますか?

ファインチューニングされたモデルとは、特定のデータセットを用いて学習させることで、特定のタスクでより優れたパフォーマンスを発揮するモデルのことです。その応用範囲は非常に広く、最初に事前学習したモデルの種類と、ファインチューニングするデータセットによって異なります。

微調整されたモデルを、ウェブサイト、モバイルアプリケーション、その他のシステムに組み込むなど、実際のアプリケーション環境にデプロイします。この際には、モデルサーバーやその他のデプロイツールの使用が必要になる場合があります。

4. 微調整における重要な手順は何ですか?

  1. データの収集と処理。データセットの品質は、微調整後のモデルの品質も決定します。
  2. ベースモデルの選択。異なるベースモデルは異なる方向に対応します。
  3. 微調整方法の選択: lora、Q-lora、P-turning...

5. 微調整に使用できるデータの種類は何ですか?どこで入手できますか?

ファインチューニングに使用するデータは、対象タスクとの関連性が高く、高品質である必要があります。データの質は量よりも重要です。低品質のデータはモデルのパフォーマンス低下やバイアスにつながる可能性があります。公開データセット:Hugging Face Datasets、OpenAI Dataset Search、Papers with Code、Kaggleなどのウェブサイトでは、多数の公開データセットを提供しています。

独自の微調整データセットを構築するにはどうすればよいですか?

  • 対象タスクに基づいて、収集する必要があるデータの種類を決定します。例えば、感情分類の場合はテキストデータとそれに対応する肯定的および否定的な感情ラベルが必要です。画像認識の場合は画像データとそれに対応するカテゴリラベルが必要です。
  • データ サイズを決定する: どれくらいの量のデータが必須でしょうか? これは、タスクの複雑さとモデルのサイズによって異なります。
  • データのフォーマット:データをモデルが受け入れ可能な形式(CSV、JSON、または特定のフレームワーク(TensorFlow Recordsなど))に変換します。これは、使用するモデルとフレームワークに合わせて調整する必要があります。

チュートリアルのオープンソースアドレス:

http://www.datawhale.cn/learn...

iFlytek MaaS プラットフォーム:

https://training.xfyun.cn/?ch...

いいね (3件のいいね!)↓