# Azure Kubernetes ServiceでのDataRobotモデルのデプロイと監視

> Azure Kubernetes ServiceでのDataRobotモデルのデプロイと監視 - Azure Kubernetes ServiceでのDataRobotモデルのデプロイと監視

This Markdown file sits beside the HTML page at the same path (with a `.md` suffix). It summarizes the topic and lists links for tools and LLM context.

Companion generated at `2026-07-15T05:55:44.912958+00:00` (UTC).

## Primary page

- [Azure Kubernetes ServiceでのDataRobotモデルのデプロイと監視](https://docs.datarobot.com/ja/docs/classic-ui/integrations/azure/aks-deploy-and-monitor.html.md): Full documentation for this topic (Markdown sidecar).

## Sections on this page

- [モデルの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/azure/aks-deploy-and-monitor.html.md#create-a-model): In-page section heading.
- [モデルパッケージによるイメージの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/azure/aks-deploy-and-monitor.html.md#create-an-image-with-the-model-package): In-page section heading.
- [Azure Container Registryの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/azure/aks-deploy-and-monitor.html.md#create-an-azure-container-registry): In-page section heading.
- [モデルイメージをACRにプッシュする](https://docs.datarobot.com/ja/docs/classic-ui/integrations/azure/aks-deploy-and-monitor.html.md#push-the-model-image-to-acr): In-page section heading.
- [AKSクラスターの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/azure/aks-deploy-and-monitor.html.md#create-an-aks-cluster): In-page section heading.
- [モデルをAKSにデプロイする](https://docs.datarobot.com/ja/docs/classic-ui/integrations/azure/aks-deploy-and-monitor.html.md#deploy-a-model-to-aks): In-page section heading.
- [Postmanでの予測のスコアリング](https://docs.datarobot.com/ja/docs/classic-ui/integrations/azure/aks-deploy-and-monitor.html.md#score-predictions-with-postman): In-page section heading.
- [自動スケーリングと高可用性の設定](https://docs.datarobot.com/ja/docs/classic-ui/integrations/azure/aks-deploy-and-monitor.html.md#configure-autoscaling-and-high-availability): In-page section heading.
- [監視エージェントを介してDataRobot MLOpsに使用状況を報告する](https://docs.datarobot.com/ja/docs/classic-ui/integrations/azure/aks-deploy-and-monitor.html.md#report-usage-to-datarobot-mlops-via-monitoring-agents): In-page section heading.
- [予測の詳細の報告](https://docs.datarobot.com/ja/docs/classic-ui/integrations/azure/aks-deploy-and-monitor.html.md#report-prediction-details): In-page section heading.

## Documentation content

> [!NOTE] 本機能の提供について
> MLOpsモデルパッケージのエクスポート機能は、デフォルトでは無効になっています。 DataRobot MLOpsでこの機能を有効にする方法については、DataRobotの担当者または管理者にお問い合わせください。
> 
> 機能フラグ： MMMモデルパッケージのエクスポートを有効化

このページでは、DataRobotのMLOpsポータブル予測サーバー（PPS）を使用して、機械学習モデルをAzure Kubernetes Services（AKS）にデプロイし、本番環境にスコアリングパイプラインを作成する方法について説明します。

DataRobot Automated Machine Learningは、リアルタイムの予測に適した低レイテンシーの同期REST APIとして、専用の予測サーバーを提供します。 DataRobot MLOps PPSは、この機能を拡張してコンテナイメージで機械学習モデルを提供し、機械学習モデルのデプロイアーキテクチャに対する移植性と制御を実現します。

コンテナ化されたPPSは、Kubernetesクラスターでのデプロイに適しているため、このデプロイアーキテクチャの自動スケーリングと高可用性を活用できます。 PPSとKubernetesの組み合わせは、IoTのユースケースに見られるような、不安定で不規則なワークロードに最適です。

## モデルの作成

このページの例では、 [公開されているLendingClubのデータセット](https://datarobot-doc-assets.s3.us-east-1.amazonaws.com/10K_Lending_Club_Loans.csv) を使用して、各ローン申請の融資額を予測します。

1. トレーニングデータをDataRobotにアップロードするには、次のいずれかを行います。
2. ターゲット（予測対象）(1)としてloan_amtを入力し、開始(2)をクリックしてオートパイロットを実行します。
3. オートパイロットが終了したら、モデルをクリックし、リーダーボードの上部にあるモデルを選択します。
4. 選択したモデルの下で、予測 > デプロイをクリックし、モデルパッケージを取得にアクセスします。
5. .mlpkgをダウンロードをクリックし、.mlpkgファイルのダウンロードを開始します。

> [!NOTE] 備考
> 詳細については、 [ポータブル予測サーバー](https://docs.datarobot.com/ja/docs/classic-ui/predictions/port-pred/pps/portable-pps.html.md) に関するドキュメントを参照してください。

## モデルパッケージによるイメージの作成

[PPSベースイメージを取得](https://docs.datarobot.com/ja/docs/classic-ui/predictions/port-pred/pps/portable-pps.html.md#obtain-the-pps-docker-image) したら、以下の内容のDockerfileを作成して、新しいバージョンを作成します。

```
FROM datarobot/datarobot-portable-prediction-api:<TAG> AS build

COPY . /opt/ml/model 
```

> [!NOTE] 備考
> このDockerコマンドを構成する方法の詳細については、 [Dockerビルド](https://docs.docker.com/engine/reference/builder/) ドキュメントを参照してください。

`COPY` コマンドを機能させるには、 `.mlpkg` ファイルがDockerfileと同じディレクトリにある必要があります。 Dockerfileを作成したら、以下のコマンドを実行して、モデルを含む新しいイメージを作成します。

```
docker build . --tag regressionmodel:latest 
```

## Azure Container Registryの作成

イメージをAKSにデプロイする前に、デプロイ用にAzure Container Registry（ACR）などのコンテナレジストリにイメージをプッシュします。

1. Azure Portalで、リソースの作成 > コンテナーをクリックし、コンテナー レジストリをクリックします。
2. コンテナーレジストリの作成ブレードで、以下を入力します。 フィールド説明レジストリ名適当な名前を入力しますサブスクリプションサブスクリプションを選択しますリソース グループ既存のリソースグループを使用します位置地域を選択します管理者ユーザー有効にするSKUStandard
3. 作成をクリックします。
4. 新しく生成されたレジストリに移動し、アクセスキーを選択します。
5. 管理者パスワードをコピーしてDockerで認証し、.mlpkgイメージをこのレジストリに追加します。

## モデルイメージをACRにプッシュする

新しいイメージをAzure Container Registry（ACR）にプッシュするには、次のコマンドでログインします（ `<DOCKER_USERNAME>` を以前に選択したリポジトリ名で置き換えます）。

```
docker login <DOCKER_USERNAME>.azurecr.io 
```

パスワードは、Azure Container Registry（ACR）で作成した管理者パスワードです。

ログインしたら、Dockerイメージが正しくタグ付けされていることを確認してから、次のコマンドを使用してリポジトリにプッシュします（ `<DOCKER_USERNAME>` を以前に選択したリポジトリ名で置き換えます）。

```
docker tag regressionmodel <DOCKER_USERNAME>.azurecr.io/regressionmodel
docker push <DOCKER_USERNAME>.azurecr.io/regressionmodel 
```

## AKSクラスターの作成

このセクションは、AKSとAzureのコマンドラインインターフェイス（CLI）に精通していることを前提としています。

> [!NOTE] 備考
> AKSの詳細については、 [Microsoftのクイックスタートチュートリアル](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough) を参照してください。

1. 実行中のAKSクラスターがない場合は、作成します。 RESOURCE_GROUP=ai_success_engCLUSTER_NAME=AIEngineeringDemo

azakscreate\--resource-group$RESOURCE_GROUP\--name$CLUSTER_NAME\-sStandard_B2s\--node-count1\--generate-ssh-keys\--service-principalXXXXXX\--client-secretXXXX\--enable-cluster-autoscaler\--min-count1\--max-count2
2. AKSがプライベートリポジトリからイメージをプルできるように、Dockerレジストリシークレットを作成します。 以下のコマンドで、以下を実際の資格情報に置き換えます。 kubectlcreatesecretdocker-registry<SECRET_NAME>--docker-server=<YOUR_REPOSITORY_NAME>.azurecr.io--docker-username=<DOCKER_USERNAME>--docker-password=<YOUR_SECRET_ADMIN_PW>
3. ポータブル予測サーバーイメージをデプロイします。 アプリケーションをデプロイする方法は多数ありますが、最も簡単な方法はKubernetesダッシュボードを使用することです。 次のコマンドでKubernetesダッシュボードを開始します。 azaksbrowse--resource-group$RESOURCE_GROUP--name$CLUSTER_NAME

## モデルをAKSにデプロイする

モデルを含むPPSをインストールしてデプロイするには：

1. 作成 > アプリを作成 をクリックします。
2. アプリの作成ページで、以下を指定します。 フィールド値アプリ名たとえば、portablepredictionserverコンテナイメージたとえば、aisuccesseng.azurecr.io/regressionmodel:latestポッドの数たとえば、1サービスExternalポート、ターゲットポート、プロトコル8080,8080, andTCPイメージプルシークレット以前作成したCPU要件（コア）1メモリー要件（MiB）250
3. デプロイをクリックします。デプロイには数分かかる場合があります。

## Postmanでの予測のスコアリング

モデルをテストするには、 [DataRobot PPSの例](https://github.com/datarobot-community/ai_engineering/blob/master/mlops/DRMLOps_PortablePredictionServer_examples/DR%20MLOps%20Portable%20Prediction%20Server%20Public.postman_collection.json) [Postmanコレクション](https://www.postman.com/collection/) をダウンロードし、ホスト名を `localhost` からサービスに割り当てられた外部IPアドレスに更新します。 IPアドレスは、Kubernetesダッシュボードの サービス タブで確認できます。

予測を行うには、予測作成リクエストを実行します。

## 自動スケーリングと高可用性の設定

Kubernetesは水平Pod自動スケーリングをサポートしており、CPU使用率やその他の選択された指標に応じて、デプロイ内のポッド数を調整します。 指標サーバーはKubernetesにリソース使用率を提供し、AKSクラスターに自動的にデプロイされます。

前のセクションでは、サービス用に1つのポッドをデプロイし、CPUとメモリーリソースの最小要件のみを定義しました。

オートスケーラーを使用するには、CPUリクエストと使用制限を定義する必要があります。

デフォルトでは、ポータブル予測サーバーは1つのワーカーをスピンアップします。つまり、同時に処理できるHTTPリクエストは1つだけです。 実行できるワーカー数、つまり同時に処理できるHTTPリクエストの数は、コンテナで使用できるCPUコア数に関連しています。

CPU最小要件を `1` に設定したため、 `patchSpec.yaml` ファイルで制限を `2` に設定できるようになりました。

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: portablepredictionserver
spec:
  selector:
    matchLabels:
      app: portablepredictionserver
  replicas: 1
  template:
    metadata:
      labels:
        app: portablepredictionserver
    spec:
      containers:
      - name: portablepredictionserver
        image: aisuccesseng.azurecr.io/regressionmodel:latest
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: 1000m
          limits:
            cpu: 2000m
      imagePullSecrets:
      - name: aisuccesseng 
```

次に、以下のコマンドを実行します。

```
kubectl patch deployment portablepredictionserver --patch "$(cat patchSpec.yaml)" 
```

または、以下に示すようにJSONを編集し、 更新 をクリックして、Kubernetesダッシュボードでデプロイを直接更新することもできます。

CPU制限が定義されたので、次のコマンドで自動スケーリングを設定できます。

```
kubectl autoscale deployment portablepredictionserver --cpu-percent=50 --min=1 --max=10 
```

これにより、Kubernetesは `portablepredictionserver` デプロイ内のポッド数を自動スケーリングできます。 すべてのポッドの平均CPU使用率が要求された使用量の50%を超える場合、オートスケーラーはポッドを最小の1インスタンスから最大の10インスタンスに増やします。

ロードテストを実行するには、以下のサンプルJMeterテストプランをダウンロードし、URL/認証を更新します。 次のコマンドで実行します。

```
jmeter -n -t LoadTesting.jmx -l results.csv 
```

出力は次の例のようになります。

## 監視エージェントを介してDataRobot MLOpsに使用状況を報告する

モデルをAKSにデプロイした後、これらの予測のテレメトリクスをDataRobot MLOpsサーバーとダッシュボードに報告することで、このモデルと他のすべてのモデルを一元化されたダッシュボードで監視できます。

1. モデルレジストリ > モデルパッケージ > 新しいパッケージを追加に移動し、ドキュメントの指示に従います。
2. 新しい外部モデルパッケージを追加を選択し、パッケージ名と説明(1と2)を指定し、ドリフト追跡用の対応するトレーニングデータ(3)をアップロードし、モデルの場所(4)、ターゲット(5)、環境(6)、予測タイプ(7)を特定します。パッケージを作成(8)をクリックします。
3. 外部モデルパッケージを作成したら、以下に示すようにURLのモデルIDをメモします（セキュリティ上の理由から、画像にぼかしを入れています）。
4. モデルレジストリページと展開された新しいパッケージ内で、デプロイタブを選択して、デプロイを新規作成をクリックします。 作成したモデルパッケージからの情報が、事前に入力されたデプロイページに読み込まれます。
5. デプロイに関する不足している情報をすべて入力し、デプロイを作成をクリックします。
6. デプロイ > 概要に移動し、（URLから）デプロイIDをコピーします。

モデルIDとデプロイIDを取得したので、次のセクションで説明するように予測を報告できます。

### 予測の詳細の報告

予測の詳細をDataRobotに報告するには、ポータブル予測サーバーコンテナにいくつかの環境変数を指定する必要があります。

JSONを編集して 更新 をクリックし、Kubernetesダッシュボードで直接デプロイを更新します。

```
"env": [
             {
                "name": "PORTABLE_PREDICTION_API_WORKERS_NUMBER",
                "value": "2"
              },
              {
                "name": "PORTABLE_PREDICTION_API_MONITORING_ACTIVE",
                "value": "True"
              },
              {
                "name": "PORTABLE_PREDICTION_API_MONITORING_SETTINGS",
                "value": "output_type=output_dir;path=/tmp;max_files=50;file_max_size=10240000;model_id=<modelId>;deployment_id=<deployment_id>"
              },
              {
                "name": "MONITORING_AGENT",
                "value": "False"
              },
              {
                "name": "MONITORING_AGENT_DATAROBOT_APP_URL",
                "value": "https://app.datarobot.com/"
              },
              {
                "name": "MONITORING_AGENT_DATAROBOT_APP_TOKEN",
                "value": "<YOUR TOKEN>"
              }
] 
```

モデルをKubernetesクラスター（AKS）上のDataRobot外部にデプロイした場合でも、他のモデルと同様に監視し、一元化されたダッシュボードでサービスの正常性とデータのドリフトを追跡できます（以下を参照）。
