Ausführen von Scripts mit Ihrem eigenen Verarbeitungscontainer - 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.

Ausführen von Scripts mit Ihrem eigenen Verarbeitungscontainer

Sie können scikit-learn-Skripte verwenden, um Daten vorzuverarbeiten und Ihre Modelle auszuwerten. Um zu sehen, wie man scikit-learn Skripte ausführt, um diese Aufgaben zu erfüllen, siehe das scikit-learn Processing Beispiel-Notebook. Dieses Notizbuch verwendet die ScriptProcessor Klasse aus Amazon SageMaker Python SDK for Processing.

Das folgende Beispiel zeigt einen allgemeinen Arbeitsablauf für die Verwendung einer ScriptProcessor Klasse mit Ihrem eigenen Verarbeitungscontainer. Der Workflow zeigt, wie Sie Ihr eigenes Image erstellen, Ihren Container erstellen und eine ScriptProcessor Klasse verwenden, um ein Python-Vorverarbeitungsskript mit dem Container auszuführen. Der Verarbeitungsjob verarbeitet Ihre Eingabedaten und speichert die verarbeiteten Daten in Amazon Simple Storage Service (Amazon S3).

Bevor Sie die folgenden Beispiele verwenden können, müssen Sie Ihre eigenen Eingabedaten und ein Python-Skript für die Verarbeitung Ihrer Daten vorbereitet haben. Ein end-to-end Beispiel mit Anleitungen für diesen Prozess finden Sie im Scikit-Learn Processing Beispiel-Notizbuch.

  1. Erstellen Sie eine Docker-Registry und fügen Sie die Docker-Datei hinzu, die zum Erstellen des Verarbeitungscontainers verwendet wird. Installieren Sie darin Pandas und scikit-learn. (Sie können mit einem ähnlichen RUN-Befehl auch Ihre eigenen Abhängigkeiten installieren.)

    mkdir docker %%writefile docker/Dockerfile FROM python:3.7-slim-buster RUN pip3 install pandas==0.25.3 scikit-learn==0.21.3 ENV PYTHONUNBUFFERED=TRUE ENTRYPOINT ["python3"]
  2. Erstellen Sie den Container mit dem Befehl docker, erstellen Sie ein Amazon Elastic Container Registry (AmazonECR) -Repository und übertragen Sie das Image an AmazonECR.

    import boto3 account_id = boto3.client('sts').get_caller_identity().get('Account') region = boto3.Session().region_name ecr_repository = 'sagemaker-processing-container' tag = ':latest' processing_repository_uri = '{}.dkr.ecr.{}.amazonaws.com/{}'.format(account_id, region, ecr_repository + tag) # Create ECR repository and push docker image !docker build -t $ecr_repository docker !aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {account_id}.dkr.ecr.{region}.amazonaws.com !aws ecr create-repository --repository-name $ecr_repository !docker tag {ecr_repository + tag} $processing_repository_uri !docker push $processing_repository_uri
  3. Richten Sie das ScriptProcessor von SageMaker Python aus einSDK, um das Skript auszuführen. Ersetzen image_uri mit dem URI für das von Ihnen erstellte Bild und ersetzen role_arn mit der ARN für eine AWS Identity and Access Management Rolle, die Zugriff auf Ihren Amazon S3 S3-Ziel-Bucket hat.

    from sagemaker.processing import ScriptProcessor, ProcessingInput, ProcessingOutput script_processor = ScriptProcessor(command=['python3'], image_uri='image_uri', role='role_arn', instance_count=1, instance_type='ml.m5.xlarge')
  4. Führen Sie das Skript aus. Ersetzen preprocessing.py mit dem Namen Ihres eigenen Python-Verarbeitungsskripts und ersetzen s3://path/to/my/input-data.csv mit dem Amazon S3 S3-Pfad zu Ihren Eingabedaten.

    script_processor.run(code='preprocessing.py', inputs=[ProcessingInput( source='s3://path/to/my/input-data.csv', destination='/opt/ml/processing/input')], outputs=[ProcessingOutput(source='/opt/ml/processing/output/train'), ProcessingOutput(source='/opt/ml/processing/output/validation'), ProcessingOutput(source='/opt/ml/processing/output/test')])

Das gleiche Verfahren kann mit anderen Bibliotheks- oder Systemabhängigkeiten verwendet werden. Sie können auch vorhandene Docker-Images verwenden. Dazu gehören Images, die Sie auf anderen Plattformen wie Kubernetes ausführen.