Gestione delle versioni di runtime

AI Platform Training utilizza le immagini per configurare le VM che gestiscono le richieste di addestramento e previsione nel cloud. Queste immagini contengono il sistema operativo di base, i pacchetti di tecnologie principali, i pacchetti pip (librerie Python) e i pacchetti del sistema operativo. Le immagini vengono aggiornate periodicamente per includere nuovi miglioramenti e funzionalità. Il controllo delle versioni di AI Platform Training consente di selezionare la configurazione giusta per lavorare con il tuo modello.

Note importanti sul controllo delle versioni

  • Devi sempre testare in modo approfondito i job e i modelli di addestramento quando passi a una nuova versione del runtime, indipendentemente dal fatto che si tratti di un aggiornamento principale o di minore entità.
  • AI Platform Training supporta ogni versione del runtime per 12 mesi dopo il rilascio. Dopo il periodo di 12 mesi, non puoi più creare job di addestramento, job di previsione batch o versioni dei modelli che utilizzano la versione del runtime.

    Ventiquattro mesi dopo il rilascio della versione del runtime, AI Platform Prediction elimina tutte le versioni del modello che utilizzano la versione del runtime.

    Scopri di più sulle tempistiche di disponibilità delle versioni di runtime.

Informazioni sui numeri di versione

Le immagini utilizzate da AI Platform Training corrispondono alla versione runtime di AI Platform Training. La versione runtime utilizza il seguente formato:

major_version.minor_version

Versioni principali e secondarie

Nuove versioni principali e secondarie vengono create periodicamente per incorporare uno o più dei seguenti elementi:

  • Release per:
    • Sistema operativo
    • Framework di machine learning supportati
  • Modifiche o aggiornamenti alla funzionalità di AI Platform Training.

Una nuova versione principale può includere modifiche che provocano errori che richiedono aggiornamenti al codice scritto rispetto alle versioni precedenti. Una nuova versione secondaria non deve includere modifiche che provocano un errore e deve essere compatibile con tutte le versioni precedenti della stessa versione principale.

Selezione delle versioni di runtime

Assicurati di selezionare la versione runtime che supporta le versioni più recenti del framework di machine learning e degli altri pacchetti in uso.

La prima versione del runtime di AI Platform Training che fornisce supporto per scikit-learn e XGBoost è la versione 1.13.

Puoi vedere i dettagli di ogni versione nell'elenco delle versioni di AI Platform Training.

Impostazione della versione del runtime

Assicurati di impostare la versione del runtime quando invii una richiesta di job di addestramento:

gcloud

Utilizza il flag --runtime-version quando esegui il comando gcloud ai-platform jobs submit training.

gcloud ai-platform jobs submit training my_job \
    --module-name trainer.task \
    --job-dir gs://my/training/job/directory \
    --package-path /path/to/my/project/trainer \
    --region us-central1 \
    --runtime-version 2.11 \
    --python-version 3.7

Python

Imposta runtimeVersion quando definisci la richiesta del job di addestramento:

training_inputs = {'scaleTier': 'BASIC',
    'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'],
    'pythonModule': 'trainer.task'
    'args': ['--arg1', 'value1', '--arg2', 'value2'],
    'region': 'us-central1',
    'jobDir': 'gs://my/training/job/directory',
    'runtimeVersion': '2.11',
    'pythonVersion': '3.7'}

job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}

Ulteriori dettagli sull'invio di un job di addestramento nell'API TrainingInput.

Impostazione della versione Python

Python 3.7 è disponibile in runtime 1.15 e versioni successive.

Le versioni precedenti di Python sono disponibili per determinate versioni di runtime:

  • Python 3.5 è disponibile quando utilizzi la versione del runtime da 1.13 a 1.14 di AI Platform Training.

  • Python 2.7 è disponibile nelle versioni di runtime 1.15 e precedenti.

L'esempio seguente mostra come specificare Python 3.7 per l'addestramento. Puoi specificare Python 3.5 o Python 2.7 in modo simile.

gcloud

Per utilizzare Python 3.7 per l'addestramento, specifica --python-version 3.7 e utilizza runtime 1.15 o versioni successive:

gcloud ai-platform jobs submit training my_job \
    --module-name trainer.task \
    --job-dir gs://my/training/job/directory \
    --package-path /path/to/my/project/trainer \
    --python-version 3.7 \
    --region us-central1 \
    --runtime-version 2.11

Python

Per utilizzare Python 3.7 per l'addestramento, imposta runtimeVersion sulla versione '1.15' o successiva e imposta pythonVersion su '3.7':

training_inputs = {'scaleTier': 'BASIC',
    'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'],
    'pythonModule': 'trainer.task'
    'args': ['--arg1', 'value1', '--arg2', 'value2'],
    'region': 'us-central1',
    'jobDir': 'gs://my/training/job/directory',
    'runtimeVersion': '2.11',
    'pythonVersion': '3.7'}

job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}

Ulteriori dettagli sull'invio di un job di addestramento nell'API TrainingInput.

Utilizzo di pacchetti personalizzati

Esistono tre modi per modificare i pacchetti nelle istanze di addestramento:

  • creando un container personalizzato che preinstalla le tue dipendenze su un'immagine
  • specificando pacchetti PyPI come dipendenze del pacchetto trainer
  • caricare manualmente i file di pacchetti (tarball) e includere i relativi percorsi come input di addestramento

Creazione di un container personalizzato

Anziché utilizzare una versione di runtime, puoi creare un container Docker per includere le tue dipendenze. Scopri di più su come utilizzare i container personalizzati.

# Specifies base image and tag
FROM image:tag
WORKDIR /root

# Installs additional packages
RUN pip install pkg1 pkg2 pkg3

# Downloads training data
RUN curl https://example-url/path-to-data/data-filename --output /root/data-filename

# Copies the trainer code to the docker image.
COPY your-path-to/model.py /root/model.py
COPY your-path-to/task.py /root/task.py

# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "task.py"]

Inclusione delle dipendenze dei pacchetti PyPI

Puoi specificare i pacchetti PyPI e le relative versioni come dipendenze del pacchetto di addestramento utilizzando il normale processo degli strumenti di configurazione:

  1. Nella directory di primo livello dell'applicazione trainer, includi un file setup.py.
  2. Quando chiami setuptools.setup in setup.py, trasmetti un elenco di dipendenze e, facoltativamente, le relative versioni come parametro install_requires. Questo file di esempio setup.py illustra la procedura:

    from setuptools import find_packages
    from setuptools import setup
    
    REQUIRED_PACKAGES = ['some_PyPI_package>=1.5',
                         'another_package==2.6']
    
    setup(
        name='trainer',
        version='0.1',
        install_requires=REQUIRED_PACKAGES,
        packages=find_packages(),
        include_package_data=True,
        description='Generic example trainer package with dependencies.')
    

AI Platform Training forza la reinstallazione dei pacchetti, per consentirti di eseguire l'override di quelli che fanno parte dell'immagine della versione runtime con le versioni più recenti o meno recenti.

Caricamento dei file di pacchetto

Puoi includere file di pacchetto aggiuntivi nella richiesta del job di addestramento. Puoi caricare i pacchetti in Cloud Storage e specificare un elenco di pacchetti da installare su ciascuna istanza di addestramento. AI Platform Training installa tutti i pacchetti con pip. I pacchetti progettati per altri gestori di pacchetti non sono supportati.

gcloud

Utilizza il flag --packages quando esegui il comando gcloud ai-platform jobs submit training. Imposta il valore su un elenco separato da virgole dei percorsi di tutti i pacchetti aggiuntivi. Tieni presente che l'elenco non può contenere spazi vuoti tra le voci.

gcloud ai-platform jobs submit training my_job \
    --staging-bucket gs://my-bucket \
    --package-path /path/to/my/project/trainer \
    --module-name trainer.task \
    --runtime-version 2.11 \
    --python-version 3.7 \
    --packages dep1.tar.gz,dep2.whl

Python

Aggiungi tutti gli altri pacchetti all'elenco che utilizzi per il valore di packageUris nell'oggetto TrainingInput.

training_inputs = {'scaleTier': 'BASIC',
    'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz',
                    'gs://my/dependencies/path/dep1.tar.gz',
                    'gs://my/dependencies/path/dep2.whl'],
    'pythonModule': 'trainer.task'
    'args': ['--arg1', 'value1', '--arg2', 'value2'],
    'region': 'us-central1',
    'jobDir': 'gs://my/training/job/directory',
    'runtimeVersion': '2.11',
    'pythonVersion': '3.7'}

    job_spec = {'jobId': my_job_name, 'trainingInput': training_inputs}

Specifica delle versioni personalizzate di TensorFlow per l'addestramento

È possibile utilizzare una versione più recente di TensorFlow rispetto all'ultima versione di runtime supportata su AI Platform Training per l'addestramento, ma non per le previsioni.

Per utilizzare una versione di TensorFlow non ancora supportata come versione completa del runtime di AI Platform Training, includila come dipendenza personalizzata per il tuo addestramento utilizzando uno dei seguenti approcci:

  1. Specifica la versione di TensorFlow nel file setup.py come dipendenza PyPI. Includila nell'elenco dei pacchetti obbligatori come segue:

     REQUIRED_PACKAGES = ['tensorflow>=2.11']
    
  2. Crea un programma binario TensorFlow da origini, assicurandoti di seguire le istruzioni per TensorFlow con supporto CPU solo. Questo processo restituisce un pacchetto pip (file .whl) che puoi includere nella richiesta del job di addestramento aggiungendolo al tuo elenco dei pacchetti.

Creare un programma binario TensorFlow da includere come pacchetto personalizzato è un approccio più complesso, ma il vantaggio è che puoi utilizzare gli aggiornamenti di TensorFlow più recenti durante l'addestramento del modello.

Passaggi successivi