OCIネイティブ・サービスとMLflowを使用したOCIでのスケーラブルなMLOpsパイプラインの構築

このリファレンス・アーキテクチャでは、スケーラブルで自動化されたMLOpsパイプラインをOracle Cloud Infrastructure (OCI)に実装する方法について説明します。

このアーキテクチャは、組織が一貫性、ガバナンス、スピード、再現性、自動デプロイメント、モデル・ライフサイクル管理、可観測性で機械学習モデルを運用できるよう支援します。

このソリューションは、OCI DevOpsOracle Cloud Infrastructure Data Science、およびOracle Cloud Infrastructure Kubernetes Engine (OKE)を統合して、機械学習のライフサイクルをエンドツーエンドで自動化します。トレーニング・ワークロードは、DevOpsパイプラインによってトリガーされるOracle Cloud Infrastructure Data Scienceジョブとしてコンテナ化され、実行されますが、OKEにデプロイされたMLflowは、OCI Object Storageに格納されたアーティファクトを使用して、実験追跡およびモデル・レジストリ機能を提供します。トレーニング後、OCI DevOpsはMLflowモデル・レジストリからOKEに最新の承認済モデルを自動的にデプロイし、OCIロード・バランサを介してMLflowサービスと推論サービスの両方にアクセスできます。

始める前に

このソリューションをデプロイする前に、次の前提条件が満たされていることを確認します。

  • 十分なサービス制限があるアクティブなOracle Cloud Infrastructureテナンシ。
  • 開発、テスト、本番など、環境分離用に構成されたコンパートメント。
  • 次のためのOCI Identity and Access Managementポリシー:
    • OCI DevOps
    • Oracle Cloud Infrastructure Data Science
    • OKE
    • OCIオブジェクト・ストレージ
    • OCI Vault
    • OCI通知
    • OCIロード・バランサ
  • 次を含む構成済仮想クラウド・ネットワーク(VCN)
    • OKEおよびOracle Cloud Infrastructure Data Scienceのプライベート・サブネット。
    • 外部アクセスが必要な場合は、OCIロード・バランサのパブリック・サブネット。
    • OCI Service Gateway
    • NATゲートウェイ。
  • 次の目的でプロビジョニングされたOKEクラスタ:
    • MLOpsサービスとしてのMLflow。
    • 推論ワークロード。
  • OKEにデプロイされたMLflowで、次のもので構成されます:
    • アーティファクト・ストアとしてのOCIオブジェクト・ストレージ
    • モデル・レジストリが有効化されました。
  • 次を含むOCI DevOpsプロジェクト:
    • ソース・ リポジトリ。
    • ビルド・パイプラインとデプロイメント・パイプライン。
  • 構成されたOCI通知のトピックおよびサブスクリプション。
  • Docker、Kubernetes、および機械学習ワークフローに精通しています。

アーキテクチャ

このアーキテクチャは、Oracle Cloud Infrastructure DevOpsがトレーニング・コンテナを構築し、モデル・トレーニングのためにOracle Cloud Infrastructure Data Scienceジョブをトリガーする自動MLOpsパイプラインを実装します。

トレーニング・ジョブは、OCI Container Registry (OCIR)からコンテナ・イメージをプルし、Oracle Cloud Infrastructure Service Gatewayを介してOracle Cloud Infrastructure Object Storageからデータセットにアクセスします。実行中、トレーニング・メトリックおよびアーティファクトは、OCI Kubernetes Engineで実行されているMLflowに記録され、アーティファクトはOCI Object Storageに保持されて耐久性とスケーラビリティが確保されます。

トレーニングが完了すると、モデルはMLflowモデル・レジストリに登録され、定義されたステージを介してプロモートされます。OCI DevOpsは、最新の承認済モデル・バージョンを取得し、推論サービスとしてOCI Kubernetes Engineにデプロイするデプロイメント・パイプラインを自動的にトリガーします。MLflowサービス(MLOpsコントロール・プレーン)と推論エンドポイントの両方がOracle Cloud Infrastructure Load Balancerを通じて公開され、統合されたスケーラブルなアクセス・レイヤーが提供されます。パイプライン全体を通して、Oracle Cloud Infrastructure Notificationsは、ビルド、トレーニングおよびデプロイメントのステージのリアルタイム更新を提供します。このソリューションは、プライベート・ネットワーキング、シークレット管理用のOracle Cloud Infrastructure Vault、可観測性のためのOracle Cloud Infrastructure LoggingおよびOracle Cloud Infrastructure Monitoringを使用して、セキュアなVCN内で実行されます。

次の図は、このリファレンス・アーキテクチャを示しています。



auto-mlops-pipeline-ocidevops-arch-oracle.zip#GUID-3A0A729D-6AD6-4CC7-9EFA-51F02B8941EA

このアーキテクチャには次のコンポーネントがあります。

  • インフラストラクチャ
    • 可用性ドメイン

      可用性ドメインは、リージョン内の独立したスタンドアロン・データ・センターです。各可用性ドメイン内の物理リソースは、他の可用性ドメイン内のリソースから分離されているため、フォルト・トレランスが提供されます。可用性ドメインどうしは、電力や冷却、内部可用性ドメイン・ネットワークなどのインフラを共有しません。そのため、あるアベイラビリティ・ドメインでの障害が、リージョン内の他のアベイラビリティ・ドメインに影響を及ぼすことはありません。

    • コンパートメント

      コンパートメントは、OCIテナンシ内のリージョン間の論理パーティションです。コンパートメントを使用して、Oracle Cloudリソースの使用量割当てを編成、制御および設定します。特定のコンパートメントで、アクセスを制御し、リソースの権限を設定するポリシーを定義します。

    • インターネット・ゲートウェイ

      インターネット・ゲートウェイでは、VCN内のパブリック・サブネットとパブリック・インターネットの間のトラフィックが許可されます。

    • OCIのリージョン

      OCIリージョンとは、可用性ドメインをホストする1つ以上のデータ・センターを含む、ローカライズされた地理的領域のことです。リージョンは他のリージョンから独立しており、長距離の場合は複数の国または大陸にまたがる領域を分離できます。

    • セキュリティ・リスト

      サブネットごとに、サブネット内およびサブネット外で許可されるトラフィックのソース、宛先およびタイプを指定するセキュリティ・ルールを作成できます。

    • サービス・ゲートウェイ

      サービス・ゲートウェイは、VCNからOracle Cloud Infrastructure Object Storageなどの他のサービスへのアクセスを提供します。VCNからOracle serviceへのトラフィックは、Oracleネットワーク・ファブリックを経由し、インターネットを経由しません。

    • Tenancy

      テナンシは、OCIへのサインアップ時にOracleがOracle Cloud内で設定する、セキュアで分離されたパーティションです。テナンシ内のOCI上のリソースを作成、編成および管理できます。テナンシは、会社または組織と同義です。通常、会社は単一のテナンシを持ち、そのテナンシー内に組織構造を反映させます。通常、単一のテナンシは単一のサブスクリプションに関連付けられ、単一のサブスクリプションには1つのテナンシのみが含まれます。

    • OCI仮想クラウド・ネットワークおよびサブネット

      仮想クラウド・ネットワーク(VCN)は、ソフトウェアで定義されたカスタマイズ可能なネットワークであり、OCIリージョン内に設定します。従来のデータ・センター・ネットワークと同様に、VCNsではネットワーク環境を制御できます。VCNには、VCNの作成後に変更できる重複しないクラスレス・ドメイン間ルーティング(CIDR)ブロックを複数指定できます。VCNをサブネットにセグメント化して、そのスコープをリージョンまたは可用性ドメインに設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックにもプライベートにもできます。

  • Oracle Service Network (OSN)
    • OCIロギング
      Oracle Cloud Infrastructure Loggingは、クラウド内のリソースから次のタイプのログへのアクセスを提供する、高度にスケーラブルで完全管理タイプのサービス です:
      • 監査ログ: OCI監査によって生成されたイベントに関連するログ。
      • サービス・ログ: OCI APIゲートウェイOCIイベントOCIファンクションOCIロード・バランサOCIオブジェクト・ストレージ、VCNフロー・ログなどの個々のサービスによって公開されるログ。
      • カスタム・ログ: カスタム・アプリケーション、他のクラウド・プロバイダまたはオンプレミス環境からの診断情報を含む、ログ。
    • OCIモニタリング

      Oracle Cloud Infrastructure Monitoringは、クラウド・リソースをアクティブおよびパッシブに監視し、メトリックが指定のトリガーを満たしたときにアラームを使用して通知します。

    • OCI通知

      OCI Notificationsは、低レイテンシのパブリッシュ/サブスクライブ・パターンを使用して、分散コンポーネントにメッセージをブロードキャストし、OCIでホストされているアプリケーションに、安全で信頼性が高く耐久性のあるメッセージを配信します。

    • Oracle Services Network

      Oracle Services Network (OSN)は、Oracleサービス用に予約されているOCI上の概念的なネットワークです。これらのサービスには、インターネットを介してアクセス可能なパブリックIPアドレスが含まれます。Oracle Cloud外部のホストは、Oracle Cloud Infrastructure FastConnectまたはVPN接続を使用してOSNにプライベートにアクセスできます。VCNs内のホストは、サービス・ゲートウェイを介してOSNにプライベートにアクセスできます。

    • OCI Vault

      Oracle Cloud Infrastructure Vaultでは、データを保護する暗号化キーと、クラウド内のリソースへのアクセスを保護するために使用するシークレット資格証明を作成して一元管理できます。デフォルトのキー管理はOracle管理キーです。OCI Vaultを使用する顧客管理キーを使用することもできます。OCI Vaultには、ボールトおよびキーを管理するための豊富なREST APIセットが用意されています。

    • OCI Web Application Firewall

      Oracle Cloud Infrastructure Web Application Firewall (WAF)は、ロード・バランサやWebアプリケーション・ドメイン名などの強制ポイントにアタッチされている支払カード業界(PCI)準拠のリージョナル・ベースおよびエッジの強制サービスです。WAFは、悪意のある不要なインターネット・トラフィックからアプリケーションを保護します。WAFは、インターネットに接続されているエンドポイントを保護することにより、アプリケーション全体に対する一貫性のあるルール適用を達成できます。

  • サービスおよび製品
    • OCIデータ・サイエンス

      Oracle Cloud Infrastructure Data Scienceは、完全に管理されたサーバーレス・プラットフォームです。データ・サイエンス・チームは、OCIで機械学習(ML)モデルを構築、トレーニングおよび管理するために使用できます。Oracle Autonomous AI LakehouseOracle Cloud Infrastructure Object Storageなどの他のOCIサービスと簡単に統合できます。企業が信頼するデータを迅速に機能させることでビジネスの柔軟性を高める高品質の機械学習モデルを構築および評価でき、MLモデルの導入を容易にすることでデータ駆動型のビジネス目標をサポートできます。

      データ・サイエンス・ジョブ機能により、データ・サイエンティストはフルマネージドのインフラストラクチャで繰返し可能な機械学習タスクを定義して実行できます。

      データ・サイエンス・モデル・デプロイメント機能を使用すると、データ・サイエンティストは、トレーニング済モデルをフルマネージドのHTTPエンドポイントとしてデプロイできます。これにより、リアルタイムで予測を提供し、プロセスやアプリケーションにインテリジェンスを注入し、ビジネスが関連するイベントに発生に応じて対応できるようになります。

    • OCI DevOps

      Oracle Cloud Infrastructure DevOps (開発者操作)は、開発者がソフトウェア開発ライフサイクルを簡略化および自動化するための完全な継続的インテグレーション/継続的デリバリ(CI/CD)プラットフォームです。OCI DevOpsを使用すると、開発者とオペレータは、ソフトウェアを共同で開発、構築、テストおよびデプロイできます。開発者とオペレータは、ビルド、テストおよびデプロイの各フェーズを通じてソースのコミット履歴を使用して、開発ライフサイクル全体にわたる可視性を得ることができます。

    • OCI Identity and Access Management

      Oracle Cloud Infrastructure Identity and Access Management (IAM)は、OCIおよびOracle Cloud Applicationsのユーザー・アクセス制御を提供します。IAM APIおよびユーザー・インタフェースを使用すると、アイデンティティ・ドメインおよびその中のリソースを管理できます。各OCI IAMアイデンティティ・ドメインは、スタンドアロンのアイデンティティおよびアクセス管理ソリューション、または異なるユーザー集団を表します。

    • Kubernetesクラスタ

      Kubernetesクラスタは、コンテナ化されたアプリケーションを実行するマシンのセットです。Kubernetesは、これらのノードでコンテナ化されたワークロードとサービスを管理するためのポータブルで拡張可能なオープン・ソース・プラットフォームを提供します。Kubernetesクラスタは、ワーカー・ノードとコントロール・プレーン・ノードで構成されます。

    • ロード・バランサー

      Oracle Cloud Infrastructure Load Balancerは、単一のエントリ・ポイントから複数のサーバーへの自動トラフィック分散を提供します。

    • OCIオブジェクト・ストレージ

      OCIオブジェクト・ストレージでは、データベースのバックアップ、分析データ、画像やビデオなどのリッチ・コンテンツなど、あらゆるコンテンツ・タイプの構造化データおよび非構造化データを大量にアクセスできます。アプリケーションから直接、またはクラウド・プラットフォーム内から、データを安全かつ安全に保管できます。パフォーマンスやサービスの信頼性を低下させることなく、ストレージを拡張することができます。

      迅速、即時、頻繁にアクセスする必要のあるホット・ストレージに標準ストレージを使用します。アーカイブ・ストレージは、長期間保存し、ほとんどまたはめったにアクセスしないコールド・ストレージに使用します。

  • MLflow (Kubernetes Engine上)

    MLflowは、実験追跡やモデル・レジストリなど、MLライフサイクルを管理するためのオープン・ソース・プラットフォームです。スケーラビリティのためにKubernetesにデプロイできます。このアーキテクチャでは、MLflowはKubernetes Engine上で実行され、OCI Object Storageにアーティファクトを格納し、モデル・レジストリを本番モデルの信頼できるソースとして維持します。これにより、モデルのバージョニング、ガバナンスおよび制御されたプロモーションが可能になります。

  • OCIコンテナ・レジストリ(OCIR)

    OCI Container Registryは、コンテナ・イメージを格納および管理するための管理対象のプライベートDockerレジストリです。安全なアクセス制御のために、OCI Identity and Access Managementと統合されています。このアーキテクチャでは、バージョニングされたトレーニングとコンテナ・イメージの提供が格納されます。これらのイメージは、データ・サイエンス・ジョブおよびKubernetes Engineデプロイメントによって使用されます。

レコメンデーション

これらの推奨事項は、MLOpsパイプラインのセキュリティ、スケーラビリティおよびメンテナンス性の向上に役立ちます。
  • VCN
    • VCNを作成するときには、必要なCIDRブロックの数を決定し、VCN内のサブネットにアタッチする予定のリソースの数に基づいて各ブロックのサイズを決定します。
    • 標準プライベートIPアドレス領域内にあるCIDRブロックを使用し、Oracle Cloud Infrastructure内の他のネットワークと重複しないCIDRブロック、オンプレミス・データ・センター、またはプライベート接続を設定する別のクラウド・プロバイダを選択します。
    • VCNの作成後、そのCIDRブロックを変更、追加および削除できます。
    • サブネットを設計するときには、トラフィック・フローおよびセキュリティ要件を考慮してください。特定の層またはロール内のすべてのリソースを同じサブネットにアタッチします。これは、セキュリティ境界として機能します。
    • リージョン・サブネットを使用します。
  • セキュリティ
    • Oracle Cloud Guardを使用して、Oracle Cloud Infrastructure内のリソースのセキュリティを事前対策としてモニターおよび維持します。クラウド・ガードでは、定義できるディテクタ・レシピを使用して、セキュリティの弱点についてリソースを調べて、リスクのあるアクティビティについてオペレータとユーザーをモニターします。構成の誤りまたは安全でないアクティビティが検出されると、クラウド・ガードは修正アクションを推奨し、定義できるレスポンダ・レシピに基づいてそれらのアクションの実行を支援します。
    • 最大限のセキュリティーを必要とするリソースの場合、Oracleではセキュリティーゾーンを使用することをお勧めします。セキュリティ・ゾーンは、ベスト・プラクティスに基づくセキュリティ・ポリシーのOracle定義レシピに関連付けられたコンパートメントです。たとえば、セキュリティ・ゾーン内のリソースには、パブリック・インターネットからアクセスできない必要があり、顧客管理キーを使用して暗号化する必要があります。セキュリティ・ゾーンでリソースを作成および更新すると、Oracle Cloud Infrastructureでは、セキュリティ・ゾーン・レシピのポリシーに対して操作を検証し、いずれかのポリシーに違反する操作を拒否します。
  • クラウド・ガード
    • Oracleが提供するデフォルト・レシピをクローニングおよびカスタマイズして、カスタム・ディテクタおよびレスポンダ・レシピを作成します。これらのレシピを使用すると、警告を生成するセキュリティ違反のタイプと、警告に対して実行を許可するアクションを指定できます。たとえば、可視性がpublicに設定されているオブジェクト・ストレージ・バケットを検出できます。
    • Oracle Cloud Guardをテナンシ・レベルで適用して、最も広い範囲をカバーし、複数の構成を維持する管理上の負担を軽減します。
    • また、管理対象リスト機能を使用して、特定の構成をディテクタに適用することもできます。
  • ネットワーク・セキュリティ・グループ(NSG)
    • NSGを使用して、特定のVNICに適用されるイングレスおよびエグレス・ルールのセットを定義できます。NSGを使用すると、VCNサブネット・アーキテクチャをアプリケーションのセキュリティ要件から分離できるため、セキュリティ・リストではなくNSGを使用します。
  • OKE
    • MLflowおよび推論ワークロードを別々のネームスペースにデプロイします。自動スケーリングを有効にし、ワークロードの分離に複数のノード・プールを使用します。イングレス・コントローラまたはロード・バランサを使用して、推論サービスを安全に公開します。
  • OCIオブジェクト・ストレージ
    • データセット、トレーニング済モデルおよびMLflowアーティファクトには、OCI Object Storageを使用します。バージョニングおよびライフサイクル・ポリシーを有効にして、ストレージを最適化し、モデル系統を維持します。
  • Oracle Cloud Infrastructure Data Science
    • トレーニングにコンテナ化されたジョブを使用して再現性を確保します。本番環境では、ノートブックベースの手動ワークフローを回避します。MLflowを統合して、実験を追跡します。
  • OCIロード・バランサ
    • ロード・バランサを使用して、MLflow UI/APIおよび推論エンドポイントを公開します。異なるサービスのリスナーおよびバックエンド・セットを構成します。安全なアクセスにHTTPSを使用し、必要に応じてDNSと統合します。

考慮事項

これらの考慮事項は、MLOpsパイプラインの主なパフォーマンス、セキュリティ、可用性およびコスト要因をまとめたものです。

このリファレンス・アーキテクチャをデプロイする場合は、次の点を考慮してください。

  • パフォーマンス: 推論ワークロードにOKEの自動スケーリングを使用し、トレーニングにデータ・サイエンス・ジョブ・シェイプを最適化します。MLflowがオブジェクト・ストレージにバックアップされたアーティファクトで適切にスケーリングされ、ロード・バランサがトラフィックを処理するために適切にサイズ設定されていることを確認します。
  • セキュリティ: 最小権限のOCI Identity and Access Managementポリシーを適用し、シークレット管理にOCI Vaultを使用します。MLflow、OCI Object Storageおよび推論エンドポイントへのアクセスを制限します。
  • 可用性: 可用性ドメインとフォルト・ドメインにわたってデプロイします。OKEの高可用性機能を使用し、MLflowサービスの自己回復性を確保します。
  • コスト: 自動スケーリングを使用して、コンピュートの使用量を最適化します。OCIオブジェクト・ストレージおよび右サイズのOKEノード・プールにライフサイクル・ポリシーを適用します。未使用のリソースを停止します。

詳細の参照

これらのOracleドキュメント・リソースは、このリファレンス・アーキテクチャで使用されるサービスに関する詳細情報を提供します。

このアーキテクチャのデータ・サイエンスOCI DevOpsOKEおよび関連サービスについてさらに学習するには、次のリソースを参照してください:

確認

  • 作成者: Prasanth Prasad
  • コントリビュータ: Thangaraj, Karol Stuart