En este instructivo, se explica cómo crear un modelo de traducción personalizado con AutoML Translation. La aplicación entrena un modelo personalizado mediante un conjunto de datos de inglés a español de pares de oraciones orientados hacia la tecnología sobre la localización de software.
El instructivo abarca el entrenamiento del modelo personalizado, la evaluación de su rendimiento y la traducción de contenido nuevo.
Requisitos previos
Configura el entorno de tu proyecto
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.
-
Habilita las API de AutoML Translation.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.
-
Habilita las API de AutoML Translation.
- Instala la CLI de Google Cloud.
- Sigue las instrucciones para crear una cuenta de servicio y descargar un archivo de claves.
- Establece la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
en la ruta de acceso al archivo de claves de la cuenta de servicio que descargaste cuando creaste la cuenta de servicio. Por ejemplo:export GOOGLE_APPLICATION_CREDENTIALS=key-file
- Agrega la cuenta de servicio a la función de IAM del Editor de AutoML con los siguientes comandos. Reemplaza project-id con el nombre de tu proyecto de Google Cloud y reemplaza service-account-name con el nombre de tu nueva cuenta de servicio, por ejemplo,
service-account1@myproject.iam.gserviceaccount.com
.gcloud auth login gcloud config set project project-id gcloud projects add-iam-policy-binding project-id \ --member=serviceAccount:service-account-name \ --role='roles/automl.editor'
- Permite que las cuentas de servicio de AutoML Translation accedan a los recursos del proyecto de Google Cloud:
gcloud projects add-iam-policy-binding project-id \ --member="serviceAccount:service-project-number@gcp-sa-automl.iam.gserviceaccount.com" \ --role="roles/automl.serviceAgent"
- Instala la biblioteca cliente.
- Configura las variables de entorno PROJECT_ID y REGION_NAME.
Reemplaza project-id con el ID de tu proyecto de Google Cloud. Actualmente, AutoML Translation requiere la ubicaciónus-central1
.export PROJECT_ID="project-id" export REGION_NAME="us-central1"
- Crea un bucket de Google Cloud Storage para almacenar los documentos que usarás para entrenar tu modelo personalizado.
El nombre del depósito debe tener el siguiente formato:$PROJECT_ID-vcm
. El siguiente comando crea un depósito de almacenamiento llamado$PROJECT_ID-vcm
en la regiónus-central1
.gsutil mb -p $PROJECT_ID -c regional -l $REGION_NAME gs://$PROJECT_ID-vcm/
-
Descarga el archivo que contiene los datos de muestra para el entrenamiento del modelo, extrae su contenido y sube los archivos a tu depósito de Google Cloud Storage.
Consulta Cómo preparar los datos de entrenamiento para obtener detalles sobre los formatos.El código de muestra en este instructivo usa el conjunto de datos de inglés a español. También están disponibles los conjuntos de datos con idiomas objetivo: alemán, francés, ruso y chino. Si usas uno de estos conjuntos de datos alternativos, reemplaza el código de idioma
es
en las muestras con el código de idioma adecuado. - En el archivo
en-es.csv
del paso anterior, reemplaza{project_id}
por el ID de tu proyecto.
Ubicaciones de los archivos de código fuente
Puedes descargar el código fuente desde la ubicación que se indica a continuación. Después de la descarga, lo puedes copiar en la carpeta de tu proyecto de Google Cloud.
Python
El instructivo consta de estos archivos de Python:
translate_create_dataset.py
: Incluye la funcionalidad para crear conjuntos de datos.import_dataset.py
: Incluye la funcionalidad para importar conjuntos de datos.translate_create_model.py
: Incluye la funcionalidad para crear modelos.list_model_evaluations.py
: Incluye la funcionalidad para ver listas de las evaluaciones de modelos.translate_predict.py
: Incluye la funcionalidad relacionada con las predicciones.delete_model.py
: Incluye la funcionalidad para borrar modelos.
Java
El instructivo consta de estos archivos de Java:
TranslateCreateDataset.java
: Incluye la funcionalidad para crear conjuntos de datos.ImportDataset.java
: Incluye la funcionalidad para importar conjuntos de datos.TranslateCreateModel.java
: Incluye la funcionalidad para crear modelos.ListModelEvaluations.java
: Incluye la funcionalidad para ver listas de las evaluaciones de modelos.TranslatePredict.java
: Incluye la funcionalidad relacionada con las predicciones.DeleteModel.java
: Incluye la funcionalidad para borrar modelos
Node.js
El instructivo consta de estos programas de Node.js:
translate_create_dataset.js
: Incluye la funcionalidad para crear conjuntos de datos.import_dataset.js
: Incluye la funcionalidad para importar conjuntos de datos.translate_create_model.js
: Incluye la funcionalidad para crear modelos.list_model_evaluations.js
: Incluye la funcionalidad para ver listas de las evaluaciones de modelos.translate_predict.js
: Incluye la funcionalidad relacionada con las predicciones.delete_model.js
: Incluye la funcionalidad para borrar modelos.
Ejecuta la aplicación
Paso 1: Crear un conjunto de datos
El primer paso cuando se crea un modelo personalizado es crear un conjunto de datos vacío que finalmente tendrá los datos de entrenamiento para el modelo. Cuando creas un conjunto de datos, especificas los idiomas fuente y objetivo para la traducción.
Copia el código
Python
Java
Node.js
Solicitud
Ejecuta la función create_dataset
para crear un conjunto de datos vacío. Debes modificar las siguientes líneas de código:
- Establece
project_id
para tu PROJECT_ID. - Establece el
display_name
para el conjunto de datos (en_es_dataset
). Modifica el campo
target_language_code
deja
aes
.
Python
python translate_create_dataset.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.TranslateCreateDataset"
Node.js
node translate_create_dataset.js
Respuesta
La respuesta incluye los detalles del conjunto de datos recién creado, incluido el ID del conjunto de datos que utilizarás para hacer referencia al conjunto de datos en solicitudes futuras. Te recomendamos que establezcas una variable de entorno DATASET_ID
para el valor del ID del conjunto de datos mostrado.
Dataset name: projects/216065747626/locations/us-central1/datasets/TRL7372141011130533778 Dataset id: TRL7372141011130533778 Dataset display name: en_es_dataset Translation dataset Metadata: source_language_code: en target_language_code: es Dataset example count: 0 Dataset create time: seconds: 1530251987 nanos: 216586000
Paso 2: Importar pares de oraciones de entrenamiento al conjunto de datos
El siguiente paso consiste en propagar el conjunto de datos con una lista de pares de oraciones de entrenamiento.
La interfaz de la función import_dataset
toma como entrada un archivo .csv que enumera las ubicaciones de todos los documentos de entrenamiento, además de la etiqueta adecuada para cada documento de entrenamiento
(consulta Cómo preparar los datos de entrenamiento para obtener detalles sobre el formato requerido). Para este instructivo, usaremos el archivo en-es.csv
, que subiste anteriormente a Google Cloud Storage.
Copia el código
Python
Java
Node.js
Solicitud
Ejecuta la función import_data
para importar el contenido de entrenamiento. Debes modificar las siguientes líneas de código:
- Establece
project_id
para tu PROJECT_ID. - Establece el
dataset_id
para el conjunto de datos (del resultado del paso anterior). Establece la
path
que corresponde al URI del (gs://YOUR_PROJECT_ID-vcm/en-es.csv
).
Python
python import_dataset.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.ImportDataset"
Node.js
node import_dataset.js
Respuesta
Processing import... Dataset imported.
Paso 3: Crear (entrenar) el modelo
Ahora que tienes un conjunto de datos de documentos de entrenamiento etiquetados, puedes entrenar un modelo nuevo.
Copia el código
Python
Java
Node.js
Solicitud
Para ejecutar create_model
, debes modificar las siguientes líneas de código:
- Establece
project_id
para tu PROJECT_ID. - Establece el
dataset_id
para el conjunto de datos (del resultado del paso anterior). Establece el
display_name
para el nuevo modelo (en_es_test_model).
Python
python translate_create_model.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.TranlateCreateModel"
Node.js
node translate_create_model.js
Respuesta
La función create_model
inicia una operación de entrenamiento y, luego, imprime el nombre de la operación. El entrenamiento se realiza de forma asíncrona y puede tardar un poco en completarse, por lo que puedes usar el ID de la operación para verificar el estado del entrenamiento.
Cuando finaliza el entrenamiento, create_model
muestra el ID del modelo. Al igual que con el ID del conjunto de datos, puedes establecer una variable de entorno MODEL_ID
para el valor del ID del modelo que se muestra.
Training operation name: projects/216065747626/locations/us-central1/operations/TRL3007727620979824033 Training started... Model name: projects/216065747626/locations/us-central1/models/TRL3007727620979824033 Model id: TRL3007727620979824033 Model display name: en_es_test_model Model create time: seconds: 1529649600 nanos: 966000000 Model deployment state: deployed
Paso 4: Evaluar el modelo
Después del entrenamiento, puedes analizar la puntuación BLEU para saber si tu modelo está listo.
La función list_model_evaluations
toma el ID del modelo como parámetro.
Copia el código
Python
Java
Node.js
Solicitud
Realiza una solicitud para mostrar el rendimiento general de la evaluación del modelo mediante la ejecución de la siguiente solicitud. Debes modificar las siguientes líneas de código:
- Establece
project_id
para tu PROJECT_ID. Establece
model_id
para el ID de tu modelo.
Python
python list_model_evaluations.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.ListModelEvaluations"
Node.js
node list_model_evaluations.js
Respuesta
Si la puntuación BLEU es demasiado baja, puedes fortalecer el conjunto de datos de entrenamiento y volver a entrenar a tu modelo. Para obtener más información, consulta Evaluar modelos.
List of model evaluations: name: "projects/216065747626/locations/us-central1/models/5419131644870929143/modelEvaluations/TRL7683346839371803263" create_time { seconds: 1530196488 nanos: 509247000 } evaluated_example_count: 3 translation_evaluation_metrics { bleu_score: 19.23076957464218 base_bleu_score: 11.428571492433548 }
Paso 5: Usar un modelo para hacer una predicción
Cuando tu modelo personalizado cumple con tus estándares de calidad, puedes usarlo para traducir contenido novedoso.
Copia el código
Python
Java
Node.js
Solicitud
Para la función predict
, debes modificar las siguientes líneas de código:
- Establece
project_id
para tu PROJECT_ID. - Establece
model_id
para el ID de tu modelo. Establece
file_path
para el archivo descargado ("resources/input.txt").
Python
python tranlsate_predict.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.TranslatePredict"
Node.js
node translate_predict.js predict
Respuesta
La función muestra el contenido traducido.
Translated content: Ver y administrar tus cuentas de Google Tag Manager.
Arriba aparece la traducción al español de la oración en inglés: “View and manage your Google Tag Manager accounts”. Compara esta traducción personalizada con la traducción del modelo base de Google:
Ver y administrar sus cuentas de Administrador de etiquetas de Google
Paso 6: Borrar un modelo
Cuando hayas terminado de usar este modelo de muestra, puedes borrarlo permanentemente. Ya no podrás usar el modelo para predicción.
Copia el código
Python
Java
Node.js
Solicitud
Realiza una solicitud con el tipo de operación delete_model
para borrar un modelo que creaste. Debes modificar las siguientes líneas de código:
- Establece
project_id
para tu PROJECT_ID. Establece
model_id
para el ID de tu modelo.
Python
python delete_model.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.DeleteModel"
Node.js
node delete_model.js
Respuesta
Model deleted.