Slide 1

Slide 1 text

Prompt FlowによるLLMOps

Slide 2

Slide 2 text

自己紹介 宇留嶋 勇人 web系エンジニアで、最近はlangchainやprompt flowを使っ た生成AI周りの開発業務を行ってます。 X(twitter) @3anlqblueE ウルシマ ユウト

Slide 3

Slide 3 text

アジェンダ - Prompt Flow - LLMOpsでPrompt Flowができること - Prompt Flowのデプロイ方法 - まとめ

Slide 4

Slide 4 text

Prompt Flow

Slide 5

Slide 5 text

Prompt Flowとは プロンプト フローは、大規模言語モデル (LLM) によって動作する AI アプリケーションの開発サイクル全体を合理化するために設計 された開発ツールです。 プロンプト フローは、AI アプリケーション のプロトタイプ作成、実験、反復、デプロイのプロセスを簡素化す る包括的なソリューションを提供します。 https://learn.microsoft.com/ja-jp/azure/ai-studio/how-to/prompt-flow

Slide 6

Slide 6 text

Prompt Flowでできること - LLM、プロンプト、Pythonコード、その他のツールを実行可能なワークフローにリンクするフローを作成で きます。 - フロー、特にLLMとのインタラクションを簡単にデバッグし、繰り返し実行できます。 - フローを評価し、より大きなデータセットで品質とパフォーマンスのメトリクスを計算します。 - テストと評価をCI/CDシステムに統合し、フローの品質を保証します。 - 選択したサービスプラットフォームにフローをデプロイするか、アプリのコードベースに簡単に統合できま す。 - (オプションですが、強くお勧めします) Azure AIでPromptフローのクラウド版を活用することで、チームと コラボレーションできます。 https://microsoft.github.io/promptflow/index.html

Slide 7

Slide 7 text

LLMOpsでPrompt Flowができること

Slide 8

Slide 8 text

LLMOpsでPrompt Flowができること LLMOps ステージ - 初期化 - 実験 - 評価・改善 - デプロイ https://learn.microsoft.com/ja-jp/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azur eml-api-2

Slide 9

Slide 9 text

LLMOpsでPrompt Flowができること 機能 - 一元化されたコード ホスティング - ライフサイクル管理 - バリアントとハイパーパラメーターの実験 - 複数のデプロイ ターゲット - A/B デプロイ - 多対多データセット/フロー リレーションシップ - 条件付きデータとモデルの登録 - 包括的なレポート https://learn.microsoft.com/ja-jp/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2

Slide 10

Slide 10 text

LLMOpsでPrompt Flowができること https://learn.microsoft.com/ja-jp/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2

Slide 11

Slide 11 text

例: named_entity_recognition Prompt Flowで固定表現抽出を実装した例 処理 llm: テキストから特定のタイプのエンティティを見つけ る python: LLMから返却されたエンティティのリストを整形す る https://github.com/microsoft/llmops-promptflow-template/tree/main/named_entity_recognition

Slide 12

Slide 12 text

例: named_entity_recognition ※localにcodeとして落とせる

Slide 13

Slide 13 text

例: named_entity_recognition (prompt) system: あなたの仕事は、与えられたテキストコンテンツから特定のタイプのエンティティ を見つけることです。 複数のエンティティがある場合は、"entity1, entity2, entity3 "のようにカンマ区切りですべて返してください。 エンティティのリストだけ を返してください。 そのようなエンティティがない場合は、"None "を返してくださ い。 user: エンティティタイプ: {{entity_type}} テキスト内容: {{text}} エンティティ:

Slide 14

Slide 14 text

例: named_entity_recognition (python)

Slide 15

Slide 15 text

例: named_entity_recognition (evaluation) プロンプトの評価 あらかじめ評価用のプロンプトとその出力を定義し ておく。 ground truthと実際の出力結果を比較する。 (完全一致、部分一致) {"text": "The project manager and the data analyst are collaborating to interpret the project data.", "entity_type": "job title", "results": "project manager, data analyst"}

Slide 16

Slide 16 text

例: named_entity_recognition (CI/CD) 以下のタイミングでgithub actionが呼ばれる(Azure DevOpsも可) - pull request作成時 - developブランチへのmerge (dev環境へのリリース) - 本番環境リリース

Slide 17

Slide 17 text

例: named_entity_recognition (pull request作成時) pr_code_validation pr_flow_validation - Register experiment data asset - 実験データセット(jsonl)をAzure MLにData Assetとして登録する - Execute prompt flow bulk run - prompt flowの実行 ※実際はpythonの環境構築、Azureのloginも実行されている

Slide 18

Slide 18 text

例: named_entity_recognition (pull request作成時)

Slide 19

Slide 19 text

例: named_entity_recognition (developブランチへのmerge) CI flow-experiment-and_evaluation - Register experiment data asset - 実験データセット(jsonl)をAzure MLにData Assetとして登録する - Execute prompt flow bulk run - フローの実行 - Register evaluation data asset - 評価用データセット(jsonl)をAzure MLにData Assetとして登録する - Execute bulk run evaluations - 評価フローの実行 ※実際はpythonの環境構築、Azureのloginも実行されている

Slide 20

Slide 20 text

例: named_entity_recognition (developブランチへのmerge) Report - github action Artifactsにreportが出力 - result - metrics result metrics

Slide 21

Slide 21 text

例: named_entity_recognition (developブランチへのmerge) CD prompt flow deployment job - Register flow as model in AzureML - Azure ML レジストリにモデルとしてフローを登録する - Deploy to AML real-time online endpoint - 今回はオンライン エンドポイントにデプロイ (他 AKS, webapp等あり) ※実際はpythonの環境構築、Azureのloginも実行されている

Slide 22

Slide 22 text

例: named_entity_recognition (developブランチへのmerge) CD Azure ML →dev環境で問題なければその後production環境へ反映させる (評価、A/Bテスト)

Slide 23

Slide 23 text

Prompt Flowのデプロイ方法

Slide 24

Slide 24 text

Prompt Flowのデプロイ方法 https://github.com/microsoft/promptflow/tree/main/examples/tutorials/flow-deploy デプロイ方法は以下がある - Azure App Service - オンラインエンドポイント - Flowを関数として扱う - Flowをhttpエンドポイントとしてserverを立てる - Flowを実行可能アプリとする(streamlit) - Docker - k8s

Slide 25

Slide 25 text

弊社が採用したデプロイ方法 https://github.com/microsoft/promptflow/tree/main/examples/tutorials/flow-deploy デプロイ方法は以下がある - Azure App Service - オンラインエンドポイント - Flowを関数として扱う - カスタマイズがし易い - 1 API内でflowをまたぐことができる - Flowをhttpエンドポイントとしてserverを立てる - PoC用 - Flowを実行可能アプリとする(streamlit) - PoC用 - Docker - flow1つが1 Docker fileである - k8s

Slide 26

Slide 26 text

まとめ

Slide 27

Slide 27 text

まとめ、展望 - Prompt Flowの機能が充実しているため、 LLMOpsも実現しやすくなっている - sdkをつかいガッツリcodeを書いている箇所もあった - Azureでマネージドで提供されているモデル (GPT等)を利用する前提では Prompt Flow&LLMOps は有用かもしれない - 社内基盤としてPrompt Flowに依存しないものが望ましい場合もある - Prompt Flowでマネージドで提供されているModelは限られている - Prompt Flowで全てのユースケースをカバーすることはできない - 最近 Microsoft Mistral AIとのパートナーシップ締結を発表した - AWS Bedrock / Anthropic Claudeも盛り上がっている - その他LLMOpsが実現できるツールとの比較 - MLflow - PromptLayer - Dify - DataRobot