618ZXW

大規模モデルを微調整するプロセス全体について考える

オリジナル:August Datawhale

データホエールの共有

著者: オーガスト

大規模モデルを微調整するプロセス

💡このプロセスを厳密に実行し、手順を省略しないことをお勧めします。そうしないと、無駄な作業を行う可能性があります。

たとえば、データセットが適切に構築されておらず、モデルの微調整のパフォーマンスが低いのはデータセットの問題によるものであることが後から判明した場合、その努力は無駄になってしまいます。

ソリューションの概念化と実装:いくつかの可能なオプション

質問があります。ユーザーが自由にコンテンツを入力できるプロンプトを作成しましたが、プロンプト自体は表示させず、入力エリアだけを表示させたいと考えています。どうすれば実現できますか?

2 つのモデルを呼び出して相互に接続するにはどうすればよいですか?

...

正式に始める前に、次の質問について考える必要があります。

  • 具体的に何をしたいのか?どのような効果を達成したいのか?期待される目標は何なのか?
  • 作成しているのは、広範で一般化されたモデルですか、それとも事前にパッケージ化された製品 (インテリジェント エージェントなど) ですか?
  • イノベーションは、専門分野への深い探求(新しいモデルのトレーニング)にあるのでしょうか、それとも既存のコンテンツの統合(既存のモデルの呼び出しとワークフローの使用)にあるのでしょうか、それともその両方にあるのでしょうか。

❓エージェントとは何ですか?

—エージェントとは、人工知能技術、特に大規模言語モデル (LLM) に基づいて、環境を認識して理解し、目標を達成するためのアクションを実行できるインテリジェントなエンティティを指します。

iFlytek MaaS では、エージェントを作成したい場合は、大規模モデルアプリケーション プラットフォーム内で作成できます。

❓ワークフローとは何ですか?

ワークフローとは、特定のタスクまたは一連のタスクを完了するための手順とプロセスを指します。iFlytek MaaS大規模モデルアプリケーションプラットフォームには、対応するモジュールが用意されています。現在、オンラインのノードには、大規模モデル、コード、決定、分岐、変数抽出、テキスト連結などがあります。

新しいモデルのトレーニングが必要な場合は、そのまま進めてください。ただし、既存のモデルを接続するだけのアイデアであれば、以下のプロセスを経ずにワークフローを使用して直接実装できます。

データセットの取得と構築

データ収集

データセットの準備ができたら、微調整を行うことで戦いの半分は勝ちです。

—先生、玉ねぎ、生姜、ニンニクは使わないでください。

初心者向けに、データセットは、その入手可能性に基づいて、公開されているデータセットと入手が難しいデータセットの 2 つのカテゴリに分けることができます。

❓公開されているデータを入手するにはどうすればよいですか?

データセットを入手する最も簡単な方法は、GitHub、Hugging Face、Modaなどの関連するオープンソースプラットフォームから検索してダウンロードすることです。特に小説などのテキストベースのデータセットは豊富です。

ウェブサイトからスクレイピングすることもできますが、それには技術的なサポートが必要です。

❓必要なデータがオンラインで入手できなかったり、入手が困難な場合はどうなりますか?

—独自のデータセットを構築します。

しかし、数百、数千ものレコードからなるデータセットをゼロから構築するのは非常に面倒です。どうすればこのプロセスを迅速に実現できるでしょうか?ここでは2つのアプローチをご紹介します。

  • iFlytek MaaS プラットフォームのデータ拡張機能を活用すると、最初に 50 個のデータ ポイントを手動で生成し、その後 iFlytek MaaS プラットフォームのデータ拡張機能を使用してデータを 2 倍に増やすことができます。
  • 大規模モデルを使用してデータセットを迅速に構築します。数十個のデータポイントを手動で生成した後、それらをサンプルとして大規模モデルに入力し、同様のコンテンツを出力します。
  • ❗最初から大きなモデルを生成しすぎないでください。最初のラウンドでは20個の大きなモデルを生成し、それらを注意深く分析して、大きなモデルによくある間違いを見つけることをお勧めします。そして、それらの間違いをエラー例としてプロンプトに追加してください。
  • 個人的な経験: 大規模なモデルでは、1 回の実行で 200 個以上のデータ ポイントを生成できます。

シンプルな Prompt の例 (@August より)

参照示例,输出20个类似的“近期运气”问题给我,注意要生活化、语言不要太夸张,最好不要有场景、有类似于“在活动中”、“在比赛中”之类的定语与状语;语句不要太累赘、尤其是不要有太多定语,正常人不这样说话。示例:我这个季度顺利吗?

データクリーニング

元のデータセットはモデルのトレーニングに適した形式に準拠していないため、モデルが学習できる形式にクリーンアップして処理する必要があります。

iFlytek MaaSプラットフォームでは、ファインチューニングデータセットは通常AIpacaの形式で構築されます。詳細については、iFlytek Open Platformのドキュメントをご覧ください。

アイパカ

特徴: シンプルな構造で、テキスト生成、翻訳、要約などのタスク、特に単一ラウンドのタスク指向の指示の微調整に適しています。

  • タスクの指示は、直接のユーザー入力に似ています。
  • タスクに必要な入力内容。通常は空です(タスクがオープンエンド型の場合や明示的な入力を必要としない場合は、空文字列でも許容されるため)。
  • 指示と入力が与えられると、モデルは対応する正しい結果または参照回答である期待される出力を生成する必要があります。
  • このシステムは、モデルの事前プロンプトとして理解できます。
 [

簡単に言えば、この構造は次のように理解できます。大きなモデルは現在の役割の履歴を記憶しており、ユーザーが指示のようなものを入力すると、大きなモデルは出力のようなものを返す必要があります。

これは、大規模なモデルが質問と回答の間のマッピング関係を確立するのを支援することと同じです。

  • データセットはモデルの練習問題と考えることができます。
  • 指示 + 入力 = 問題
  • 出力 = 答え

モデルベースの比較

モデルのデバッグを正式に開始する前に、適切なモデルベースを選択することが特に重要です。iFlytek MaaSプラットフォームではすでにモデルの強みの一部が紹介されていますが、それぞれの特定の垂直分野ごとに独立したテストと要約を実施する必要があります。

iFlytek MaaS プラットフォームで提供される Llama3 モデルは主に英語のコーパスに基づいています (トレーニング コーパスのわずか 0.2% が中国語)。そのため、学生から次のような質問がよく寄せられます。

❓Llama3で中国語の文字を出力するにはどうすればよいですか?

— 独自の中国語データセットを入力し、完全なパラメータの微調整を選択して、LoRa を再度トレーニングします。

あるいは、独自の中国語データセットのシステムセクションに「中国語を出力してください」を追加することもできます (ただし、iFlytek MaaS プラットフォームは現在これをサポートしていないようです)。

モデルのトレーニング

データセットを構築し、モデル ベースを選択したら、モデルのトレーニングを開始できます。

パラメータ選択

モデルのトレーニング中に選択できるパラメータは多数あります。

💡個人的な経験から言うと、「トレーニングの反復回数」には特に注意が必要です。データセットが10,​​000を超える場合、トレーニングの反復回数は5回以下にする必要があります。そうでないと、オーバーフィッティングが発生する可能性があります(次の章)。

有効性の評価

みんな結果が良くないと言っているのですが、期待する結果はどのようなものですか?

—ネギ、生姜、ニンニク、目玉焼きの先生

モデルの性能を評価するには、客観的な基準と主観的な基準を組み合わせて使用​​できます。特に、過剰適合の可能性には注意が必要です。

❓オーバーフィッティングとは何ですか?

オーバーフィッティングとは、モデルがデータから学習する際に、データ内の詳細を記憶するだけでなく、偶然発生した重要ではない事柄(つまり「ノイズ」)も記憶してしまう状況を指します。

過剰適合が発生した場合は、

  • データセットの問題: データセットの品質向上 / データセットが多すぎる
  • 微調整の問題: 学習の反復回数とデータエントリ数が一致しない、学習の反復回数が多すぎる。

主観的基準:製品に対する自身の期待に基づいて、期待される目標効果の評価枠組みを決定します。これが最も重要です。

客観的な基準: 損失曲線を調べます。

損失曲線は、モデルの学習状態 (学習損失) を評価するために使用される曲線です。

損失曲線が 0.1 または 0.2 に設定されていますが、これは間違いなく機能しません。

—ネギ、生姜、ニンニク、目玉焼きの先生

理想的なフィッティング状態

改善が必要なフィッティング状態

以下の内容は Cheng Xiaojuan のメモと機械学習用語集からの抜粋です。

パフォーマンス 1: 損失は非常にゆっくりと減少し、まったく減少していないように見えます。これは、モデルがデータから何も学習していないことを示しています (アンダーフィッティング)。

パフォーマンス2:曲線の振動

パフォーマンス3: モデルが急激にジャンプします。

観察4: 損失値が低すぎます。ほぼ0.2または0.3に達しています(@Augustより)

モデルリリース

モデルの準備が整い公開されたら、APIを直接呼び出すことができます。リクエストアドレスは次のとおりです。

 wss://xingchen-api.cn-huabei-1.xf-yun.com/v1.1/chat

API呼び出しについては、次のドキュメントを参照してください: オープンソースの大規模モデルWeb APIドキュメント

考慮すべきことがまだあります...

現在、iFlytek MaaS プラットフォームのオープン性と公共の利益により、モデルのトレーニング、展開、使用においてコストの問題を考慮する必要がありません。

しかし、実際には、モデルのテストとトレーニングには必ずコストがかかります。モデルを商用製品として開発する場合は、コストの問題を考慮する必要があります。

あなたのモデルの商業コストはいくらですか?すでに可能な限り低いレベルになっていますか?

例えば:

❓技術的な実装パスが 2 つあり、最初のパスでは 1 つのモデルを使用してすべてを一度に実装しますが、プロンプトが非常に長くなります (約 2000 語)。もう 1 つのパスでは、2 ~ 3 つのモデルを含むワークフローを使用し、ワークフロー プロンプト全体が 1000 語未満になる可能性がある場合、一般的にどちらのパスの方が安価ですか。

コストは主にモデルの入力トークンと出力トークンに依存します。入力トークンと出力トークンが同程度であれば、価格も同様になります。

著者のホームページ: https://blog.csdn.net/weixin_45092438/category_12856410.html

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