This template can be used for both Azure AI Studio and Azure Machine Learning.
It can be used for both AZURE and LOCAL execution.
It supports all types of flow - python Class flows, Function flows and YAML flows.
It supports Github, Azure DevOps and Jenkins CI/CD orchestration.
It supports pure python based Evaluation as well using promptflow-evals package.
It should be used for INNER-LOOP Experimentation and Evaluation.
It should be used for OUTER-LOOP Deployment and Inferencing.
NOTE: A new FAQ section is added to help Engineers, Data Scientist and developers find answers to general questions on configuring and using this template.
よくある質問はこちら
Large Language Model Operations (LLMOps) は、効率的なプロンプト エンジニアリングと LLM によるアプリケーション開発と展開の基礎となっています。 LLM によるアプリケーションの需要が急増し続けるにつれ、組織はエンドツーエンドのライフサイクルを管理するための、一貫性のある合理化されたプロセスの必要性を感じています。
AI とラージ言語モデル (LLM) の台頭により、さまざまな業界が変革され、人間のようなテキスト理解と生成機能を備えた革新的なアプリケーションの開発が可能になりました。この革命により、顧客サービス、コンテンツ作成、データ分析などの分野にわたって新たな可能性が開かれました。
LLM が急速に進化するにつれて、プロンプト エンジニアリングの重要性がますます明らかになってきています。プロンプト エンジニアリングは、特定のビジネス シナリオに対応する効果的なプロンプトを作成することで、LLM の可能性を最大限に活用する上で重要な役割を果たします。このプロセスにより、開発者はカスタマイズされた AI ソリューションを作成できるようになり、より幅広いユーザーにとって AI がよりアクセスしやすくなり、役立つようになります。
プロンプト フローの実験および評価フレームワークです。プロンプト フローはサポートされていますが、プロンプト フロー用の CI/CD パイプラインではありません。プロンプト フローの実験、評価、展開、監視のための豊富な機能セットを備えています。これは、プロンプト フローの運用化のための完全なエンドツーエンドのソリューションです。
このテンプレートは、Azure AI Studio と Azure Machine Learning の両方をサポートしています。構成に応じて、テンプレートは Azure AI Studio と Azure Machine Learning の両方に使用できます。これにより、サービス間でのプロンプト フローの実験、評価、展開のためのシームレスな移行エクスペリエンスが提供されます。
このテンプレートはさまざまなタイプのフローをサポートしているため、特定の要件に基づいてワークフローを定義して実行できます。サポートされている主なフロー タイプは次の 2 つです。
柔軟なフロー
有向非巡回グラフ (DAG) フロー
このプロジェクトの強力な機能の 1 つは、フローの種類を自動的に検出し、それに応じてフローを実行する機能です。これにより、さまざまなフロー タイプを試して、ニーズに最も適したものを選択できます。
このテンプレートは以下をサポートします。
ローカルでの実験から運用環境への展開に至るまで、大規模な言語ベースのフローを管理することは決して簡単ではなく、画一的なタスクではありません。
各フローには、初期実験から展開までの独自のライフサイクルがあり、各段階には独自の一連の課題が存在します。
組織は多くの場合、それぞれに目的、要件、複雑さを伴う複数のフローを同時に処理します。適切な管理ツールがなければ、これはすぐに困難になる可能性があります。
これには、複数のフロー、その固有のライフサイクルの処理、さまざまな構成の実験、スムーズな展開の確保が含まれます。
そこで、プロンプト フローを使用した LLMOps が登場します。プロンプト フローを使用した LLMOps は、プロンプト フローを使用して LLM が組み込まれたアプリを構築するのに役立つ「LLMOps テンプレートとガイダンス」です。次の機能を提供します。
一元化されたコード ホスティング:このリポジトリは、プロンプト フローに基づいて複数のフローのコードのホスティングをサポートし、すべてのフローに単一のリポジトリを提供します。このプラットフォームは、すべてのプロンプト フロー コードが存在する単一のリポジトリと考えてください。これはフローのライブラリのようなもので、さまざまなプロジェクトの検索、アクセス、共同作業が簡単になります。
ライフサイクル管理:各フローは独自のライフサイクルを享受し、ローカルでの実験から運用展開へのスムーズな移行を可能にします。
バリアントとハイパーパラメータの実験:複数のバリアントとハイパーパラメータを実験し、フロー バリアントを簡単に評価します。バリアントとハイパーパラメータは、レシピの材料のようなものです。このプラットフォームを使用すると、フロー内の複数のノードにわたってバリアントのさまざまな組み合わせを試すことができます。
A/B デプロイメント: A/B デプロイメントをシームレスに実装し、異なるフロー バージョンを簡単に比較できるようにします。 Web サイトの従来の A/B テストと同様に、このプラットフォームはプロンプト フローの A/B 導入を容易にします。つまり、実際の環境でフローのさまざまなバージョンを簡単に比較して、どれが最もパフォーマンスが高いかを判断できるということです。
多対多のデータセット/フロー関係:各標準および評価フローに複数のデータセットを収容し、フローのテストと評価における汎用性を確保します。このプラットフォームは、フローごとに複数のデータセットに対応できるように設計されています。
複数のデプロイメント ターゲット:リポジトリは、構成によって駆動される Kubernetes および Azure マネージド コンピューティングへのフローのデプロイメントをサポートしており、必要に応じてフローを拡張できるようにします。
包括的なレポート:バリアント構成ごとに詳細なレポートを生成し、情報に基づいた意思決定を可能にします。すべてのバリアントの一括実行と実験に対して詳細なメトリック収集を提供し、HTML ファイルだけでなく CSV ファイルでもデータに基づいた決定を行うことができます。
BYOF (Bring Your Own Flows) を提供します。 LLM を導入したアプリケーションに関連する複数のユースケースを開発するための完全なプラットフォーム。
構成ベースの開発を提供します。大規模な定型コードを記述する必要はありません。
迅速な実験と評価の両方をローカルおよびクラウド上で実行できます。
プロンプトをローカルで評価するためのノートブックを提供します。ローカル実験用の関数ライブラリを提供します。
導入後にパイプライン内でエンドポイント テストを行い、可用性と準備が整っているかを確認します。
導入前にプロンプトメトリクスを検証するためのオプションのヒューマンインループを提供します。
プロンプト フローを備えた LLMOps は、LLM を導入した単純なアプリと複雑なアプリの両方の機能を提供します。アプリケーションのニーズに合わせて完全にカスタマイズ可能です。
各ユース ケース (プロンプト フロー標準と評価フローのセット) は、次に示すフォルダー構造に従う必要があります。
さらに、ユースケースを構成するexperiment.yaml
ファイルもあります (詳細については、ファイルの説明と仕様を参照してください)。デプロイ後にエンドポイントをテストするためのテスト データを含む、sample-request.json ファイルもあります。
「.azure-pipelines」フォルダーには、プラットフォームの共通の Azure DevOps パイプラインが含まれており、それらに変更を加えると、すべてのフローの実行に影響します。
「.github」フォルダーには、プラットフォーム用の Github ワークフローとユースケースが含まれています。すべての Github ワークフローは実行のためにこの単一フォルダー内に存在する必要があるため、これは Azure DevOps とは少し異なります。
「.jenkins」フォルダーには、プラットフォームの Jenkins 宣言パイプライン、ユースケース、および個々のジョブが含まれています。
「docs」フォルダーには、Azure DevOps、Github Workflow、Jenkins 関連の構成のステップバイステップ ガイドのドキュメントが含まれています。
「llmops」フォルダーには、フローの実行、評価、デプロイに関連するすべてのコードが含まれています。
「dataops」フォルダーには、データ パイプラインのデプロイに関連するすべてのコードが含まれています。
「local_execution」フォルダーには、標準フローと評価フローの両方をローカルで実行するための Python スクリプトが含まれています。
プロジェクトには、さまざまなシナリオを示す 6 つの例が含まれています。
場所: ./web_classification 重要度: 複数のバリエーションを使用した Web サイトのコンテンツの要約を示し、テンプレートで使用できる柔軟性とカスタマイズ オプションを示します。
場所: ./named_entity_recognition 重要性: テキストからの名前付きエンティティの抽出を紹介します。これは、さまざまな自然言語処理タスクや情報抽出に役立ちます。
場所: ./math_coding 重要性: 数学的計算を実行してコード スニペットを生成する機能を示し、計算タスクの処理におけるテンプレートの多用途性を強調します。
場所: ./chat_with_pdf 重要性: PDF ドキュメントを操作するための会話型インターフェイスを示し、検索拡張生成 (RAG) の力を活用して正確で関連性の高い応答を提供します。
場所: ./function_flows 重要性: ユーザー プロンプトに基づいたコード スニペットの生成を示し、コード生成タスクを自動化する可能性を示します。
場所: ./class_flows 重要性: クラスベースのフローを使用して構築されたチャット アプリケーションを紹介し、より複雑な会話インターフェイスの構造と構成を示します。
このリポジトリは、Kubernetes、Kubernetes ARC、Azure Web Apps、AzureML マネージド コンピューティングへのデプロイと、AzureML マネージド コンピューティングのA/B デプロイメントに役立ちます。
パイプラインの実行は、複数のステージと各ステージのジョブで構成されます。
リポジトリは複数のレポートを生成します (実験の実行とメトリクスの例が表示されます)。
ローカル実行の機能を利用するには、次のインストール手順に従います。
git clone https://github.com/microsoft/llmops-promptflow-template.git
aoai
という名前の AzureOpenAI 接続を使用します。 aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
行を追加し、api_key と api_base の値を更新します。別の名前を持つ追加の接続がフローで使用されている場合は、それに応じて追加する必要があります。現在、サポートされているように、プロバイダーとして AzureOpenAI を使用したフローが行われます。 experiment_name=
connection_name_1={ " api_key " : " " , " api_base " : " " , " api_type " : " azure " , " api_version " : " 2023-03-15-preview " }
connection_name_2={ " api_key " : " " , " api_base " : " " , " api_type " : " azure " , " api_version " : " 2023-03-15-preview " }
python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
ここのドキュメントに基づいて、フローをテンプレートに取り込むか、書き込みます。
提供されている例と同様の Python スクリプトを local_execution フォルダーに記述します。
DataOps は、DevOps、アジャイル手法、データ管理実践の側面を組み合わせて、データの収集、処理、分析のプロセスを合理化します。 DataOps は、LLM アプリ開発に必要なデータセット (トレーニング、実験、評価など) の構築に規律をもたらすのに役立ちます。
データ パイプラインは、プロンプト エンジニアリング フローから分離されています。データ パイプラインはデータセットを作成し、そのデータセットはフローが使用するデータ資産として Azure ML に登録されます。このアプローチは、システムのさまざまな部分を個別に拡張およびトラブルシューティングするのに役立ちます。
DataOps の使用を開始する方法の詳細については、このドキュメント「DataOps の構成方法」に従ってください。
このプロジェクトは貢献と提案を歓迎します。ほとんどの投稿では、投稿を使用する権利をお客様が有しており、実際に当社に付与することを宣言する投稿者ライセンス契約 (CLA) に同意する必要があります。詳細については、https://cla.opensource.microsoft.com をご覧ください。
プル リクエストを送信すると、CLA ボットが CLA を提供する必要があるかどうかを自動的に判断し、PR を適切に装飾します (ステータス チェック、コメントなど)。ボットが提供する指示に従ってください。 CLA を使用するすべてのリポジトリでこれを 1 回行うだけで済みます。
このプロジェクトはマイクロソフトのオープンソース行動規範を採用しています。詳細については、「行動規範に関するよくある質問」を参照するか、追加の質問やコメントがあれば [email protected] までお問い合わせください。
このプロジェクトには、プロジェクト、製品、またはサービスの商標またはロゴが含まれている場合があります。 Microsoft の商標またはロゴの許可された使用には、Microsoft の商標およびブランド ガイドラインが適用され、それに従わなければなりません。このプロジェクトの修正バージョンで Microsoft の商標またはロゴを使用することは、混乱を引き起こしたり、Microsoft のスポンサーであることを暗示したりしてはなりません。第三者の商標またはロゴの使用には、それらの第三者のポリシーが適用されます。
このプロジェクトはマイクロソフトのオープンソース行動規範を採用しています。詳細については、「行動規範に関するよくある質問」を参照するか、追加の質問やコメントがあれば [email protected] までお問い合わせください。
著作権 (c) Microsoft Corporation.無断転載を禁じます。
MITライセンスに基づいてライセンスされています。