

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon SageMaker AI 上使用受管 MLflow 加速開發生成式 AI
<a name="mlflow"></a>

Amazon SageMaker AI 上的完全受管 MLflow 3.0 可讓您使用單一工具更輕鬆地追蹤實驗並監控模型和 AI 應用程式的效能，進而加速生成式 AI。

**使用 MLflow 3.0 開發生成式 AI**

隨著各產業的客戶加速開發生成式 AI，他們需要能夠追蹤實驗、觀察行為，以及評估模型和 AI 應用程式的效能。資料科學家和開發人員缺乏工具可分析從實驗到生產的模型和 AI 應用程式效能，使得難以找出根本原因與解決問題。團隊花費更多時間在整合工具上，而不是改善其模型或生成式 AI 應用程式。

訓練或微調生成式 AI 和機器學習是一種反覆程序，需要實驗資料、演算法和參數的各種組合，同時觀察它們對模型準確性的影響。實驗的反覆性質會產生許多模型訓練執行和版本，使得追蹤效能最佳的模型及其組態具有挑戰性。管理和比較反覆訓練執行的複雜性隨著 GenAI 而增加，其中實驗不僅涉及微調模型，還會探索創意和多樣化的輸出。研究人員必須調整超參數、選取適合的模型架構，並策劃各種資料集，以最佳化產生內容的品質和創造力。評估生成式 AI 模型需要定量和定性指標，這為實驗程序更增一層複雜性。在 Amazon SageMaker AI 上實驗 MLflow 3.0 中的追蹤功能，可讓您追蹤、整理、檢視、分析和比較反覆的機器學習 (ML) 實驗，以獲得可對照的見解，並註冊與部署效能最佳的模型。

全受管 MLflow 3.0 中的追蹤功能可讓您在生成式 AI 應用程式的每個步驟記錄輸入、輸出和中繼資料，協助您快速識別錯誤或意外行為的來源。透過維護每個模型和應用程式版本的記錄，全受管 MLflow 3.0 提供可追溯性，以將 AI 回應連接到其來源元件，讓您可以將問題直接追溯到產生問題的特定程式碼、資料或參數。這可大幅縮短故障診斷時間，並讓團隊更專注於創新。

## MLflow 整合
<a name="mlflow-integrations"></a>

在訓練和評估模型時使用 MLflow，為您的使用案例尋找最佳候選項目。您可以在 MLflow UI 中跨實驗比較模型效能、參數和指標、在 MLflow Model Registry 中追蹤最佳模型、自動將它們註冊為 SageMaker AI 模型，並將註冊的模型部署到 SageMaker AI 端點。

**Amazon SageMaker AI 與 MLflow**

使用 MLflow 追蹤和管理機器學習 (ML) 生命週期的實驗階段，以及模型開發、管理、部署和追蹤的 AWS 整合。

**Amazon SageMaker Studio**

建立和管理追蹤伺服器、執行筆記本來建立實驗，以及存取 MLflow UI 來檢視和比較實驗執行，全透過 Studio 進行。

**SageMaker Model Registry**

透過自動將 MLflow Model Registry 的模型註冊到 SageMaker Model Registry，來管理生產的模型版本和目錄模型。如需詳細資訊，請參閱[自動向 SageMaker 模型註冊庫註冊 SageMaker AI 模型](mlflow-track-experiments-model-registration.md)。

**SageMaker AI 推論**

使用 `ModelBuilder` 準備要在 SageMaker AI 端點上部署的最佳模型。如需詳細資訊，請參閱[使用 `ModelBuilder` 部署 MLflow 模型](mlflow-track-experiments-model-deployment.md)。

**AWS Identity and Access Management**

將角色型存取控制 (RBAC) 搭配 IAM 使用以設定對 MLflow 的存取權。撰寫 IAM 身分政策，以授權 MLflow 追蹤伺服器的用戶端可呼叫的 MLflow API。所有 MLflow REST API 都會在 `sagemaker-mlflow` 服務字首下以 IAM 動作表示。如需詳細資訊，請參閱[設定 MLflow 的 IAM 許可。](mlflow-create-tracking-server-iam.md)。

**AWS CloudTrail**

檢視 中的日誌 AWS CloudTrail ，以協助您啟用 AWS 帳戶的營運和風險稽核、控管和合規。如需詳細資訊，請參閱[AWS CloudTrail 日誌](#mlflow-create-tracking-server-cloudtrail)。

**Amazon EventBridge**

使用 Amazon EventBridge 擷取的 MLflow 事件來自動化模型檢閱和部署生命週期。如需詳細資訊，請參閱[Amazon EventBridge 事件](#mlflow-create-tracking-server-eventbridge)。

## 支援的 AWS 區域
<a name="mlflow-regions"></a>

Amazon SageMaker AI with MLflow 通常可在 Amazon SageMaker Studio 提供的所有 AWS 商業[區域中](https://docs.aws.amazon.com/sagemaker/latest/dg/regions-quotas.html)使用，但中國區域除外。SageMaker AI with MLflow 僅適用於歐洲 AWS CLI （蘇黎世） 區域、亞太區域 （海德拉巴） 區域、亞太區域 （墨爾本） 區域和加拿大西部 （卡加利） 區域的 。

追蹤伺服器會在其指定區域內的單一可用區域中啟動。

## 運作方式
<a name="mlflow-create-tracking-server-how-it-works"></a>

MLflow 追蹤伺服器有三個主要元件：運算、後端中繼資料儲存體和成品儲存體。託管追蹤伺服器的運算和後端中繼資料儲存體的運算會安全地託管在 SageMaker AI 服務帳戶中。成品儲存體存在於您 AWS 帳戶中的 Amazon S3 儲存貯體中。

![\[此圖顯示 MLflow 追蹤伺服器的運算和中繼資料存放區。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mlflow/mlflow-diagram.png)


追蹤伺服器具有 ARN。您可以使用此 ARN 將 MLflow SDK 連接到您的追蹤伺服器，並開始將訓練執行記錄到 MLflow。

請繼續閱讀以了解有關以下關鍵概念的更多資訊：
+ [後端中繼資料儲存體](#mlflow-create-tracking-server-backend-store) 
+ [成品儲存體](#mlflow-create-tracking-server-artifact-store) 
+ [MLflow 追蹤伺服器大小](#mlflow-create-tracking-server-sizes) 
+ [追蹤伺服器版本](#mlflow-create-tracking-server-versions) 
+ [AWS CloudTrail 日誌](#mlflow-create-tracking-server-cloudtrail) 
+ [Amazon EventBridge 事件](#mlflow-create-tracking-server-eventbridge) 

### 後端中繼資料儲存體
<a name="mlflow-create-tracking-server-backend-store"></a>

當您建立 MLflow 追蹤伺服器時，系統會自動在 SageMaker AI 服務帳戶內設定[後端存放區](https://mlflow.org/docs/latest/tracking/backend-stores.html)並為您完整管理，該存放區會保留每個[執行](https://mlflow.org/docs/latest/tracking.html#runs)的各種中繼資料，例如執行 ID、開始和結束時間、參數和指標，

### 成品儲存體
<a name="mlflow-create-tracking-server-artifact-store"></a>

若要為 MLflow 提供每次執行中繼資料的持久性儲存，例如模型權重、映像、模型檔案和實驗執行的資料檔案，您必須使用 Amazon S3 建立成品存放區。成品存放區必須在 AWS 您的帳戶中設定，而且您必須明確授予 MLflow 對 Amazon S3 的存取權，才能存取您的成品存放區。如需詳細資訊，請參閱 MLflow 文件中的[成品存放區](https://mlflow.org/docs/latest/tracking.html#artifact-stores)。

**注意**  
SageMaker AI MLflow 有 200 MB 的下載大小限制。

### MLflow 應用程式版本
<a name="mlflow-create-mlflow-app-versions"></a>

下列 MLflow 版本可與 SageMaker AI MLflow 應用程式搭配使用：


| MLflow 版本 | Python 版本 | 
| --- | --- | 
| [MLflow 3.4](https://mlflow.org/releases/3.4.0) （最新版本） | [Python 3.9](https://www.python.org/downloads/release/python-390/) 或更高版本 | 

MLflow 應用程式的最新版本具有最新的功能、安全修補程式和錯誤修正。當您建立新的 MLflow 應用程式時，它會自動更新為最新的支援版本。如需建立 MLflow 應用程式的詳細資訊，請參閱 [MLflow 應用程式設定](mlflow-app-setup.md)。

MLflow 應用程式使用語意版本控制。版本格式如下：`major-version.minor-version.patch-version`。

### MLflow 追蹤伺服器大小
<a name="mlflow-create-tracking-server-sizes"></a>

您可以選擇性地在 Studio UI 或 參數 AWS CLI 中指定追蹤伺服器的大小`--tracking-server-size`。您可以選擇 `"Small"`、`"Medium"` 和 `"Large"`。預設 MLflow 追蹤伺服器組態大小為 `"Small"`。您可以根據追蹤伺服器的預期使用情況，例如記錄的資料量、使用者數量和使用頻率，來選擇大小。

我們建議針對最多 25 名使用者的團隊使用小型追蹤伺服器、針對最多 50 名使用者的團隊使用中型追蹤伺服器，以及針對最多 100 名使用者的團隊使用大型追蹤伺服器。我們假設所有使用者都會同時向 MLflow 追蹤伺服器提出請求，以提出這些建議。您應該根據預期的使用模式和每個追蹤伺服器支援的 TPS (每秒交易數)，來選取追蹤伺服器大小。

**注意**  
工作負載的性質和您對追蹤伺服器提出的請求類型決定了您看到的 TPS。


| 追蹤伺服器大小 | 持續 TPS | 爆量 TPS | 
| --- | --- | --- | 
| 小型 | 最高 25 | 最高 50 | 
| 中 | 最高 50 | 最高 100 | 
| 大型 | 最高 100 | 最高 200 | 

### 追蹤伺服器版本
<a name="mlflow-create-tracking-server-versions"></a>

下列 MLflow 版本可與 SageMaker AI 搭配使用：


| MLflow 版本 | Python 版本 | 
| --- | --- | 
| [MLflow 3.0](https://mlflow.org/releases/3) (最新版本) | [Python 3.9](https://www.python.org/downloads/release/python-390/) 或更高版本 | 
| [MLflow 2.16](https://mlflow.org/releases/2.16.0) | [Python 3.8](https://www.python.org/downloads/release/python-380/) 或更高版本 | 
| [MLflow 2.13](https://mlflow.org/releases/2.13.0) | [Python 3.8](https://www.python.org/downloads/release/python-380/) 或更高版本 | 

追蹤伺服器的最新版本具有最新的功能、安全修補程式和錯誤修正。當您建立新的追蹤伺服器時，我們建議您使用最新版本。如需建立追蹤伺服器的更多詳細資訊，請參閱[MLflow 追蹤伺服器](mlflow-create-tracking-server.md)。

MLflow 追蹤伺服器使用語意版本控制。版本格式如下：`major-version.minor-version.patch-version`。

如新 UI 元素和 API 功能等最新功能都在次要版本中。

### AWS CloudTrail 日誌
<a name="mlflow-create-tracking-server-cloudtrail"></a>

AWS CloudTrail 會自動記錄與 MLflow 追蹤伺服器相關的活動。下列控制平面 API 呼叫會記錄在 CloudTrail 中：
+ CreateMlflowTrackingServer
+ DescribeMlflowTrackingServer
+ UpdateMlflowTrackingServer
+ DeleteMlflowTrackingServer
+ ListMlflowTrackingServers
+ CreatePresignedMlflowTrackingServer
+ StartMlflowTrackingServer
+ StopMlflowTrackingServer

AWS CloudTrail 也會自動記錄與 MLflow 資料平面相關的活動。下列資料平面 API 呼叫會記錄在 CloudTrail 中。對於事件名稱，新增字首 `Mlflow` (例如 `MlflowCreateExperiment`)。
+ CreateExperiment
+ CreateModelVersion
+ CreateRegisteredModel
+ CreateRun
+ DeleteExperiment
+ DeleteModelVersion
+ DeleteModelVersionTag
+ DeleteRegisteredModel
+ DeleteRegisteredModelAlias
+ DeleteRegisteredModelTag
+ DeleteRun
+ DeleteTag
+ GetDownloadURIForModelVersionArtifacts
+ GetExperiment
+ GetExperimentByName
+ GetLatestModelVersions
+ GetMetricHistory
+ GetModelVersion
+ GetModelVersionByAlias
+ GetRegisteredModel
+ GetRun
+ ListArtifacts
+ LogBatch
+ LogInputs
+ LogMetric
+ LogModel
+ LogParam
+ RenameRegisteredModel
+ RestoreExperiment
+ RestoreRun
+ SearchExperiments
+ SearchModelVersions
+ SearchRegisteredModels
+ SearchRuns
+ SetExperimentTag
+ SetModelVersionTag
+ SetRegisteredModelAlias
+ SetRegisteredModelTag
+ SetTag
+ TransitionModelVersionStage
+ UpdateExperiment
+ UpdateModelVersion
+ UpdateRegisteredModel
+ UpdateRun
+ FinalizeLoggedModel
+ GetLoggedModel
+ DeleteLoggedModel
+ SearchLoggedModels
+ SetLoggedModelTags
+ DeleteLoggedModelTag
+ ListLoggedModelArtifacts
+ LogLoggedModelParams
+ LogOutputs

如需有關 CloudTrail 的相關資訊，請參閱 *[AWS CloudTrail 使用者指南](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)*。

### Amazon EventBridge 事件
<a name="mlflow-create-tracking-server-eventbridge"></a>

使用 EventBridge 將事件從將 MLflow 搭配 SageMaker AI 使用路由到整個組織的取用者應用程式。下列事件會發射到 EventBridge：
+ 「SageMaker 追蹤伺服器建立中」
+ 「SageMaker 追蹤伺服器已建立」
+ 「SageMaker 追蹤伺服器建立失敗」
+ 「SageMaker 追蹤伺服器更新中」
+ 「SageMaker 追蹤伺服器已更新」
+ 「SageMaker 追蹤伺服器更新失敗」
+ 「SageMaker 追蹤伺服器刪除中」
+ 「SageMaker 追蹤伺服器已刪除」
+ 「SageMaker 追蹤伺服器刪除失敗」
+ 「SageMaker 追蹤伺服器啟動中」
+ 「SageMaker 追蹤伺服器已啟動」
+ 「SageMaker 追蹤伺服器啟動失敗」
+ 「SageMaker 追蹤伺服器停止中」
+ 「SageMaker 追蹤伺服器已停止」
+ 「SageMaker 追蹤伺服器停止失敗」
+ 「SageMaker 追蹤伺服器維護進行中」
+ 「SageMaker 追蹤伺服器維護完成」
+ 「SageMaker 追蹤伺服器維護失敗」
+ 「建立執行的 SageMaker MLFlow 追蹤伺服器」
+ 「建立 RegisteredModel 的 SageMaker MLFlow 追蹤伺服器」
+ 「建立 ModelVersion 的 SageMaker MLFlow 追蹤伺服器」
+ 「轉換 ModelVersion 階段的 SageMaker MLFlow 追蹤伺服器」
+ 「SageMaker MLFlow 追蹤伺服器設定註冊的模型別名」

如需有關 EventBridge 的詳細資訊，請參閱《[Amazon EventBridge 使用者指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)》**。

**Topics**
+ [MLflow 整合](#mlflow-integrations)
+ [支援的 AWS 區域](#mlflow-regions)
+ [運作方式](#mlflow-create-tracking-server-how-it-works)
+ [MLflow 應用程式設定](mlflow-app-setup.md)
+ [MLflow 追蹤伺服器](mlflow-create-tracking-server.md)
+ [使用預先簽章的 URL 啟動 MLflow UI](mlflow-launch-ui.md)
+ [將 MLflow 與您的環境整合](mlflow-track-experiments.md)
+ [使用範例 Jupyter 筆記本的 MLflow 教學課程](mlflow-tutorials.md)
+ [疑難排解常見的設定問題](mlflow-troubleshooting.md)
+ [清除 MLflow 資源](mlflow-cleanup.md)
+ [Studio Classic 中的 Amazon SageMaker Experiments](experiments.md)

# MLflow 應用程式設定
<a name="mlflow-app-setup"></a>

[MLflow 應用程式](https://mlflow.org/docs/latest/tracking.html#mlflow-tracking-server-optional)是獨立的 HTTP 伺服器，可提供多個 REST API 端點來追蹤執行和實驗。開始使用 SageMaker AI 和 MLflow 追蹤機器學習 (ML) 實驗需要 MLflow 應用程式。您可以透過 Studio UI 或透過 建立 MLflow 應用程式，AWS CLI以獲得更精細的安全性自訂。

您必須設定正確的 IAM 許可，才能建立 MLflow 應用程式。

MLflow 應用程式是 SageMaker 上最新的受管 MLflow 產品，應優先於現有的 MLflow 追蹤伺服器。MLflow 應用程式提供額外的功能，例如更快的啟動時間、跨帳戶共用、與其他 SageMaker 功能的整合，以及現有 MLflow 追蹤伺服器以外的其他功能。

**Topics**
+ [MLflow 應用程式設定必要條件](mlflow-app-setup-prerequisites.md)
+ [建立 MLflow 應用程式](mlflow-app-setup-create-app.md)

# MLflow 應用程式設定必要條件
<a name="mlflow-app-setup-prerequisites"></a>

# 設定 MLflow 應用程式的 IAM 許可
<a name="mlflow-app-setup-prerequisites-iam"></a>

您必須設定必要的 IAM 服務角色，才能開始使用 Amazon SageMaker AI 中的 MLflow 應用程式。

如果您建立新的 Amazon SageMaker AI 網域以在 Studio 中存取實驗，您可以在網域設定期間設定必要的 IAM 許可。如需詳細資訊，請參閱[在建立新網域時設定 MLflow IAM 許可](mlflow-create-tracking-server-iam.md#mlflow-create-tracking-server-iam-role-manager)。

若要使用 IAM 主控台設定許可，請參閱[在 IAM 主控台中建立必要的 IAM 服務角色](mlflow-create-tracking-server-iam.md#mlflow-create-tracking-server-iam-service-roles)。

您必須設定 `sagemaker-mlflow` 動作的授權控制項。您可以選擇性地定義更精細的授權控制，以控管動作特定的 MLflow 許可。如需詳細資訊，請參閱[建立動作特定的授權控制](#mlflow-create-app-update-iam-actions)。

## 在建立新網域時設定 MLflow IAM 許可
<a name="mlflow-create-app-iam-role-manager"></a>

為您的組織設定新的 Amazon SageMaker AI 網域時，您可以透過**使用者和 ML 活動**設定來設定網域服務角色的 IAM 許可。

1. 使用 SageMaker AI 主控台設定新網域。在**設定 SageMaker AI 網域**頁面上，選擇**設定組織**。如需詳細資訊，請參閱[使用主控台進行自訂設定](onboard-custom.md#onboard-custom-instructions-console)。

1. 設定**使用者和 ML 活動**時，請選擇下列 MLflow 的 ML 活動：**使用 MLflow**、**管理 MLflow 應用程式**，以及 ** AWS Services for MLflow 所需的存取**。如需這些活動的詳細資訊，請參閱此程序後面的說明。

1. 完成新網域的設定和建立。

Amazon SageMaker 角色管理器提供下列 MLflow ML 活動：
+ **使用 MLflow**：此 ML 活動會授予網域服務角色許可來呼叫 MLflow REST API，以在 MLflow 中管理實驗、執行和模型。
+ **管理 MLflow 應用程式**：此 ML 活動會授予網域服務角色建立、更新和刪除 MLflow 應用程式的許可。
+ ** AWS 服務 MLflow 應用程式所需的存取**：此 ML 活動提供存取 Amazon S3 和 SageMaker AI Model Registry 所需的網域服務角色許可。這可讓您使用網域服務角色做為追蹤伺服器服務角色。

如需角色管理員中 ML 活動的更多相關資訊，請參閱[機器學習 (ML) 活動參考](role-manager-ml-activities.md)。

## 在 IAM 主控台中建立必要的 IAM 服務角色
<a name="mlflow-create-app-iam-service-roles"></a>

如果您未建立或更新網域服務角色，則必須改為在 IAM 主控台中建立下列服務角色，才能建立和使用 MLflow 應用程式：
+ MLflow App IAM 服務角色，應用程式可用來存取 SageMaker AI 資源
+ SageMaker AI 可用來建立和管理 MLflow 資源的 SageMaker AI IAM 服務角色

### MLflow App IAM 服務角色的 IAM 政策
<a name="mlflow-create-app-iam-service-roles-ts"></a>

應用程式會使用 MLflow App IAM 服務角色來存取其所需的資源，例如 Amazon S3 和 SageMaker Model Registry。

建立應用程式 IAM 服務角色時，請使用下列 IAM 信任政策：

------
#### [ JSON ]

****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Principal": {
                 "Service": [                     
                      "sagemaker.amazonaws.com"
                 ]
             },
             "Action": "sts:AssumeRole"
         }
     ]
 }
```

------

在 IAM 主控台中，將下列許可政策新增至您的應用程式服務角色：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:Put*",
                "s3:List*",
                "sagemaker:AddTags",
                "sagemaker:CreateModelPackageGroup",
                "sagemaker:CreateModelPackage",
                "sagemaker:UpdateModelPackage",
                "sagemaker:DescribeModelPackageGroup"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### SageMaker AI IAM 服務角色的 IAM 政策
<a name="mlflow-create-app-iam-service-roles-sm"></a>

存取 MLflow 應用程式的用戶端會使用 SageMaker AI 服務角色，且需要呼叫 MLflow REST APIs許可。SageMaker AI 服務角色還需要 SageMaker API 許可，才能建立、檢視更新和刪除應用程式。

您可建立新的執行，或更新現有的角色。SageMaker AI 服務角色需要下列政策：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	     
    "Statement": [        
        {            
            "Effect": "Allow",            
            "Action": [
                "sagemaker-mlflow:*",
                "sagemaker:CreateMlflowTrackingServer",
                "sagemaker:ListMlflowTrackingServers",
                "sagemaker:UpdateMlflowTrackingServer",
                "sagemaker:DeleteMlflowTrackingServer",
                "sagemaker:StartMlflowTrackingServer",
                "sagemaker:StopMlflowTrackingServer",
                "sagemaker:CreatePresignedMlflowTrackingServerUrl"
            ],            
            "Resource": "*"        
        }        
    ]
}
```

------

## 建立動作特定的授權控制
<a name="mlflow-create-app-update-iam-actions"></a>

您必須設定 的授權控制`sagemaker-mlflow`，也可以選擇性地設定動作特定的授權控制，以控管使用者在 MLflow 應用程式上擁有的更精細的 MLflow 許可。

**注意**  
下列步驟假設您已有 MLflow 應用程式的 ARN。

### MLflow 應用程式支援的資料平面 IAM 動作
<a name="mlflow-app-setup-iam-actions"></a>

授權存取控制支援下列 SageMaker AI MLflow 動作：
+ sagemaker：CallMlflowAppApi

# 建立 MLflow 應用程式
<a name="mlflow-app-setup-create-app"></a>

# 使用 建立應用程式 AWS CLI
<a name="mlflow-app-create-app-cli"></a>

您可以使用 建立應用程式 AWS CLI ，以獲得更精細的安全性自訂。

## 先決條件
<a name="mlflow-app-create-app-cli-prereqs"></a>

若要使用 建立應用程式 AWS CLI，您必須具有下列項目：
+ **存取終端機。**這可能包括本機 IDEs、Amazon EC2 執行個體或 AWS CloudShell。
+ **存取開發環境。**這可能包括 Studio 或 Studio Classic 內的本機 IDE 或 Jupyter 筆記本環境。
+ **設定的 AWS CLI 安裝**。如需詳細資訊，請參閱[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。
+ **具有適當許可的 IAM 角色**。下列步驟需要您的環境具有 `iam:CreateRole`、`iam:AttachRolePolicy`、`iam:CreatePolicy` 和 `iam:ListPolicies`許可。用於執行本使用者指南中步驟的角色需要這些許可。本指南中的指示會建立 IAM 角色，做為 MLflow 應用程式的執行角色，以便其存取 Amazon S3 儲存貯體中的資料。此外，建立政策是為了提供使用者透過 MLflow SDK 許可與應用程式互動以呼叫 MLflow APIs的 IAM 角色。如需詳細資訊，請參閱[修改許可政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy)。

  如果使用 SageMaker Studio 筆記本，請使用這些 IAM 許可更新您 Studio 使用者設定檔的服務角色。若要更新服務角色，請導覽至 SageMaker AI 主控台，然後選取您正在使用的網域。然後在網域下，選取您正在使用的使用者設定檔。您會在那裡看到列出的服務角色。導覽至 IAM 主控台，在**角色**下搜尋服務角色，並使用允許 `iam:CreateRole`、`iam:CreatePolicy`、`iam:AttachRolePolicy` 和 `iam:ListPolicies` 動作的政策更新您的角色。

## 設定 AWS CLI 模型
<a name="mlflow-app-create-app-cli-setup"></a>

請遵循終端機中的這些命令列步驟，設定 AWS CLI 適用於 Amazon SageMaker AI with MLflow 的 。

1. 安裝更新版本的 AWS CLI。如需詳細資訊，請參閱《AWS CLI 使用者指南》**中的[安裝或更新最新版 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

1. 使用以下命令確認 AWS CLI 已安裝 ：

   ```
   aws sagemaker help
   ```

   按 `q` 退出提示。

   如需故障診斷協助，請參閱[疑難排解常見的設定問題](mlflow-troubleshooting.md)。

## 設定 MLflow 基礎設施
<a name="mlflow-create-app-cli-infra-setup"></a>

下一節說明如何設定 MLflow 應用程式，以及應用程式所需的 Amazon S3 儲存貯體和 IAM 角色。

### 建立 S3 儲存貯體
<a name="mlflow-infra-setup-s3-bucket"></a>

在終端機中，使用下列命令來建立一般用途的 Amazon S3 儲存貯體：

**重要**  
當您提供成品存放區的 Amazon S3 URI 時，請確定 Amazon S3 儲存貯體與 AWS 區域 MLflow 應用程式位於相同的 中。**不支援跨區域成品儲存**。

```
bucket_name=bucket-name
  region=valid-region
  
  aws s3api create-bucket \
    --bucket $bucket_name \
    --region $region \
    --create-bucket-configuration LocationConstraint=$region
```

輸出格式應類似以下內容：

```
{
      "Location": "/bucket-name"
  }
```

### 設定 IAM 信任政策
<a name="mlflow-app-create-app-cli-trust-policy"></a>

使用下列步驟來建立 IAM 信任政策。如需有關角色和信任政策的詳細資訊，請參閱《AWS Identity and Access Management 使用者指南》**中的[角色術語和概念](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html)。

1. 在您的終端機中，使用下列命令來建立名為 `mlflow-trust-policy.json` 的檔案。

   ```
   cat <<EOF > /tmp/mlflow-trust-policy.json
     {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [                     
                           "sagemaker.amazonaws.com"
                      ]
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
     EOF
   ```

1. 在您的終端機中，使用下列命令來建立名為 `custom-policy.json` 的檔案。

   ```
   cat <<EOF > /tmp/custom-policy.json
     {
         "Version": "2012-10-17",		 	 	 
         "Statement": [
             {
                 "Effect": "Allow",
                 "Action": [
                     "s3:Get*",
                     "s3:Put*",
                     "sagemaker:AddTags",
                     "sagemaker:CreateModelPackageGroup",
                     "sagemaker:CreateModelPackage",
                     "sagemaker:DescribeModelPackageGroup",
                     "sagemaker:UpdateModelPackage",
                     "s3:List*"
                 ],
                 "Resource": "*"
             }
         ]
     }
     EOF
   ```

1. 使用信任政策檔案建立角色。然後，連接允許 MLflow 存取您帳戶中 Amazon S3 和 SageMaker Model Registry 的 IAM 角色政策。MLflow 必須能夠存取應用程式成品存放區的 Amazon S3 和自動模型註冊的 SageMaker 模型登錄檔。
**注意**  
如果您正在更新現有角色，請改用下列命令：`aws iam update-assume-role-policy --role-name $role_name --policy-document file:///tmp/mlflow-trust-policy.json`。

   ```
   role_name=role-name
     
     aws iam  create-role \
       --role-name $role_name \
       --assume-role-policy-document file:///tmp/mlflow-trust-policy.json
     
     aws iam put-role-policy \
       --role-name $role_name \
       --policy-name custom-policy \
       --policy-document file:///tmp/custom-policy.json
     
     role_arn=$(aws iam get-role --role-name  $role_name --query 'Role.Arn' --output text)
   ```

## 建立 MLflow 應用程式
<a name="mlflow-app-create-app-cli-create"></a>

在終端機中，使用 `create-mlflow-app` API AWS 區域 在您選擇的 中建立應用程式。此步驟通常需要大約 2-3 分鐘。

下列命令會建立新的應用程式，並啟用自動模型註冊。若要停用自動模型註冊，請指定 `--no-automatic-model-registration`。

建立應用程式後，您可以啟動 MLflow UI。如需詳細資訊，請參閱[使用預先簽章的 URL 啟動 MLflow UI](mlflow-launch-ui.md)。

**注意**  
最多可能需要 2-3 分鐘才能完成應用程式建立。如果應用程式需要超過 3 分鐘才能建立，請檢查您是否具有必要的 IAM 許可。當您成功建立應用程式時，它會自動啟動。

根據預設，建立的應用程式是最新版本，且會自動更新。

```
app_name=app-name
  region=valid-region
  version=valid-version        
  
  
  aws sagemaker create-mlflow-app \
   --name $app_name \
   --artifact-store-uri s3://$bucket_name \
   --role-arn $role_arn \
   --automatic-model-registration \
   --region $region
```

輸出格式應類似以下內容：

```
{
      "AppArn": "arn:aws:sagemaker:region:123456789012:mlflow-app/app-name"
  }
```

**重要**  
**請記下應用程式 ARN 以供日後使用。**您也需要 `$bucket_name` 進行清除步驟。

# MLflow 追蹤伺服器
<a name="mlflow-create-tracking-server"></a>

[MLflow 追蹤伺服器](https://mlflow.org/docs/latest/tracking.html#mlflow-tracking-server-optional)是獨立的 HTTP 伺服器，提供多個 REST API 端點來追蹤執行和實驗。需要追蹤伺服器，才能開始使用 SageMaker AI 和 MLflow 追蹤您的機器學習 (ML) 實驗。您可以透過 Studio UI 或透過 建立追蹤伺服器， AWS CLI 以獲得更精細的安全性自訂。

您必須設定正確的 IAM 許可，才能建立 MLflow 追蹤伺服器。

**Topics**
+ [設定 MLflow 的 IAM 許可。](mlflow-create-tracking-server-iam.md)
+ [使用 Studio 建立追蹤伺服器](mlflow-create-tracking-server-studio.md)
+ [使用 建立追蹤伺服器 AWS CLI](mlflow-create-tracking-server-cli.md)

# 設定 MLflow 的 IAM 許可。
<a name="mlflow-create-tracking-server-iam"></a>

您必須設定必要的 IAM 服務角色，才能開始使用 Amazon SageMaker AI 中的 MLflow。

如果您建立新的 Amazon SageMaker AI 網域以在 Studio 中存取實驗，您可以在網域設定期間設定必要的 IAM 許可。如需詳細資訊，請參閱[在建立新網域時設定 MLflow IAM 許可](#mlflow-create-tracking-server-iam-role-manager)。

若要使用 IAM 主控台設定許可，請參閱[在 IAM 主控台中建立必要的 IAM 服務角色](#mlflow-create-tracking-server-iam-service-roles)。

您必須設定 `sagemaker-mlflow` 動作的授權控制項。您可以選擇性地定義更精細的授權控制，以控管動作特定的 MLflow 許可。如需詳細資訊，請參閱[建立動作特定的授權控制](#mlflow-create-tracking-server-update-iam-actions)。

## 在建立新網域時設定 MLflow IAM 許可
<a name="mlflow-create-tracking-server-iam-role-manager"></a>

為您的組織設定新的 Amazon SageMaker AI 網域時，您可以透過**使用者和 ML 活動**設定來設定網域服務角色的 IAM 許可。

**設定新網域時設定將 MLflow 與 SageMaker AI 搭配使用的 IAM 許可**

1. 使用 SageMaker AI 主控台設定新網域。在**設定 SageMaker AI 網域**頁面上，選擇**設定組織**。如需詳細資訊，請參閱[使用主控台進行自訂設定](onboard-custom.md#onboard-custom-instructions-console)。

1. 設定**使用者和 ML 活動**時，請選擇下列 MLflow 的 ML 活動：**使用 MLflow**、**管理 MLflow 追蹤伺服器**，以及 ** AWS Services for MLflow 所需的存取**。如需這些活動的詳細資訊，請參閱此程序後面的說明。

1. 完成新網域的設定和建立。

Amazon SageMaker 角色管理器提供下列 MLflow ML 活動：
+ **使用 MLflow**：此 ML 活動會授予網域服務角色許可來呼叫 MLflow REST API，以在 MLflow 中管理實驗、執行和模型。
+ **管理 MLflow 追蹤伺服器**：此 ML 活動授予網域服務角色許可以建立、更新、啟動、停止和刪除追蹤伺服器。
+ ** AWS Services for MLflow 所需的存取**：此 ML 活動提供存取 Amazon S3 和 SageMaker AI Model Registry 所需的網域服務角色許可。這可讓您使用網域服務角色做為追蹤伺服器服務角色。

如需角色管理員中 ML 活動的更多相關資訊，請參閱[機器學習 (ML) 活動參考](role-manager-ml-activities.md)。

## 在 IAM 主控台中建立必要的 IAM 服務角色
<a name="mlflow-create-tracking-server-iam-service-roles"></a>

如果您未建立或更新網域服務角色，則必須改為在 IAM 主控台中建立下列服務角色，才能建立和使用 MLflow 追蹤伺服器：
+ 追蹤伺服器 IAM 服務角色，追蹤伺服器可用來存取 SageMaker AI 資源
+ SageMaker AI 可用來建立和管理 MLflow 資源的 SageMaker AI IAM 服務角色

### 追蹤伺服器 IAM 服務角色的 IAM 政策
<a name="mlflow-create-tracking-server-iam-service-roles-ts"></a>

追蹤伺服器會使用追蹤伺服器 IAM 服務角色來存取其所需的資源，例如 Amazon S3 和 SageMaker Model Registry。

建立追蹤伺服器 IAM 服務角色時，請使用下列 IAM 信任政策：

------
#### [ JSON ]

****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Principal": {
                 "Service": [                     
                      "sagemaker.amazonaws.com"
                 ]
             },
             "Action": "sts:AssumeRole"
         }
     ]
 }
```

------

在 IAM 主控台中，將下列許可政策新增至您的追蹤伺服器服務角色：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:Put*",
                "s3:List*",
                "sagemaker:AddTags",
                "sagemaker:CreateModelPackageGroup",
                "sagemaker:CreateModelPackage",
                "sagemaker:UpdateModelPackage",
                "sagemaker:DescribeModelPackageGroup"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### SageMaker AI IAM 服務角色的 IAM 政策
<a name="mlflow-create-tracking-server-iam-service-roles-sm"></a>

存取 MLflow 追蹤伺服器的用戶端會使用 SageMaker AI 服務角色，並且需要呼叫 MLflow REST API 許可。SageMaker AI 服務角色還需要 SageMaker API 許可，才能建立、檢視更新、啟動、停止和刪除追蹤伺服器。

您可建立新的執行，或更新現有的角色。SageMaker AI 服務角色需要下列政策：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	     
    "Statement": [        
        {            
            "Effect": "Allow",            
            "Action": [
                "sagemaker-mlflow:*",
                "sagemaker:CreateMlflowTrackingServer",
                "sagemaker:ListMlflowTrackingServers",
                "sagemaker:UpdateMlflowTrackingServer",
                "sagemaker:DeleteMlflowTrackingServer",
                "sagemaker:StartMlflowTrackingServer",
                "sagemaker:StopMlflowTrackingServer",
                "sagemaker:CreatePresignedMlflowTrackingServerUrl"
            ],            
            "Resource": "*"        
        }        
    ]
}
```

------

## 建立動作特定的授權控制
<a name="mlflow-create-tracking-server-update-iam-actions"></a>

您必須設定 `sagemaker-mlflow` 的授權控制，也可以選擇性地設定動作特定的授權控制，以控管使用者在 MLflow 追蹤伺服器上擁有的更精細 MLflow 許可。

**注意**  
下列步驟假設您已經有 MLflow 追蹤伺服器的可用 ARN。若要了解如何建立追蹤伺服器，請參閱 [使用 Studio 建立追蹤伺服器](mlflow-create-tracking-server-studio.md) 或 [使用 建立追蹤伺服器 AWS CLI](mlflow-create-tracking-server-cli.md)。

下列命令會建立名為 `mlflow-policy.json` 的檔案，為您的追蹤伺服器提供所有可用 SageMaker AI MLflow 動作的 IAM 許可。您可以選擇性地限制使用者擁有的許可，方法是選擇您希望該使用者執行的特定動作。如需可用的動作清單，請參閱 [MLflow 支援的 IAM 動作](#mlflow-create-tracking-server-iam-actions)。

```
# Replace "Resource":"*" with "Resource":"TrackingServerArn" 
# Replace "sagemaker-mlflow:*" with specific actions

printf '{
    "Version": "2012-10-17",		 	 	     
    "Statement": [        
        {            
            "Effect": "Allow",            
            "Action": "sagemaker-mlflow:*",            
            "Resource": "*"        
        }        
    ]
}' > mlflow-policy.json
```

利用 AWS CLI使用 `mlflow-policy.json` 檔案建立 IAM 政策。

```
aws iam create-policy \
  --policy-name MLflowPolicy \
  --policy-document file://mlflow-policy.json
```

擷取您的帳戶 ID 並將政策連接至您的 IAM 角色。

```
# Get your account ID
aws sts get-caller-identity

# Attach the IAM policy using your exported role and account ID
aws iam attach-role-policy \
  --role-name $role_name \
  --policy-arn arn:aws:iam::123456789012:policy/MLflowPolicy
```

### MLflow 支援的 IAM 動作
<a name="mlflow-create-tracking-server-iam-actions"></a>

授權存取控制支援下列 SageMaker AI MLflow 動作：
+ sagemaker-mlflow:AccessUI
+ sagemaker-mlflow:CreateExperiment
+ sagemaker-mlflow:SearchExperiments
+ sagemaker-mlflow:GetExperiment
+ sagemaker-mlflow:GetExperimentByName
+ sagemaker-mlflow:DeleteExperiment
+ sagemaker-mlflow:RestoreExperiment
+ sagemaker-mlflow:UpdateExperiment
+ sagemaker-mlflow:CreateRun
+ sagemaker-mlflow:DeleteRun
+ sagemaker-mlflow:RestoreRun
+ sagemaker-mlflow:GetRun
+ sagemaker-mlflow:LogMetric
+ sagemaker-mlflow:LogBatch
+ sagemaker-mlflow:LogModel
+ sagemaker-mlflow:LogInputs
+ sagemaker-mlflow:SetExperimentTag
+ sagemaker-mlflow:SetTag
+ sagemaker-mlflow:DeleteTag
+ sagemaker-mlflow:LogParam
+ sagemaker-mlflow:GetMetricHistory
+ sagemaker-mlflow:SearchRuns
+ sagemaker-mlflow:ListArtifacts
+ sagemaker-mlflow:UpdateRun
+ sagemaker-mlflow:CreateRegisteredModel
+ sagemaker-mlflow:GetRegisteredModel
+ sagemaker-mlflow:RenameRegisteredModel
+ sagemaker-mlflow:UpdateRegisteredModel
+ sagemaker-mlflow:DeleteRegisteredModel
+ sagemaker-mlflow:GetLatestModelVersions
+ sagemaker-mlflow:CreateModelVersion
+ sagemaker-mlflow:GetModelVersion
+ sagemaker-mlflow:UpdateModelVersion
+ sagemaker-mlflow:DeleteModelVersion
+ sagemaker-mlflow:SearchModelVersions
+ sagemaker-mlflow:GetDownloadURIForModelVersionArtifacts
+ sagemaker-mlflow:TransitionModelVersionStage
+ sagemaker-mlflow:SearchRegisteredModels
+ sagemaker-mlflow:SetRegisteredModelTag
+ sagemaker-mlflow:DeleteRegisteredModelTag
+ sagemaker-mlflow:DeleteModelVersionTag
+ sagemaker-mlflow:DeleteRegisteredModelAlias
+ sagemaker-mlflow:SetRegisteredModelAlias
+ sagemaker-mlflow:GetModelVersionByAlias
+ sagemaker-mlflow:FinalizeLoggedModel
+ sagemaker-mlflow:GetLoggedModel
+ sagemaker-mlflow:DeleteLoggedModel
+ sagemaker-mlflow:SearchLoggedModels
+ sagemaker-mlflow:SetLoggedModelTags
+ sagemaker-mlflow:DeleteLoggedModelTag
+ sagemaker-mlflow:ListLoggedModelArtifacts
+ sagemaker-mlflow:LogLoggedModelParams
+ sagemaker-mlflow:LogOutputs

# 使用 Studio 建立追蹤伺服器
<a name="mlflow-create-tracking-server-studio"></a>

您可以從 SageMaker Studio MLflow UI 建立追蹤伺服器。如果您遵循**為組織設定**工作流程建立 SageMaker Studio 網域，則 SageMaker Studio 網域的服務角色具有足夠的許可，可擔任 SageMaker AI IAM 服務角色和追蹤伺服器 IAM 服務角色。

使用下列步驟從 SageMaker Studio MLflow UI 建立追蹤伺服器：

1. 從 SageMaker AI 主控台導覽至 Studio。請確定您使用的是新的 Studio 體驗，並且已從 Studio Classic 更新。如需詳細資訊，請參閱[從 Amazon SageMaker Studio Classic 遷移](studio-updated-migrate.md)。

1. 在 Studio UI 的**應用程式**窗格中選擇 **MLflow**。

1. **(選用)** 如果尚未建立追蹤伺服器，或者如果您需要建立新的追蹤伺服器，您可以選擇**建立**。然後提供唯一的追蹤伺服器名稱和用於成品儲存的 S3 URI，並建立追蹤伺服器。您可以選擇性地選擇**設定**以自訂更精細的追蹤伺服器。

1. 在 **MLflow 追蹤伺服器**窗格中選擇**建立**。Studio 網域 IAM 服務角色用於追蹤伺服器 IAM 服務角色。

1. 為您的追蹤伺服器提供唯一的名稱，並為追蹤伺服器成品存放區提供 Amazon S3 URI。您的追蹤伺服器和 Amazon S3 儲存貯體必須位於**相同的 AWS 區域**。
**重要**  
當您為成品存放區提供 Amazon S3 URI 時，請確保 Amazon S3 儲存貯體與您的 AWS 區域 追蹤伺服器位於相同位置。**不支援跨區域成品儲存**。

1. **(選用)** 選擇**設定**以變更預設設定，例如追蹤伺服器大小、標籤和 IAM 服務角色。

1. 選擇**建立**。
**注意**  
最多可能需要 25 分鐘才能完成追蹤伺服器的建立。如果追蹤伺服器需要超過 25 分鐘才能建立，請檢查您是否具有必要的 IAM 許可。如需 IAM 使用者許可的詳細資訊，請參閱[設定 MLflow 的 IAM 許可。](mlflow-create-tracking-server-iam.md)。當您成功建立追蹤伺服器時，它會自動啟動。

1. 建立追蹤伺服器後，您可以啟動 MLflow UI。如需詳細資訊，請參閱[使用預先簽章的 URL 啟動 MLflow UI](mlflow-launch-ui.md)。

![\[Studio UI 中的建立 MLflow 追蹤伺服器提示。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mlflow/mlflow-studio-create.png)


# 使用 建立追蹤伺服器 AWS CLI
<a name="mlflow-create-tracking-server-cli"></a>

您可以使用 建立追蹤伺服器 AWS CLI ，以獲得更精細的安全性自訂。

## 先決條件
<a name="mlflow-create-tracking-server-cli-prereqs"></a>

若要使用 建立追蹤伺服器 AWS CLI，您必須具有下列項目：
+ **存取終端機。**這可能包括本機 IDEs、Amazon EC2 執行個體或 AWS CloudShell。
+ **存取開發環境。**這可能包括 Studio 或 Studio Classic 內的本機 IDE 或 Jupyter 筆記本環境。
+ **已設定的 AWS CLI 安裝**。如需詳細資訊，請參閱[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。
+ **具有適當許可的 IAM 角色**。下列步驟需要您的環境具有 `iam:CreateRole`、`iam:AttachRolePolicy`、`iam:CreatePolicy` 和 `iam:ListPolicies`許可。用於執行本使用者指南中步驟的角色需要這些許可。本指南中的指示會建立 IAM 角色，做為 MLflow 追蹤伺服器的執行角色，以便其存取 Amazon S3 儲存貯體中的資料。此外，建立政策是為了將 IAM 角色提供給使用者，用於透過 MLflow SDK 許可與追蹤伺服器互動以呼叫 MLflow API 。如需詳細資訊，請參閱[修改許可政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy)。

  如果使用 SageMaker Studio 筆記本，請使用這些 IAM 許可更新您 Studio 使用者設定檔的服務角色。若要更新服務角色，請導覽至 SageMaker AI 主控台，然後選取您正在使用的網域。然後在網域下，選取您正在使用的使用者設定檔。您會在那裡看到列出的服務角色。導覽至 IAM 主控台，在**角色**下搜尋服務角色，並使用允許 `iam:CreateRole`、`iam:CreatePolicy`、`iam:AttachRolePolicy` 和 `iam:ListPolicies` 動作的政策更新您的角色。

## 設定 AWS CLI 模型
<a name="mlflow-create-tracking-server-cli-setup"></a>

請依照終端機中的這些命令列步驟，設定 AWS CLI Amazon SageMaker AI with MLflow。

1. 安裝更新版本的 AWS CLI。如需詳細資訊，請參閱《AWS CLI 使用者指南》**中的[安裝或更新最新版 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

1. 使用以下命令確認 AWS CLI 已安裝 ：

   ```
   aws sagemaker help
   ```

   按 `q` 退出提示。

   如需故障診斷協助，請參閱[疑難排解常見的設定問題](mlflow-troubleshooting.md)。

## 設定 MLflow 基礎設施
<a name="mlflow-create-tracking-server-cli-infra-setup"></a>

下一節說明如何設定 MLflow 追蹤伺服器，以及追蹤伺服器所需的 Amazon S3 儲存貯體和 IAM 角色。

### 建立 S3 儲存貯體
<a name="mlflow-infra-setup-s3-bucket"></a>

在終端機中，使用下列命令來建立一般用途的 Amazon S3 儲存貯體：

**重要**  
當您為成品存放區提供 Amazon S3 URI 時，請確保 Amazon S3 儲存貯體與您的 AWS 區域 追蹤伺服器位於相同位置。**不支援跨區域成品儲存**。

```
bucket_name=bucket-name
region=valid-region

aws s3api create-bucket \
  --bucket $bucket_name \
  --region $region \
  --create-bucket-configuration LocationConstraint=$region
```

輸出格式應類似以下內容：

```
{
    "Location": "/bucket-name"
}
```

### 設定 IAM 信任政策
<a name="mlflow-create-tracking-server-cli-trust-policy"></a>

使用下列步驟來建立 IAM 信任政策。如需有關角色和信任政策的詳細資訊，請參閱《AWS Identity and Access Management 使用者指南》**中的[角色術語和概念](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html)。

1. 在您的終端機中，使用下列命令來建立名為 `mlflow-trust-policy.json` 的檔案。

   ```
   cat <<EOF > /tmp/mlflow-trust-policy.json
   {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": [                     
                         "sagemaker.amazonaws.com"
                    ]
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
   EOF
   ```

1. 在您的終端機中，使用下列命令來建立名為 `custom-policy.json` 的檔案。

   ```
   cat <<EOF > /tmp/custom-policy.json
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:Get*",
                   "s3:Put*",
                   "sagemaker:AddTags",
                   "sagemaker:CreateModelPackageGroup",
                   "sagemaker:CreateModelPackage",
                   "sagemaker:DescribeModelPackageGroup",
                   "sagemaker:UpdateModelPackage",
                   "s3:List*"
               ],
               "Resource": "*"
           }
       ]
   }
   EOF
   ```

1. 使用信任政策檔案建立角色。然後，連接允許 MLflow 存取您帳戶中 Amazon S3 和 SageMaker Model Registry 的 IAM 角色政策。MLflow 必須能夠存取追蹤伺服器成品存放區適用的 Amazon S3，並能存取 SageMaker Model Registry 以自動註冊模型。
**注意**  
如果您正在更新現有角色，請改用下列命令：`aws iam update-assume-role-policy --role-name $role_name --policy-document file:///tmp/mlflow-trust-policy.json`。

   ```
   role_name=role-name
   
   aws iam  create-role \
     --role-name $role_name \
     --assume-role-policy-document file:///tmp/mlflow-trust-policy.json
   
   aws iam put-role-policy \
     --role-name $role_name \
     --policy-name custom-policy \
     --policy-document file:///tmp/custom-policy.json
   
   role_arn=$(aws iam get-role --role-name  $role_name --query 'Role.Arn' --output text)
   ```

## 建立 MLflow 追蹤伺服器
<a name="mlflow-create-tracking-server-cli-create"></a>

在終端機中，使用 `create-mlflow-tracking-server` API 在 AWS 區域 您選擇的 中建立追蹤伺服器。此程序最多需要 25 分鐘的時間。

您可以選擇性地使用 `--tracking-server-config` 參數指定追蹤伺服器的大小。在 `"Small"`、`"Medium"` 與 `"Large"` 之間進行選擇。預設 MLflow 追蹤伺服器組態大小為 `"Small"`。您可以根據追蹤伺服器的預期使用情況，例如記錄的資料量、使用者數量和使用頻率，來選擇大小。如需詳細資訊，請參閱[MLflow 追蹤伺服器大小](mlflow.md#mlflow-create-tracking-server-sizes)。

下列命令會建立一個自動模型註冊已啟用的新追蹤伺服器。若要停用自動模型註冊，請指定 `--no-automatic-model-registration`。

建立追蹤伺服器後，您可以啟動 MLflow UI。如需詳細資訊，請參閱[使用預先簽章的 URL 啟動 MLflow UI](mlflow-launch-ui.md)。

**注意**  
最多可能需要 25 分鐘才能完成追蹤伺服器的建立。如果追蹤伺服器需要超過 25 分鐘才能建立，請檢查您是否具有必要的 IAM 許可。如需 IAM 使用者許可的詳細資訊，請參閱[設定 MLflow 的 IAM 許可。](mlflow-create-tracking-server-iam.md)。當您成功建立追蹤伺服器時，它會自動啟動。

當您建立追蹤伺服器時，建議您指定最新版本。如需有關可用版本的資訊，請參閱[追蹤伺服器版本](mlflow.md#mlflow-create-tracking-server-versions)。

根據預設，建立的追蹤伺服器是最新版本。不過，我們建議您一律明確指定最新版本，因為基礎 MLflow API 可能會變更。

```
ts_name=tracking-server-name
region=valid-region
version=valid-version        


aws sagemaker create-mlflow-tracking-server \
 --tracking-server-name $ts_name \
 --artifact-store-uri s3://$bucket_name \
 --role-arn $role_arn \
 --automatic-model-registration \
 --region $region \
 --mlflow-version $version
```

輸出格式應類似以下內容：

```
{
    "TrackingServerArn": "arn:aws:sagemaker:region:123456789012:mlflow-tracking-server/tracking-server-name"
}
```

**重要**  
**請記下追蹤伺服器 ARN 以供日後使用。**您也需要 `$bucket_name` 進行清除步驟。

# 使用預先簽章的 URL 啟動 MLflow UI
<a name="mlflow-launch-ui"></a>

您可以使用預先簽章的 URL 存取 MLflow UI 來檢視實驗。您可以透過 Studio 或使用 AWS CLI 在您選擇的終端機中啟動 MLflow UI。

## 使用 Studio 啟動 MLflow UI
<a name="mlflow-launch-ui-studio"></a>

建立追蹤伺服器後，您可以直接從 Studio 啟動 MLflow UI。

1. 從 SageMaker AI 主控台導覽至 Studio。請確定您使用的是新的 Studio 體驗，並且已從 Studio Classic 更新。如需更多詳細資訊，請參閱 [從 Amazon SageMaker Studio Classic 遷移](studio-updated-migrate.md)。

1. 在 Studio UI 的**應用程式**窗格中選擇 **MLflow**。

1. **(選用)** 如果尚未建立追蹤伺服器，或者如果您需要建立新的追蹤伺服器，您可以選擇**建立**。然後提供唯一的追蹤伺服器名稱和用於成品儲存的 S3 URI，並建立追蹤伺服器。您可以選擇性地選擇**設定**以自訂更精細的追蹤伺服器。

1. 在 **MLflow 追蹤伺服器**窗格中找到您選擇的追蹤伺服器。如果追蹤伺服器**關閉**，請啟動追蹤伺服器。

1. 選擇追蹤伺服器窗格右上角的垂直選單圖示。然後，選擇**開啟 MLflow**。這會在目前瀏覽器的新索引標籤中啟動預先簽章的 URL。

![\[透過 Studio UI 中的 MLflow 追蹤伺服器窗格開啟預先簽章 URL 的選項。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mlflow/mlflow-studio-ui.png)


## 使用 AWS CLI 啟動 MLflow UI
<a name="mlflow-launch-ui-cli"></a>

您可以使用預先簽章的 URL 存取 MLflow UI 來檢視實驗。

在您的終端機中，使用 `create-presigned-mlflow-tracking-server-url` API 產生預先簽章的 URL。

```
aws sagemaker create-presigned-mlflow-tracking-server-url \
  --tracking-server-name $ts_name \
  --session-expiration-duration-in-seconds 1800 \
  --expires-in-seconds 300 \
  --region $region
```

輸出格式應類似以下內容：

```
{
    "AuthorizedUrl": "https://unique-key.us-west-2.experiments.sagemaker.aws.a2z.com/auth?authToken=example_token"
}
```

將整個預先簽章的 URL 複製到您選擇的瀏覽器。您可以使用新的索引標籤或新的私有視窗。按 `q` 退出提示。

`--session-expiration-duration-in-seconds` 參數會決定 MLflow UI 工作階段保持有效的時間長度。工作階段持續時間是建立新的預先簽章 URL 之前，MLflow UI 可在瀏覽器中載入的時間長度。最小工作階段持續時間為 30 分鐘 (1800 秒)，最大工作階段持續時間為 12 小時 (43200 秒)。如果未指定其他持續時間，則預設工作階段持續時間為 12 小時。

`--expires-in-seconds parameter` 決定預先簽章 URL 保持有效的時間長度。最短 URL 過期長度為 5 秒，而最長 URL 過期長度為 5 分鐘 (300 秒)。預設 URL 過期長度為 300 秒。預先簽章的 URL 只能使用一次。

視窗應看起來如下列內容。

![\[建立並使用預先簽章 URL 後啟動的 MLflow UI\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mlflow/mlflow-ui.png)


# 將 MLflow 與您的環境整合
<a name="mlflow-track-experiments"></a>

下頁說明如何在開發環境中開始使用 MLflow SDK 和 AWS MLflow 外掛程式。這可能包括 Studio 或 Studio Classic 內的本機 IDE 或 Jupyter 筆記本環境。

Amazon SageMaker AI 使用 MLflow 外掛程式來自訂 MLflow Python 用戶端的行為並整合 AWS 工具。 AWS MLflow 外掛程式會使用 Signature 第 4 版來驗證使用 MLflow 進行的 API 呼叫。 [AWS](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) AWS MLflow 外掛程式可讓您使用追蹤伺服器 ARN 連線至 MLflow 追蹤伺服器。如需外掛程式的詳細資訊，請參閱 [AWS MLflow 外掛程式](https://pypi.org/project/sagemaker-mlflow/)和 [MLflow 外掛程式](https://mlflow.org/docs/latest/plugins.html)。

**重要**  
開發環境中的使用者 IAM 許可必須能夠存取任何相關的 MLflow API 動作，才能成功執行提供的範例。如需詳細資訊，請參閱[設定 MLflow 的 IAM 許可。](mlflow-create-tracking-server-iam.md)。

如需使用 MLflow SDK 的詳細資訊，請參閱 MLflow 文件中的 [Python API](https://mlflow.org/docs/2.13.2/python_api/index.html)。

## 安裝 MLflow 和 AWS MLflow 外掛程式
<a name="mlflow-track-experiments-install-plugin"></a>

在您的開發環境中，同時安裝 MLflow 和 AWS MLflow 外掛程式。

```
pip install sagemaker-mlflow
```

為了確保 MLflow 用戶端和追蹤伺服器之間的相容性，請根據您的追蹤伺服器版本使用對應的 MLflow 版本：
+ 對於追蹤伺服器 2.13.x，請使用 `mlflow==2.13.2`
+ 對於追蹤伺服器 2.16.x，請使用 `mlflow==2.16.2`
+ 對於追蹤伺服器 3.0.x，請使用 `mlflow==3.0.0`

若要查看哪些版本的 MLflow 可與 SageMaker AI 搭配使用，請參閱 [追蹤伺服器版本](mlflow.md#mlflow-create-tracking-server-versions)。

## 連線至 MLflow 追蹤伺服器
<a name="mlflow-track-experiments-tracking-server-connect"></a>

使用其 ARN 從開發環境使用 `[mlflow.set\$1tracking\$1uri](https://mlflow.org/docs/2.13.2/python_api/mlflow.html#mlflow.set_tracking_uri)` 連線至追蹤伺服器：

```
import mlflow

arn = "YOUR-TRACKING-SERVER-ARN"

mlflow.set_tracking_uri(arn)
```

# 在訓練期間記錄指標、參數和 MLflow 模型
<a name="mlflow-track-experiments-log-metrics"></a>

連線至 MLflow 追蹤伺服器後，您可以使用 MLflow SDK 記錄指標、參數和 MLflow 模型。

## 記錄訓練指標
<a name="mlflow-track-experiments-log-metrics-example"></a>

在 MLflow 訓練執行中使用 `mlflow.log_metric` 來追蹤指標。如需使用 MLflow 記錄指標的詳細資訊，請參閱`[mlflow.log\$1metric](https://mlflow.org/docs/2.13.2/python_api/mlflow.html#mlflow.log_metric)`。

```
with mlflow.start_run():
    mlflow.log_metric("foo", 1)
    
print(mlflow.search_runs())
```

此指令碼應建立實驗執行，並列印出類似以下的輸出：

```
run_id experiment_id status artifact_uri ... tags.mlflow.source.name tags.mlflow.user tags.mlflow.source.type tags.mlflow.runName
0 607eb5c558c148dea176d8929bd44869 0 FINISHED s3://dddd/0/607eb5c558c148dea176d8929bd44869/a... ... file.py user-id LOCAL experiment-code-name
```

在 MLflow UI 中，此範例應類似於以下內容：

![\[最上層 MLflow 實驗選單中顯示的實驗。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mlflow/mlflow-ui-experiments.png)


選擇**執行名稱**以查看更多執行詳細資訊。

![\[MLflow UI 中實驗執行頁面上顯示的實驗參數。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mlflow/mlflow-ui-foo.png)


## 日誌參數和模型
<a name="mlflow-track-experiments-log-params-models"></a>

**注意**  
下列範例需要您的環境具有 `s3:PutObject` 許可。此許可應與 MLflow SDK 使用者登入或聯合到其 AWS 帳戶時所擔任的 IAM 角色相關聯。如需詳細資訊，請參閱[使用者和角色政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html)。

下列範例使用 SKLearn 引導您完成基本模型訓練工作流程，並說明如何在 MLflow 實驗執行中追蹤該模型。此範例會記錄參數、指標和模型成品。

```
import mlflow

from mlflow.models import infer_signature

import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

# This is the ARN of the MLflow Tracking Server you created
mlflow.set_tracking_uri(your-tracking-server-arn)
mlflow.set_experiment("some-experiment")

# Load the Iris dataset
X, y = datasets.load_iris(return_X_y=True)

# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Define the model hyperparameters
params = {"solver": "lbfgs", "max_iter": 1000, "multi_class": "auto", "random_state": 8888}

# Train the model
lr = LogisticRegression(**params)
lr.fit(X_train, y_train)

# Predict on the test set
y_pred = lr.predict(X_test)

# Calculate accuracy as a target loss metric
accuracy = accuracy_score(y_test, y_pred)

# Start an MLflow run and log parameters, metrics, and model artifacts
with mlflow.start_run():
    # Log the hyperparameters
    mlflow.log_params(params)

    # Log the loss metric
    mlflow.log_metric("accuracy", accuracy)

    # Set a tag that we can use to remind ourselves what this run was for
    mlflow.set_tag("Training Info", "Basic LR model for iris data")

    # Infer the model signature
    signature = infer_signature(X_train, lr.predict(X_train))

    # Log the model
    model_info = mlflow.sklearn.log_model(
        sk_model=lr,
        name="iris_model", # Changed from artifact_path to name for MLflow 3.0
        signature=signature,
        input_example=X_train,
        registered_model_name="tracking-quickstart",
    )
```

在 MLflow UI 中，選擇左側導覽窗格中的實驗名稱，以探索所有相關聯的執行。選擇**執行名稱**以查看每個執行的詳細資訊。在此範例中，此執行的實驗執行頁面應如下所示。

![\[在 MLflow UI 中執行之實驗的追蹤參數。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mlflow/mlflow-ui-parameters.png)


此範例會記錄邏輯迴歸模型。在 MLflow UI 中，您也應該會看到記錄的模型成品。

![\[MLflow UI 中實驗執行的已追蹤模型成品。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mlflow/mlflow-ui-model-artifacts.png)


# 自動向 SageMaker 模型註冊庫註冊 SageMaker AI 模型
<a name="mlflow-track-experiments-model-registration"></a>

您可以記錄 MLflow 模型，並使用 Python SDK 或直接透過 MLflow UI 自動向 SageMaker 模型註冊庫註冊它們。

**注意**  
請勿在模型名稱中使用空格。雖然 MLflow 支援具有空格的模型名稱，但 SageMaker AI 模型套件不支援。如果您在模型名稱中使用空格，則自動註冊程序會失敗。

## 使用 SageMaker Python SDK 註冊模型
<a name="mlflow-track-experiments-model-registration-sdk"></a>

在 MLflow 用戶端內使用 `create_registered_model` 在 SageMaker AI 中自動建立與您選擇的現有 MLflow 模型對應的模型套件群組。

```
import mlflow 
from mlflow import MlflowClient

mlflow.set_tracking_uri(arn)

client = MlflowClient()

mlflow_model_name = 'AutoRegisteredModel'
client.create_registered_model(mlflow_model_name, tags={"key1": "value1"})
```

在模型訓練期間，使用 `mlflow.register_model()` 自動向 SageMaker 模型註冊庫註冊模型。註冊 MLflow 模型時，會在 SageMaker AI 中建立對應的模型套件群組和模型套件版本。

```
import mlflow.sklearn
from mlflow.models import infer_signature
from sklearn.datasets import make_regression
from sklearn.ensemble import RandomForestRegressor

mlflow.set_tracking_uri(arn)
params = {"n_estimators": 3, "random_state": 42}
X, y = make_regression(n_features=4, n_informative=2, random_state=0, shuffle=False)

# Log MLflow entities
with mlflow.start_run() as run:
    rfr = RandomForestRegressor(**params).fit(X, y)
    signature = infer_signature(X, rfr.predict(X))
    mlflow.log_params(params)
    mlflow.sklearn.log_model(rfr, artifact_path="sklearn-model", signature=signature)

model_uri = f"runs:/{run.info.run_id}/sklearn-model"
mv = mlflow.register_model(model_uri, "RandomForestRegressionModel")

print(f"Name: {mv.name}")
print(f"Version: {mv.version}")
```

## 使用 MLflow UI 註冊模型
<a name="mlflow-track-experiments-model-registration-ui"></a>

您也可以直接在 MLflow UI 中使用 SageMaker 模型註冊庫註冊模型。在 MLflow UI 的**模型**選單中，選擇**建立模型**。以這種方式新建立的任何模型都會新增至 SageMaker 模型註冊庫。

![\[在 MLflow UI 中建立模型註冊庫。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mlflow/mlflow-ui-register-model.png)


在實驗追蹤期間記錄模型後，導覽至 MLflow UI 中的執行頁面。選擇**成品**窗格，然後選擇右上角的**註冊模型**，以在 MLflow 和 SageMaker 模型註冊庫中註冊模型版本。

![\[在 MLflow UI 中建立模型註冊庫。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mlflow/mlflow-ui-register-model-2.png)


## 在 Studio 中檢視已註冊的模型
<a name="mlflow-track-experiments-model-registration-ui-view"></a>

在 SageMaker Studio 登陸頁面中，選擇左側導覽窗格中的**模型**以檢視已註冊的模型。如需開始使用 Studio 的相關資訊，請參閱[啟動 Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html)。

![\[在 Studio UI 的 SageMaker 模型註冊庫中註冊的 MLflow 模型。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mlflow/mlflow-studio-model-registry.png)


# 使用 `ModelBuilder` 部署 MLflow 模型
<a name="mlflow-track-experiments-model-deployment"></a>

您可以使用 Amazon SageMaker AI Model Builder 將 MLflow 模型部署至 SageMaker AI 端點。如需 Amazon SageMaker AI Model Builder 的詳細資訊，請參閱[使用 ModelBuilder 在 Amazon SageMaker AI 中建立模型](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-modelbuilder-creation.html)。

`ModelBuilder` 是一種 Python 類別，採用架構模型或使用者指定的推論規格，並將其轉換為可部署模型。如需 `ModelBuilder` 類別的詳細資訊，請參閱 [ModelBuilder](https://sagemaker.readthedocs.io/en/stable/api/inference/model_builder.html#sagemaker.serve.builder.model_builder.ModelBuilder)。

若要使用 `ModelBuilder` 部署 MLflow 模型，請在 `model_metadata["MLFLOW_MODEL_PATH"]` 屬性中提供 MLflow 成品的路徑。如需有效模型路徑輸入格式的詳細資訊，請繼續閱讀：

**注意**  
如果您以 MLflow 執行 ID 或 MLflow 模型註冊庫路徑的形式提供模型成品路徑，則您還必須透過 `model_metadata["MLFLOW_TRACKING_ARN"]` 屬性指定追蹤伺服器 ARN。
+ [在 `model_metadata` 中需要 ARN 的模型路徑](#mlflow-track-experiments-model-deployment-with-arn)
+ [在 `model_metadata` 中不需要 ARN 的模型路徑](#mlflow-track-experiments-model-deployment-without-arn)

## 在 `model_metadata` 中需要 ARN 的模型路徑
<a name="mlflow-track-experiments-model-deployment-with-arn"></a>

下列模型路徑確實需要您在部署的 `model_metadata` 中指定 ARN：
+ MLflow [執行 ID](https://mlflow.org/docs/latest/python_api/mlflow.entities.html?highlight=mlflow%20info#mlflow.entities.RunInfo.run_id)：`runs:/aloy-run-id/run-relative/path/to/model`
+ MLflow [模型註冊庫路徑](https://mlflow.org/docs/latest/model-registry.html#find-registered-models)：`models:/model-name/model-version`

## 在 `model_metadata` 中不需要 ARN 的模型路徑
<a name="mlflow-track-experiments-model-deployment-without-arn"></a>

下列模型路徑不需要您在部署的 `model_metadata` 中指定 ARN：
+ 本機模型路徑：`/Users/me/path/to/local/model`
+ Amazon S3 模型路徑：`s3://amzn-s3-demo-bucket/path/to/model`
+ 模型套件 ARN：`arn:aws:sagemaker:region:account-id:mlflow-tracking-server/tracking-server-name`

如需 MLflow 模型部署如何與 Amazon SageMaker AI 搭配使用的詳細資訊，請參閱 MLflow 文件中的[將 MLflow 模型部署到 Amazon SageMaker AI](https://mlflow.org/docs/latest/deployment/deploy-model-to-sagemaker.html)。

如果使用 Amazon S3 路徑，您可以使用下列命令找到已註冊模型的路徑：

```
registered_model = client.get_registered_model(name='AutoRegisteredModel')
source_path = registered_model.latest_versions[0].source
```

以下範例概述如何使用 `ModelBuilder` 和 MLflow 模型註冊庫路徑部署 MLflow 模型。由於此範例以 MLflow 模型註冊庫路徑的形式提供模型成品路徑，因此對 `ModelBuilder` 的呼叫也必須透過 `model_metadata["MLFLOW_TRACKING_ARN"]` 屬性指定追蹤伺服器 ARN。

**重要**  
您必須使用 [2.224.0](https://pypi.org/project/sagemaker/2.224.0/) 版或更新版本的 SageMaker Python SDK，才能使用 `ModelBuilder`。

**注意**  
使用下列程式碼範例做為參考。如需示範如何部署已註冊 MLflow 模型的end-to-end範例，請參閱 [使用範例 Jupyter 筆記本的 MLflow 教學課程](mlflow-tutorials.md)。

```
from sagemaker.serve import ModelBuilder
from sagemaker.serve.mode.function_pointers import Mode
from sagemaker.serve import SchemaBuilder

my_schema = SchemaBuilder(
    sample_input=sample_input, 
    sample_output=sample_output
)

model_builder = ModelBuilder(
    mode=Mode.SAGEMAKER_ENDPOINT,
    schema_builder=my_schema,
    role_arn="Your-service-role-ARN",
    model_metadata={
        # both model path and tracking server ARN are required if you use an mlflow run ID or mlflow model registry path as input
        "MLFLOW_MODEL_PATH": "models:/sklearn-model/1"
        "MLFLOW_TRACKING_ARN": "arn:aws:sagemaker:region:account-id:mlflow-tracking-server/tracking-server-name"
    }
)
model = model_builder.build()
predictor = model.deploy( initial_instance_count=1, instance_type="ml.c6i.xlarge" )
```

若要維持使用 `ModelBuilder` 部署 MLflow 模型的[歷程追蹤](https://docs.aws.amazon.com/sagemaker/latest/dg/lineage-tracking.html)，您必須具有下列 IAM 許可：
+ `sagemaker:CreateArtifact`
+ `sagemaker:ListArtifacts`
+ `sagemaker:AddAssociation`
+ `sagemaker:DescribeMLflowTrackingServer`

**重要**  
歷程追蹤是選用的。部署成功，無需與歷程追蹤相關的許可。如果您未設定許可，您會在呼叫 `model.deploy()` 時看到歷程追蹤許可錯誤。不過，端點部署仍可成功，您可以直接與模型端點互動。如果已設定上述許可，則會自動建立並儲存歷程追蹤資訊。

如需詳細資訊和端對端範例，請參閱[使用範例 Jupyter 筆記本的 MLflow 教學課程](mlflow-tutorials.md)。

# 使用範例 Jupyter 筆記本的 MLflow 教學課程
<a name="mlflow-tutorials"></a>

下列教學課程示範如何將 MLflow 實驗整合到您的訓練工作流程。如要清除筆記本教學課程建立的資源，請參閱[清除 MLflow 資源](mlflow-cleanup.md)。

您可以在 Studio 中使用 JupyterLab 執行 SageMaker AI 範例筆記本。如需 JupyterLab 詳細資訊，請參閱[JupyterLab 使用者指南](studio-updated-jl-user-guide.md)。

探索下列範例筆記本：
+ [使用 MLflow 訓練 SageMaker](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-mlflow/sagemaker_training_mlflow.html) — 在指令碼模式下使用 SageMaker AI 訓練和註冊 Scikit-Learn 模型。了解如何將 MLflow 實驗整合到您的訓練指令碼。如需有模型訓練的詳細資訊，請參閱[使用 Amazon SageMaker AI 訓練模型](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html)。
+ [具有 MLflow 的 SageMaker AI HPO](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-mlflow/sagemaker_hpo_mlflow.html) — 了解如何使用 Amazon SageMaker AI 自動模型調校 (AMT) 和 SageMaker AI Python SDK 在 MLflow 中追蹤 ML 實驗。每個訓練迭代都會記錄為同一個實驗中的執行。如需超參數最佳化 (HPO) 的詳細資訊，請參閱[使用 Amazon SageMaker AI 執行自動模型調校](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning.html)。
+ [具有 MLflow 的 Amazon SageMaker Pipelines](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-mlflow/sagemaker_pipelines_mlflow.html) — 使用 Amazon SageMaker Pipelines 和 MLflow 來訓練、評估與註冊模型。此筆記本使用 `@step` 裝飾項目來建置 SageMaker AI 管道。如需管道和 `@step` 裝飾項目的詳細資訊，請參閱[使用 `@step` 裝飾的函數建立管道](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-step-decorator-create-pipeline.html)。
+ [將 MLflow 模型部署至 SageMaker AI](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-mlflow/sagemaker_deployment_mlflow.html) — 使用 SciKit-Learn 訓練決策樹模型。然後，使用 Amazon SageMaker AI `ModelBuilder` 將模型部署到 SageMaker AI 端點，並使用部署的模型執行推論。如需 `ModelBuilder` 的相關資訊，請參閱 [使用 `ModelBuilder` 部署 MLflow 模型](mlflow-track-experiments-model-deployment.md)。

# 疑難排解常見的設定問題
<a name="mlflow-troubleshooting"></a>

探索常見的疑難排解問題。

## 找不到名為 'groff' 的可執行檔
<a name="mlflow-troubleshooting-groff"></a>

使用 AWS CLI 時，您可能會遇到下列錯誤：`Could not find executable named 'groff'`。

如果使用 Mac，您可以使用下列命令來解決此問題：

```
brew install groff
```

在 Linux 機器上，使用以下命令：

```
sudo apt-get update -y
sudo apt-get install groff -y
```

## 找不到命令：jq
<a name="mlflow-troubleshooting-jq"></a>

建立 AuthZ 許可政策 JSON 檔案時，您可能會遇到下列錯誤：`jq: command not found`。

如果使用 Mac，您可以使用下列命令來解決此問題：

```
brew install jq
```

在 Linux 機器上，使用以下命令：

```
sudo apt-get update -y
sudo apt-get install jq -y
```

## AWS MLflow 外掛程式安裝速度
<a name="mlflow-troubleshooting-speeds"></a>

使用 Mac Python 環境時，安裝 AWS MLflow 外掛程式可能需要幾分鐘的時間。

## UnsupportedModelRegistryStoreURIException
<a name="mlflow-troubleshooting-uri-exception"></a>

如果您看到 `UnsupportedModelRegistryStoreURIException`，請執行下列動作：

1. 重新啟動 Jupyter 筆記本核心。

1. 重新安裝 AWS MLflow 外掛程式：

   ```
   !pip install --force-reinstall sagemaker-mlflow
   ```

# 清除 MLflow 資源
<a name="mlflow-cleanup"></a>

當您不再需要任何資源時，建議您將其刪除。您可以透過 Amazon SageMaker Studio 或使用 AWS CLI刪除追蹤伺服器。您可以使用 AWS CLI 或直接在 AWS 主控台中刪除其他資源，例如 Amazon S3 儲存貯體、IAM 角色和 IAM 政策。

**重要**  
在您刪除追蹤伺服器本身之前，請不要刪除您用來建立的 IAM 角色。否則，您將無法存取追蹤伺服器。

## 停止追蹤伺服器
<a name="mlflow-cleanup-stop-server"></a>

我們建議您在追蹤伺服器不再使用時加以停止。您可以在 Studio 中或使用 停止追蹤伺服器 AWS CLI。

### 使用 Studio 停止追蹤伺服器
<a name="mlflow-cleanup-stop-server-ui"></a>

若要在 Studio 中停止追蹤伺服器：

1. 導覽至 Studio。

1. 在 Studio UI 的**應用程式**窗格中選擇 **MLflow**。

1. 在 **MLflow 追蹤伺服器**窗格中找到您選擇的追蹤伺服器。選擇追蹤伺服器窗格右上角的**停止**圖示。
**注意**  
如果您的追蹤伺服器**關閉**，您會看到**開始**圖示。如果追蹤伺服器為**開啟**，您會看到**停止**圖示。

### 使用 停止追蹤伺服器 AWS CLI
<a name="mlflow-cleanup-stop-server-cli"></a>

若要使用 停止追蹤伺服器 AWS CLI，請使用下列命令：

```
aws sagemaker stop-mlflow-tracking-server \
  --tracking-server-name $ts_name \
  --region $region
```

若要使用 啟動追蹤伺服器 AWS CLI，請使用下列命令：

**注意**  
最多可能需要 25 分鐘才能啟動追蹤伺服器。

```
aws sagemaker start-mlflow-tracking-server \
  --tracking-server-name $ts_name \
  --region $region
```

## 刪除追蹤伺服器
<a name="mlflow-cleanup-delete-server"></a>

您可以在 Studio 或使用 AWS CLI完全刪除追蹤伺服器。

### 使用 Studio 刪除追蹤伺服器
<a name="mlflow-cleanup-delete-server-ui"></a>

若要在 Studio 中刪除追蹤伺服器：

1. 導覽至 Studio。

1. 在 Studio UI 的**應用程式**窗格中選擇 **MLflow**。

1. 在 **MLflow 追蹤伺服器**窗格中找到您選擇的追蹤伺服器。選擇追蹤伺服器窗格右上角的垂直選單圖示。再選擇 **Delete** (刪除)。

1. 選擇**刪除**，即可確認刪除。

![\[Studio UI 的 MLflow 追蹤伺服器窗格中追蹤伺服器卡上的刪除選項。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/mlflow/mlflow-studio-delete.png)


### 使用 刪除追蹤伺服器 AWS CLI
<a name="mlflow-cleanup-delete-server-cli"></a>

使用 `DeleteMLflowTrackingServer` API 刪除您所建立的任何追蹤伺服器。這可能需要一些時間。

```
aws sagemaker delete-mlflow-tracking-server \
  --tracking-server-name $ts_name \
  --region $region
```

若要檢視追蹤伺服器的狀態，請使用 `DescribeMLflowTrackingServer` API 並檢查 `TrackingServerStatus`。

```
aws sagemaker describe-mlflow-tracking-server \
  --tracking-server-name $ts_name \
  --region $region
```

## 刪除 Amazon S3 儲存貯體
<a name="mlflow-cleanup-delete-bucket"></a>

使用以下命令刪除用作追蹤伺服器成品存放區的任何 Amazon S3 儲存貯體：

```
aws s3 rm s3://$bucket_name --recursive
aws s3 rb s3://$bucket_name
```

您也可以直接在 AWS 主控台中刪除與追蹤伺服器相關聯的 Amazon S3 儲存貯體。如需詳細資訊，請參閱《Amazon S3 使用者指南》**中的[刪除儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)。

## 刪除已註冊的模型
<a name="mlflow-cleanup-delete-bucket"></a>

您可以直接在 Studio 中刪除使用 MLflow 建立的任何模型群組和模型版本。如需詳細資訊，請參閱[刪除模型群組](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry-delete-model-group.html)和[刪除模型版本](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry-delete-model-version.html)。

## 刪除實驗或執行
<a name="mlflow-cleanup-delete-experiments"></a>

您可以使用 MLflow SDK 來刪除實驗或執行。
+ [mlflow.delete\$1experiment](https://mlflow.org/docs/latest/python_api/mlflow.html?highlight=delete_experiment#mlflow.delete_experiment)
+ [mlflow.delete\$1run](https://mlflow.org/docs/latest/python_api/mlflow.html?highlight=delete_experiment#mlflow.delete_run)

# Studio Classic 中的 Amazon SageMaker Experiments
<a name="experiments"></a>

**重要**  
使用 SageMaker Experiments Python SDK 的實驗追蹤僅適用於 Studio Classic。我們建議您使用新的 Studio 體驗，並將最新的 SageMaker AI 整合與 MLflow 搭配使用來建立實驗。Studio Classic 沒有與 MLflow UI 整合。如果您想要將 MLflow 搭配 Studio 使用，您必須使用 AWS CLI啟動 MLflow UI。如需詳細資訊，請參閱[使用 AWS CLI 啟動 MLflow UI](mlflow-launch-ui.md#mlflow-launch-ui-cli)。

Amazon SageMaker Experiments Classic 是 Amazon SageMaker AI 的一項功能，讓您能在 Studio Classic 中建立、管理、分析和比較機器學習實驗。使用 SageMaker Experiments 檢視、管理、分析和比較您以程式設計方式建立的自訂實驗，以及從 SageMaker AI 任務自動建立的實驗。

Experiments Classic 會自動以*執行*追蹤迭代運算的輸入、參數、組態和結果。您可以將這些試驗指派到*實驗*中，並進行分組和整理。SageMaker Experiments 與 Amazon SageMaker Studio Classic 整合，提供視覺化介面，讓您瀏覽進行中和過去的實驗、依關鍵效能指標來比較執行，並找出表現最佳的模型。SageMaker Experiments 可追蹤有關於建立模型的所有步驟和成品，當您在生產環境中對問題進行疑難排解時，或稽核模型以驗證合規性時，可以快速回顧模型的起源。

## 使用 MLflow 從 Experiments Classic 遷移至 Amazon SageMaker AI
<a name="experiments-mlflow-migration"></a>

過去使用 Experiments Classic 建立的實驗仍可在 Studio Classic 中檢視。如果您想要使用 MLflow 維護和使用過去的實驗程式碼，您必須更新訓練程式碼才能使用 MLflow SDK，然後再次執行訓練實驗。如需 MLflow SDK 和 AWS MLflow 外掛程式入門的詳細資訊，請參閱 [將 MLflow 與您的環境整合](mlflow-track-experiments.md)。

# Experiments Classic 的範例筆記本
<a name="experiments-examples"></a>

以下範例筆記本示範如何追蹤各種模型訓練實驗的執行項目。您可以在執行筆記本後利用 Studio Classic 檢視產生的實驗。如需展示 Studio Classic 其他功能的教學課程，請參閱[Amazon SageMaker Studio Classic 導覽](gs-studio-end-to-end.md)。

## 在筆記本環境中追蹤實驗
<a name="experiments-tutorials-notebooks"></a>

若要深入了解如何追蹤筆記本環境中的實驗，請參閱下列範例筆記本：
+ [在本機訓練 Keras 模型時追蹤實驗](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-experiments/local_experiment_tracking/keras_experiment.html)
+ [在本機或筆記本中訓練 Pytorch 模型時追蹤實驗](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-experiments/local_experiment_tracking/pytorch_experiment.html)

## 使用 SageMaker Clarify 追蹤實驗的偏差和解釋性
<a name="experiments-tutorials-clarify"></a>

如需追蹤實驗偏差和解釋性的逐步指南，請參閱下列範例筆記本：
+ [使用 SageMaker Clarify 取得公平性和解釋性](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-experiments/sagemaker_clarify_integration/tracking_bias_explainability.html)

## 使用指令碼模式追蹤 SageMaker 訓練任務的實驗
<a name="experiments-tutorials-scripts"></a>

若需進一步了解如何追蹤 SageMaker 訓練任務的實驗，請參閱下列範例筆記本：
+ [使用 Pytorch 分散式資料平行執行 SageMaker AI 實驗：MNIST 手寫數字分類](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-experiments/sagemaker_job_tracking/pytorch_distributed_training_experiment.html)
+ [追蹤實驗，同時使用 SageMaker 訓練任務訓練 Pytorch 模型](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-experiments/sagemaker_job_tracking/pytorch_script_mode_training_job.html)
+ [使用 SageMaker 訓練任務來訓練 TensorFlow 模型，並使用 SageMaker Experiments 對其進行追蹤](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-experiments/sagemaker_job_tracking/tensorflow_script_mode_training_job.html)

# 檢視實驗和執行項目
<a name="experiments-view-compare"></a>

Amazon SageMaker Studio Classic 提供實驗瀏覽器，方便您用來檢視實驗和執行項目的清單。您可以選擇其中一個實體來檢視實體的詳細資訊，或選擇多個實體進行比較。您可以依照實體名稱、類型和標籤篩選實驗清單。

**如要檢視實驗和執行項目**

1. 若要在 Studio Classic 中檢視實驗，請在左側邊欄中，選擇**實驗**。

   選取實驗名稱，即可檢視所有相關的執行項目。您可以直接在**搜尋**列中輸入內容來搜尋實驗，或篩選實驗類型。也可以選擇要在實驗或執行清單中顯示的欄位。

   清單可能需要一點時間才能重新整理並顯示新的實驗或實驗執行項目。您可以按一下**重新整理**以更新頁面。您的實驗清單看起來應與下列類似：  
![\[SageMaker Experiments 使用者介面中的實驗清單\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/experiments-classic/experiments-overview.png)

1. 在實驗清單中，按兩下實驗以列出實驗中執行項目的清單。
**注意**  
根據預設，SageMaker AI 任務和容器自動建立的實驗執行項目會顯示在 Experiments Studio Classic 使用者介面中。如要隱藏 SageMaker AI 任務針對特定實驗所建立的執行項目，請選擇設定圖示 (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/icons/Settings_squid.png)) 並切換**顯示任務**。  
![\[在 SageMaker Experiments 使用者介面中執行的實驗清單\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/experiments-classic/experiments-runs-overview.png)

1. 按兩下執行項目，即可顯示特定執行項目的資訊。

   在**概觀**窗格中，選擇下列任一標題，以查看每個執行項目可用的資訊：
   + **指標**：在執行期間記錄的指標。
   + **圖表**：建置自己的圖表以比較執行項目。
   + **輸出成品**：執行實驗所產生的任何成品以及成品在 Amazon S3 中的位置。
   + **偏差報告** – 使用 Clarify 所產生的預先訓練或訓練後偏差報告。
   + **解釋性**：使用 Clarify 所產生的解釋性報告。
   + **偵錯**：偵錯工具規則和發現的任何問題之清單。