Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Questo articolo fornisce informazioni sull'uso di Azure Machine Learning SDK v1. SDK v1 è deprecato a partire dal 31 marzo 2025. Il supporto per questo terminerà il 30 giugno 2026. È possibile installare e usare l'SDK v1 fino a tale data.
È consigliabile passare all'SDK v2 prima del 30 giugno 2026. Per altre informazioni su SDK v2, vedere Che cos'è l'interfaccia della riga di comando di Azure Machine Learning e Python SDK v2? e il Riferimento SDK v2.
In alcuni casi, le immagini Docker predefinite per l'inferenza del modello e le soluzioni di estendibilità per Azure Machine Learning potrebbero non soddisfare le esigenze del servizio di inferenza.
In queste circostante si può usare un file Docker per creare una nuova immagine usando una delle immagini predefinite come punto di partenza. Estendendo un'immagine Docker predefinita esistente, è possibile usare lo stack di rete e le librerie di Azure Machine Learning senza creare un'immagine da zero.
Vantaggi e svantaggi
L'uso di un Dockerfile consente la personalizzazione completa dell'immagine prima della distribuzione. Consente di avere il massimo controllo sulle dipendenze o sulle variabili di ambiente, tra le altre cose, impostate nel contenitore.
Il compromesso principale per questo approccio è che viene eseguita una compilazione di immagini aggiuntiva durante la distribuzione, rallentando il processo di distribuzione. Se è possibile usare il metodo di estendibilità del pacchetto Python , la distribuzione è più veloce.
Prerequisiti
Un'area di lavoro di Azure Machine Learning. Per un'esercitazione sulla creazione di un'area di lavoro, vedere Creare risorse per iniziare.
Familiarità con la creazione di un Dockerfile.
Un'installazione locale funzionante di Docker, inclusa l'interfaccia della riga di comando di
docker
, OPPURE un'istanza di Registro Azure Container associata all'area di lavoro di Azure Machine Learning.Avviso
L'istanza di Registro Azure Container per l'area di lavoro viene creata la prima volta che si esegue il training o si distribuisce un modello usando l'area di lavoro. Se è stata creata una nuova area di lavoro, ma non è stato eseguito il training o non è stato creato un modello, non esiste alcun Registro Azure Container per l'area di lavoro.
Creare e compilare il Dockerfile
L'esempio seguente è un Dockerfile che usa un'immagine Docker predefinita di Azure Machine Learning come immagine di base:
FROM mcr.microsoft.com/azureml/<image_name>:<tag>
COPY requirements.txt /tmp/requirements.txt
RUN pip install –r /tmp/requirements.txt
Inserire quindi il Dockerfile precedente nella directory con tutti i file necessari ed eseguire il comando seguente per compilare l'immagine:
docker build -f <above dockerfile> -t <image_name>:<tag> .
Suggerimento
Altri dettagli su docker build
sono disponibili nella documentazione di Docker.
Se il comando docker build
non è disponibile in locale, usare l'istanza di Registro Azure Container per l'area di lavoro di Azure Machine Learning per compilare l'immagine Docker nel cloud. Per altre informazioni, vedere Esercitazione: Creare e distribuire immagini di contenitori con Registro Azure Container.
Importante
Microsoft consiglia di verificare prima di tutto che il Dockerfile funzioni in locale prima di provare a creare un'immagine di base personalizzata tramite Registro Azure Container.
Le sezioni seguenti contengono dettagli più specifici sul Dockerfile.
Installare pacchetti aggiuntivi
Se occorre installare altri pacchetti apt
nel contenitore Ubuntu, è possibile aggiungerli nel Dockerfile. L'esempio seguente illustra come usare il comando apt-get
da un Dockerfile:
FROM <prebuilt docker image from MCR>
# Switch to root to install apt packages
USER root:root
RUN apt-get update && \
apt-get install -y \
<package-1> \
...
<package-n> && \
apt-get clean -y && \
rm -rf /var/lib/apt/lists/*
# Switch back to non-root user
USER dockeruser
È anche possibile installare pacchetti pip aggiuntivi da un Dockerfile. L'esempio seguente illustra l'uso di pip install
:
RUN pip install <library>
Inserire il modello e il codice nelle immagini
Se è necessario incorporare nell'immagine il modello e il codice, è necessario impostare le variabili di ambiente seguenti nel Dockerfile:
-
AZUREML_ENTRY_SCRIPT
: script di immissione del codice. Questo file contiene i metodiinit()
erun()
. -
AZUREML_MODEL_DIR
: directory contenente i file del modello. Lo script di immissione deve usare questa directory come directory radice del modello.
L'esempio seguente illustra l'impostazione di queste variabili di ambiente nel Dockerfile:
FROM <prebuilt docker image from MCR>
# Code
COPY <local_code_directory> /var/azureml-app
ENV AZUREML_ENTRY_SCRIPT=<entryscript_file_name>
# Model
COPY <model_directory> /var/azureml-app/azureml-models
ENV AZUREML_MODEL_DIR=/var/azureml-app/azureml-models
Dockerfile di esempio
L'esempio seguente illustra l'installazione di pacchetti apt
, l'impostazione delle variabili di ambiente e l'inserimento di codice e modelli come parte del Dockerfile:
Annotazioni
Nell'esempio seguente viene usata l'immagine mcr.microsoft.com/azureml/minimal-ubuntu20.04-py38-cpu-inference:latest
come immagine di base. Per informazioni sulle immagini disponibili, vedere Immagini Docker predefinite per l'inferenza del modello.
FROM mcr.microsoft.com/azureml/minimal-ubuntu20.04-py38-cpu-inference:latest
USER root:root
# Install libpng-tools and opencv
RUN apt-get update && \
apt-get install -y \
libpng-tools \
python3-opencv && \
apt-get clean -y && \
rm -rf /var/lib/apt/lists/*
# Switch back to non-root user
USER dockeruser
# Code
COPY code /var/azureml-app
ENV AZUREML_ENTRY_SCRIPT=score.py
# Model
COPY model /var/azureml-app/azureml-models
ENV AZUREML_MODEL_DIR=/var/azureml-app/azureml-models
Passaggi successivi
Per usare un Dockerfile con Azure Machine Learning Python SDK, vedere i documenti seguenti:
- Usare il proprio Dockerfile locale
- Usare un'immagine Docker predefinita e creare un'immagine di base personalizzata
Per altre informazioni sulla distribuzione di un modello, vedere Come distribuire un modello.
Per informazioni su come risolvere i problemi relativi alle distribuzioni predefinite di immagini Docker, vedere Risoluzione dei problemi relativi alle immagini Docker predefinite per l'inferenza.