

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Observabilitas model untuk pekerjaan pelatihan pada SageMaker HyperPod cluster yang diatur oleh Amazon EKS
<a name="sagemaker-hyperpod-eks-cluster-observability-model"></a>

SageMaker HyperPod cluster yang diatur dengan Amazon EKS dapat berintegrasi dengan [MLflow aplikasi di](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html) Amazon Studio. SageMaker Admin cluster mengatur MLflow server dan menghubungkannya dengan cluster. SageMaker HyperPod Ilmuwan data dapat memperoleh wawasan tentang model tersebut.

**Untuk mengatur MLflow server menggunakan AWS CLI**

Admin cluster harus membuat server MLflow pelacak.

1. Buat server MLflow pelacak SageMaker AI, ikuti instruksi di [Buat server pelacak menggunakan AWS CLI](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server-cli.html#mlflow-create-tracking-server-cli-infra-setup).

1. Pastikan bahwa [https://docs.aws.amazon.com/eks/latest/APIReference/API_auth_AssumeRoleForPodIdentity.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_auth_AssumeRoleForPodIdentity.html)izin ada dalam peran eksekusi IAM untuk SageMaker HyperPod.

1. Jika `eks-pod-identity-agent` add-on belum diinstal pada kluster EKS Anda, instal add-on pada kluster EKS.

   ```
   aws eks create-addon \
       --cluster-name <eks_cluster_name> \
       --addon-name eks-pod-identity-agent \
       --addon-version vx.y.z-eksbuild.1
   ```

1. Buat `trust-relationship.json` file untuk peran baru untuk dipanggil Pod MLflow APIs.

   ```
   cat >trust-relationship.json <<EOF
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
               "Effect": "Allow",
               "Principal": {
                   "Service": "pods.eks.amazonaws.com"
   
               },
               "Action": [
                   "sts:AssumeRole",
                   "sts:TagSession"
               ]
           }
       ]
   }
   EOF
   ```

   Jalankan kode berikut untuk membuat peran dan melampirkan hubungan kepercayaan.

   ```
   aws iam create-role --role-name hyperpod-mlflow-role \
       --assume-role-policy-document file://trust-relationship.json \
       --description "allow pods to emit mlflow metrics and put data in s3"
   ```

1. Buat kebijakan berikut yang memberikan akses Pod untuk memanggil semua `sagemaker-mlflow` operasi dan menempatkan artefak model di S3. Izin S3 sudah ada di dalam server pelacakan tetapi jika artefak model terlalu besar, panggilan langsung ke s3 dibuat dari MLflow kode untuk mengunggah artefak.

   ```
   cat >hyperpod-mlflow-policy.json <<EOF
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "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"
               ],
               "Resource": "arn:aws:sagemaker:us-west-2:111122223333:mlflow-tracking-server/<ml tracking server name>"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::<mlflow-s3-bucket_name>"
           }
       ]
   }
   EOF
   ```
**catatan**  
Itu ARNs adalah yang dari MLflow server dan bucket S3 yang disiapkan dengan MLflow server selama server yang Anda buat mengikuti instruksi [Siapkan MLflow infrastruktur](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server-cli.html#mlflow-create-tracking-server-cli-infra-setup).

1. Lampirkan `mlflow-metrics-emit-policy` kebijakan ke `hyperpod-mlflow-role` menggunakan dokumen kebijakan yang disimpan di langkah sebelumnya.

   ```
   aws iam put-role-policy \
     --role-name hyperpod-mlflow-role \
     --policy-name mlflow-metrics-emit-policy \
     --policy-document file://hyperpod-mlflow-policy.json
   ```

1. Buat akun layanan Kubernetes untuk Pod untuk mengakses server. MLflow 

   ```
   cat >mlflow-service-account.yaml <<EOF
   apiVersion: v1
   kind: ServiceAccount
   metadata:
     name: mlflow-service-account
     namespace: kubeflow
   EOF
   ```

   Jalankan perintah berikut untuk menerapkan ke cluster EKS.

   ```
   kubectl apply -f mlflow-service-account.yaml
   ```

1. Buat asosiasi identitas Pod.

   ```
   aws eks create-pod-identity-association \
       --cluster-name EKS_CLUSTER_NAME \
       --role-arn arn:aws:iam::111122223333:role/hyperpod-mlflow-role \
       --namespace kubeflow \
       --service-account mlflow-service-account
   ```

**Untuk mengumpulkan metrik dari pekerjaan pelatihan ke server MLflow**

Ilmuwan data perlu menyiapkan skrip pelatihan dan gambar docker untuk memancarkan metrik ke server. MLflow 

1. Tambahkan baris berikut di awal skrip pelatihan Anda.

   ```
   import mlflow
   
   # Set the Tracking Server URI using the ARN of the Tracking Server you created
   mlflow.set_tracking_uri(os.environ['MLFLOW_TRACKING_ARN'])
   # Enable autologging in MLflow
   mlflow.autolog()
   ```

1. Buat gambar Docker dengan skrip pelatihan dan dorong ke Amazon ECR. Dapatkan ARN dari wadah ECR. Untuk informasi selengkapnya tentang membuat dan mendorong image Docker, lihat [Mendorong gambar Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) di Panduan Pengguna *ECR*.
**Tip**  
Pastikan Anda menambahkan instalasi paket mlflow dan sagemaker-mlflow di file Docker. Untuk mempelajari lebih lanjut tentang penginstalan paket, persyaratan, dan versi paket yang kompatibel, lihat [Instal MLflow dan MLflow plugin SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-track-experiments.html#mlflow-track-experiments-install-plugin).

1. Tambahkan akun layanan di Pod tugas pelatihan untuk memberi mereka akses`hyperpod-mlflow-role`. Hal ini memungkinkan Pod untuk memanggil MLflow APIs. Jalankan template pengiriman pekerjaan SageMaker HyperPod CLI berikut. Buat ini dengan nama file`mlflow-test.yaml`.

   ```
   defaults:
    - override hydra/job_logging: stdout
   
   hydra:
    run:
     dir: .
    output_subdir: null
   
   training_cfg:
    entry_script: ./train.py
    script_args: []
    run:
     name: test-job-with-mlflow # Current run name
     nodes: 2 # Number of nodes to use for current training
     # ntasks_per_node: 1 # Number of devices to use per node
   cluster:
    cluster_type: k8s # currently k8s only
    instance_type: ml.c5.2xlarge
    cluster_config:
     # name of service account associated with the namespace
     service_account_name: mlflow-service-account
     # persistent volume, usually used to mount FSx
     persistent_volume_claims: null
     namespace: kubeflow
     # required node affinity to select nodes with SageMaker HyperPod
     # labels and passed health check if burn-in enabled
     label_selector:
         required:
             sagemaker.amazonaws.com/node-health-status:
                 - Schedulable
         preferred:
             sagemaker.amazonaws.com/deep-health-check-status:
                 - Passed
         weights:
             - 100
     pullPolicy: IfNotPresent # policy to pull container, can be Always, IfNotPresent and Never
     restartPolicy: OnFailure # restart policy
   
   base_results_dir: ./result # Location to store the results, checkpoints and logs.
   container: 111122223333.dkr.ecr.us-west-2.amazonaws.com/tag # container to use
   
   env_vars:
    NCCL_DEBUG: INFO # Logging level for NCCL. Set to "INFO" for debug information
    MLFLOW_TRACKING_ARN: arn:aws:sagemaker:us-west-2:11112223333:mlflow-tracking-server/tracking-server-name
   ```

1. Mulai pekerjaan menggunakan file YAMM sebagai berikut.

   ```
   hyperpod start-job --config-file /path/to/mlflow-test.yaml
   ```

1. Buat URL yang telah ditandatangani sebelumnya untuk server MLflow pelacakan. Anda dapat membuka tautan di browser Anda dan mulai melacak pekerjaan pelatihan Anda.

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