Administra versiones del entorno de ejecución

AI Platform Training usa imágenes para configurar las VM que atienden tus solicitudes de entrenamiento y predicción en la nube. Estas imágenes contienen el sistema operativo base, los paquetes de tecnología principal, los paquetes de pip (bibliotecas de Python) y los paquetes de sistema operativo. Las imágenes se actualizan de forma periódica a fin de que incluyan las características y las mejoras nuevas. El control de versiones de AI Platform Training te permite seleccionar la configuración adecuada para trabajar con tu modelo.

Notas importantes sobre el control de versiones

  • Siempre debes probar los modelos y trabajos de entrenamiento a fondo cuando cambias a una nueva versión del entorno de ejecución, sin importar si se trata de una actualización principal o secundaria.
  • AI Platform Training es compatible con cada versión del entorno de ejecución durante los 12 meses posteriores a su lanzamiento. Después del período de 12 meses, ya no podrás crear trabajos de entrenamiento, trabajos de predicción por lotes ni versiones de modelos que usen esa versión del entorno de ejecución.

    A los veinticuatro meses del lanzamiento de la versión del entorno de ejecución, AI Platform Prediction borra todas las versiones de modelos que usan la versión del entorno de ejecución.

    Obtén más información sobre el plazo de disponibilidad de las versiones del entorno de ejecución.

Información sobre los números de versión

Las imágenes que usa AI Platform Training corresponden a la versión del entorno de ejecución de AI Platform Training. La versión del entorno de ejecución usa el siguiente formato:

major_version.minor_version

Versiones principales y secundarias

Se crean versiones principales y secundarias de forma periódica para incorporar una o más de las siguientes opciones:

  • Lanzamientos de:
    • Sistema operativo
    • Marcos de trabajo de aprendizaje automático compatibles
  • Cambios o actualizaciones de las funciones de AI Platform Training.

Una versión principal nueva puede incluir cambios rotundos que requieran actualizaciones del código escrito para las versiones anteriores. Una versión secundaria nueva no debería incluir cambios rotundos y debería ser compatible con todas las variaciones de la misma versión principal.

Cómo seleccionar versiones del entorno de ejecución

Asegúrate de seleccionar la versión del entorno de ejecución que admita las últimas versiones de tu framework de aprendizaje automático y otros paquetes que uses.

La versión más antigua del entorno de ejecución de AI Platform Training que es compatible con scikit-learn y XGBoost es la versión 1.13.

Puedes ver los detalles de cada versión en la lista de versiones de AI Platform Training.

Configura la versión del entorno de ejecución

Asegúrate de configurar la versión del entorno de ejecución cuando envíes una solicitud de trabajo de entrenamiento:

gcloud

Usa la marca --runtime-versioncuando ejecutes el comandogcloud 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

Configura la runtimeVersion cuando definas tu solicitud de trabajo de entrenamiento:

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}

Obtén más detalles sobre cómo enviar un trabajo de entrenamiento en la API TrainingInput.

Configura la versión de Python

Python 3.7 está disponible en las versiones 1.15 y posteriores del entorno de ejecución.

Las versiones anteriores de Python están disponibles para ciertas versiones de entorno de ejecución:

  • Python 3.5 está disponible cuando usas una de las versiones desde la 1.13 a la 1.14 del entorno de ejecución de AI Platform Training.

  • Python 2.7 está disponible en las versiones 1.15 y anteriores del entorno de ejecución.

En el siguiente ejemplo, se muestra cómo especificar Python 3.7 para el entrenamiento. Puedes especificar Python 3.5 o Python 2.7 de manera similar.

gcloud

Si deseas usar Python 3.7 para el entrenamiento, especifica --python-version 3.7 y usa las versiones 1.15 o posteriores del entorno de ejecución.

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

Si deseas usar Python 3.7 para el entrenamiento, configura runtimeVersion como la versión '1.15' o una versión posterior y configura pythonVersion como '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}

Obtén más detalles sobre cómo enviar un trabajo de entrenamiento en la API TrainingInput.

Usa paquetes personalizados

Hay tres formas de cambiar los paquetes de tus instancias de entrenamiento:

  • Crea un contenedor personalizado que instale previamente tus dependencias en una imagen.
  • Especifica los paquetes PyPI como dependencias de tu paquete de entrenador.
  • subir manualmente los archivos de paquetes (tarballs) y luego incluir sus rutas como entrada de entrenamiento

Compila un contenedor personalizado

En lugar de utilizar una versión del entorno de ejecución, puedes crear un contenedor de Docker para incluir tus dependencias. Obtén más información sobre cómo usar contenedores personalizados.

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

Incluye dependencias de paquetes de PyPI

Puedes especificar paquetes de PyPI y sus versiones como dependencias de tu paquete de entrenador mediante el proceso normal de herramientas de configuración:

  1. En el directorio de nivel superior de la aplicación entrenadora, incluye un archivo setup.py.
  2. Cuando llames a setuptools.setup en setup.py, pasa una lista de dependencias y, opcionalmente, sus versiones como el parámetro install_requires. Este archivo setup.py de ejemplo muestra el siguiente procedimiento:

    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 fuerza la reinstalación de los paquetes, por lo que puedes anular los paquetes que son parte de la imagen de la versión del entorno de ejecución con versiones más nuevas o más antiguas.

Sube tus propios archivos de paquetes

Puedes incluir archivos de paquetes adicionales como parte de tu solicitud de trabajo de entrenamiento. Sube los paquetes a Cloud Storage y especifica una lista de los paquetes que se deben instalar en cada instancia de entrenamiento. AI Platform Training instala todos los paquetes con pip. No se admiten los paquetes diseñados para otros administradores de paquetes.

gcloud

Usa la marca --packagescuando ejecutes el comandogcloud ai-platform jobs submit training. Configura el valor en una lista separada por comas de las rutas a todos los paquetes adicionales. Ten en cuenta que la lista no puede contener espacios en blanco entre las entradas.

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

Agrega todos los paquetes adicionales a la lista que usas para el valor de packageUris en el objeto 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}
.

Especifica versiones personalizadas de TensorFlow para entrenamiento

Para el entrenamiento, es posible usar una versión más reciente de TensorFlow que la última versión del entorno de ejecución compatible en AI Platform Training, pero no para la predicción.

Si deseas usar una versión de TensorFlow que todavía no es compatible con una versión completa del entorno de ejecución de AI Platform Training, inclúyela como una dependencia personalizada para tu entrenador mediante uno de los siguientes métodos:

  1. Especifica la versión de TensorFlow en tu archivo setup.pycomo dependencia de PyPI. Inclúyela en tu lista de paquetes obligatorios de la siguiente manera:

     REQUIRED_PACKAGES = ['tensorflow>=2.11']
    
  2. Compila un binario de TensorFlow a partir de las fuentes y asegúrate de seguir las instrucciones para TensorFlow solo con asistencia de CPU. Este proceso produce un paquete pip (archivo .whl) que puedes incluir en tu solicitud de trabajo de entrenamiento si lo agregas a tu lista de paquetes.

La compilación de un binario de TensorFlow para incluirlo como un paquete personalizado es un enfoque más complejo, pero la ventaja es que puedes usar las actualizaciones más recientes de TensorFlow cuando entrenas tu modelo.

¿Qué sigue?