El entrenamiento mediante algoritmos integrados en AI Platform Training te permite enviar el conjunto de datos y entrenar un modelo sin escribir ningún código de entrenamiento. En esta página, se explica cómo funciona el algoritmo de amplitud y profundidad integrado y cómo se usa.
Descripción general
Este algoritmo integrado realiza el procesamiento previo y el entrenamiento:
- Procesamiento previo: AI Platform Training procesa la combinación de datos categóricos y numéricos en un conjunto de datos solo numéricos a fin de prepararlo para el entrenamiento.
- Entrenamiento: Con el conjunto de datos y los parámetros del modelo que proporcionaste, en AI Platform Training, se ejecuta el entrenamiento mediante el Estimador del algoritmo de amplitud y profundidad de TensorFlow.
Limitaciones
Las siguientes funciones no son compatibles para el entrenamiento con el algoritmo de amplitud y profundidad integrado.
- Entrenamiento con varias GPU. Los algoritmos integrados solo utilizan una GPU a la vez. Para aprovechar al máximo el entrenamiento con varias GPU en una máquina, debes crear una aplicación de entrenamiento. Encuentra más información acerca de los tipos de máquinas.
- Entrenamiento con TPU. Para entrenar con TPU, debes crear una aplicación de entrenamiento. Obtén más información sobre cómo ejecutar un trabajo de entrenamiento con TPU.
- Entrenamiento distribuido. Para ejecutar un trabajo de entrenamiento distribuido en AI Platform Training, debes crear una aplicación de entrenamiento.
Tipos de máquina admitidos
Se admiten los siguientes niveles de escala y tipos de máquinas de AI Platform Training:
- Nivel de escala de
BASIC
- Nivel de escala
CUSTOM
con cualquiera de los tipos de máquina de Compute Engine compatibles con AI Platform Training. - Nivel de escala
CUSTOM
con cualquiera de los siguientes tipos de máquinas heredadas:standard
large_model
complex_model_s
complex_model_m
complex_model_l
standard_gpu
standard_p100
standard_v100
large_model_v100
Establece el formato de los datos de entrada
Cada fila de un conjunto de datos representa una instancia, y cada columna de un conjunto de datos representa un valor de atributo. La columna de destino representa el valor que deseas predecir.
Prepara el archivo CSV
Tus datos de entrada deben estar en un archivo CSV con codificación UTF-8. Si tus datos de entrenamiento solo consisten en valores categóricos y numéricos, puedes usar el módulo de procesamiento previo para completar los valores numéricos que faltan, dividir el conjunto de datos y quitar filas con más del 10% de los valores faltantes. De lo contrario, puedes ejecutar el entrenamiento sin el procesamiento previo automático habilitado.
Debes preparar tu archivo CSV de entrada para cumplir con los siguientes requisitos:
- Quita la fila del encabezado. La fila del encabezado contiene las etiquetas para cada columna. Quita la fila del encabezado a fin de evitar enviarla con el resto de las instancias de datos como parte de los datos de entrenamiento.
- Asegúrate de que la columna de destino sea la primera. La columna de destino contiene el valor que estás intentando predecir. Para un algoritmo de clasificación, todos los valores en la columna de destino son una clase o una categoría. Para un algoritmo de regresión, todos los valores en la columna de destino son numéricos.
Controla los valores de números enteros
El significado de los valores de números enteros puede ser ambiguo, lo que hace que las columnas de valores de números enteros sean problemáticas en el procesamiento previo automático. AI Platform Training determina cómo controlar los valores de número entero de forma automática. De forma predeterminada, se establecen estos ajustes:
- Si cada valor de número entero es único, la columna se trata como claves de instancia.
- Si solo hay algunos números enteros únicos, la columna se trata como categórica.
- De lo contrario, los valores de la columna se convierten en números de punto flotante y se tratan como numéricos.
Sigue estos pasos para anular las determinaciones predeterminadas:
- Si los datos deben tratarse como numéricos, convierte todos los valores de números enteros en la columna a punto flotante, p. ej., {101.0, 102.0, 103.0}
- Si los datos deben tratarse como categóricos, debes anteponer un prefijo no numérico a todos los valores de números enteros de la columna, por ejemplo. {code_101, code_102, code_103}
Verifica los permisos del bucket de Cloud Storage
A fin de almacenar tus datos, usa un bucket de Cloud Storage en el mismo proyecto de Google Cloud que usas para ejecutar trabajos de AI Platform Training. De lo contrario, otorga acceso para AI Platform Training al depósito de Cloud Storage donde se almacenan tus datos.
Envía un trabajo de entrenamiento con algoritmo de amplitud y profundidad
En esta sección se explica cómo enviar un trabajo de entrenamiento con el algoritmo de amplitud y profundidad integrado.
Puedes encontrar explicaciones breves de cada hiperparámetro en la consola de Google Cloud y una explicación más completa en la referencia del algoritmo de amplitud y profundidad integrado.
Consola
Ve a la página Trabajos de AI Platform Training en la consola de Google Cloud:
Haz clic en el botón Trabajo de entrenamiento nuevo. En las opciones que se muestran a continuación, haz clic en Entrenamiento de algoritmos integrados.
En la página Crear un trabajo de entrenamiento nuevo, selecciona Algoritmo de amplitud y profundidad integrado y haz clic en Siguiente.
Si deseas obtener más información sobre todos los parámetros disponibles, sigue los vínculos en la consola de Google Cloud y consulta la referencia del algoritmo de amplitud y profundidad integrado para obtener más detalles.
gcloud
Configura variables de entorno en tu trabajo. Para ello, rellena los campos
[VALUES-IN-BRACKETS]
con tus propios valores:# 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}"
Envía el trabajo de entrenamiento con
gcloud ai-platform jobs training submit
de la siguiente manera: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
Supervisa el estado de tu trabajo de entrenamiento mediante la vista de los registros con
gcloud
. Consultagcloud ai-platform jobs describe
ygcloud ai-platform jobs stream-logs
.gcloud ai-platform jobs describe ${JOB_ID} gcloud ai-platform jobs stream-logs ${JOB_ID}
Cómo funciona el procesamiento previo
El procesamiento previo automático funciona para los datos categóricos y numéricos. La rutina de procesamiento previo primero analiza y, a continuación, transforma tus datos.
Análisis
Primero, AI Platform Training detecta de manera automática el tipo de datos de cada columna, identifica cómo debe tratarse cada columna y calcula algunas estadísticas de los datos en ella. Esta información se captura en el archivo metadata.json
.
AI Platform Training analiza el tipo de la columna de destino a fin de identificar si el conjunto de datos determinado tiene fines de regresión o clasificación. Si se produce un conflicto entre este análisis y tu selección de model_type
, ocurre un error. Sé explícito acerca de cómo debe tratarse la columna de destino; para ello, dale formato a tus datos con claridad en los casos ambiguos.
Tipo: La columna puede ser numérica o categórica.
Tratamiento: AI Platform Training identifica cómo tratar cada columna de la siguiente manera:
- Si la columna incluye un solo valor en todas las filas, se trata como una constante.
- Si la columna es categórica y, por lo tanto, incluye valores únicos en todas las filas, se trata como un row_identifier.
- Si la columna es numérica con valores flotantes, o si es numérica con valores de números enteros y contiene muchos valores únicos, la columna se trata como numérica.
- Si la columna es numérica con valores enteros y contiene pocos valores únicos suficientes, la columna se trata como una columna categórica donde los valores de números enteros son la identidad o el vocabulario.
- Se considera que una columna tiene pocos valores únicos si el número de valores únicos en la columna es inferior al 20% del número de filas en el conjunto de datos de entrada.
- Si la columna es categórica con alta cardinalidad, la columna se trata con hashing; aquí el número de depósitos de hash es igual a la raíz cuadrada del número de valores únicos en la columna.
- Se considera que una columna categórica tiene una cardinalidad alta si el número de valores únicos es mayor que la raíz cuadrada del número de filas en el conjunto de datos.
- Si la columna es categórica y la cantidad de valores únicos es menor o igual que la raíz cuadrada del número de filas en el conjunto de datos, la columna se trata como una columna categórica normal con vocabulario.
Estadísticas: AI Platform Training calcula las siguientes estadísticas en función del tratamiento y el tipo de columna identificados, que se usarán para transformar la columna en una etapa posterior.
- Si la columna es numérica, se calculan los valores de la media y la varianza.
- Si la columna es categórica, y el tratamiento es identidad o vocabulario, los valores distintos se extraen de la columna.
- Si la columna es categórica y el tratamiento es hashing, el número de depósitos de hash se calcula con respecto a la cardinalidad de la columna.
Transformación
Una vez finalizado el análisis inicial del conjunto de datos, AI Platform Training transforma los datos en función de los tipos, los tratamientos y las estadísticas que se aplicaron al conjunto de datos. AI Platform Training realiza transformaciones en el siguiente orden:
- Divide el conjunto de datos de entrenamiento en conjuntos de datos de validación y de prueba si especificas los porcentajes de división.
- Quita las filas que tienen más del 10% de atributos faltantes.
- Completa los valores numéricos que faltan con el uso de la media de la columna.
Ejemplos de transformaciones
Se quitan las filas con el 10% de los valores faltantes. En los siguientes ejemplos, supongamos que la fila tiene 10 valores. Cada fila de ejemplo se trunca para que sea más simple.
Problema de la fila | Valores originales | Valores transformados | Explicación |
---|---|---|---|
Fila de ejemplo sin valores faltantes | [3, 0.45, …, 'fruits', 0, 1] |
[3, 0.45, …, 1, 0, 0, 0, 1] |
La string 'fruits' se transforma en los valores “1, 0, 0” en la codificación one-hot. Esto sucede más adelante en el grafo de TensorFlow. |
Faltan demasiados valores | [3, 0.45, …, 'fruits', __, __] |
Se quita la fila | Falta más del 10% de los valores en la fila. |
Valor numérico faltante | [3, 0.45, …, 'fruits', 0, __] |
[3, 0.45, …, 1, 0, 0, 0, 0.54] |
|
Valor categórico faltante | [3, 0.45, …, __, 0, 1] |
[3, 0.45, …, 0, 0, 0, 0, 1] |
|
Columnas de atributos
Durante la transformación, las columnas no se procesan. En cambio, los metadatos producidos durante el análisis se pasan a AI Platform Training para crear las columnas de atributos según corresponda:
Tipo de columna | Tratamiento de la columna | Columna de atributos resultante |
---|---|---|
Numérico | (Todos los tipos de tratamiento de la columna) |
tf.feature_column.numeric_column
Los valores de media y varianza se usan para estandarizar los valores: |
Categórico | Identidad |
tf.feature_column.categorical_column_with_identity
|
Categórico | Vocabulario |
tf.feature_column.categorical_column_with_vocabulary_list
|
Categórico | Hashing |
tf.feature_column.categorical_column_with_hash_bucket
|
Categórico | Identificador de constante o de fila | Ignorados. No se creó ninguna columna de atributos. |
Columnas de atributos adicionales
Tienes la opción de usar columnas categóricas en la parte amplia del modelo de DNN (use_wide
), o incorporarlas en la parte profunda del modelo (embed_categories
). En función de tus selecciones, se agregan las siguientes columnas de atributos adicionales:
use_wide habilitado |
embed_categories habilitado |
Resultado |
---|---|---|
True | True o False | El atributo va a la parte ancha del modelo. |
True o False | True | Se crea una columna de atributos de incorporaciones para la columna categórica, donde la dimensión de la incorporación se establece en el límite de la raíz cuadrada del número de categorías en la columna. Esta columna de atributos de incorporaciones va a la parte profunda del modelo. |
Falso | Falso | Se crea una columna de indicador para la columna categórica. Esta columna de atributos del indicador va a la parte profunda del modelo. |
Una vez que se completa el procesamiento previo automático, AI Platform Training sube el conjunto de datos procesado al bucket de Cloud Storage en el directorio que especificaste en la solicitud de trabajo.
¿Qué sigue?
- Obtén más información sobre cómo funciona el algoritmo de amplitud y profundidad integrado.
- Obtén más información sobre las columnas de atributos de TensorFlow.