Administra versiones del entorno de ejecución

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

Notas importantes sobre el control de versiones

  • De manera predeterminada, la API de AI Platform Training and Prediction usa la versión 1.0 del entorno de ejecución de AI Platform. Si no especificas otra, AI Platform usa la versión 1.0 del entorno de ejecución.
  • Siempre debes probar tus modelos y trabajos de entrenamiento a fondo cuando cambias a una versión del entorno de ejecución nueva, independientemente de si se trata de una actualización principal o secundaria.

Comprende los números de versión

Las imágenes que usa AI Platform corresponden a la versión del entorno de ejecución de AI Platform. 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 periódicamente para incorporar una o más de las siguientes opciones:

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

Una versión principal nueva puede incluir cambios rotundos que requieren actualizaciones del código escrito en comparación con versiones anteriores. Una versión secundaria nueva no debe incluir cambios rotundos y debe 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 marco de trabajo de aprendizaje automático y otros paquetes que puedas usar. Si no especificas la versión del entorno de ejecución para las siguientes tareas, AI Platform usa, de forma predeterminada, la versión 1.0 a fin de completar tu solicitud.

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

Para especificar la versión del entorno de ejecución para un trabajo de entrenamiento

Asegúrate de configurar la versión del entorno de ejecución cuando envías una solicitud de trabajo de entrenamiento. De lo contrario, AI Platform usará, de forma predeterminada, la versión 1.0 para tu trabajo de entrenamiento.

gcloud

Usa la marca --runtime-version cuando ejecutes el 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 1.13

Python

Configura la runtimeVersion cuando defines 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': '1.13',
    'pythonVersion': '3.5'}

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.

Para especificar la versión de Python para un trabajo de entrenamiento

Python 3.5 está disponible cuando usas la versión 1.4 o superior del entorno de ejecución de AI Platform. Para enviar un trabajo de entrenamiento con Python 3.5, configura la versión de Python en "3.5" y la versión del entorno de ejecución en 1.4 o superior.

Si la versión de Python no se especifica, el valor predeterminado es "2.7".

gcloud

Usa la marca --python-version para especificar la versión de Python 3.5 y asegúrate de configurar la versión del entorno de ejecución en 1.4 o superior:

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.5
    --region us-central1 \
    --runtime-version 1.13

Python

Configura la runtimeVersion en '1.4' o superior y la pythonVersion en '3.5':

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': '1.13',
    'pythonVersion': '3.5'}

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.

Para especificar la versión del entorno de ejecución para una versión del modelo

Asegúrate de especificar la versión del entorno de ejecución cuando creas una versión del modelo implementada a partir de un modelo entrenado. Esto configura la versión del entorno de ejecución predeterminada para solicitudes de predicción por lotes y en línea. Si no especificas otra, AI Platform usa la versión 1.0 del entorno de ejecución.

gcloud

Usa la marca --runtime-version cuando ejecutes el comando gcloud ai-platform versions create:

gcloud ai-platform versions create version_name \
    --model model_name
    --origin gs://my/trained/model/path
    --runtime-version 1.13

Python

Configura la runtimeVersion cuando definas tu recurso de versión:

versionDef = {'name' = 'v1',
    'description' = 'The first iteration of the completely_made_up model',
    'deploymentUri' = 'gs://my/model/output/directory',
    'runtimeVersion' = '1.13'}
 

Para especificar una versión del entorno de ejecución con el fin de usarla en la predicción por lotes

Puedes especificar una versión del entorno de ejecución para usarla cuando creas un trabajo de predicción por lotes. Si no lo haces, AI Platform usa la versión del entorno de ejecución predeterminada configurada en la versión del modelo.

gcloud

Usa la marca --runtime-version cuando ejecutes el comando gcloud ai-platform jobs submit prediction:

gcloud ai-platform jobs submit prediction my_batch_job_333 \
    --model my_model \
    --input-paths gs://my/cloud/storage/data/path/* \
    --output-path gs://my/cloud/storage/data/output/path
    --region us-central1 \
    --data-format text \
    --runtime-version 1.13

Python

Configura la runtimeVersion en PredictionInput:

body = {
    'jobId': 'my_batch_job_333',
    'predictionInput': {
        'dataFormat': 'JSON',
        'inputPaths': ['gs://my/cloud/storage/data/path/*'],
        'outputPath': 'gs://my/cloud/storage/data/output/path',
        'region': 'us-central1',
        'modelName': 'projects/my_project/models/my_model',
        'runtimeVersion': '1.13'}}

Versiones del entorno de ejecución para la predicción en línea

Cuando creas una versión del modelo, asegúrate de especificar la versión del entorno de ejecución que deseas usar para las solicitudes de predicción en línea. Si la versión del entorno de ejecución predeterminada de la versión de tu modelo no es correcta, crea una versión del modelo nueva con la versión del entorno de ejecución correcta.

Las solicitudes de predicción en línea siempre usan la versión del entorno de ejecución predeterminada de la versión del modelo. No puedes especificar una versión del entorno de ejecución para anular esto en tu solicitud de predicción en línea.

Especifica paquetes de variantes (solo entrenamiento)

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

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

Para proporcionar archivos de paquete

Puedes incluir archivos de paquetes adicionales como parte de tu solicitud de trabajo de entrenamiento. Estos se instalarán en cada instancia de entrenamiento. AI Platform instala todos los paquetes con pip. No se admiten los paquetes diseñados para otros administradores de paquetes.

gcloud

Usa la marca --packages cuando ejecutes el comando gcloud 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 \
    --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': '1.13'}

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

Para incluir dependencias de paquetes de PyPI

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

  1. En el nivel superior del directorio de tu aplicación de entrenador, incluye un archivo setup.py.
  2. Cuando llamas 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 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 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 antiguas.

Para crear un contenedor personalizado (Beta)

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

Especifica versiones personalizadas de TensorFlow para 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 para el entrenamiento, pero no para la predicción.

Para usar una versión de TensorFlow que todavía no es compatible como una versión del entorno de ejecución completa de AI Platform, inclúyela como una dependencia personalizada para tu entrenador mediante uno de los siguientes enfoques:

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

     REQUIRED_PACKAGES = ['tensorflow>=1.13']
    
  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.

Pasos siguientes

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Cloud ML Engine para TensorFlow