Le service AI Platform Training gère les ressources informatiques dans le cloud pour entraîner vos modèles. Cette page décrit la procédure à suivre pour entraîner un modèle XGBoost à l'aide de AI Platform Training.
Dans ce tutoriel, vous allez entraîner un modèle simple pour prédire le niveau de revenu d'une personne en fonction d'un ensemble de données sur les revenus collectées par recensement. Vous allez créer une application d'entraînement en local, puis vous l'importerez dans Cloud Storage et soumettrez une tâche d'entraînement. Le service AI Platform Training écrit ses résultats dans votre bucket Cloud Storage et crée des journaux dans Cloud Logging.
Ce contenu est également disponible sur GitHub en tant que notebook Jupyter.
Entraîner un modèle sur AI Platform Training
Vous pouvez entraîner votre modèle sur AI Platform Training en trois étapes :
- Créer le fichier de modèle Python
- Ajoutez le code permettant de télécharger vos données depuis Cloud Storage afin qu'AI Platform Training puisse les utiliser.
- Une fois le modèle entraîné dans AI Platform Training, ajoutez du code pour exporter et enregistrer le modèle dans Cloud Storage.
- Préparer un package d'application d'entraînement
- Envoyer la tâche d'entraînement
Avant de commencer
Procédez comme suit pour configurer un compte GCP, activer l'API AI Platform Training, puis installer et activer le SDK Cloud.
Configurer le projet GCP
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Configurer votre environnement
Choisissez l'une des options ci-dessous pour configurer votre environnement en local sous macOS ou dans un environnement à distance sur Cloud Shell.
Pour les utilisateurs de macOS, nous vous recommandons de configurer votre environnement à l'aide de l'onglet macOS ci-dessous. Cloud Shell est disponible sous macOS, Linux et Windows (voir l'onglet Cloud Shell). Cloud Shell offre un moyen rapide d'essayer AI Platform Training, mais n'est pas adapté aux tâches de développement continu.
macOS
-
Vérifiez que Python est installé
Si ce n'est pas le cas, installez Python.python -V
-
Vérifiez que
pip
est installépip
est le gestionnaire de packages de Python, inclus dans les versions actuelles de Python. Vérifiez quepip
est déjà installé en exécutant la commandepip --version
. Si ce n'est pas le cas, découvrez comment installerpip
.Vous pouvez mettre à jour
pip
à l'aide de la commande suivante :pip install -U pip
Pour en savoir plus, consultez la documentation sur pip.
-
Installez
virtualenv
virtualenv
est un outil permettant de créer des environnements Python isolés. Vérifiez quevirtualenv
est déjà installé en exécutant la commandevirtualenv --version
. Si ce n'est pas le cas, installezvirtualenv
:pip install --user --upgrade virtualenv
Dans ce guide, pour créer un environnement de développement isolé, créez un environnement virtuel dans
virtualenv
. Par exemple, la commande suivante active un environnement nomméaip-env
:virtualenv aip-env source aip-env/bin/activate
-
Pour les besoins de ce tutoriel, exécutez toutes les autres commandes dans votre environnement virtuel.
Obtenez plus d'informations sur l'utilisation devirtualenv
. Pour quittervirtualenv
, exécutez la commandedeactivate
.
Cloud Shell
-
Ouvrez Google Cloud Console.
-
Cliquez sur le bouton Activer Google Cloud Shell en haut de la fenêtre de la console.
Une session Cloud Shell s'ouvre dans un nouveau cadre en bas de la console et affiche une invite de ligne de commande. L'initialisation de la session Shell peut prendre quelques secondes.
Votre session Cloud Shell est prête à l'emploi.
-
Configurez l'outil de ligne de commande
gcloud
pour qu'il utilise le projet sélectionné.gcloud config set project [selected-project-id]
où
[selected-project-id]
correspond à votre ID de projet. (Saisissez-le sans les crochets.)
Installer des frameworks
macOS
Dans votre environnement virtuel, exécutez la commande suivante pour installer les versions de scikit-learn, XGBoost et pandas utilisées dans la version d'exécution 2.11 d'AI Platform Training:
(aip-env)$ pip install scikit-learn==1.0.2 xgboost==1.6.2 pandas==1.3.5
En spécifiant les numéros de version dans la commande précédente, vous vous assurez que les dépendances de votre environnement virtuel correspondent à celles de la version d'exécution. Vous évitez ainsi tout comportement inattendu lors de l'exécution de votre code sur AI Platform Training.
Pour plus d'informations, y compris sur les options d'installation et les opérations de dépannage, reportez-vous aux instructions d'installation de chaque framework :
Cloud Shell
Exécutez la commande suivante pour installer scikit-learn, XGBoost et pandas :
pip install --user scikit-learn xgboost pandas
Pour plus d'informations, y compris sur les options d'installation et les opérations de dépannage, reportez-vous aux instructions d'installation de chaque framework :
Configurer un bucket Cloud Storage
Vous aurez besoin d'un bucket Cloud Storage pour stocker votre code d'entraînement ainsi que les dépendances. Pour les besoins de ce tutoriel, il est plus facile d'utiliser un bucket Cloud Storage dédié dans le même projet que celui utilisé pour AI Platform Training.
Si vous utilisez un bucket dans un autre projet, vous devez vous assurer que votre compte de service AI Platform Training peut accéder à votre code d'entraînement et à vos dépendances dans Cloud Storage. Sans les autorisations appropriées, votre tâche d'entraînement ne peut pas aboutir. Découvrez comment accorder des autorisations pour le stockage.
Veillez à utiliser ou à configurer un bucket situé dans la même région que celle permettant d'exécuter les tâches d'entraînement. Consultez les régions disponibles pour les services AI Platform Training.
Vous trouverez dans cette section la procédure à suivre pour créer un bucket. Vous pouvez utiliser un bucket existant, mais il doit se trouver dans la même région que celle où vous prévoyez d'exécuter des tâches AI Platform. En outre, s'il ne fait pas partie du projet que vous utilisez pour exécuter AI Platform Training, vous devez explicitement accorder l'accès aux comptes de service AI Platform Training.
-
Indiquez un nom pour votre nouveau bucket. Ce nom doit être unique par rapport à tous les buckets dans Cloud Storage.
BUCKET_NAME="YOUR_BUCKET_NAME"
Par exemple, vous pouvez utiliser le nom de votre projet en ajoutant
-aiplatform
:PROJECT_ID=$(gcloud config list project --format "value(core.project)") BUCKET_NAME=${PROJECT_ID}-aiplatform
-
Vérifiez le nom du bucket que vous avez créé.
echo $BUCKET_NAME
-
Sélectionnez une région pour votre bucket, puis définissez une variable d'environnement
REGION
.Utilisez la même région que celle où vous prévoyez d'exécuter des tâches AI Platform Training. Consultez les régions disponibles pour les services AI Platform Training.
Par exemple, le code suivant crée la variable
REGION
et la définit surus-central1
:REGION=us-central1
-
Créez le bucket :
gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION
À propos des données
L'ensemble de données sur le revenu collectées par recensement que cet exemple utilise pour l'entraînement est hébergé par l'UCI Machine Learning Repository (dépôt de machine learning de l'Université de Californie à Irvine).
Données de recensement fournies par : Lichman, M. (2013). UCI Machine Learning Repository : http://archive.ics.uci.edu/ml. Irvine, Californie : Université de Californie, School of Information and Computer Science. Cet ensemble de données est accessible au public et peut être utilisé selon les conditions définies par sa source (http://archive.ics.uci.edu/ml). Il est fourni "EN L'ÉTAT", sans aucune garantie expresse ou implicite de la part de Google. Google décline toute responsabilité pour tout dommage direct ou indirect résultant de l'utilisation de cet ensemble de données.
Pour plus de facilité, nous avons hébergé les données dans un bucket Cloud Storage public (gs://cloud-samples-data/ai-platform/sklearn/census_data/
), que vous pouvez télécharger dans votre fichier d'entraînement Python.
Créer le fichier de modèle Python
Vous trouverez l'intégralité du code d'entraînement utilisé dans cette section sur GitHub : train.py
.
Le reste de cette section contient des explications sur ce que fait le code d'entraînement.
Prérequis
Importez les bibliothèques suivantes à partir de Python, Google Cloud CLI, XGBoost et scikit-learn. Définissez une variable pour le nom de votre bucket Cloud Storage.
import xgboost as xgb
import pandas as pd
from sklearn.preprocessing import LabelEncoder
import subprocess
from google.cloud import storage
# Fill in your Cloud Storage bucket name
BUCKET_ID = <YOUR_BUCKET_NAME>
Importer des données depuis Cloud Storage
Au cours du processus de développement standard, vous importez vos propres données dans Cloud Storage de sorte qu'AI Platform Training puisse y accéder. Les données de ce tutoriel sont hébergées dans un bucket public : gs://cloud-samples-data/ai-platform/sklearn/census_data/
.
Le code ci-dessous permet de télécharger l'ensemble de données d'entraînement adult.data
. (Les données d'évaluation sont disponibles dans adult.test
, mais ne sont pas utilisées dans ce tutoriel.)
Ajouter le code du modèle
Le code d'entraînement du modèle effectue quelques étapes de base :
- Définir et charger les données
- Convertir les caractéristiques catégorielles en caractéristiques numériques
- Extraire les caractéristiques numériques via un pipeline scikit-learn
- Exporter et enregistrer le modèle dans Cloud Storage
Définir et charger les données
Convertir les caractéristiques catégoriques en caractéristiques numériques
Entraîner, exporter et enregistrer le modèle dans Cloud Storage
Si votre bucket Cloud Storage se trouve dans le même projet que celui utilisé pour AI Platform Training, alors AI Platform Training peut lire et écrire dans votre bucket. Dans le cas contraire, vous devez vous assurer que le projet que vous utilisez pour exécuter AI Platform Training peut accéder à votre bucket Cloud Storage. Découvrez comment accorder des autorisations pour le stockage.
Assurez-vous de nommer votre fichier modèle model.pkl
, model.joblib
ou model.bst
si vous souhaitez l'utiliser pour demander des prédictions en ligne avec AI Platform Prediction.
Vérifier l'importation du fichier de modèle dans Cloud Storage (facultatif)
Dans la ligne de commande, affichez le contenu du dossier du modèle de destination pour vérifier que votre fichier de modèle a bien été importé dans Cloud Storage. Si ce n'est pas déjà fait, définissez une variable d'environnement (BUCKET_ID
) pour le nom de votre bucket.
gcloud storage ls gs://$BUCKET_ID/census_*
Le résultat doit se présenter comme suit :
gs://[YOUR-PROJECT-ID]/census_[DATE]_[TIME]/model.bst
Créer un package d'application d'entraînement
La méthode la plus simple (et recommandée) pour créer un package d'application d'entraînement consiste à se servir de gcloud
pour empaqueter et importer l'application lorsque vous envoyez la tâche d'entraînement. Cette méthode permet de créer une structure de fichiers très simple ne comportant que deux fichiers. Pour ce tutoriel, la structure de fichiers de votre package d'application d'entraînement doit se présenter comme suit :
census_training/
__init__.py
train.py
Créez un répertoire en local :
mkdir census_training
Créez un fichier vierge nommé
__init__.py
:touch census_training/__init__.py
Enregistrez le code d'entraînement dans un seul fichier Python, puis enregistrez ce fichier dans votre répertoire
census_training
. Consultez l'exemple de code pourtrain.py
. Vous pouvez utilisercURL
pour télécharger et enregistrer le fichier :curl https://raw.githubusercontent.com/GoogleCloudPlatform/cloudml-samples/master/xgboost/notebooks/census_training/train.py > census_training/train.py
Découvrez comment empaqueter une application d'entraînement.
Envoyer une tâche d'entraînement
Dans cette section, vous allez utiliser la commande gcloud ai-platform jobs submit training
pour envoyer votre tâche d'entraînement.
Spécifier les paramètres de la tâche d'entraînement
Définissez les variables d'environnement suivantes pour chaque paramètre spécifié dans votre requête de tâche d'entraînement :
PROJECT_ID
: utilisez l'ID du projet (PROJECT_ID) correspondant à votre projet Google Cloud.BUCKET_ID
: indiquez le nom du bucket Cloud Storage.JOB_NAME
: spécifiez le nom à utiliser pour la tâche (composé uniquement de lettres majuscules/minuscules, de chiffres et de traits de soulignement, et commençant par une lettre). Dans le cas présent :census_training_$(date +"%Y%m%d_%H%M%S")
.JOB_DIR
: indiquez le chemin d'accès de l'emplacement Cloud Storage à utiliser pour les fichiers de sortie de votre tâche d'entraînement. Par exemple,gs://$BUCKET_ID/xgboost_job_dir
.TRAINING_PACKAGE_PATH
: spécifiez le chemin d'accès local du répertoire racine de votre application d'entraînement. Dans le cas présent :./census_training/
.MAIN_TRAINER_MODULE
: spécifiez le fichier que doit exécuter le service d'entraînement d'AI Platform Training. Ce fichier est au format[YOUR_FOLDER_NAME.YOUR_PYTHON_FILE_NAME]
. Dans le cas présent :census_training.train
.REGION
: spécifiez le nom de la région utilisée pour l'exécution de la tâche d'entraînement. Utilisez l'une des régions disponibles pour le service d'entraînement d'AI Platform Training. Assurez-vous que votre bucket Cloud Storage se trouve dans la même région. Ce tutoriel utilise la régionus-central1
.RUNTIME_VERSION
: spécifiez une version d'exécution d'AI Platform Training compatible avec scikit-learn. Dans cet exemple,2.11
.PYTHON_VERSION
: indiquez la version de Python à utiliser pour la tâche. Pour ce tutoriel, spécifiez Python 3.7.SCALE_TIER
: indiquez une spécification de cluster prédéfinie pour les machines appelées à exécuter votre tâche d'entraînement. Dans le cas présent :BASIC
. Vous pouvez également utiliser les niveaux d'évolutivité personnalisés afin de définir votre propre configuration de cluster pour l'entraînement.
Pour plus de commodité, les variables d'environnement de ce tutoriel sont répertoriées ci-dessous.
Remplacez [VALUES-IN-BRACKETS]
par les valeurs appropriées :
PROJECT_ID=[YOUR-PROJECT-ID]
BUCKET_ID=[YOUR-BUCKET-ID]
JOB_NAME=census_training_$(date +"%Y%m%d_%H%M%S")
JOB_DIR=gs://$BUCKET_ID/xgboost_job_dir
TRAINING_PACKAGE_PATH="[YOUR-LOCAL-PATH-TO-TRAINING-PACKAGE]/census_training/"
MAIN_TRAINER_MODULE=census_training.train
REGION=us-central1
RUNTIME_VERSION=2.11
PYTHON_VERSION=3.7
SCALE_TIER=BASIC
Envoyez la requête :
gcloud ai-platform jobs submit training $JOB_NAME \
--job-dir $JOB_DIR \
--package-path $TRAINING_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE \
--region $REGION \
--runtime-version=$RUNTIME_VERSION \
--python-version=$PYTHON_VERSION \
--scale-tier $SCALE_TIER
Un résultat semblable aux lignes suivantes doit s'afficher :
Job [census_training_[DATE]_[TIME]] submitted successfully. Your job is still active. You may view the status of your job with the command $ gcloud ai-platform jobs describe census_training_20180718_160825 or continue streaming the logs with the command $ gcloud ai-platform jobs stream-logs census_training_[DATE]_[TIME] jobId: census_training_[DATE]_[TIME] state: QUEUED
Afficher les journaux d'entraînement (facultatif)
AI Platform Training capture tous les flux stdout
et stderr
, ainsi que toutes les instructions de journalisation. Ces journaux sont stockés dans Logging, et sont visibles pendant et après l'exécution.
Pour afficher les journaux relatifs à votre tâche d'entraînement, procédez comme suit :
Console
Ouvrez la page Tâches d'AI Platform Training.
Sélectionnez le nom du job d'entraînement à inspecter. Vous accédez à la page Informations sur la tâche correspondant à la tâche d'entraînement que vous avez sélectionnée.
Dans les détails de la tâche, sélectionnez le lien Afficher les journaux. Vous accédez à la page "Journaux" permettant de rechercher et de filtrer les journaux associés à la tâche d'entraînement que vous avez sélectionnée.
gcloud
Vous pouvez afficher les journaux dans votre terminal à l'aide de la commande gcloud ai-platform jobs stream-logs
.
gcloud ai-platform jobs stream-logs $JOB_NAME
Étape suivante
- Obtenez des prédictions en ligne avec XGBoost sur AI Platform Training.
- Découvrez comment utiliser les niveaux d'évolutivité personnalisés afin de définir votre propre configuration de cluster pour l'entraînement.