Share via


ランタイムの環境をカスタマイズする

ランタイム用に Docker コンテキストを使用して環境をカスタマイズする

このセクションでは、DockerAzure Machine Learning 環境に関連する知識があることを前提としています。

手順 1: Docker コンテキストを準備する

image_build フォルダーを作成する

ローカル環境で、次のファイルを含むフォルダーを作成します。フォルダーの構造は次のようになります。

|--image_build
|  |--requirements.txt
|  |--Dockerfile
|  |--environment.yaml

requirements.txt に必要なパッケージを定義する

省略可能: プライベート pypi リポジトリにパッケージを追加します。

次のコマンドを使用して、パッケージをローカルにダウンロードします。pip wheel <package_name> --index-url=<private pypi> --wheel-dir <local path to save packages>

requirements.txt ファイルを開き、追加のパッケージと特定のバージョンを追加します。 次に例を示します。

###### Requirements with Version Specifiers ######
langchain == 0.0.149        # Version Matching. Must be version 0.0.149
keyring >= 4.1.1            # Minimum version 4.1.1
coverage != 3.5             # Version Exclusion. Anything except version 3.5
Mopidy-Dirble ~= 1.1        # Compatible release. Same as >= 1.1, == 1.*
<path_to_local_package>     # reference to local pip wheel package

requirements.txt ファイルの構造化に関する詳細については、pip ドキュメントの要件ファイル形式を参照してください。

Note

requirements.txt 内では promptflowpromptflow-tools のバージョンを固定しないでください。これは既にランタイム ベース イメージ内に含めてあります。

Dockerfile を定義する

Dockerfile を作成し、次のコンテンツを追加してから、ファイルを保存します。

FROM <Base_image>
COPY ./* ./
RUN pip install -r requirements.txt

注意

この Docker イメージは、プロンプト フローの基本イメージ (mcr.microsoft.com/azureml/promptflow/promptflow-runtime:<newest_version>) からビルドする必要があります。 できる限り最新バージョンの基本イメージを使用します。

手順 2: カスタム Azure Machine Learning 環境を作成する

environment.yaml に環境を定義する

ローカル コンピューティングでは、CLI (v2) を使用して、Docker イメージに基づいてカスタマイズされた環境を作成できます。

注意

az login # if not already authenticated

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

environment.yaml ファイルを開き、次のコンテンツを追加します。 <environment_name> プレースホルダーを、目的の環境名に置き換えます。

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: <environment_name>
build:
  path: .

環境を作成する

cd image_build
az ml environment create -f environment.yaml --subscription <sub-id> -g <resource-group> -w <workspace>

Note

環境イメージのビルドには、数分かかる場合があります。

ワークスペース UI ページに移動し、[環境] ページに移動して、作成したカスタム環境を見つけます。 これを使用して、プロンプト フローにコンピューティング インスタンス ランタイムを作成できるようになりました。 詳細については、「UI でコンピューティング インスタンス ランタイムを作成する」を参照してください。

また、環境の詳細ページにはイメージもあるので、これをプロンプト フロー フォルダーの flow.dag.yaml ファイルの自動ランタイム (プレビュー) でベース イメージとして使用することもできます。 このイメージは、UI からフローをデプロイするための環境を構築するのにも使用されます。

環境の詳細ページのイメージ名のスクリーンショット。

環境 CLI の詳細については、「環境を管理する」を参照してください。

自動ランタイム (プレビュー) 用のフロー フォルダーを使用して環境をカスタマイズする

プロンプト フロー フォルダーの flow.dag.yaml ファイルで、フローの環境を定義できる environment セクションを使用できます。 ここには、次の 2 つの部分があります。

  • イメージ: フローのベース イメージです。省略すると、プロンプト フローのベース イメージ mcr.microsoft.com/azureml/promptflow/promptflow-runtime:<newest_version> の最新バージョンが使用されます。 環境をカスタマイズしたい場合は、前のセクションで作成したイメージを使用できます。
  • パッケージ requirements.txt を指定することもできます。自動ランタイムおよび UI からのフロー デプロイの両方で、flow.dag.yaml ファイルで定義されている環境を使用します。

フロー ページの自動ランタイム用の環境のカスタマイズのスクリーンショット。

Azure DevOps でプライベート フィードを使用する場合は、「Azure DevOps のプライベート フィードにパッケージを追加する」を参照してください。

プロンプト フローのコンピューティング インスタンス ランタイムとして使用できるカスタム アプリケーションを、コンピューティング インスタンスに作成する

コンピューティング インスタンス ランタイムは、コンピューティング インスタンスで実行されるカスタム アプリケーションです。 コンピューティング インスタンスにカスタム アプリケーションを作成し、それをプロンプト フロー ランタイムとして使用できます。 この目的でカスタム アプリケーションを作成するには、次のプロパティを指定する必要があります。

UI SDK 注意
Docker イメージ ImageSettings.reference このカスタム アプリケーションのビルドに使用されるイメージ
ターゲット ポート EndpointsSettings.target アプリケーションにアクセスするポート、コンテナー内のポート
公開されたポート EndpointsSettings.published アプリケーションがイメージ内で実行されているポート、パブリックに公開されているポート

SDK v2 を使用し、プロンプト フローのコンピューティング インスタンス ランタイムとしてカスタム アプリケーションを作成する

import os
from azure.ai.ml import MLClient
from azure.ai.ml.entities import ComputeInstance, CustomApplications, EndpointsSettings, ImageSettings, VolumeSettings, WorkspaceConnection
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential

try:
    credential = DefaultAzureCredential()
    # Check if given credential can get token successfully.
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    # Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
    credential = InteractiveBrowserCredential()

ml_client = MLClient.from_config(credential=credential)

image = ImageSettings(reference='mcr.microsoft.com/azureml/promptflow/promptflow-runtime-stable:<newest_version>') 
endpoints = [EndpointsSettings(published=8081, target=8080)]

app = CustomApplications(name='promptflow-runtime',endpoints=endpoints,bind_mounts=[],image=image,environment_variables={}) 

ci_basic_name = "<compute_instance_name>"
ci_basic = ComputeInstance(name=ci_basic_name, size="<instance_type>",custom_applications=[app]) 

ml_client.begin_create_or_update(ci_basic)

Note

newest_versioncompute_instance_nameinstance_type を実際の値に変更してください。

ARM テンプレートを使用し、コンピューティング インスタンス ランタイムとしてカスタム アプリケーションを作成する

この Azure Resource Manager テンプレートを使用して、カスタム アプリケーションを備えたコンピューティング インスタンスを作成できます。

Azure へのデプロイ

詳しくは、「コンピューティング インスタンスのプロンプト フロー ランタイムとしてのカスタム アプリケーション用 Azure Resource Manager テンプレート」をご覧ください。

コンピューティング インスタンス UI を使用し、プロンプト フローのコンピューティング インスタンス ランタイムとしてカスタム アプリケーションを作成する

このドキュメントに従って、カスタム アプリケーションを追加します

カスタム アプリケーションを示すコンピューティングのスクリーンショット。

次のステップ