Como gerenciar versões do ambiente de execução

O AI Platform Training usa imagens para configurar as VMs que veiculam suas solicitações de treinamento e previsão na nuvem. Essas imagens contêm o sistema operacional de base, além dos principais pacotes de tecnologia, pacotes pip (bibliotecas Python) e pacotes de sistema operacional. As imagens são atualizadas periodicamente para incluir melhorias e recursos novos. O controle de versões do AI Platform Training permite selecionar a configuração correta para trabalhar com o modelo.

Observações importantes sobre o controle de versões

  • Sempre teste os modelos e jobs de treinamento completamente ao mudar para uma nova versão do ambiente de execução, independentemente de ser uma atualização grande ou pequena.
  • O AI Platform Training é compatível com cada versão do ambiente de execução por 12 meses após o lançamento. Após o período de 12 meses, não é mais possível criar jobs de treinamento, jobs de previsão em lote ou versões de modelo que usem a versão do ambiente de execução.

    24 meses após o lançamento da versão do ambiente de execução, o AI Platform Prediction exclui todas as versões de modelo que usam a versão do ambiente de execução.

    Saiba mais sobre o cronograma de disponibilidade para versões de ambiente de execução.

Noções básicas sobre números de versão

As imagens usadas pelo AI Platform Training correspondem à versão do ambiente de execução dele, que usa o seguinte formato:

major_version.minor_version

Versões principais e secundárias

Novas versões principais e secundárias são criadas periodicamente para incorporar um ou mais dos seguintes itens:

  • Lançamentos para:
    • Sistema operacional
    • frameworks de machine learning compatíveis
  • alterações ou atualizações na funcionalidade do AI Platform Training

As novas versões principais podem incluir alterações interruptivas que exigem atualizações no código escrito nas versões anteriores. As novas versões secundárias não incluem alterações importantes e são compatíveis com as variações anteriores da mesma versão principal.

Como selecionar versões de tempo de execução

Certifique-se de selecionar a versão do ambiente de execução que seja compatível com as versões mais recentes de seu framework de machine learning e outros pacotes que você está usando.

A versão mais antiga do ambiente de execução do AI Platform Training compatível com scikit-learn e XGBoost é a versão 1.13.

Consulte os detalhes de cada versão na Lista de versões do AI Platform Training.

Como definir a versão do ambiente de execução

Defina a versão do ambiente de execução ao enviar uma solicitação de job de treinamento:

gcloud

Use a sinalização --runtime-version ao executar o 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

Configure runtimeVersion ao definir sua solicitação de job de treinamento:

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}

Veja mais detalhes sobre o envio de um job de treinamento na API TrainingInput.

Como definir a versão do Python

O Python 3.7 está disponível com o ambiente de execução versão 1.15 e posterior.

As versões mais antigas do Python estão disponíveis para algumas versões do ambiente de execução:

  • O Python 3.5 está disponível com as versões 1.13 a 1.14 do ambiente de execução do AI Platform Training.

  • O Python 2.7 está disponível com as versões do ambiente de execução 1.15 e anteriores.

No exemplo a seguir, mostramos como especificar o Python 3.7 para treinamento. É possível especificar o Python 3.5 ou o Python 2.7 de maneira semelhante.

gcloud

Se quiser usar o Python 3.7 para treinamento, especifique --python-version 3.7 e use a versão 1.15 ou posterior do ambiente de execução:

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

Se quiser usar o Python 3.7 para treinamento, defina runtimeVersion como '1.15' ou posterior e 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}

Veja mais detalhes sobre o envio de um job de treinamento na API TrainingInput.

Como usar pacotes personalizados

Há três maneiras de alterar os pacotes nas instâncias de treinamento:

  • Criar um contêiner personalizado que pré-instala as dependências em uma imagem.
  • Especificar pacotes PyPI como dependências do pacote de treinamento.
  • fazer upload manual de arquivos de pacote (tarballs) e incluir os respectivos caminhos como entrada de treinamento.

Como criar um contêiner personalizado

Em vez de usar uma versão do ambiente de execução, é possível criar um contêiner do Docker para incluir as dependências. Saiba mais sobre como usar contêineres 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"]

Como incluir dependências de pacote do PyPI

É possível especificar pacotes do PyPI e as respectivas versões como dependências ao pacote treinador usando o processo normal de ferramentas de configuração:

  1. No diretório de nível superior do aplicativo treinador, inclua um arquivo setup.py.
  2. Quando você chamar setuptools.setup em setup.py, passe uma lista de dependências e, opcionalmente, as versões como o parâmetro install_requires. Neste exemplo de arquivo setup.py, mostramos o procedimento:

    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.')
    

O AI Platform Training força a reinstalação dos pacotes para que seja possível substituir os pacotes pertinentes à imagem da versão do ambiente de execução por versões mais recentes ou mais antigas.

Como fazer upload dos seus próprios arquivos de pacote

É possível incluir outros arquivos de pacote como parte da solicitação do job de treinamento. Basta carregar os pacotes no Cloud Storage e especificar uma lista de pacotes a serem instalados em cada instância de treinamento. O AI Platform Training instala todos os pacotes com pip. Não são compatíveis os pacotes projetados para outros tipos de gerenciadores.

gcloud

Use a sinalização --packages ao executar o comando gcloud ai-platform jobs submit training. Defina o valor como uma lista separada por vírgulas dos caminhos de todos os pacotes adicionais. A lista não pode conter espaços em branco entre as 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

Adicione todos os outros pacotes à lista que você usa para o valor de packageUris no 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}

Como especificar versões personalizadas do TensorFlow para treinamento

É possível usar uma versão mais recente do TensorFlow em vez da última versão compatível do ambiente de execução no AI Platform Training para fins de treinamento, mas não para previsão.

Para usar uma versão do TensorFlow que ainda não é compatível com uma versão completa do ambiente de execução do AI Platform Training, inclua-a como uma dependência personalizada do seu treinador usando uma das seguintes abordagens:

  1. Especifique a versão do TensorFlow no arquivo setup.py como uma dependência PyPI. Inclua a versão na lista de pacotes obrigatórios da seguinte maneira:

     REQUIRED_PACKAGES = ['tensorflow>=2.11']
    
  2. Crie um binário do TensorFlow a partir das origens. Lembre-se de seguir as instruções do TensorFlow, que é compatível apenas com CPUs. Esse processo gera um pacote pip (arquivo .whl) que pode ser incluído na solicitação do job de treinamento, basta adicioná-lo à lista de pacotes.

Criar um binário do TensorFlow e incluí-lo como um pacote personalizado é um processo mais complexo. No entanto, você aproveita a vantagem de usar as atualizações mais recentes do TensorFlow ao treinar o modelo.

A seguir