Entraînement à grande échelle avec scikit-learn

Les conseils suivants s'appliquent aux ensembles de données volumineux et/ou aux modèles volumineux.

Entraînement individuel ou distribué

Si vous créez une application d'entraînement TensorFlow ou un conteneur personnalisé, vous pouvez effectuer un entraînement distribué sur AI Platform Training.

Si vous effectuez l'entraînement avec un conteneur PyTorch prédéfini, vous pouvez effectuer un entraînement distribué PyTorch.

Vous ne pouvez réaliser un entraînement distribué pour XGBoost qu'à l'aide de l'algorithme XGBoost distribué intégré.

AI Platform Training n'accepte pas l'entraînement distribué pour scikit-learn. Si vos applications d'entraînement emploient ce framework, n'utilisez que les configurations de types de machines à niveau d'évolutivité ou personnalisés correspondant à une instance de nœud de calcul unique.

Ensembles de données volumineux

Lorsque vous manipulez des ensembles de données volumineux, il est possible que leur téléchargement intégral dans la VM de nœud de calcul d'entraînement et que leur chargement dans Pandas ne donnent pas lieu à un scaling. Dans ce cas, pensez à utiliser l'API stream-read/file_io de TensorFlow. Cette API est préinstallée sur la 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()

Modèles volumineux

Vous pouvez entraîner des VM de nœud de calcul ayant des besoins de mémoire supérieurs en définissant scale-tier sur CUSTOM, et en définissant masterType à l'aide d'un fichier de configuration. Pour plus de détails, reportez-vous à la documentation sur le niveau d'évolutivité.

Procédez comme suit :

  1. Créez un fichier config.yaml localement avec le contenu suivant :

    trainingInput:
      masterType: large_model
    
  2. Soumettez votre tâche :

    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