Administra versiones del entorno de ejecución

Cloud Machine Learning Engine usa imágenes para configurar las VM que están al servicio de 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 funciones y mejoras nuevas. El control de versiones de Cloud ML Engine te permite seleccionar la configuración adecuada para trabajar con tu modelo.

Notas importantes sobre el control de versiones

  • La versión del entorno de ejecución de Cloud ML Engine predeterminada usada por la API de Cloud Machine Learning Engine es la versión 1.0. Si no especificas una versión del entorno de ejecución, Cloud ML Engine usa la versión 1.0.
  • Siempre debes probar tus modelos y trabajos de entrenamiento exhaustivamente cuando cambias a una versión nueva del entorno de ejecución, independientemente de si se trata de una actualización principal o secundaria.

Comprende los números de versión

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

  • Versiones de:
    • Sistema operativo
    • TensorFlow, scikit-learn y XGBoost
  • Cambios o actualizaciones en la funcionalidad de Cloud ML Engine.

En comparación con versiones anteriores, una versión principal nueva puede incluir cambios rotundos que requieren actualizaciones del código escrito. Una versión secundaria nueva no debe incluir cambios rotundos y debe ser compatible con las versiones anteriores y con todas las variaciones de la misma versión principal.

Selecciona 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 uses. Si no especificas la versión del entorno de ejecución para las tareas a continuación, Cloud ML Engine usa la versión predeterminada 1.0 a fin de completar tu solicitud.

La versión más reciente del entorno de ejecución de Cloud ML Engine que es compatible para scikit-learn y XGBoost es la versión 1.4. No se admiten las versiones 1.0 y 1.2.

Puedes ver los detalles de cada versión en la lista de versiones de Cloud ML Engine.

Cómo 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, Cloud ML Engine usa la versión predeterminada 1.0 para tu trabajo de entrenamiento.

gcloud

Usa el marcador --runtime-version cuando ejecutas el comando gcloud ml-engine jobs submit training.

gcloud ml-engine 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.12

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.12',
    '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 de TrainingInput.

Cómo 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 Cloud ML Engine. 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 el marcador --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 ml-engine 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.12

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.12',
    '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 de TrainingInput.

Cómo 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 las solicitudes de predicción en línea. Si no especificas una versión del entorno de ejecución, Cloud ML Engine usa la versión 1.0.

gcloud

Usa el marcador --runtime-version cuando ejecutas el comando gcloud ml-engine versions create:

gcloud ml-engine versions create version_name \
    --model model_name
    --origin gs://my/trained/model/path
    --runtime-version 1.12

Python

Configura la runtimeVersion cuando defines 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.12'}
 

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 nueva del modelo 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)

Existen dos maneras de cambiar los paquetes en tus instancias de entrenamiento: subir manualmente los archivos de paquetes (tarballs) y, luego, incluir sus rutas como entrada de entrenamiento y especificar los paquetes PyPI como dependencias de tu paquete de entrenador.

Cómo 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. Cloud ML Engine instala todos los paquetes con pip. No se admiten los paquetes diseñados para otros administradores de paquetes.

gcloud

Usa el marcador --packages cuando ejecutas el comando gcloud ml-engine 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 ml-engine 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.12'}

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

Cómo 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.')
    

Cloud ML Engine obliga 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.

¿Qué sigue?

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

Enviar comentarios sobre…

Cloud ML Engine para XGBoost y scikit-learn