大規模言語モデル (LLM) アプリの開発ライフサイクルを理解する
プロンプト フローの操作方法を理解する前に、大規模言語モデル (LLM) アプリケーションの開発ライフサイクルを確認しましょう。
ライフサイクルは、次の段階で構成されます。
- 初期化:ユース ケースを定義し、ソリューションを設計します。
- 実験:フローを開発し、小規模なデータセットでテストします。
- 評価と調整:より大規模なデータセットを使用してそのフローを評価します。
- 運用:そのフローとアプリケーションをデプロイして監視します。
評価と調整の期間中、および運用の期間中の両方で、そのソリューションを改善する必要があることがわかる場合があります。 実験に戻り、その結果に満足するまで、そのフローを継続的に開発することができます。
これらの各フェーズについて、さらに詳しく確認しましょう。
初期化
ニュース記事を分類する LLM アプリケーションを、設計および開発したいとします。 何かを作成し始める前に、出力として必要なカテゴリが何かを定義する必要があります。 一般的なニュース記事の外観、その記事をそのアプリケーションへの入力として提示する方法、そのアプリケーションが目的の出力を生成する方法を理解する必要があります。
言い換えると、"初期化" の期間中に以下を実施します。
- 目標を定義する
- サンプル データセットを収集する
- 基本的なプロンプトを作成する
- フローを設計する
LLM アプリケーションを設計、開発、テストするには、その入力として機能するサンプル データセットが必要です。 サンプル データセットは、最終的にその LLM アプリケーションへの入力として解析されることが想定されるデータの、小規模で代表的なサブセットです。
そのサンプル データセットを収集または作成する際は、さまざまなシナリオおよびエッジ ケースに対応するために、データ内の多様性を確保する必要があります。 また、あらゆる脆弱性を回避するために、そのデータセットからすべてのプライバシーの機密情報を削除する必要もあります。
実験
ニュース記事のサンプル データセットを収集し、記事を分類するカテゴリを決定しました。 ニュース記事を入力として受け取り、LLM を使用してその記事を分類するフローを設計しました。 そのフローでその想定される出力が生成されるかどうかをテストするには、そのサンプル データセットに対して実行します。
"実験" フェーズは反復的なプロセスです。その期間中は次を実施します。(1) サンプル データセットに対して、そのフローを実行します。 (2) プロンプトのパフォーマンスを評価します。 (3) その結果に満足した場合は、評価と調整に進むことができます。 改善の余地があると考える場合は、(4) そのプロンプトまたはフロー自体を変更して、そのフローを修正することができます。
評価と調整
そのサンプル データセットに基づいてニュース記事を分類するそのフローの出力に満足した場合は、より大規模なデータセットに対してそのフローのパフォーマンスを評価することができます。
より大規模なデータセットに対してそのフローをテストすることで、その LLM アプリケーションが新しいデータに対してどの程度一般化されているかを評価することができます。 評価中に、最適化または調整の対象となる、潜在的なボトルネックまたは領域を特定することができます。
そのフローを編集する際は、より大規模なデータセットに対してもう一度実行する前に、まずはより小規模なデータセットに対して実行する必要があります。 より小規模なデータセットを使用してそのフローをテストすると、問題に対してより迅速に対応することができます。
その LLM アプリケーションが堅牢で信頼性が高く、さまざまなシナリオに対応することができそうであれば、その LLM アプリケーションの運用への移行を決定することができます。
実稼働
ようやく、そのニュース記事分類アプリケーションを運用する準備が整いました。
運用では、次を実施します。
- 最適化: 効率性と有効性のために、入力される記事を分類するフローを最適化します。
- デプロイ: そのフローをエンドポイントにデプロイします。 そのエンドポイントを呼び出すと、そのフローがトリガーされて実行され、目的の出力が生成されます。
- 監視: 使用状況のデータとエンドユーザーのフィードバックを収集して、そのソリューションのパフォーマンスを監視します。 そのアプリケーションがどのように実行されているかを理解することで、随時そのフローを改善することができます。
開発ライフサイクル全体を確認する
これで、LLM アプリケーションの開発ライフサイクルの各段階を理解したので、すべての概要を確認することができます。