Gérer les versions d'exécution

AI Platform Training se sert d'images pour configurer les VM qui traitent vos requêtes d'entraînement et de prédiction dans le cloud. Ces images contiennent le système d'exploitation de base, les packages technologiques principaux, les packages pip (bibliothèques Python) et les packages de système d'exploitation. Les images sont mises à jour périodiquement de façon à inclure les dernières améliorations et fonctionnalités. La gestion des versions d'AI Platform Training vous permet de sélectionner la configuration appropriée pour votre modèle.

Remarques importantes sur la gestion des versions

  • Vous devez tester de manière approfondie vos tâches et modèles d'entraînement chaque fois que vous passez à une nouvelle version de l'environnement d'exécution, qu'il s'agisse d'une mise à jour majeure ou mineure.
  • AI Platform Training est compatible avec chaque version d'exécution pendant 12 mois après sa sortie. Au terme de cette période de 12 mois, vous ne pouvez plus créer de tâches d'entraînement, de tâches de prédiction par lot ni de versions de modèle utilisant la version d'exécution.

    Vingt-quatre mois après la sortie de la version d'exécution, AI Platform Prediction supprime toutes les versions de modèle qui utilisent la version d'exécution.

    En savoir plus sur la chronologie des disponibilités pour les versions d'exécution

Comprendre les numéros de version

Les images dont se sert AI Platform Training correspondent à la version d'exécution d'AI Platform Training. Le format utilisé pour désigner une version d'exécution est le suivant :

major_version.minor_version

Versions majeures et mineures

De nouvelles versions majeures et mineures sont créées périodiquement pour intégrer un ou plusieurs de ces éléments :

  • Versions des logiciels suivants :
    • Système d'exploitation
    • Frameworks de machine learning compatibles
  • Modifications ou mises à jour des fonctionnalités d'AI Platform Training

Une nouvelle version majeure peut inclure des modifications importantes nécessitant des mises à jour du code écrit par rapport aux versions précédentes. Une nouvelle version mineure ne doit pas comprendre de modifications importantes et doit être rétrocompatible avec toutes les variantes de la même version majeure.

Sélectionner des versions d'exécution

Veillez à sélectionner la version d'exécution compatible avec les dernières versions de votre framework de machine learning et des autres packages que vous utilisez.

La version d'exécution la plus ancienne d'AI Platform Training compatible avec scikit-learn et XGBoost est la version 1.13.

Vous pouvez consulter les détails de chaque version dans la liste des versions d'AI Platform Training.

Définir la version d'exécution

Veillez à définir la version d'exécution à utiliser lorsque vous envoyez une requête de tâche d'entraînement :

gcloud

Utilisez l'indicateur --runtime-version lorsque vous exécutez la commande 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.4 \
    --python-version 3.7

Python

Spécifiez runtimeVersion lorsque vous définissez votre requête de tâche d'entraînement :

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.4',
    'pythonVersion': '3.7'}

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

Obtenez plus d'informations sur la soumission d'une tâche d'entraînement dans l'API TrainingInput.

Définir la version Python

Python 3.7 est disponible dans la version d'exécution 1.15 et les versions ultérieures.

Les anciennes versions de Python sont disponibles pour certaines versions d'exécution :

  • Python 3.5 est disponible dans la version d'exécution 1.13 à 1.14 d'AI Platform Training.

  • Python 2.7 est disponible dans la version d'exécution 1.15 et les versions antérieures.

L'exemple suivant montre comment spécifier Python 3.7 pour l'entraînement. Vous pouvez spécifier Python 3.5 ou Python 2.7 de la même manière.

gcloud

Pour utiliser Python 3.7 pour l'entraînement, spécifiez --python-version 3.7 et utilisez la version d'exécution 1.15 ou une version ultérieure :

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.4

Python

Pour utiliser Python 3.7 pour l'entraînement, définissez runtimeVersion sur la version '1.15' ou une version ultérieure et définissez pythonVersion sur '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.4',
    'pythonVersion': '3.7'}

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

Obtenez plus d'informations sur la soumission d'une tâche d'entraînement dans l'API TrainingInput.

Utiliser des packages personnalisés

Pour modifier les packages installés sur vos instances d'entraînement, trois possibilités s'offrent à vous :

  • Vous pouvez créer un conteneur personnalisé qui préinstalle vos dépendances sur une image.
  • Vous pouvez spécifier des packages PyPI en tant que dépendances du package de votre application d'entraînement.
  • Vous pouvez importer manuellement des fichiers de package (au format "tarball") et ajouter leur chemin d'accès dans les données d'entrée d'entraînement.

Créer un conteneur personnalisé

Au lieu d'utiliser une version d'exécution, vous pouvez créer un conteneur Docker pour inclure vos dépendances. Pour en savoir plus, reportez-vous à la section Utiliser des conteneurs personnalisés.

# 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"]

Inclure des dépendances de package PyPI

Vous pouvez spécifier les packages PyPI et leurs versions en tant que dépendances de votre package d'application d'entraînement, suivant le processus normal de setuptools :

  1. Dans le répertoire de premier niveau de votre application d'entraînement, incluez un fichier setup.py.
  2. Lorsque vous appelez setuptools.setup dans le fichier setup.py, transmettez la liste des dépendances et éventuellement leurs versions comme paramètre install_requires. Cet exemple de fichier setup.py illustre la procédure :

    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 force la réinstallation des packages afin que vous puissiez remplacer les packages inclus dans l'image de la version d'exécution par des versions plus récentes ou plus anciennes.

Importer vos propres fichiers de package

Vous pouvez inclure des fichiers de package supplémentaires dans votre requête de tâche d'entraînement. Importez les packages dans Cloud Storage et spécifiez la liste des packages à installer sur chaque instance d'entraînement. AI Platform Training installe tous les packages avec pip. Les packages conçus pour d'autres gestionnaires de packages ne sont pas acceptés.

gcloud

Utilisez l'indicateur --packages lorsque vous exécutez la commande gcloud ai-platform jobs submit training. Attribuez-lui comme valeur la liste des chemins d'accès de tous les packages supplémentaires, séparés par des virgules. Notez que cette liste ne doit contenir aucun espace entre les entrées.

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.4 \
    --python-version 3.7 \
    --packages dep1.tar.gz,dep2.whl

Python

Ajoutez tous les packages supplémentaires à la liste utilisée comme valeur packageUris dans l'objet 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.4',
    'pythonVersion': '3.7'}

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

Spécifier des versions personnalisées de TensorFlow pour l'entraînement

Il est possible d'utiliser une version de TensorFlow plus récente que la dernière version d'exécution compatible sur AI Platform Training pour l'entraînement, mais pas pour la prédiction.

Pour utiliser une version de TensorFlow qui n'est pas encore acceptée en tant que version d'exécution complète d'AI Platform Training, incluez-la en tant que dépendance personnalisée de votre application d'entraînement selon l'une des méthodes suivantes :

  1. Spécifiez la version de TensorFlow dans votre fichier setup.py en tant que dépendance PyPI. Incluez-la dans votre liste de packages requis comme indiqué ci-dessous :

     REQUIRED_PACKAGES = ['tensorflow>=2.4']
    
  2. Créez un binaire TensorFlow à partir des sources en veillant à bien suivre les instructions pour compiler TensorFlow pour processeurs uniquement. Ce processus permet d'obtenir un package pip (fichier .whl) que vous pouvez inclure dans votre requête de tâche d'entraînement en l'ajoutant à votre liste de packages.

La création d'un binaire TensorFlow à inclure en tant que package personnalisé est une approche plus complexe. Cependant, l'avantage est que vous pouvez utiliser les mises à jour TensorFlow les plus récentes pour entraîner votre modèle.

Étape suivante