Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Observabilidad de modelos para trabajos de formación en SageMaker HyperPod clústeres orquestados por Amazon EKS
SageMaker HyperPod los clústeres organizados con Amazon EKS se pueden integrar con la aplicación MLflow de Amazon SageMaker Studio. Los administradores de clústeres configuran el servidor MLflow y lo conectan a los clústeres. SageMaker HyperPod Los científicos de datos pueden obtener información sobre el modelo.
Para configurar un servidor MLflow mediante CLI AWS
El administrador del clúster debe crear un servidor de seguimiento de MLflow.
-
Cree un servidor de seguimiento SageMaker AI MLflow siguiendo las instrucciones de Crear un servidor de seguimiento mediante la AWS CLI.
-
Asegúrese de que el
eks-auth:AssumeRoleForPodIdentitypermiso existe en la función de ejecución de IAM para. SageMaker HyperPod -
Si el complemento
eks-pod-identity-agentaún no está instalado en el clúster de EKS, instálelo en dicho clúster.aws eks create-addon \ --cluster-name<eks_cluster_name>\ --addon-name eks-pod-identity-agent \ --addon-versionvx.y.z-eksbuild.1 -
Cree un archivo
trust-relationship.jsonpara una nuevo rol para que el pod llame a las API de MLflow.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" ] } ] } EOFEjecute el siguiente comando para crear el rol y asociar la relación de confianza.
aws iam create-role --role-namehyperpod-mlflow-role\ --assume-role-policy-document file://trust-relationship.json \ --description "allow pods to emit mlflow metrics and put data in s3" -
Cree la siguiente política que conceda acceso al pod para llamar a todas las operaciones
sagemaker-mlflowy colocar los artefactos del modelo en S3. El permiso de S3 ya existe en el servidor de seguimiento, pero si los artefactos del modelo son demasiado grandes, se llama directamente a s3 desde el código de MLflow para cargar los artefactos.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>" } ] } EOFnota
Los ARN deben ser los del servidor de MLflow y el bucket de S3 configurado con dicho servidor que ha creado siguiendo las instrucciones que se indican en Set up MLflow infrastructure.
-
Asocie la política
mlflow-metrics-emit-policyalhyperpod-mlflow-rolemediante el documento de política guardado en el paso anterior.aws iam put-role-policy \ --role-namehyperpod-mlflow-role\ --policy-namemlflow-metrics-emit-policy\ --policy-documentfile://hyperpod-mlflow-policy.json -
Cree una cuenta de servicio de Kubernetes para que el pod tenga acceso al servidor de MLflow.
cat >mlflow-service-account.yaml<<EOF apiVersion: v1 kind: ServiceAccount metadata: name:mlflow-service-accountnamespace:kubeflowEOFEjecute el siguiente comando para que se aplique el clúster de EKS.
kubectl apply -fmlflow-service-account.yaml -
Cree una asociación de Pod Identity.
aws eks create-pod-identity-association \ --cluster-nameEKS_CLUSTER_NAME\ --role-arnarn:aws:iam::111122223333:role/hyperpod-mlflow-role\ --namespacekubeflow\ --service-accountmlflow-service-account
Recopilación de métricas de los trabajos de entrenamiento para el servidor de MLflow
Los científicos de datos deben configurar el script de entrenamiento y la imagen de Docker para emitir métricas al servidor de MLflow.
-
Añada las siguientes líneas al principio del script de entrenamiento.
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() -
Cree una imagen de Docker con el script de entrenamiento y envíela a Amazon ECR. Obtenga el ARN del contenedor de ECR. Para obtener más información sobre cómo crear y enviar una imagen de Docker, consulte Pushing a Docker image en la Guía del usuario de ECR.
sugerencia
Asegúrese de añadir la instalación de los paquetes de mlflow y sagemaker-mlflow en el archivo de Docker. Para obtener más información sobre la instalación de los paquetes, los requisitos y las versiones compatibles de los paquetes, consulte Instalar MLflow y el complemento SageMaker AI MLflow.
-
Añada una cuenta de servicio a los pods del trabajo de entrenamiento para darles acceso a
hyperpod-mlflow-role. Esto permite a los pods llamar a las API de MLflow. Ejecute la siguiente plantilla de envío de trabajos de SageMaker HyperPod CLI. Cree esto con el nombre del archivomlflow-test.yaml.defaults: - override hydra/job_logging: stdout hydra: run: dir: . output_subdir: null training_cfg: entry_script:./train.pyscript_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.2xlargecluster_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 -
Inicie el trabajo con el archivo YAML de la siguiente manera.
hyperpod start-job --config-file/path/to/mlflow-test.yaml -
Genere una URL prefirmada para el servidor de seguimiento de MLflow. Puede abrir el enlace en el navegador y empezar a realizar un seguimiento del trabajo de entrenamiento.
aws sagemaker create-presigned-mlflow-tracking-server-url \ --tracking-server-name "tracking-server-name" \ --session-expiration-duration-in-seconds1800\ --expires-in-seconds300\ --regionregion