Come posso risolvere i problemi che si verificano quando porto il mio container personalizzato su Amazon SageMaker per la formazione o l'inferenza?

4 minuti di lettura
0

Desidero risolvere i problemi che si verificano quando porto il mio container personalizzato su Amazon SageMaker per la formazione o l'inferenza.

Breve descrizione

È possibile personalizzare le immagini dei container in SageMaker utilizzando uno dei seguenti approcci:

Estendi un container SageMaker predefinito: utilizza questo approccio se devi personalizzare il tuo ambiente o framework aggiungendo funzionalità aggiuntive. Con questo approccio, non è necessario creare l'immagine del container da zero perché le librerie di deep learning sono già predefinite.

Porta il tuo container: usa questo approccio quando hai già un'immagine per l'elaborazione di dati, la formazione dei modelli o l'inferenza in tempo reale con funzionalità aggiuntive e requisiti di sicurezza che attualmente non sono supportati dalle immagini SageMaker predefinite.

Crea un'immagine del container da zero: se disponi di un algoritmo personalizzato e non hai ancora un'immagine del container personalizzata, è consigliabile utilizzare questo approccio.

Con qualsiasi di questi approcci, gli errori che ricevi potrebbero essere principalmente correlati alla compilazione errata dell'immagine del container. Pertanto, assicurati che il container sia configurato correttamente.

Risoluzione

Estendi un container SageMaker predefinito

  • Assicurati che le variabili di ambiente SAGEMAKER_SUBMIT_DIRECTORY e SAGEMAKER_PROGRAM siano impostate nel Dockerfile.
  • Assicurati di aver installato le librerie aggiuntive richieste nel tuo Dockerfile. Puoi farlo eseguendo i seguenti comandi:
# SageMaker PyTorch image
FROM 763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.5.1-cpu-py36-ubuntu16.04
ENV PATH="/opt/ml/code:${PATH}"

# this environment variable is used by the SageMaker PyTorch container to determine our user code directory.
ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code

# install the libraries using pip
COPY requirements.txt./requirements.txt
RUN pip install requirements.txt

# /opt/ml and all subdirectories are utilized by SageMaker, use the /code subdirectory to store your user code.
COPY cifar10.py /opt/ml/code/cifar10.py
# Defines cifar10.py as script
entrypoint 
ENV SAGEMAKER_PROGRAM cifar10.py
  • Una volta completata la compilazione dell'immagine, esegui il container in modalità locale. Assicurati che l'immagine funzioni come previsto.

Per ulteriori informazioni, consulta Extend a prebuilt container (Estensione di un container precostruito).

Porta il tuo container

Assicurati di aver installato le rispettive librerie del kit di strumenti SageMaker per la formazione o l'inferenza. Questi kit di strumenti definiscono la posizione del codice e di altre risorse insieme al punto di ingresso che contiene il codice che deve essere eseguito all'avvio del container. Quando crei un processo di formazione SageMaker o un endpoint di inferenza, SageMaker crea le seguenti directory:

/opt/ml
    ├── input
    │
    ├── model
    │
    ├── code
    │
    ├── output
    │
    └── failure

Quando esegui un processo di formazione, la directory /opt/ml/input contiene informazioni sul canale di dati utilizzato per accedere ai dati archiviati in Amazon Simple Storage Service (Amazon S3). Lo script di formazione (train.py) con le sue dipendenze è archiviato in opt/ml/code. Assicurati che lo script scriva il modello finale nella directory /opt/ml/model dopo il completamento del processo di formazione.

Quando ospiti un modello addestrato su SageMaker per fare inferenze, il modello viene archiviato in /opt/ml/model e il codice di inferenza (inference.py) viene archiviato in /opt/ml/code.

Per ulteriori informazioni, consulta la pagina Adapting your own Docker container to work with SageMaker (Adattamento del proprio container Docker per l'utilizzo con SageMaker).

Crea un container da zero

  • Per assicurarti che il container venga eseguito come eseguibile, usa il formato exec dell'istruzione ENTRYPOINT nel tuo Dockerfile:
ENTRYPOINT ["python", "cifar10.py"]
  • Per un processo di formazione, lo script di formazione deve avere il codice di uscita 0 se la formazione ha esito positivo e un codice di uscita diverso da zero se la formazione ha esito negativo.
  • Assicurati che il modello finale sia scritto in /opt/ml/model e che tutte le dipendenze e gli artefatti siano archiviati in /opt/ml/output. Se un processo di formazione fallisce, lo script deve scrivere le informazioni sull'errore in /opt/ml/output/failure.
  • Quando crei un endpoint di inferenza, assicurati che il modello sia salvato nel formato FILENAME.tar.gz. Il container deve implementare la richiesta HTTP POST su /invocations per l'inferenza e la richiesta HTTP GET su /ping per il controllo dell'integrità dell'endpoint.

Per ulteriori informazioni, consulta la pagina Create a container with your own algorithms and models (Creare un container con algoritmi e modelli personalizzati).


Informazioni correlate

Use the Amazon SageMaker local mode to train on your notebook instance (Utilizza la modalità locale di Amazon SageMaker per eseguire la formazione sull'istanza notebook)

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa