

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

# 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` 進行清除步驟。