Passen Sie Ihren Trainingsauftrag so an, dass Sie auf Bilder in einem privaten Docker-Verzeichnis zugreifen können - Amazon SageMaker

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.

Passen Sie Ihren Trainingsauftrag so an, dass Sie auf Bilder in einem privaten Docker-Verzeichnis zugreifen können

Sie können eine private Docker-Registrierung anstelle einer Amazon Elastic Container Registry (Amazon ECR) verwenden, um Ihre Images für SageMaker das Training zu hosten. Die folgenden Anweisungen zeigen Ihnen, wie Sie ein Docker-Registry erstellen, Ihre Virtual Private Cloud (VPC) und Ihren Trainingsauftrag konfigurieren, Bilder speichern und SageMaker Zugriff auf das Trainings-Image in der privaten Docker-Registry gewähren. Diese Anweisungen zeigen Ihnen auch, wie Sie eine Docker-Registrierung verwenden, die eine Authentifizierung für einen SageMaker Trainingsauftrag erfordert.

Erstellen und speichern Sie Ihre Bilder in einem privaten Docker-Verzeichnis

Erstellen Sie ein privates Docker-Verzeichnis, um Ihre Bilder zu speichern. Ihr Verzeichnis muss:

  • das Docker Verzeichnis HTTP API-Protokoll verwenden

  • ist von derselben VPC aus zugänglich, die im -VpcConfigParameter in der CreateTrainingJob API angegeben ist. Geben Sie VpcConfig ein, wenn Sie Ihren Trainingsauftrag erstellen.

  • gesichert mit einem TLS-Zertifikat einer bekannten öffentlichen Zertifizierungsstelle.

Weitere Informationen zum Erstellen eines Docker-Verzeichnis finden Sie unter Bereitstellen eines Verzeichnisservers.

Konfigurieren Ihrer VPC und Ihres SageMaker Schulungsauftrags

SageMaker verwendet eine Netzwerkverbindung innerhalb Ihrer VPC, um auf Bilder in Ihrer Docker-Registrierung zuzugreifen. Um die Images in Ihrem Docker-Verzeichnis für Training zu verwenden, muss das Verzeichnis von einer Amazon-VPC in Ihrem Konto aus zugänglich sein. Weitere Informationen finden Sie unter Verwenden Sie ein Docker-Verzeichnis, für die eine Authentifizierung für das Training erforderlich ist.

Sie müssen Ihren Trainingsauftrag auch so konfigurieren, dass er eine Verbindung zu derselben VPC herstellt, auf die Ihr Docker-Verzeichnis Zugriff hat. Weitere Informationen finden Sie unter Einen Trainingsauftrag für Amazon VPC Access konfigurieren.

Erstellen Sie einen Trainingsauftrag mit einem Image aus Ihrem privaten Docker-Verzeichnis

Um ein Image aus Ihrer privaten Docker-Verzeichnis für Training zu verwenden, folgen Sie der folgenden Anleitung, um Ihr Image zu konfigurieren, und einen Trainingsauftrag zu konfigurieren und erstellen. In den folgenden Codebeispielen wird der AWS SDK for Python (Boto3) Client verwendet.

  1. Erstellen Sie ein Trainings-Image-Konfigurationsobjekt und geben Sie Vpc in das TrainingRepositoryAccessMode Feld wie folgt ein.

    training_image_config = { 'TrainingRepositoryAccessMode': 'Vpc' }
    Anmerkung

    Wenn Ihr privates Docker-Verzeichnis eine Authentifizierung erfordert, müssen Sie dem Trainings-Image-Konfigurationsobjekt ein TrainingRepositoryAuthConfig Objekt hinzufügen. Sie müssen auch den Amazon-Ressourcennamen (ARN) einer - AWS Lambda Funktion angeben, die Zugriffsanmeldeinformationen für SageMaker bereitstellt, indem Sie das -TrainingRepositoryCredentialsProviderArnFeld des -TrainingRepositoryAuthConfigObjekts verwenden. Weitere Informationen finden Sie in der nachstehenden Beispiel-Code-Struktur.

    training_image_config = { 'TrainingRepositoryAccessMode': 'Vpc', 'TrainingRepositoryAuthConfig': { 'TrainingRepositoryCredentialsProviderArn': 'arn:aws:lambda:Region:Acct:function:FunctionName' } }

    Weitere Informationen zum Erstellen der Lambda-Funktion für die Authentifizierung finden Sie unter Verwenden Sie ein Docker-Verzeichnis, für die eine Authentifizierung für das Training erforderlich ist.

  2. Verwenden Sie einen Boto3-Client, um einen Trainingsauftrag zu erstellen und die richtige Konfiguration an die create_training_job-API zu übergeben. Die folgenden Anweisungen zeigen Ihnen, wie Sie die Komponenten konfigurieren und einen Trainingsauftrag erstellen.

    1. Erstellen Sie das AlgorithmSpecification Objekt, das Sie an create_training_job senden möchten. Verwenden Sie das Trainings-Image-Konfigurationsobjekt, das Sie im vorherigen Schritt erstellt haben, wie im folgenden Codebeispiel gezeigt.

      algorithm_specification = { 'TrainingImage': 'myteam.myorg.com/docker-local/my-training-image:<IMAGE-TAG>', 'TrainingImageConfig': training_image_config, 'TrainingInputMode': 'File' }
      Anmerkung

      Wenn Sie statt einer aktualisierten Version eines Images eine feste Version verwenden möchten, beziehen Sie sich auf den Digest des Images und nicht auf den Namen oder das Tag.

    2. Geben Sie den Namen des Trainingsauftrags und der Rolle an, den Sie an create_training_job senden möchten, wie im folgenden Codebeispiel gezeigt.

      training_job_name = 'private-registry-job' execution_role_arn = 'arn:aws:iam::123456789012:role/SageMakerExecutionRole'
    3. Geben Sie eine Sicherheitsgruppe und ein Subnetz für die VPC-Konfiguration für Ihren Trainingsauftrag an. Ihr privates Docker-Verzeichnis muss eingehenden Datenverkehr von den von Ihnen angegebenen Sicherheitsgruppen zulassen, wie im folgenden Codebeispiel gezeigt.

      vpc_config = { 'SecurityGroupIds': ['sg-0123456789abcdef0'], 'Subnets': ['subnet-0123456789abcdef0','subnet-0123456789abcdef1'] }
      Anmerkung

      Wenn sich Ihr Subnetz nicht in derselben VPC wie Ihre private Docker-Registrierung befindet, müssen Sie eine Netzwerkverbindung zwischen den beiden VPCs einrichten. SeeConnect VPCs, die VPC-Peering verwenden, um weitere Informationen zu erhalten.

    4. Geben Sie die Ressourcenkonfiguration an, einschließlich Recheninstanzen für Machine Learning und Speichervolumes, die für das Training verwendet werden sollen, wie im folgenden Codebeispiel gezeigt.

      resource_config = { 'InstanceType': 'ml.m4.xlarge', 'InstanceCount': 1, 'VolumeSizeInGB': 10, }
    5. Geben Sie die Konfiguration der Eingabe- und Ausgabedaten an, wo der Trainingsdatensatz gespeichert wird und wo Sie Modellartefakte speichern möchten, wie im folgenden Codebeispiel gezeigt.

      input_data_config = [ { "ChannelName": "training", "DataSource": { "S3DataSource": { "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3Uri": "s3://your-training-data-bucket/training-data-folder" } } } ] output_data_config = { 'S3OutputPath': 's3://your-output-data-bucket/model-folder' }
    6. Geben Sie die maximale Anzahl von Sekunden an, für die ein Modelltrainingsauftrag ausgeführt werden kann, wie im folgenden Codebeispiel gezeigt.

      stopping_condition = { 'MaxRuntimeInSeconds': 1800 }
    7. Erstellen Sie abschließend den Trainingsauftrag mit den Parametern, die Sie in den vorherigen Schritten angegeben haben, wie im folgenden Codebeispiel gezeigt.

      import boto3 sm = boto3.client('sagemaker') try: resp = sm.create_training_job( TrainingJobName=training_job_name, AlgorithmSpecification=algorithm_specification, RoleArn=execution_role_arn, InputDataConfig=input_data_config, OutputDataConfig=output_data_config, ResourceConfig=resource_config, VpcConfig=vpc_config, StoppingCondition=stopping_condition ) except Exception as e: print(f'error calling CreateTrainingJob operation: {e}') else: print(resp)