

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# MLflow를 사용하여 추론 권장 사항 및 벤치마크 결과 추적
<a name="generative-ai-inference-recommendations-mlflow"></a>

Amazon SageMaker AI에서 완전 관리형 MLflow를 사용하여 권장 사항 및 벤치마크 작업의 결과를 추적할 수 있습니다. MLflow 구성을 제공하면 SageMaker AI는 작업이 생성하는 성능 지표와 아티팩트를 MLflow 앱에 기록합니다. 그런 다음 MLflow UI를 사용하여 개별 실행을 보고, 작업 간 구성을 비교하고, 결과를 팀과 공유할 수 있습니다. SageMaker AI의 MLflow에 대한 자세한 내용은 섹션을 참조하세요[Amazon SageMaker AI에서 관리형 MLflow를 사용하여 생성형 AI 개발 가속화](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) 대한 외에 다음이 필요합니다.
+  AWS 리전 작업과 동일한 운영 상태의 MLflow 앱. MLflow 앱 생성에 대한 자세한 내용은 섹션을 참조하세요[MLflow 앱 설정](mlflow-app-setup.md).
+ MLflow 앱을 설명하고 MLflow REST API를 호출할 수 있는 권한이 있는 IAM 실행 역할(작업에 `RoleArn` 전달하는 )입니다. APIs `sagemaker:DescribeMlflowApp` 작업과 작업이 실행을 로깅하는 데 사용하는 `sagemaker-mlflow` 작업을 추가합니다. MLflow 권한에 대한 자세한 내용은 섹션을 참조하세요[MLflow 앱 설정](mlflow-app-setup.md).

## MLflow 구성 파라미터
<a name="generative-ai-inference-recommendations-mlflow-config"></a>

결과를 추적하려면 `CreateAIRecommendationJob` 또는 `CreateAIBenchmarkJob` 요청`OutputConfig`의에 `MlflowConfig` 객체를 추가합니다. `MlflowConfig`에는 다음 필드가 포함되어 있습니다.

`MlflowResourceArn`  
필수 사항입니다. 결과를 로깅할 MLflow 앱의 Amazon 리소스 이름(ARN)으로, 형식입니다`arn:aws:sagemaker:{{region}}:{{account-id}}:mlflow-app/{{app-id}}`.

`MlflowExperimentName`  
선택 사항. 실행을 로깅할 MLflow 실험의 이름입니다. 실험이 존재하지 않는 경우 SageMaker AI는 실험을 생성합니다. 이미 존재하는 경우 SageMaker AI는 실험을 재사용하므로 동일한 이름을 전달하여 한 실험에서 여러 작업의 실행을 그룹화할 수 있습니다.

`MlflowRunName`  
선택 사항. 작업 결과가 중첩되는 최상위 MLflow 실행의 이름입니다. 한 번의 최상위 실행으로 여러 작업의 결과를 그룹`MlflowRunName`화하려면 각 작업에 동일한 작업을 전달합니다.

각 작업은 최상위 MLflow 실행을 생성하며, 중첩된 하위 실행은 벤치마크 대상 또는 인스턴스 유형, 배포 구성, 동시성 수준과 같은 차원별로 결과를 분류합니다. 이 구조를 사용하면 개별 측정값을 드릴링하고 MLflow UI의 구성을 비교할 수 있습니다.

생성 요청에 `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 UI를 열어 로깅된 실행을 검사합니다. MLflow UI 시작에 대한 자세한 내용은 섹션을 참조하세요[미리 서명된 URL을 사용하여 MLflow UI 시작](mlflow-launch-ui.md).

**실험** 페이지에서에 지정한 실험을 선택합니다`MlflowExperimentName`.

![MLflow UI 실험 페이지에는 이름과 생성 시간이 포함된 실험 목록이 표시됩니다.](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/mlflow/inference-recommendations-mlflow-experiments.png)


실험의 **실행** 보기에는 각 인스턴스 유형, 배포 구성 및 동시성 수준에 대한 하위 실행으로 확장되는 작업별 실행이 포함된 최상위 실행이 표시됩니다. 실행을 선택하여 파라미터, 지표 및 아티팩트를 봅니다.

![작업별, 인스턴스 유형, 이미지 유형 및 동시성 수준에 대해 중첩된 하위 실행으로 확장되는 최상위 실행을 보여주는 MLflow UI 실행 보기입니다.](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/mlflow/inference-recommendations-mlflow-runs.png)
