Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
SageMaker HyperPod Mit Amazon EKS orchestrierte Cluster können in die MLflow Anwendung auf Amazon SageMaker Studio integriert werden. Cluster-Administratoren richten den MLflow Server ein und verbinden ihn mit den SageMaker HyperPod Clustern. Datenwissenschaftler können Einblicke in das Modell gewinnen
So richten Sie einen MLflow Server mit AWS CLI ein
Ein MLflow Tracking-Server sollte vom Clusteradministrator erstellt werden.
-
Erstellen Sie einen SageMaker MLflow AI-Tracking-Server, indem Sie den Anweisungen unter Erstellen eines Tracking-Servers mithilfe der AWS CLI folgen.
-
Stellen Sie sicher, dass die
eks-auth:AssumeRoleForPodIdentity
Berechtigung in der IAM-Ausführungsrolle für SageMaker HyperPod vorhanden ist. -
Wenn das
eks-pod-identity-agent
Add-on nicht bereits auf Ihrem EKS-Cluster installiert ist, installieren Sie es auf dem EKS-Cluster.aws eks create-addon \ --cluster-name
<eks_cluster_name>
\ --addon-name eks-pod-identity-agent \ --addon-versionvx.y.z-eksbuild.1
-
Erstellen Sie eine
trust-relationship.json
Datei für eine neue Rolle, die Pod aufrufen soll 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
Führen Sie den folgenden Code aus, um die Rolle zu erstellen und die Vertrauensstellung anzuhängen.
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" -
Erstellen Sie die folgende Richtlinie, die dem Pod Zugriff gewährt, um alle
sagemaker-mlflow
Operationen aufzurufen und Modellartefakte in S3 zu speichern. Die S3-Berechtigung ist bereits auf dem Tracking-Server vorhanden, aber wenn die Modellartefakte zu groß sind, erfolgt ein direkter Aufruf an s3 über den MLflow Code, um die Artefakte hochzuladen.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>
" } ] } EOFAnmerkung
Das ARNs sollte die vom MLflow Server und dem S3-Bucket sein, die mit dem MLflow Server während des Servers eingerichtet wurden, den Sie gemäß den Anweisungen MLflow Infrastruktur einrichten erstellt haben.
-
Hängen Sie die
mlflow-metrics-emit-policy
Richtliniehyperpod-mlflow-role
mithilfe des im vorherigen Schritt gespeicherten Richtliniendokuments an.aws iam put-role-policy \ --role-name
hyperpod-mlflow-role
\ --policy-namemlflow-metrics-emit-policy
\ --policy-documentfile://hyperpod-mlflow-policy.json
-
Erstellen Sie ein Kubernetes-Dienstkonto für Pod, um auf den MLflow Server zuzugreifen.
cat >
mlflow-service-account.yaml
<<EOF apiVersion: v1 kind: ServiceAccount metadata: name:mlflow-service-account
namespace:kubeflow
EOFFühren Sie den folgenden Befehl aus, um ihn auf den EKS-Cluster anzuwenden.
kubectl apply -f
mlflow-service-account.yaml
-
Erstellen Sie eine Pod-Identitätszuordnung.
aws eks create-pod-identity-association \ --cluster-name
EKS_CLUSTER_NAME
\ --role-arnarn:aws:iam::111122223333:role/hyperpod-mlflow-role
\ --namespacekubeflow
\ --service-accountmlflow-service-account
Um Messwerte von Trainingsaufträgen auf dem MLflow Server zu sammeln
Datenwissenschaftler müssen das Trainingsskript und das Docker-Image einrichten, um Metriken an den MLflow Server zu senden.
-
Fügen Sie am Anfang Ihres Trainingsskripts die folgenden Zeilen hinzu.
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()
-
Erstellen Sie ein Docker-Image mit dem Trainingsskript und übertragen Sie es auf Amazon ECR. Ermittelt den ARN des ECR-Containers. Weitere Informationen zum Erstellen und Pushen eines Docker-Images finden Sie unter Pushing a Docker-Image im ECR-Benutzerhandbuch.
Tipp
Stellen Sie sicher, dass Sie die Installation der Pakete mlflow und sagemaker-mlflow zur Docker-Datei hinzufügen. Weitere Informationen zur Installation der Pakete, zu den Anforderungen und kompatiblen Versionen der Pakete finden Sie unter Installation und das AI-Plugin. MLflow SageMaker MLflow
-
Fügen Sie in den Trainingsjob-Pods ein Dienstkonto hinzu, auf das sie zugreifen können.
hyperpod-mlflow-role
Dadurch können Pods anrufen MLflow APIs. Führen Sie die folgende SageMaker HyperPod CLI-Vorlage für die Einreichung von Jobs aus. Erstellen Sie dies mit dem Dateinamenmlflow-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
-
Starten Sie den Job mit der YAML-Datei wie folgt.
hyperpod start-job --config-file
/path/to/mlflow-test.yaml
-
Generieren Sie eine vorsignierte URL für den MLflow Tracking-Server. Sie können den Link in Ihrem Browser öffnen und damit beginnen, Ihren Ausbildungsjob zu verfolgen.
aws sagemaker create-presigned-mlflow-tracking-server-url \ --tracking-server-name "
tracking-server-name
" \ --session-expiration-duration-in-seconds1800
\ --expires-in-seconds300
\ --regionregion