# GCPでのモデルのデプロイと監視

> GCPでのモデルのデプロイと監視 - Google Cloud Platform（GCP）において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.914214+00:00` (UTC).

## Primary page

- [GCPでのモデルのデプロイと監視](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md): Full documentation for this topic (Markdown sidecar).

## Sections on this page

- [概要](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#overview): In-page section heading.
- [前提条件](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#prerequisites): In-page section heading.
- [手順](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#procedure): In-page section heading.
- [モデルパッケージのダウンロード](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#download-a-model-package): In-page section heading.
- [Dockerコンテナイメージの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#create-a-docker-container-image): In-page section heading.
- [Dockerをローカルで実行する](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#run-docker-locally): In-page section heading.
- [DockerイメージをContainer Registryにプッシュする](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#push-docker-image-to-the-container-registry): In-page section heading.
- [GKEクラスターの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#create-the-GKE-cluster): In-page section heading.
- [DockerイメージをGKEにデプロイする](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#dockergke): In-page section heading.
- [モデルの公開](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#_1): In-page section heading.
- [外部デプロイの作成](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#create-an-external-deployment): In-page section heading.
- [K8s上のPPSをMLOpsにリンクする](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#link-pps-on-k8s-to-mlops): In-page section heading.
- [新しいDockerイメージをデプロイする（オプション）](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#deploy-new-docker-image-optional): In-page section heading.
- [削除](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#clean-up): In-page section heading.
- [K8s設定ファイル](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#K8s-configuration-files): In-page section heading.
- [デプロイ設定ファイル](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#deployment-configuration): In-page section heading.
- [サービス設定ファイル](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#service-configuration): In-page section heading.

## Documentation content

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

以下では、Google Kubernetes Engine（GKE）を使用して、Google Cloud Platform（GCP）にDataRobotモデルをデプロイするプロセスについて説明します。

## 概要

[DataRobot MLOps](https://docs.datarobot.com/ja/docs/api/dev-learning/python/mlops/index.html.md) は、本番環境にある全モデルを対象としたデプロイ、監視、管理、ガバナンスのための一元化されたハブを提供します。 MLOpsでは、DataRobotクラスター内のスケーラブルな専用予測サーバーでDataRobotモデルが処理されるだけではありません。 DataRobotのモデル監視機能の利点を維持しながら、DataRobotモデルをKubernetes（K8s）クラスターにデプロイすることもできます。

このエクスポート可能なDataRobotモデルは、 [ポータブル予測サーバー](https://docs.datarobot.com/ja/docs/classic-ui/predictions/port-pred/pps/portable-pps.html.md) （PPS）と呼ばれ、Dockerコンテナに似た柔軟性と移植性を実現します。 PPSはDockerコンテナをベースとし、監視エージェントが組み込まれたDataRobotモデルが含まれています。 このアプローチを使用すると、DataRobotモデルをスケーラブルなデプロイ環境を介して使用できるようになり、関連データを一元化されたDataRobot MLOpsダッシュボードで追跡し、監視とガバナンスの利点をすべて活用できます。

DataRobotモデルのDockerイメージの移植性とK8sプラットフォームのスケーラビリティを統合することで、本番環境ですぐに使用できる強力なMLソリューションを実現できます。

### 前提条件

メイン設定を作成する前に、次の手順を完了する必要があります。

1. ご使用のオペレーティングシステムに適したGoogle Cloud SDKをインストールします（Googleのドキュメントを参照）。
2. コマンドプロンプトで次のコマンドを実行します。 gcloud init 既存のプロジェクトを選択するか、新しいプロジェクトを作成し、コンピューティングゾーンも選択するよう求められます。 例：
3. Kubernetesコマンドラインツールをインストールします。 gcloud components install kubectl 出力は以下のようになります。

## 手順

以下のセクションでは、プロセスの各手順で、PPSを介してGCPプラットフォームに、DataRobotモデルをデプロイおよび監視する手順について説明します。 [Kaggleの住宅価格](https://www.kaggle.com/c/home-data-for-ml-course/data) データセットを例に使用します。

### モデルパッケージのダウンロード

住宅価格データセットを使用してモデルを構築します。 オートパイロットが終了したら、MLOpsモデルパッケージを作成してダウンロードできます。 これを行うには、 モデル タブでモデルを選択して 予測 > デプロイ をクリックします。 [MLOpsパッケージ]セクションで、 生成してダウンロード を選択します。

DataRobotは、モデルに関する必要なすべての情報を含むモデルパッケージ（.mlpkgファイル）を生成します。

### Dockerコンテナイメージの作成

MLOpsパッケージを使用してDockerコンテナイメージを作成するには：

1. モデルパッケージのダウンロード（前の手順で開始）が完了したら、PPSベースイメージをダウンロードします。
2. PPSベースイメージを取得したら、次のDockerfileを使用して、DataRobotモデルパッケージを含むイメージを生成します。 備考.mlpkgファイルをDockerイメージにコピーするには、Dockerfileと.mlpkgファイルが同じフォルダーにあることを確認してください。 FROMdatarobot/datarobot-portable-prediction-api:<TAG>

COPY<MLPKG_FILE_NAME>.mlpkg/opt/ml/model
3. PROJECT_ID環境変数をGoogle CloudプロジェクトID（Google Cloud SDKのインストール時に定義したプロジェクトID）に設定します。PROJECT_IDは、コンテナイメージをプロジェクトのContainer Registryに関連付けます。 export PROJECT_ID= ai-XXXXXX-XXXXXX
4. Dockerイメージをビルドしてタグ付けします。 例： docker build -t gcr.io/${PROJECT_ID}/house-regression-model:v1
5. docker imagesコマンドを実行して、ビルドが成功したことを確認します。 生成されたイメージには、DataRobotモデルと監視エージェント（サービスとモデルの正常性指標をDataRobot MLOpsプラットフォームの転送に使用）が含まれています。

### Dockerをローカルで実行する

厳密に言えばオプションの手順ですが、ベストプラクティスでは、時間とネットワーク帯域幅を節約するために、常にローカルでイメージをテストすることをお勧めします。

ローカルで実行するには：

1. Dockerコンテナイメージを実行します。 docker run --rm --name house-regression -p 8080:8080 -it gcr.io/${PROJECT_ID}/house-regression-model:v1
2. モデルが期待どおりに機能するかどうかをテストするために、ローカルでデータをスコアリングします。 curl -X POST http://localhost:8080/predictions -H "Content-Type: text/csv" --data-binary @/Users/X.X/community/docker/kaggle_house_test_dataset.csv 備考ワークステーションのローカルパスと一致するように、kaggle_house_test_dataset.csvデータセットへのパスを更新します。

### DockerイメージをContainer Registryにプッシュする

コンテナイメージをローカルでテストして検証したら、それをレジストリにアップロードして、Google Kubernetes Engine（GKE）クラスターをダウンロードして実行できるようにします。

1. Container Registryに対して認証するようにDockerコマンドラインツールを設定します。 gcloud auth configure-docker
2. ビルドしたDockerイメージをContainer Registryにプッシュします。 docker push gcr.io/${PROJECT_ID}/house-regression-model:v1

> [!NOTE] 備考
> Container Registryにプッシュすると、 `storage.buckets.create` 権限の問題が発生する可能性があります。 このエラーが発生した場合は、GCPアカウントの管理者にお問い合わせください。

### GKEクラスターの作成

DockerイメージをContainer Registryに保存したら、次のようにGKEクラスターを作成します。

1. gcloudツールのプロジェクトIDとCompute Engineゾーンオプションを設定します。 gcloud config set project $PROJECT_ID gcloud config set compute/zone europe-west1-b
2. クラスターを作成します。 gcloud container clusters create house-regression-cluster このコマンドは次のように終了します。
3. コマンドが完了したら、次のコマンドを実行してクラスターワーカーインスタンスを表示します。 gcloud compute instances list 出力は以下のようになります。

> [!NOTE] 備考
> Container Registryにプッシュすると、 `gcloud.container.clusters.create` 権限の問題が発生する可能性があります。 このエラーが発生した場合は、GCPアカウントの管理者にお問い合わせください。

### DockerイメージをGKEにデプロイする

イメージをGKEにデプロイするには：

1. DockerイメージのKubernetesデプロイを作成します。 kubectl create deployment house-regression-app --image=gcr.io/${PROJECT_ID}/house-regression-model:v1
2. デプロイレプリカのベースライン数を3に設定します（つまり、デプロイには常に3つの実行中ポッドがあります）。 kubectl scale deployment house-regression-app --replicas=3
3. K8sは、リソースを柔軟かつ自動的に管理する機能を提供します。 たとえば、デプロイ用にHorizontalPodAutoscalerリソースを作成できます。 kubectl autoscale deployment house-regression-app --cpu-percent=80 --min=1 --max=5
4. 次のコマンドを実行して、作成済みポッドがすべて動作し、実行中の状態であることを確認します（たとえば、前の自動スケーリングの手順で要求されたように、最大5つの実行中ポッドが表示される場合があります）。 kubectl get pods 出力は以下のようになります。

#### モデルの公開

GKEのデフォルトのサービスタイプは ClusterIP と呼ばれ、サービスはクラスター内からのみ到達可能なIPアドレスを取得します。 クラスターの外部にKubernetesサービスを公開するには、 `LoadBalancer` タイプのサービスを作成する必要があります。 このタイプのサービスは、インターネット経由で到達可能な一連のポッドの外部ロードバランサーIPを生成します。

1. kubectl exposeコマンドを使用して、house-regression-appデプロイ用のKubernetesサービスを生成します。 kubectl expose deployment house-regression-app --name=house-regression-app-service --type=LoadBalancer --port 80 --target-port 8080

各パラメーターについて説明します。

- --port はロードバランサーで設定されたポート番号です
- --target-portはhouse-regression-appコンテナがリッスンしているポート番号です。
- 次のコマンドを実行して、サービスの詳細を表示します。 kubectl get service 出力は以下のようになります。
- サービスの詳細からEXTERNAL-IPアドレスをコピーします。
- EXTERNAL-IPアドレスを使用してモデルをスコアリングします。 curl -X POST http://XX.XX.XX.XX/predictions -H "Content-Type: text/csv" --data- binary @/Users/X.X/community/docker/kaggle_house_test_dataset.csv 備考上記のIPアドレスプレースホルダーをコピーしたEXTERNAL-IPアドレスで更新し、kaggle_house_test_dataset.csvデータセットへのパスをワークステーションのローカルパスと一致するように更新します。

> [!NOTE] 備考
> この時点で、クラスターはすべての受信リクエストを受け付ける状態になっています。 よりきめ細かいロールベースのアクセス制御（RBAC）を適用するには、 [Googleのドキュメント](https://cloud.google.com/kubernetes-engine/docs/concepts/access-control) を参照してください。

## 外部デプロイの作成

MLOpsで外部デプロイを作成するには：

1. モデルレジストリ > モデルパッケージ > 新しいパッケージを追加に移動し、ドキュメントの指示に従います。 新しい外部モデルパッケージを追加をクリックします。
2. URLにあるMLOpsモデルIDをメモします。PPSとMLopsのリンク作成時にこれを使用します。 モデルレジストリページと展開された新しいパッケージ内で、デプロイタブを選択して、デプロイを新規作成をクリックします。 作成したモデルパッケージからの情報が、事前に入力されたデプロイページに読み込まれます。
3. MLOpsデプロイIDをメモします（先にモデルIDをコピーしました）。PPSとMLOpsのリンク作成時にこれを使用します。

### K8s上のPPSをMLOpsにリンクする

最後に、K8sデプロイ設定をPPSおよび監視エージェント設定で更新します。 次の環境変数をK8sデプロイ設定に追加します（ [ここ](https://docs.datarobot.com/ja/docs/classic-ui/integrations/google/google-cloud-platform.html.md#K8s-configuration-files) から完全な設定ファイルを参照）。

```
PORTABLE_PREDICTION_API_WORKERS_NUMBER=2

PORTABLE_PREDICTION_API_MONITORING_ACTIVE=True

PORTABLE_PREDICTION_API_MONITORING_SETTINGS=output_type=output_dir;path=/tmp;max_files=50;file_max_size=10240
000;model_id=<mlops_model_id>;deployment_id=<mlops_deployment_id>

MONITORING_AGENT=True

MONITORING_AGENT_DATAROBOT_APP_URL= <https://app.datarobot.com/>

MONITORING_AGENT_DATAROBOT_APP_TOKEN=<your token> 
```

> [!NOTE] 備考
> [開発者ツール](https://docs.datarobot.com/ja/docs/platform/acct-settings/api-key-mgmt.html.md#api-key-management) から `MONITORING_AGENT_DATAROBOT_APP_TOKEN` を取得できます。

### 新しいDockerイメージをデプロイする（オプション）

デプロイされたDockerイメージをアップグレードするには、次のようにします。

1. Dockerイメージの新しいバージョンを作成します。 docker build -t gcr.io/${PROJECT_ID}/house-regression-model:v2
2. 新しいイメージをContainer Registryにプッシュします。 docker push gcr.io/${PROJECT_ID}/house-regression-model:v2`
3. イメージの更新を使用して、既存のデプロイにローリングアップデートを適用します。 kubectl set image deployment/house-regression-app house-regression-model=gcr.io/${PROJECT_ID}/house-regression-model:v2
4. v1イメージを実行しているポッドが終了し、v2イメージを実行している新しいポッドがスピンアップするのを確認します。 kubectl get pods

### 削除

デプロイ用にポータブル予測サーバー（PPS）を介してGCPプラットフォームを使用して設定プロセスを完了するには、次の手順を実行します。

1. サービスを削除します。 kubectl delete service house-regression-app-service
2. クラスターを削除します。 gcloud container clusters delete house-regression-cluster

## K8s設定ファイル

次のセクションでは、リファレンス用のデプロイおよびサービス設定ファイルを指定します。

### デプロイ設定ファイル

```
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "2"
  creationTimestamp: "2020-07-08T12:47:27Z"
  generation: 8
  labels:
    app: house-regression-app
  name: house-regression-app
  namespace: default
  resourceVersion: "14171"
  selfLink: /apis/apps/v1/namespaces/default/deployments/house-regression-app
  uid: 2de869fc-c119-11ea-8156-42010a840053
spec:
  progressDeadlineSeconds: 600
  replicas: 5
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: house-regression-app
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: house-regression-app
    spec:
      containers:
      - 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=<your_mlops_model_id>;deployment_id=<your_mlops_deployment_id>
        - name: MONITORING_AGENT
          value: "True"
        - name: MONITORING_AGENT_DATAROBOT_APP_URL
          value: https://app.datarobot.com/
        - name: MONITORING_AGENT_DATAROBOT_APP_TOKEN
          value: <your_datarobot_api_token>
        image: gcr.io/${PROJECT_ID}/house-regression-model:v1
        imagePullPolicy: IfNotPresent
        name: house-regression-model
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
status:
  availableReplicas: 5
  conditions:
  - lastTransitionTime: "2020-07-08T12:47:27Z"
    lastUpdateTime: "2020-07-08T13:40:47Z"
    message: ReplicaSet "house-regression-app-855b44f748" has successfully progressed.
    reason: NewReplicaSetAvailable
    status: "True"
    type: Progressing
  - lastTransitionTime: "2020-07-08T13:41:39Z"
    lastUpdateTime: "2020-07-08T13:41:39Z"
    message: Deployment has minimum availability.
    reason: MinimumReplicasAvailable
    status: "True"
    type: Available
  observedGeneration: 8
  readyReplicas: 5
  replicas: 5
  updatedReplicas: 5 
```

#### サービス設定ファイル

```
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2020-07-08T12:58:13Z"
  labels:
    app: house-regression-app
  name: house-regression-app-service
  namespace: default
  resourceVersion: "5055"
  selfLink: /api/v1/namespaces/default/services/house-regression-app-service
  uid: aeb836cd-c11a-11ea-8156-42010a840053
spec:
  clusterIP: 10.31.242.132
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 30654
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: house-regression-app
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: XX.XX.XXX.XXX 
```
