🎙️

PromptFlowをAzure AI StudioとAzure Machine Learning Studioどっちで使うか調査

2024/07/25に公開

やりたいこと

AzureでRAGシステムの精度自動評価をする際にPromptFlowを使いたいとなったら、
まず、Azure AI StudioとAzure Machine Learning Studioで使えるという情報が出てくるかと。

ただ、どっち使えばいいの?なにが違うの?という点を調べます。

ちなみにAzure OpenAI StudioからどちらのStudioにもリンクできます。

Azure AI Studioとは

https://learn.microsoft.com/ja-jp/azure/ai-studio/what-is-ai-studio

公式に記載の通り、モデルのカタログだったり、AIサービスの最新情報なども載っていて、AzureのAIリソースについて軽く触りたい、ニュース知りたいという場合はまずはAI Studioを使った方がわかりやすいと思います。


以降、プロンプトフローで使い勝手に違いがあるのか、デプロイに違いがあるのかという点を見ます。

Azure AI Studioの使い勝手

  1. 全てのハブからハブを選択する。(Hubについてはアーキテクチャのところで登場します)

  2. 全てのプロジェクトからプロジェクトを選択する

  3. プロンプトフローのメニューが現れる

  4. あとはAzure Machine Learning StudioのプロンプトフローのUIと同じでした

Azure AI Studioのアーキテクチャ

https://learn.microsoft.com/ja-jp/azure/ai-studio/concepts/architecture
公式ページによると、AI StudioのHubとプロジェクトはどちらもMicrosoft.MachineLearningServices/workspacesのリソースで1:Nの階層構造があるそうです。

Azure Machine Learning Studioにはワークスペースと同階層にHubがあって、複数のワークスペースを1つのHubで持たせられるUIになっていました。

Azure Machine Learning Studioの使い勝手

  1. ワークスペースを選択します。

  2. プロンプトフローのメニューが現れる

  3. プロンプトフローのUI

デプロイについて

AI StudioでもML Studioでもオンラインエンドポイントへのデプロイができるみたいです。

ML Studioのオンラインエンドポイントへのデプロイ
https://learn.microsoft.com/ja-jp/azure/machine-learning/prompt-flow/get-started-prompt-flow?view=azureml-api-2#configure-the-endpoint

マネージドオンラインエンドポイントについて
https://learn.microsoft.com/ja-jp/azure/machine-learning/concept-endpoints-online?view=azureml-api-2#online-endpoints

AI Studioのオンラインエンドポイントへのデプロイ
https://learn.microsoft.com/ja-jp/azure/ai-studio/how-to/flow-deploy

自動実行方法

プロンプトフローのSDKがあるので、それをインポートして利用できます。
フローの結果をリッチな画面で見る必要ないよ、問題があったらチャットで飛ばしてよみたいな場合はプログラムして通知飛ばすとかが良さそう。

https://learn.microsoft.com/ja-jp/azure/ai-studio/how-to/develop/flow-evaluate-sdk

カテゴリ エバリュエーター クラス
パフォーマンスと品質 GroundednessEvaluatorRelevanceEvaluatorCoherenceEvaluatorFluencyEvaluatorSimilarityEvaluatorF1ScoreEvaluator
リスクと安全性 ViolenceEvaluatorSexualEvaluatorSelfHarmEvaluatorHateUnfairnessEvaluator
複合 QAEvaluatorChatEvaluatorContentSafetyEvaluatorContentSafetyChatEvaluator
import os
from promptflow.core import AzureOpenAIModelConfiguration

# Initialize Azure OpenAI Connection with your environment variables
model_config = AzureOpenAIModelConfiguration(
    azure_endpoint=os.environ.get("AZURE_OPENAI_ENDPOINT"),
    api_key=os.environ.get("AZURE_OPENAI_API_KEY"),
    azure_deployment=os.environ.get("AZURE_OPENAI_DEPLOYMENT"),
    api_version=os.environ.get("AZURE_OPENAI_API_VERSION"),
)

from promptflow.evals.evaluators import RelevanceEvaluator

# Initialzing Relevance Evaluator
relevance_eval = RelevanceEvaluator(model_config)
# Running Relevance Evaluator on single input row
relevance_score = relevance_eval(
    answer="The Alpine Explorer Tent is the most waterproof.",
    context="From the our product list,"
    " the alpine explorer tent is the most waterproof."
    " The Adventure Dining Table has higher weight.",
    question="Which tent is the most waterproof?",
)
print(relevance_score)

まとめ

プロンプトフローの使い勝手とデプロイについてはどちらも同じだと思った。

強いて差をつけるなら、AzureのAI機能の検証とかだけしたいならAI Studioを選択した方がプロンプトフロー以外の体験が良さそうで、AI部分以外のデータパイプラインの構築とかも視野に入れるなら、Azure Machine Learning Studioを使うと良いのかなと。

ヘッドウォータース

Discussion