HUOXIU

Dewu 大規模モデル プラットフォームの統合に関するベスト プラクティス


出典:デウーテクノロジー

目次

I. 背景

II. ビジネスシステムが大規模モデルにアクセスする3つの方法

III. 直接PROMPT(プロンプト)アクセス方式

1. 一般的なPROMPTテクニック

1.1 ゼロショット、ワンショット、フューショット

1.2 チェーン思考

1.3 タスクの内訳

2. PROMPT プロンプトにビジネス知識を埋め込むにはどうすればよいでしょうか?

IV. RAG(検索強化)によるアクセス

1. RAGの実装

1.1 RAGプロセス

1.2 知識検索はどのように実装されますか?

2. RAG検索とのビジネス統合例

V. 微調整によるアクセス

1. トレーニングを微調整する方法は何ですか?

2. KubeAI 大規模モデル プラットフォームで微調整を実行するにはどうすればよいですか?

3. 微調整の例

VI. ビジネスシステムを大規模モデルに統合するための最適な方法

大規模モデルへの段階的なアクセス

VII. 要約と展望

1つ

背景

最近、社内のビジネス関係者から「大規模モデルを業務システムに統合して効率を上げるにはどうすればよいか」という問い合わせを頻繁に受けます。この質問に答えるために、KubeAI の大規模モデル プラットフォーム統合に関連するビジネス プラクティスと業界の典型的なケース スタディをいくつかまとめて、皆さんと共有します。

OpenAI初の開発者カンファレンスのテーマは「LLMパフォーマンスの最大化」でした。ビジネスシステムが大規模モデルにアクセスする方法として、PROMPT(プロンプトワードを大規模モデルに直接入力する)、RAG(検索拡張を通じて大規模モデルの機能を強化する)、そしてFine-tuning(トレーニングの微調整を通じて大規模モデルの機能を強化する)という3つの方法が提案されました。

この記事では、OpenAIの視点に基づき、具体的な実例を挙げながら、これら3つのアクセス方法を紹介します。最後に、企業が段階的なアプローチ(PROMPT、RAG、ファインチューニング)を通じて大規模モデルにアクセスし、最大の投資収益率を実現できることを示唆します。

ビジネスシステムが大規模モデルにアクセスする3つの方法

先ほども簡単に触れましたが、現在、業務システムにおける大規模モデル統合には、PROMPT(大規模モデルにプロンプ​​トを直接入力する)、RAG(検索拡張によって大規模モデルの機能を強化する)、そしてFine-tuning(学習の微調整によって大規模モデルの機能を強化する)という3つの方法があります。 以下では、これらの3つの方法を簡単な例を挙げて説明します。

  • プロンプト(プロンプトは大規模モデルに直接提供されます)

PROMPT経由で大規模モデルにアクセスするのは、最もシンプルで直接的な方法です。つまり、オープンソースモデルを入手したら、すぐにデプロイして推論を実行できます。その後、モデルにプロンプ​​トを送信して問題を解決し、回答を返すことができます。例えば、記事の要約を生成するようモデルに直接指示することも可能です。

  • RAG(検索による大規模モデルの強化能力)

RAG を介して大規模言語モデルにアクセスする方法は、検索拡張生成 (RAG) テクノロジを利用して大規模言語モデル (LLM) が関連する知識を参照できるようにすることで、生成の品質と精度を向上させる方法です。

RAGの核となるアイデアは、まずベクターデータベースを通じてユーザーの質問に最も関連性の高い文書や知識を取得し、次にこれらの文書や知識を大規模モデルの入力(プロンプト)に組み込み、大規模モデルが回答を生成する際にこれらの情報を参照できるようにすることです。これにより、大規模モデルはビジネス関連の知識をより深く理解できるようになります。

  • 微調整(トレーニングを通じて大規模モデルの能力を強化する)

ファインチューニングとは、ビジネス固有のデータセットを用いて、事前学習済みの大規模モデルのパラメータの一部またはすべてを微調整し、特定のタスクまたはドメインに適応させるプロセスを指します。ファインチューニングにより、大規模モデルはビジネスのニーズと特性をより深く理解し、ビジネスシナリオにおけるパフォーマンスを向上させることができます。

次に、KubeAI の大規模モデル プラットフォーム統合のビジネス プラクティスやいくつかの従来の業界事例を組み合わせて、上記の 3 つの方法でビジネス システムが大規模モデルにアクセスする方法についてさらに詳しく説明します。

三つ

直接PROMPTアクセス方法

大規模モデルにアクセスするためのいわゆるPROMPTアプローチとは、大規模モデルが対応する出力を生成するための適切なプロンプトを設計し、それによって様々なタスクを完了させることを指します。 上に示した最も単純なPROMPTの例では、大規模モデルに春についての詩を書くように指示すると、モデルが対応する出力を生成します。

複雑なビジネスシナリオでは、PROMPPTの設計は非常に複雑になることがよくあります。そのため、「PROMPPTエンジニアリング」と呼ばれる、PROMPPTの設計方法を研究する専門分野が生まれました。PROMPPTエンジニアリングは、大規模言語モデル(LLM)の固有の機能を活用して、様々なタスクを達成するための適切なプロンプトを設計する分野です。その目的は、モデルのパフォーマンスと効率を最大化するために最適なプロンプトを見つけることです。

以下のPROMPTの概要は、 Promptエンジニアリングガイド(https://www.promptingguide.ai/zh)およびopenai-cookbook (https://github.com/openai/openai-cookbook/tree/main)に記載されている関連コンテンツと論文を参照しています。興味のある学生は、これらのリソースをさらに詳しく調べることができます。

一般的なPROMPTテクニック

現在、大規模モデルの入力コンテキストの長さは一般的に 4K または 16K ですが、最近の大規模モデルの中には 32K または 128K をサポートしているものもあり、Promopt の設計にはかなりの余地が残されています。

ゼロショット、ワンショット、フューショット

OpenAIのGPT-3に関する論文「言語モデルは少数ショット学習者(Few-Shot Learners)」では、強力な自然言語処理(NLP)モデルであるGPT-3について詳しく説明しています。そのハイライトの一つが少数ショット学習です。

  • ゼロショット学習とは、事前データなしで自然言語指示を用いてモデルが新しいタスクを完了できるようにすることです。例えば、「この英語のテキストを中国語に翻訳してください」とモデルに指示すると、例文を一切与えずに翻訳を試みます。この手法は最も便利ですが、タスクによっては自然言語指示では明確に記述することが難しいため、最も難しい手法でもあります。

  • ワンショット学習では、モデルに関連するデータポイントを1つだけ与え、自然言語の指示と例を用いて新しいタスクを完了します。例えば、「この英語のテキストを中国語に翻訳してください」とモデルに指示し、英語の文章とその中国語訳を例として与えます。すると、モデルはこの例に基づいて翻訳を試みます。この手法では、参照できる例があるため、ゼロショット学習よりもモデルがタスクの内容や形式を理解しやすくなります。

  • 少数発話学習では、自然言語の指示と少数の例文を用いて、限られた関連データを用いてモデルに新しいタスクを完了させるように学習させます。例えば、モデルに「この英語のテキストを中国語に翻訳してください」と指示し、いくつかの英語の文とその中国語訳を例として与えます。モデルはこれらの例文に基づいて翻訳を試みます。この手法は、より多くの例文を参照できるため、ワンショット学習と比較してモデルの精度と安定性が向上します。

上記の 3 つのシナリオすべてにおいて、プロンプトは、モデルがタスクを完了できるように自然言語の指示といくつかの例を提供するステートメントです。

連鎖思考

思考連鎖による問題解決とは、複雑な問題を多くの相互に関連するステップに分解し、それらを一つずつ解決していくことです。こうした段階的な解決策は、モデルが多段階的な推論を必要とする複雑な問題をより深く理解し、解決するのに役立ちます。

  • 関連論文へのリンク:大規模言語モデルはゼロショット推論器である(https://arxiv.org/abs/2205.11916)

  • プロンプトデザイン:

著者らは、各回答の前に「ステップごとに考えてみましょう」と付け加えるだけで、大規模なモデルが優れたゼロショット推論器になる可能性があることを発見しました。このシンプルな手法をMultiArith数学データセットに適用したところ、 Let's think step by stepという表現によって精度が18%から79%へと4倍に向上しました。

  • 例えば:

    • 以下は text-davinci-003 モデルでの実験です。

      誤った回答は次のとおりです。

      Q :ジャグラーは16個のボールを投げることができます。 そのうち半分はゴルフボールで、残りの半分は青いゴルフボールです。 青いゴルフボールはいくつありますか?

      A: 青いゴルフボール 8 個。

      連鎖思考のヒントを追加した後、正しい答えが得られました。

      Q:一个杂耍者可以抛16 个球。球的一半是高尔夫球,而高尔夫球中又です。 青いゴルフボールはいくつありますか?

      一つずつ考えてみましょう。

      A: まず、ジャグラーは16個のボールを投げることができるので、合計16個のボールがあります。 次に、その半分はゴルフボールなので、ゴルフボールは8個あります。 最後に、ゴルフボールの半分は青いので、青いゴルフボールは4個あります。

      以下は著者の論文からの例です。

タスクの内訳

タスク分解とは、複雑なタスクをより小さく、扱いやすいサブタスクに分解するプロセスです。典型的な例としては、A都市とB都市間の貨物輸送が挙げられます。この輸送には、A都市での積み込み、A都市とB都市間の輸送、そしてB都市での荷降ろしという3つのステップが必要です。

初期段階で非常に人気があった HuggingGPT プロジェクトは、タスク分解の典型的な応用例です。

  • 関連論文へのリンク: HuggingGPT: HuggingFace における ChatGPT とその仲間による AI タスクの解決(https://arxiv.org/abs/2303.17580)

  • プロンプトデザイン:

HuggingGPT は、マルチモーダル タスクを複数のサブタスクに分割し、各サブタスクを順番に実行してマルチモーダル機能を実現します。

HuggingGPTのタスク分解は、大規模モデルに対するPROMPTヒントによって実現されます。以下は、HuggingGPTのPROMPTヒントの1つについての詳細な説明です(中国語に翻訳済み)。

ユーザーのリクエスト内容は次のとおりです。

 /examples/d.jpg のポーズと /examples/e.jpg の内容に基づいて、新しい画像を見せてください。

HuggingGPT は、大規模なモデルに対して次の提案を提供します。

これらのプロンプトの後には、Few-Shot と呼ばれるいくつかのリクエスト応答例が続き、前のFew-Shotセクションで説明したように、大規模モデルがこれらのプロンプトをより正確に理解できるようになります。

大規模モデルは以下を返しました:
























 [{ "task": "openpose-control", "id": 0, "dep": [-1], "args": { "image": "/examples/d.jpg" }}, { "task": "image-to-text", "id": 1, "dep": [-1], "args": { "image": "/examples/e.jpg" }}, { "task": "openpose-text-to-image", "id": 2, "dep": [0, 1], "args": { "image": "<GENERATED>-0", "text": "<GENERATED>-1" }}]

そのため、タスク分解PROMOPTをベースにした大規模モデルは、タスク分解機能を完全に備えており、 複雑なマルチモーダルタスクを単純なタスクに分解します。その後、HuggingGPTはGPTから返されたタスクを段階的に実行し、最終結果をユーザーに返します。

PROMPTプロンプトにビジネス知識を埋め込む方法


大規模モデル用の PROMPT を設計する場合、通常、モデルの応答と動作をガイドするために、次の 4 つのオプション部分に分割できます。

  • ユーザー指示: 特定の役割の遂行や特定のコンテンツの生成など、実行する必要がある特定のタスクを大規模モデルに明示的に伝えます。

  • 対話コンテキスト: 以前の対話コンテンツを提供して、大規模モデルが現在の対話の背景を理解し、より関連性の高い応答を生成できるようにします。

  • 追加コンテンツ: 基本ライブラリの詳細や特定のビジネス知識などの追加情報を補足して、大規模モデルの知識ベースを充実させ、応答の品質を向上させます。

  • 出力要件: 必要な出力形式、出力コンテンツの制限などを指定します。

これら 4 つの部分は、必ずしもすべての PROMPT に含める必要はなく、実際のニーズに応じて柔軟に選択できます。

上図の PROMPT の 4 つの要素からわかるように、ビジネス知識は PROMPT の追加コンテンツに埋め込むことができ、ビジネスシナリオのダイアログは PROMPT のダイアログコンテキストに埋め込むことができます。

以下は、KubeAI大規模モデルプラットフォームに統合された「AIプロトタイプ描画」プロジェクトのPROMPTの簡略版です。このプロジェクトの目標は、ユーザーが入力した製品説明に基づいて、大規模モデルが標準に準拠したフロントエンドページを生成することです。PROMPTを詳しく見ていきましょう。

このPROMPT設計により、追加コンテンツを通じてビジネス知識をプロンプトに組み込むことができます。PROMPTの4つの要素に従って設計することで、ビジネス関連の知識をプロンプトに組み込むことが比較的容易になることは明らかです。

4つ

RAG(検索強化)方式によるアクセス

PROMPT を介して大規模モデルに直接接続するのは比較的簡単ですが、次の 2 つの課題があります。

  • PROMPT で大規模なモデルに直接問い合わせると、大規模なモデルはユーザーのビジネス知識を理解できず、誤解が生じる可能性もあるため、回答の質が低下します。

  • PROMPT に組み込まれたビジネス知識は、ビジネスの変化に応じて継続的に更新する必要があります。

これらの課題を克服するために、RAG技術が登場しました。RAG技術は、大規模言語モデル(LLM)を活用した応用スキームです。正式名称はRetrieval Augmented Generation(検索拡張生成)です。その核となる考え方は、検索を通して関連知識を取得し、それを大規模モデルの入力に組み込むことで、大規模モデルがこの知識を参照して合理的な回答を提供したり、コンテンツを生成したりできるようにすることです。

大規模 RAG テクノロジーには、次のような多くの利点があります。

  • 大規模モデルにおける知識不足、錯覚問題、データセキュリティ問題などの問題を解決できます。

  • プライベート データやリアルタイム データを活用して、大規模モデルの適時性と専門性を向上させることができます。

RAGの実装


RAGプロセス

上の図は典型的なRAGワークフローを示しています。このワークフローを段階的に分析してみましょう。RAGの主なステップは次のとおりです。

  • ユーザーは、ニーズに応じて、「会社の IT 部門の電話番号は何ですか?」などのコマンドを入力できます。

  • 知識検索ツールは、ユーザーの指示(ベクター検索)に基づいて、ビジネス知識ストレージプール(ベクターデータベース)から関連する知識を検索します。例えば、企業のIT部門の電話番号といったビジネス知識をベクターデータベースから検索できます。

  • PROMPTは、ユーザーからの指示とビジネス知識を統合し、より大きなモデルを構築します。例えば、統合された結果は次のようなものになります。「次の情報に基づいて、次の質問に答えてください。会社のIT部門の電話番号は何ですか?」 内容:会社のIT部門の電話番号はXXXXです。

  • 大規模モデルに PROMPT を送信し、大規模モデルからの応答を受信します。

知識検索はどのように実装されますか?

知識検索は、インターネットから直接知識にアクセスするか、検索前に企業内にビジネス知識を蓄積しておくことで実現できます。企業内における知識蓄積の方が広く普及しているため、ここではこの実装方法のみを紹介します。

ビジネス知識の検索は、主にビジネス知識の入力と検索という2つの段階から成ります。これら2つの段階の具体的な手順を一つずつ分析してみましょう。

ビジネス知識の入力:

  • ユーザーはツールを使用して、ビジネス ナレッジ ドキュメントを複数のセグメントに分割します。

  • 各ドキュメント フラグメントについて、対応するベクトル表現が埋め込みモデルを使用して計算されます。

  • ドキュメント フラグメントとそのベクトル表現は、ベクトル データベースに一緒に保存されます。

ビジネス知識の検索:

  • ユーザーが検索コマンドを入力すると、埋め込みモデルを使用して対応するベクトル表現が計算されます。

  • ベクトル データベース内の命令ベクトルに最も類似したドキュメント フラグメント ベクトルを検索して取得します。

  • 検索クエリに最も一致するビジネス ナレッジである検索結果を返します。

RAG検索とのビジネス統合例

次の例では、KubeAI 大規模モデル プラットフォームに統合されたデータ ウェアハウス メトリックのインテリジェント分析を使用して、特定のビジネスが RAG を通じて大規模モデルにアクセスする方法を説明します。

このプロジェクトは、ユーザーの自然言語記述に基づいて、ユーザーにとって視覚的なデータ表示を直接生成することができます。簡略化されたRAG推論プロセスは以下のとおりです。

  • エージェントはユーザーの問い合わせを受け取ると、すぐにベクター データベースにアクセスして、使用する必要があるデータ ウェアハウス メトリックを検索します。

  • エージェントはユーザーの問い合わせとメトリックを使用して大規模なモデルを呼び出し、対応するクエリ コマンドを生成します。

  • エージェントはクエリ コマンドを実行し、データ結果を取得し、その結果をユーザーに返して提示します。

微調整によるアクセス

トレーニングを微調整する方法にはどのようなものがありますか?


上の図は、事前トレーニングからビジネス シナリオへの適用までの完全な大規模モデル トレーニング プロセスを示しています。このプロセスには通常、次の 3 つの段階が含まれます。

  • 事前トレーニング

定義:大規模なラベルなしテキストを用いた自己教師学習を用いて、一般言語モデルを学習し、言語の統計的パターンと意味的知識を捕捉します。事前学習は、言語理解のための一般的な基盤を確立するために使用されます。

データ例:


今日はいい日だ。友達と公園に行ったんだ。芝生の上でピクニックをして、フリスビーをして、滑り台を滑った。すごく楽しかったよ。 

  • 命令のチューニング

定義:事前学習に基づき、ラベル付けされた指示(指示、出力)を用いてモデルを微調整することで、人間からの指示に従って望ましい出力を生成できるようにします。指示調整は、モデルの制御性と解釈性を向上させ、ユーザーの意図に応じて様々なタスクを実行できるようにすることを目的としています。

データ例:

指示: 春をテーマにした 5 文字の四行詩を書いてください。春風が揚子江の南岸を緑に変え、山々一面に桃の花が赤く咲き、ウグイスが歌い、ツバメが舞い、新年を迎えます。人間の世界の 4 月は夢のようです。 
  • RLHF

定義:強化学習(RLHF)は、命令チューニングを基盤として、人間のフィードバックを報酬信号として活用することでモデルをさらに最適化し、人間の好みにより合致する出力を生成できるようにします。RLHFは、モデルの品質と安全性を向上させ、不合理または非倫理的な結果の生成を防ぐことを目的としています。

KubeAI大規模モデルプラットフォームで微調整を行う方法


KubeAI 大規模モデル プラットフォームでは、ユーザーは次の手順に従ってすぐにトレーニングを開始し、大規模モデルを自動的にデプロイできます。

  • 大規模モデルを選択します。前述の大規模モデルの選択原則に基づいて、大規模モデルプラットフォームから必要な大規模モデルを選択します。

  • トレーニングデータをアップロードします。上記のデータ準備方法に従って、準備したデータを大規模モデルプラットフォームにアップロードします。

  • トレーニングパラメータを設定する際は、Loraなどのデフォルト設定を選択するのが一般的です。これらのパラメータは通常、最適なトレーニング結果を得るために最適化されています。

  • トレーニングを開始するには、対応するボタンをクリックしてください。大規模モデルプラットフォームがトレーニングタスクを自動的に処理するため、お客様はビジネスアプリケーションの開発と展開に集中できます。

微調整の例

特定のビジネス分野向けのインテリジェントな顧客サービス ロボットのトレーニングを例に、微調整を通じてインテリジェントな顧客サービス ロボットを構築する方法を説明します。

トレーニングの目的は、特定のビジネス分野の知識に精通したインテリジェントな顧客サービス ロボットを構築することです。

  • データの準備。

    • 過去の顧客サービスの問題解決経験からのドキュメントやチャット ログなど、関連するビジネス ドメインの知識を準備します。

    • データクリーニングの主な目的は、データ品質の向上です。一般的な操作には、データの分類、重複排除、フィルタリング、補完などがあります。

    • カスタマーサービスチャットデータを構築します。前のステップでクレンジングされたデータに基づいて、質疑応答形式のカスタマーサービスチャットデータを構築します。これは、PROMPTメソッドを介して他の大規模モデルを直接呼び出すことで実行できます。

  • 大きなモデルを微調整します。

    • 基本的な大規模モデルを選択する際には、そのサイズと様々な指標におけるパフォーマンススコアを考慮する必要があります。モデルパラメータが大きいほど、一般的にモデルはよりスマートになりますが、推論速度は遅くなります。したがって、複数の大規模モデルを選択し、実験を行って評価するのが最善のアプローチです。

    • 大規模モデルを微調整するには、オープンソースフレームワークを選択して、大規模モデルを直接微調整することができます。例えば、ほとんどの場合、Loraを使用してLoraアダプタパラメータモデルを直接微調整できます。

ビジネスシステムが大規模モデルにアクセスするための最適な方法

大規模モデルへの段階的なアクセス


前のセクションでは、PROMPT(プロンプト)、RAG(検索拡張)、そしてファインチューニングという3つの方法を通じて、企業が大規模モデルにアクセスする方法を紹介しました。OpenAI開発者会議「LLMパフォーマンスの最大化」で提案された大規模モデルへの企業アクセスへのアプローチは、以下のプロセスに基づく段階的なアプローチであると理解されています。

  • 最初のステップは、ビジネスロジックがPROMPTメソッドを使用して大規模モデルを統合することです。このステップはシンプルで、PROMPTを記述し、基本的な呼び出しロジックを構築し、結果をテストするだけです。

  • 2つ目のステップでは、ビジネス部門が1つ目のステップを基に、RAGを使用してアプリケーションを統合します。RAGを使用すると、PROMPTのコンテンツを修正し、ビジネス関連の知識をさらに取り入れることができます。もちろん、ビジネス部門に十分なトレーニングデータがある場合は、このステップを省略し、プロセスは直接3つ目のステップである「微調整」に進むことができます。

  • 3つ目のステップでは、ビジネス部門がファインチューニングを用いて大規模モデルと統合し、ビジネス部門の知識をより深く理解できるようにします。このステップでは、十分な量の高品質なデータが必要です。これは、2つ目のステップで生成したRAGや他のソースからのデータを用いて生成できます。RAGと比較して、ファインチューニングは大規模モデルの推論精度と速度を向上させることができます。

セブン

要約と展望

本稿では、ビジネスシステムが大規模モデルにアクセスするための3つの手法、すなわちPROMPT、RAG、そしてFine-tuningを紹介します。 具体的な実践例を通して、様々なシナリオにおけるこれら3つの手法の有効性と利点、そしてビジネスニーズとデータの状況に応じて適切な手法を選択する方法を示します。 最後に、大規模モデルにアクセスするビジネスシステムのためのベストプラクティスとして、OpenAI Developer Conferenceで提案されたアクセス手法に基づいた段階的なアプローチ、すなわちPROMPT、RAG、そしてFine-tuningを推奨します。

大規模モデルは、将来のビジネスイノベーションの重要な推進力となり、企業の効率性、品質、そしてユーザーエクスペリエンスの向上に貢献します。大規模モデルの導入は、PROMPTから始め、段階的にRAGを試し、微調整を重ねることで最良の結果を得るという、段階的なアプローチを推奨します。私たちは、大規模モデルのさらなる可能性を探るために、より多くの事業部門と連携していくことを楽しみにしています。