L'entraînement à l'aide des algorithmes intégrés d'AI Platform Training vous permet d'envoyer votre ensemble de données et d'entraîner un modèle sans avoir à écrire de code d'entraînement. Cette page explique le fonctionnement de l'algorithme intégré large et profond, et décrit comment l'utiliser.
Présentation
Cet algorithme intégré effectue les opérations de prétraitement et d'entraînement :
- Prétraitement : AI Platform Training transforme votre mélange de données catégorielles et numériques en ensemble de données entièrement numérique afin de le préparer à l'entraînement.
- Entraînement : à l'aide de l'ensemble de données et des paramètres de modèle que vous avez fournis, AI Platform Training exécute l'entraînement à l'aide de l'Estimator d'algorithme large et profond de TensorFlow.
Limites
Les fonctionnalités suivantes ne sont pas compatibles avec l'entraînement à l'aide de l'algorithme intégré large et profond :
- Entraînement multi-GPU. Les algorithmes intégrés utilisent un seul GPU à la fois. Pour tirer pleinement parti de l'entraînement avec plusieurs GPU sur une même machine, vous devez créer une application d'entraînement. Pour en savoir plus, consultez la page concernant les types de machines.
- Entraînement à l'aide de TPU. Pour effectuer l'entraînement avec des TPU, vous devez créer une application d'entraînement. Découvrez comment exécuter une tâche d'entraînement avec des TPU.
- Entraînement distribué. Pour exécuter une tâche d'entraînement distribuée sur AI Platform Training, vous devez créer une application d'entraînement.
Types de machines compatibles
Voici les niveaux d'évolutivité et types de machines d'AI Platform Training qui sont compatibles :
BASIC
niveau d'évolutivité d'évolutivité- Niveau d'évolutivité
CUSTOM
avec n'importe lequel des types de machine Compute Engine compatible avec AI Platform Training. - Niveau d'évolutivité d'évolutivité
CUSTOM
avec l'un des anciens types de machines suivants :standard
large_model
complex_model_s
complex_model_m
complex_model_l
standard_gpu
standard_p100
standard_v100
large_model_v100
Mettre en forme les données d'entrée
Chaque ligne d'un ensemble de données représente une instance, et chaque colonne d'un ensemble de données représente une valeur de caractéristique. La colonne cible représente la valeur que vous souhaitez prédire.
Préparer un fichier CSV
Vos données d'entrée doivent être contenues dans un fichier CSV encodé en UTF-8. Si vos données d'entraînement ne contiennent que des valeurs catégorielles et numériques, vous pouvez utiliser notre module de prétraitement pour renseigner les valeurs numériques manquantes, fractionner l'ensemble de données et supprimer les lignes contenant plus de 10 % des valeurs manquantes. Vous pouvez aussi exécuter la tâche d'entraînement sans activer le prétraitement automatique.
Vous devez préparer votre fichier d'entrée CSV conformément aux conditions suivantes :
- Supprimez la ligne d'en-tête. Cette ligne contient les libellés de chaque colonne. Supprimez-la afin d'éviter de l'envoyer avec le reste des instances de données en tant que données d'entraînement.
- Assurez-vous que la colonne cible est placée en premier. La colonne cible contient la valeur que vous essayez de prédire. Pour un algorithme de classification, toutes les valeurs de la colonne cible représentent une classe ou une catégorie. Pour un algorithme de régression, toutes les valeurs de la colonne cible sont des valeurs numériques.
Gérer les valeurs des entiers
La signification des valeurs des entiers peut être ambiguë. Par conséquent, les colonnes comprenant ce type de valeurs sont problématiques pour le prétraitement automatique. AI Platform Training détermine automatiquement comment gérer les valeurs des entiers. Par défaut :
- Si chaque valeur d'entier est unique, la colonne est considérée comme une liste de clés d'instance.
- Si elle ne contient que quelques valeurs d'entiers uniques, la colonne est considérée comme catégorielle.
- Sinon, les valeurs de la colonne sont converties en valeurs à virgule flottante et traitées comme des valeurs numériques.
Pour remplacer ces définitions par défaut :
- Si les données doivent être traitées comme des données numériques, convertissez toutes les valeurs d'entiers de la colonne en valeurs à virgule flottante, comme dans l'exemple suivant : {101.0, 102.0, 103.0}.
- Si les données doivent être traitées comme étant catégorielles, ajoutez un préfixe non numérique à toutes les valeurs entières de la colonne, comme dans l'exemple suivant : {code_101, code_102, code_103}
Vérifier les autorisations du bucket Cloud Storage
Pour stocker vos données, utilisez un bucket Cloud Storage dans le projet Google Cloud que vous utilisez pour exécuter les tâches AI Platform Training. Sinon, accordez à AI Platform Training l'accès au bucket Cloud Storage où vos données sont stockées.
Envoyer une tâche d'entraînement d'algorithme large et profond
Cette section explique comment envoyer une tâche d'entraînement à l'aide de l'algorithme intégré large et profond.
Vous trouverez une brève description de chaque hyperparamètre dans Google Cloud Console. Pour obtenir des explications plus détaillées, reportez-vous à la documentation de référence sur l'algorithme intégré large et profond.
Console
Accédez à la page "Tâches" d'AI Platform Training dans Google Cloud Console :
Cliquez sur le bouton Nouvelle tâche d'entraînement. Dans les options qui s'affichent en dessous, cliquez sur Entraînement de l'algorithme intégré.
Sur la page Créer une tâche d'entraînement, sélectionnez Modèle intégré large et profond, puis cliquez sur Suivant.
Pour en savoir plus sur tous les paramètres disponibles, suivez les liens dans Google Cloud Console. Vous pouvez également vous reporter à la documentation de référence sur l'algorithme intégré large et profond pour plus de détails.
gcloud
Définissez des variables d'environnement pour votre tâche, en remplaçant les éléments entre crochets (
[VALUES-IN-BRACKETS]
) par vos propres valeurs :# Specify the name of the Cloud Storage bucket where you want your # training outputs to be stored, and the Docker container for # your built-in algorithm selection. BUCKET_NAME='[YOUR-BUCKET-NAME]' IMAGE_URI='gcr.io/cloud-ml-algos/wide_deep_learner_cpu:latest' # Specify the Cloud Storage path to your training input data. TRAINING_DATA='gs://[YOUR_BUCKET_NAME]/[YOUR_FILE_NAME].csv' DATASET_NAME='census' ALGORITHM='wide_deep' MODEL_TYPE='classification' DATE='date '+%Y%m%d_%H%M%S'' MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}" JOB_ID="${MODEL_NAME}_${DATE}" JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
Envoyez la tâche d'entraînement à l'aide de
gcloud ai-platform jobs training submit
:gcloud ai-platform jobs submit training $JOB_ID \ --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \ -- \ --preprocess --model_type=$MODEL_TYPE --batch_size=250 --learning_rate=0.1 \ --dnn_learning_rate=0.005 --dnn_dropout=0.1 --hidden_units=10,10,10 \ --use_wide --embed_categories \ --max_steps=1000 --training_data_path=$TRAINING_DATA
Surveillez l'état de votre tâche d'entraînement en consultant les journaux avec
gcloud
. Reportez-vous aux commandesgcloud ai-platform jobs describe
etgcloud ai-platform jobs stream-logs
.gcloud ai-platform jobs describe ${JOB_ID} gcloud ai-platform jobs stream-logs ${JOB_ID}
Fonctionnement du prétraitement
Le prétraitement automatique fonctionne avec les données catégorielles et numériques. La routine de prétraitement commence par analyser les données, puis les transforme.
Analyse
Tout d'abord, AI Platform Training détecte automatiquement le type de données de chaque colonne, détermine comment traiter chaque colonne, puis effectue certains calculs statistiques sur les données de la colonne. Ces informations sont capturées dans le fichier metadata.json
.
AI Platform Training analyse le type de la colonne cible pour déterminer si l'ensemble de données en question est destiné à la régression ou à la classification. Si cette analyse entre en conflit avec votre sélection de model_type
, une erreur est générée. Indiquez de façon explicite comment la colonne cible doit être traitée en formatant vos données de façon claire dans les cas ambigus.
Type : la colonne peut être numérique ou catégorielle.
Traitement : AI Platform Training détermine comment traiter chaque colonne de la manière suivante :
- Si la colonne inclut une seule valeur dans toutes les lignes, elle est traitée comme une constante.
- Si la colonne est catégorielle et inclut des valeurs uniques dans toutes les lignes, elle est traitée comme un identifiant de ligne.
- Si la colonne est numérique avec des valeurs à virgule flottante ou entières et qu'elle contient de nombreuses valeurs uniques, elle est traitée comme numérique.
- Si la colonne est numérique avec des valeurs entières et qu'elle contient peu de valeurs uniques, elle est traitée comme une colonne catégorielle dans laquelle les valeurs entières représentent l'identité ou le vocabulaire.
- Une colonne est considérée comme ayant peu de valeurs uniques si le nombre de celles-ci dans la colonne est inférieur à 20 % du nombre de lignes dans l'ensemble de données d'entrée.
- Si la colonne est catégorielle avec une cardinalité élevée, elle est traitée par hachage, le nombre de buckets de hachage étant égal à la racine carrée du nombre de valeurs uniques dans la colonne.
- Une colonne catégorielle est considérée comme ayant une cardinalité élevée si le nombre de valeurs uniques est supérieur à la racine carrée du nombre de lignes dans l'ensemble de données.
- Si la colonne est catégorielle et que le nombre de valeurs uniques est inférieur ou égal à la racine carrée du nombre de lignes dans l'ensemble de données, la colonne est traitée comme une colonne catégorielle normale avec un vocabulaire.
Statistiques : AI Platform Training calcule les statistiques suivantes en fonction du type de colonne et du traitement identifiés. Elles pourront être utilisées ultérieurement pour transformer la colonne.
- Si la colonne est numérique, les valeurs de moyenne et de variance sont calculées.
- Si la colonne est catégorielle et que le traitement est une identité ou un vocabulaire, les valeurs distinctes sont extraites de la colonne.
- Si la colonne est catégorielle et que le traitement est un hachage, le nombre de buckets de hachage est calculé par rapport à la cardinalité de la colonne.
Transformation
Une fois l'analyse initiale de l'ensemble de données terminée, AI Platform Training transforme les données en fonction des types, traitements et statistiques qui sont appliqués à l'ensemble de données. AI Platform Training effectue les transformations dans l'ordre suivant :
- Il divise l'ensemble de données d'entraînement en ensembles de données de validation et de test si vous spécifiez les pourcentages de répartition.
- Il supprime les lignes contenant plus de 10 % de valeurs manquantes.
- Il remplit les valeurs numériques manquantes à l'aide de la moyenne de la colonne.
Exemples de transformations
Les lignes contenant 10 % de valeurs manquantes sont supprimées. Dans les exemples suivants, nous supposons que la ligne contient 10 valeurs. Chaque ligne d'exemple est tronquée pour des raisons de simplicité.
Ligne concernée | Valeurs d'origine | Valeurs transformées | Explication |
---|---|---|---|
Exemple de ligne sans valeurs manquantes | [3, 0,45, ..., 'fruits', 0, 1] |
[3, 0,45, ..., 1, 0, 0, 0, 1] |
La chaîne "fruits" est transformée en valeurs "1, 0, 0" dans l'encodage one-hot. Cette opération a lieu plus tard dans le graphe TensorFlow. |
Trop de valeurs manquantes | [3, 0,45, ..., 'fruits', __, __] |
La ligne est supprimée. | Plus de 10 % des valeurs de la ligne sont manquantes. |
Valeur numérique manquante | [3, 0,45, ..., 'fruits', 0, __] |
[3, 0.45, ..., 1, 0, 0, 0, 0,54] |
|
Valeur catégorielle manquante | [3, 0,45, ..., __, 0, 1] |
[3, 0,45, ..., 0, 0, 0, 0, 1] |
|
Colonnes de caractéristiques
Lors de la transformation, les colonnes ne sont pas traitées. Au lieu de cela, les métadonnées générées lors de l'analyse sont transmises à AI Platform Training pour créer les colonnes de caractéristiques en conséquence :
Type de colonne | Traitement de la colonne | Colonne de caractéristiques obtenue |
---|---|---|
Numérique | (Tous types de traitement de colonne) |
tf.feature_column.numeric_column
Les valeurs de moyenne et de variance sont utilisées pour normaliser les valeurs : |
Catégoriel | Identité |
tf.feature_column.categorical_column_with_identity
|
Catégorielle | Vocabulaire |
tf.feature_column.categorical_column_with_vocabulary_list
|
Catégorielle | Hachage |
tf.feature_column.categorical_column_with_hash_bucket
|
Catégorielle | Identifiant de constante ou de ligne | Ignoré. Aucune colonne de caractéristiques n'est créée. |
Colonnes de caractéristiques supplémentaires
Vous avez la possibilité d'utiliser des colonnes catégorielles dans la partie large du modèle DNN (use_wide
) ou de les intégrer à la partie profonde du modèle (embed_categories
). En fonction de vos sélections, les colonnes de caractéristiques supplémentaires suivantes sont ajoutées :
use_wide activé |
embed_categories activé |
Résultat |
---|---|---|
True | True ou False | La caractéristique est transmise à la partie large du modèle. |
True ou False | Vrai | Une colonne de caractéristiques d'intégration est créée pour la colonne catégorielle, la dimension d'intégration étant définie sur le plafond de la racine carrée du nombre de catégories de la colonne. Cette colonne de caractéristiques d'intégration est transmise à la partie profonde du modèle. |
False | False | Une colonne d'indicateur est créée pour la colonne catégorique. Cette colonne de caractéristiques d'indicateur est transmise à la partie profonde du modèle. |
Une fois le prétraitement automatique terminé, AI Platform Training importe l'ensemble de données traité dans votre bucket Cloud Storage, dans le répertoire que vous avez spécifié dans la requête de la tâche.
Étapes suivantes
- En savoir plus sur le fonctionnement de l'algorithme intégré large et profond.
- En savoir plus sur les colonnes de caractéristiques TensorFlow.