使用 OCI 原生服務和 MLflow 在 OCI 上建置可擴展的 MLOps 管線

此參考架構描述如何在 Oracle Cloud Infrastructure (OCI) 上導入可擴展的自動化 MLOps 管線。

此架構可協助組織以一致性、治理、速度、再現性、自動化部署、模型生命週期管理和可觀察性來操作機器學習模型。

此解決方案整合了 OCI DevOpsOracle Cloud Infrastructure Data ScienceOracle Cloud Infrastructure Kubernetes Engine ( OKE),將機器學習生命週期的端對端自動化。訓練工作負載會容器化並以 DevOps 管線觸發的 Oracle Cloud Infrastructure Data Science 工作執行,而部署在 OKE 上的 MLflow 則提供實驗追蹤和模型登錄功能,使用者自建物件則儲存在 OCI Object Storage 中。訓練之後, OCI DevOps 會自動將最新核准的模型從 MLflow Model Registry 部署到 OKE ,並透過 OCI Load Balancer 提供 MLflow 和推論服務的存取。

Before You Begin - 開始之前

在部署此解決方案之前,請確定符合下列先決條件:

  • 具有足夠服務限制的作用中 Oracle Cloud Infrastructure 租用戶。
  • 為環境隔離 (例如開發、測試和生產) 設定的區間。
  • OCI Identity and Access Management 原則:
    • OCI DevOps
    • Oracle Cloud Infrastructure Data Science
    • OKE
    • OCI Object Storage
    • OCI 保存庫
    • OCI 通知
    • OCI 負載平衡器
  • 已設定的虛擬雲端網路 (VCN):
    • OKEOracle Cloud Infrastructure Data Science 的專用子網路。
    • OCI 負載平衡器的公用子網路 (如果需要外部存取的話)。
    • OCI Service Gateway
    • NAT 閘道。
  • 為下列項目啟動設定的 OKE 叢集:
    • MLflow 作為 MLOps 服務。
    • 推論工作負載。
  • OKE 上部署的 MLflow,設定如下:
    • OCI 物件儲存作為物件存放區。
    • 已啟用「模型登錄」。
  • OCI DevOps 專案:
    • 來源儲存庫。
    • 建置及部署管線。
  • 已設定 OCI 通知主題和訂閱。
  • 熟悉 Docker、Kubernetes 和機器學習工作流程。

架構

此架構實作自動 MLOps 管道,其中 Oracle Cloud Infrastructure DevOps 建立訓練容器,並觸發 Oracle Cloud Infrastructure Data Science 工作進行模型訓練。

訓練工作會從 OCI Container Registry (OCIR) 中提取容器映像檔,並透過 Oracle Cloud Infrastructure Service Gateway 存取 Oracle Cloud Infrastructure Object Storage 中的資料集。執行時,訓練指標和人工因素會記錄在 OCI Kubernetes 引擎上執行的 MLflow 中,使用者自建物件則保留在 OCI Object Storage 中,以提供持久性和擴展性。

訓練完成後,模型會在 MLflow Model Registry 中註冊,並透過定義的階段進行升級。OCI DevOps 會自動觸發部署管線,以擷取最新核准的模型版本,並將其部署至 OCI Kubernetes Engine 作為推論服務。MLflow 服務 (MLOps 控制層) 和推論端點都會透過 Oracle Cloud Infrastructure Load Balancer 公開,提供統一且可擴展的存取層。在整個管道中,Oracle Cloud Infrastructure Notifications 會提供建置、訓練及部署階段的即時更新。此解決方案在安全的 VCN 內執行,使用專用網路、用於加密密碼管理的 Oracle Cloud Infrastructure Vault ,以及用於監測的 Oracle Cloud Infrastructure LoggingOracle Cloud Infrastructure Monitoring

下圖說明此參照架構。



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

此架構具有下列元件:

  • 基礎架構
    • 可用性網域

      可用性網域是區域內獨立的資料中心。每個可用性網域中的實體資源會與其他可用性網域中的資源隔離,以提供容錯能力。可用性網域不會共用基礎架構,例如電源或冷卻系統,或內部可用性網域網路。因此,一個可用性網域發生故障不應影響該區域中的其他可用性網域。

    • 區間

      區間是 OCI 租用戶內的跨區域邏輯分割區。使用區間組織、控制存取,以及設定 Oracle Cloud 資源的使用配額。在指定的區間中,您可以定義控制資源存取和設定權限的原則。

    • 網際網路閘道

      網際網路閘道允許 VCN 中公用子網路與公用網際網路之間的流量。

    • OCI 地區

      OCI 區域是本地化的地理區域,包含一或多個代管可用性網域的資料中心。區域獨立於其他地區,且遠距離能夠分離它們 (跨國家,甚至是大陸)。

    • 安全清單

      您可以為每個子網路建立安全規則,指定允許進出子網路的來源、目的地和流量類型。

    • 服務閘道

      服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。從 VCN 到 Oracle 服務的流量會透過 Oracle 網路結構傳送,而不會周遊網際網路。

    • Tenancy

      租用戶是一個安全且隔離的分割區,當您在註冊 OCI 時,Oracle 會在 Oracle Cloud 內建立此分割區。您可以在租用戶內的 OCI 上建立、組織及管理您的資源。租用戶與公司或組織同義字。通常,公司會有單一租用戶,並反映其在該租用戶內的組織結構。單一租用戶通常與單一訂閱關聯,而單一訂閱通常只有一個租用戶。

    • OCI 虛擬雲端網路與子網路

      虛擬雲端網路 (VCN) 是您在 OCI 區域中設定的可自訂軟體定義網路。與傳統資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的無類別網域間路由 (CIDR) 區塊,您可以在建立 VCN 之後變更這些區塊。您可以將 VCN 區隔成子網路,而子網路的作用領域可以調整到某個區域或可用性網域。每個子網路都是由連續的位址範圍所組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用網路或專用網路。

  • Oracle Service Network (OSN)
    • OCI 記錄日誌
      Oracle Cloud Infrastructure Logging 是可高度擴展且完全受管理的服務,可讓您從雲端資源存取下列類型的日誌:
      • 稽核日誌:與 OCI Audit 產生之事件相關的日誌。
      • 服務日誌:由個別服務 (例如 OCI API GatewayOCI EventsOCI FunctionsOCI Load BalancerOCI Object Storage 和 VCN 流量日誌) 發布的日誌。
      • 自訂日誌:包含自訂應用程式、其他雲端提供者或內部部署環境之診斷資訊的日誌。
    • OCI 監控

      Oracle Cloud Infrastructure Monitoring 主動並被動監控您的雲端資源,並使用警訊在指標符合指定的觸發器時通知您。

    • OCI 通知

      OCI Notifications 會使用低延遲的發佈 - 訂閱模式,將訊息廣播至分散式元件,為 OCI 上代管的應用程式提供安全、高度可靠的持久訊息。

    • Oracle Services Network

      Oracle Services Network (OSN) 是 OCI 上的概念網路,保留給 Oracle 服務使用。這些服務具有公用 IP 位址,您可以透過網際網路連線。Oracle Cloud 以外的主機可以使用 Oracle Cloud Infrastructure FastConnect 或 VPN Connect 以私密方式存取 OSN。您 VCN 中的主機可以透過服務網關私下存取 OSN。

    • OCI 保存庫

      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) 模型。它可以輕鬆與其他 OCI 服務 (例如 Oracle Autonomous AI LakehouseOracle Cloud Infrastructure Object Storage 等) 整合。您可以建立和評估高品質的機器學習模型,透過將企業信任的資料快速運作來提高業務彈性,並藉由更輕鬆地部署 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 Object Storage

      OCI Object Storage 可讓您存取任何內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料,以及豐富的內容 (例如影像和影片)。您可以直接從應用程式或雲端平台內安全地儲存資料。您可以擴展儲存,而不會發生效能或服務可靠性的任何降低情況。

      針對需要快速、立即及頻繁存取的「熱」儲存使用標準儲存。將封存儲存用於保留一段很長的時間和很少或很少存取的「冷」儲存。

  • MLflow (在 Kubernetes 引擎 )

    MLflow 是管理 ML 生命週期的開放原始碼平台,包括實驗追蹤和模型登錄。它可以部署在 Kubernetes 上以實現擴展性。在此架構中,MLflow 會在 Kubernetes Engine 上執行、將使用者自建物件儲存在 OCI Object Storage 中,並維護模型登錄作為生產模型的事實來源。它可啟用模型的版本控制、治理及控制升級。

  • OCI 容器登錄 (OCIR)

    OCI Container Registry 是一個受管理的專用 Docker 登錄,用於儲存及管理容器映像檔。它與 OCI Identity and Access Management 整合,以實現安全的存取控制。在此架構中,它會儲存啟動多版本功能的訓練,並提供容器映像檔。這些映像檔是由資料科學工作和 Kubernetes 引擎部署所使用。

建議

這些建議有助於提升 MLOps 管線的安全性、擴展性和維護性。
  • VCN
    • 建立 VCN 時,請根據計畫要連附至 VCN 中子網路的資源數目,決定所需的 CIDR 區塊數目以及每個區塊的大小。
    • 使用標準專用 IP 位址空間內的 CIDR 區塊,並選取未與 Oracle Cloud Infrastructure 中任何其他網路重疊的 CIDR 區塊、內部部署資料中心或其他想要設定專用連線的雲端提供者。
    • 建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。
    • 設計子網路時,請考量您的流量和安全需求。將特定層或角色內的所有資源連附至相同的子網路,以作為安全界限。
    • 使用區域子網路。
  • 安全
    • 使用 Oracle Cloud Guard ,主動監控及維護 Oracle Cloud Infrastructure 中資源的安全性。Cloud Guard 使用偵測器處方,您可以定義這些處方來檢查資源是否有安全漏洞,以及監督操作員和使用者是否有危險活動。偵測到任何組態錯誤或不安全的活動時, Cloud Guard 會根據您可定義的回應器處方建議更正動作,並協助採取這些動作。
    • 對於需要最高安全性的資源,Oracle 建議您使用安全區域。安全區域是與 Oracle 定義的安全原則處方關聯的區間,以最佳做法為基礎。例如,安全區域中的資源不能從公用網際網路存取,而且必須使用客戶管理的金鑰加密。當您在安全區域中建立和更新資源時,Oracle Cloud Infrastructure 會根據安全區域處方中的原則驗證作業,並拒絕違反任何原則的作業。
  • 雲端保全
    • 複製並自訂 Oracle 提供的預設處方,以建立自訂偵測器和回應器處方。這些處方可讓您指定哪些類型的安全違規會產生警告,以及允許對它們執行哪些動作。例如,您可能想要偵測將可見性設為公用物件儲存的儲存桶。
    • 在租用戶層級套用 Oracle Cloud Guard ,以涵蓋範圍最廣,並降低維護多個組態的管理負擔。
    • 您也可以使用「受管理清單」功能,將特定組態套用至偵測器。
  • 網路安全群組 (NSG)
    • 您可以使用 NSG 定義一組適用於特定 VNIC 的傳入和傳出規則。使用 NSG 而非安全清單,因為 NSG 可讓您將 VCN 子網路架構與應用程式的安全需求分開。
  • OKE
    • 在不同的命名空間中部署 MLflow 與推論工作負載。啟用自動調整功能,並使用多個節點集區來隔離工作負載。使用傳入控制器或負載平衡器,安全地公開推論服務。
  • OCI Object Storage
    • 針對資料集、訓練模型及 MLflow 使用者自建物件使用 OCI Object Storage 。啟用版本控制和生命週期原則,以最佳化儲存並維護模型歷程。
  • Oracle Cloud Infrastructure Data Science
    • 使用容器化工作進行訓練,以確保可再現性。避免在生產環境中使用手動記事本型工作流程。整合 MLflow 以進行實驗追蹤。
  • OCI 負載平衡器
    • 使用負載平衡器公開 MLflow UI/API 和推論端點。設定不同服務的監聽器和後端集。如有需要,請使用 HTTPS 進行安全存取,並與 DNS 整合。

注意事項

這些考量總結了 MLOps 管道的主要效能、安全性、可用性及成本因素。

部署此參考架構時,請考量下列各點。

  • 效能:在 OKE 中使用自動調整功能來推論工作負載,並最佳化用於訓練的 Data Science 工作型態。確定 MLflow 與物件儲存支援的使用者自建物件適當地調整規模,並且負載平衡器大小適當地處理流量。
  • 安全性:套用最低權限的 OCI Identity and Access Management 原則,並使用 OCI Vault 進行加密密碼管理。限制對 MLflow、 OCI Object Storage 和推論端點的存取。
  • 使用狀態:跨可用性和容錯域部署。使用 OKE 高可用性功能,並確保 MLflow 服務具有彈性。
  • 成本:使用自動調整功能將運算用量最佳化。在 OCI Object Storage 和大小正確的 OKE 節點集區中套用生命週期原則。關閉未使用的資源。

探索更多資訊

這些 Oracle 文件資源提供了此參考架構中使用之服務的詳細資訊。

若要深入瞭解此架構中的資料科學OCI DevOpsOKE 及相關服務,請參閱下列資源:

確認

  • 作者Prasanth Prasad
  • 貢獻者Thangaraj, Karol Stuart