

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 mlFlow 跟踪推理建议和基准测试结果
<a name="generative-ai-inference-recommendations-mlflow"></a>

您可以在 Amazon A SageMaker I 上使用完全托管的 mlFlow 来跟踪推荐和基准测试作业的结果。当您提供 mlFlow 配置时， SageMaker AI 会将作业生成的性能指标和工件记录到 mlFlow 应用程序中。然后，您可以使用 mlFlow 用户界面查看单个运行，比较不同作业的配置，并与您的团队共享结果。有关 SageMaker AI 上的 mlFlow 的更多信息，请参阅[在亚马逊 SageMaker AI 上使用托管 mlFlow 加速生成式人工智能开发](mlflow.md)。

mlFlow 跟踪是可选的。要启用它，请在创建任务时提供引用 mlFlow 应用程序的 mlFlow 配置。

## 先决条件
<a name="generative-ai-inference-recommendations-mlflow-prereqs"></a>

在使用 mlFlow 跟踪结果之前，除了推荐或基准测试任务之外，您还需要以下内容：[先决条件](generative-ai-inference-recommendations-get-started.md#generative-ai-inference-recommendations-get-started-prereqs)
+ 处于运行状态的 mlFlow 应用程序，与您的工作 AWS 区域 相同。有关创建 mlFlow 应用程序的信息，请参阅[mlFlow 应用程序设置](mlflow-app-setup.md)。
+ 一个 IAM 执行角色（你传递给任务的角色）`RoleArn`，有权描述 mlFlow 应用程序和调用 mlFlow REST API。添加作业用于记录运行的`sagemaker:DescribeMlflowApp``sagemaker-mlflow`操作和操作。有关 mlFlow 权限的更多信息，请参阅[mlFlow 应用程序设置](mlflow-app-setup.md)。

## mlFlow 配置参数
<a name="generative-ai-inference-recommendations-mlflow-config"></a>

要跟踪结果，请将`MlflowConfig`对象添加到您的`CreateAIRecommendationJob`或`CreateAIBenchmarkJob`请求中`OutputConfig`。 `MlflowConfig`包含以下字段：

`MlflowResourceArn`  
必需。用于记录结果的 mlFlow 应用程序的亚马逊资源名称 (ARN)，格式为。`arn:aws:sagemaker:{{region}}:{{account-id}}:mlflow-app/{{app-id}}`

`MlflowExperimentName`  
可选。用于记录运行的 mlFlow 实验的名称。如果实验不存在， SageMaker AI 会创建它；如果实验已经存在， SageMaker AI 会重复使用它，因此您可以通过传递相同的名称将多个作业的运行分组到一个实验下。

`MlflowRunName`  
可选。嵌套作业结果的顶级 mlFlow 运行的名称。要将多个作业的结果分组到一个顶级运行下，请将相同的结果传递`MlflowRunName`给每个作业。

每个作业都会创建一个顶级 mlFlow 运行，其中包含嵌套的子运行，这些子运行按基准目标或实例类型、部署配置和并发级别等维度细分结果。此结构允许您在 mlFlow 用户界面中深入研究各个测量值并比较配置。

`MlflowConfig`您在创建请求中提供的内容会回显到相应的`Describe`响应中。`OutputConfig`

## 追踪推荐作业
<a name="generative-ai-inference-recommendations-mlflow-recommendation"></a>

在创建推荐作业`OutputConfig`时将`MlflowConfig`对象添加到。

**Python (boto3)**

```
response = client.create_ai_recommendation_job(
    AIRecommendationJobName="my-recommendation-job",
    ModelSource={
        "S3": {
            "S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/",
        }
    },
    OutputConfig={
        "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/",
        "MlflowConfig": {
            "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:111122223333:mlflow-app/app-EXAMPLE",
            "MlflowExperimentName": "my-recommendation-experiment",
            "MlflowRunName": "my-recommendation-job-run",
        },
    },
    PerformanceTarget={
        "Constraints": [
            {"Metric": "ttft-ms"}
        ]
    },
    AIWorkloadConfigIdentifier="my-recommendation-workload",
    RoleArn="arn:aws:iam::111122223333:role/ExampleRole",
)
print(response["AIRecommendationJobArn"])
```

**AWS CLI**

```
aws sagemaker create-ai-recommendation-job \
  --ai-recommendation-job-name "my-recommendation-job" \
  --model-source '{"S3": {"S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/"}}' \
  --output-config '{
    "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/",
    "MlflowConfig": {
      "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:111122223333:mlflow-app/app-EXAMPLE",
      "MlflowExperimentName": "my-recommendation-experiment",
      "MlflowRunName": "my-recommendation-job-run"
    }
  }' \
  --performance-target '{"Constraints": [{"Metric": "ttft-ms"}]}' \
  --ai-workload-config-identifier "my-recommendation-workload" \
  --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \
  --region us-west-2
```

## 追踪基准作业
<a name="generative-ai-inference-recommendations-mlflow-benchmark"></a>

在创建基准测试作业`OutputConfig`时将`MlflowConfig`对象添加到。

**Python (boto3)**

```
response = client.create_ai_benchmark_job(
    AIBenchmarkJobName="my-benchmark-job",
    BenchmarkTarget={
        "Endpoint": {
            "Identifier": "my-sagemaker-endpoint"
        }
    },
    OutputConfig={
        "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/benchmark-results/",
        "MlflowConfig": {
            "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:111122223333:mlflow-app/app-EXAMPLE",
            "MlflowExperimentName": "my-benchmark-experiment",
            "MlflowRunName": "my-benchmark-job-run",
        },
    },
    AIWorkloadConfigIdentifier="my-benchmark-config",
    RoleArn="arn:aws:iam::111122223333:role/ExampleRole",
)
print(response["AIBenchmarkJobArn"])
```

**AWS CLI**

```
aws sagemaker create-ai-benchmark-job \
  --ai-benchmark-job-name "my-benchmark-job" \
  --benchmark-target '{"Endpoint": {"Identifier": "my-sagemaker-endpoint"}}' \
  --output-config '{
    "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/benchmark-results/",
    "MlflowConfig": {
      "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:111122223333:mlflow-app/app-EXAMPLE",
      "MlflowExperimentName": "my-benchmark-experiment",
      "MlflowRunName": "my-benchmark-job-run"
    }
  }' \
  --ai-workload-config-identifier "my-benchmark-config" \
  --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \
  --region us-west-2
```

## 在 mlFlow 中查看结果
<a name="generative-ai-inference-recommendations-mlflow-view"></a>

作业达到`Completed`状态后，从 mlFlow 应用程序打开 mlFlow 用户界面以检查记录的运行情况。有关启动 mlFlow 用户界面的更多信息，请参阅[使用预先指定的 URL 启动 MLflow 用户界面](mlflow-launch-ui.md)。

在 “**实验**” 页面上，选择您在中指定的实验`MlflowExperimentName`。

![MLFlow UI 实验页面显示了实验列表及其名称和创建时间。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/mlflow/inference-recommendations-mlflow-experiments.png)


实验的 “**运行**” 视图显示了包含每个任务运行的顶级运行，该运行扩展为每种实例类型、部署配置和并发级别的子运行。选择一个运行以查看其参数、指标和构件。

![mlFlow UI Runs 视图显示了顶级运行，该视图会扩展为每个作业、实例类型、图像类型和并发级别的嵌套子运行。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/mlflow/inference-recommendations-mlflow-runs.png)
