Como treinar em escala

As dicas a seguir se aplicam a grandes conjuntos de dados e/ou modelos.

Comparação entre treinamento único e distribuído

Se você criar um aplicativo de treinamento do TensorFlow ou um contêiner personalizado, realize o treinamento distribuído no AI Platform Training.

Se você treinar com um contêiner PyTorch pré-criado, será possível executar treinamento distribuído do PyTorch.

Só é possível executar o treinamento distribuído do XGBoost usando o algoritmo integrado XGBoost distribuído.

O AI Platform Training não é compatível com treinamento distribuído do scikit-learn. Se os aplicativos de treinamento usam esse framework, utilize somente as configurações de tipo de máquina personalizado ou de nível de escalonamento que correspondam a uma única instância de worker.

Conjuntos de dados grandes

No trabalho com grandes conjuntos de dados, podem ocorrer falhas no escalonamento ao fazer download do conjunto de dados inteiro para a VM de worker de treinamento e ao carregá-lo no pandas. Nesses casos, use o stream-read/file_io do TensorFlow API Essa API vem pré-instalada na VM.

import pandas as pd

from pandas.compat import StringIO
from tensorflow.python.lib.io import file_io

# Access iris data from Cloud Storage
iris_data_filesteam = file_io.FileIO(os.path.join(data_dir, iris_data_filename),
                                     mode='r')
iris_data = pd.read_csv(StringIO(iris_data_filesteam.read())).values
iris_target_filesteam = file_io.FileIO(os.path.join(data_dir,
                                                    iris_target_filename),
                                       mode='r')
iris_target = pd.read_csv(StringIO(iris_target_filesteam.read())).values
iris_target = iris_target.reshape((iris_target.size,))


# Your training program goes here
...
..
.

# Close all filestreams
iris_data_filesteam.close()
iris_target_filesteam.close()

Modelos grandes

Defina scale-tier como CUSTOM e configure masterType por meio de um arquivo de configuração apropriado para solicitar VMs de worker de treinamento com necessidades maiores de memória. Para mais detalhes, consulte a documentação sobre nível de dimensionamento.

Para fazer isso:

  1. Crie config.yaml no local com este conteúdo:

    trainingInput:
      masterType: large_model
    
  2. Envie o job:

    CONFIG=path/to/config.yaml
    
    gcloud ai-platform jobs submit training $JOB_NAME \
      --job-dir $JOB_DIR \
      --package-path $TRAINER_PACKAGE_PATH \
      --module-name $MAIN_TRAINER_MODULE \
      --region us-central1 \
      --runtime-version=$RUNTIME_VERSION \
      --python-version=$PYTHON_VERSION \
      --scale-tier CUSTOM \
      --config $CONFIG