Ejecuta una traducción por lotes con el conector de Cloud Translation


En este instructivo, se muestra cómo crear un flujo de trabajo que use el conector de la API de Cloud Translation para traducir archivos a otros idiomas en modo por lotes asíncrono. Esto proporciona resultados en tiempo real a medida que se procesan las entradas.

Objetivos

En este instructivo, realizarás las siguientes acciones:

  1. Crea un bucket de entrada de Cloud Storage.
  2. Crear dos archivos en inglés y subirlos al bucket de entrada
  3. Crear un flujo de trabajo que use el conector de la API de Cloud Translation para traducir los dos archivos al francés y al español y guardar los resultados en un bucket de salida
  4. Implementa y ejecuta el flujo de trabajo para organizar todo el proceso.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Antes de comenzar

Es posible que las restricciones de seguridad que define tu organización no te permitan completar los siguientes pasos. Para obtener información sobre la solución de problemas, consulta Desarrolla aplicaciones en un entorno de Google Cloud restringido.

  1. 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.
  2. Instala Google Cloud CLI.
  3. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  4. Crea o selecciona un proyecto de Google Cloud.

    • Crea un proyecto de Google Cloud:

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el proyecto de Google Cloud que estás creando.

    • Selecciona el proyecto de Google Cloud que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre del proyecto de Google Cloud.

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  6. Habilita las APIs de Cloud Storage, Translation, and Workflows:

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  7. Instala Google Cloud CLI.
  8. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  9. Crea o selecciona un proyecto de Google Cloud.

    • Crea un proyecto de Google Cloud:

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el proyecto de Google Cloud que estás creando.

    • Selecciona el proyecto de Google Cloud que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre del proyecto de Google Cloud.

  10. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  11. Habilita las APIs de Cloud Storage, Translation, and Workflows:

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  12. Actualiza los componentes de gcloud:
    gcloud components update
  13. Accede con tu cuenta:
    gcloud auth login
  14. Establece la ubicación predeterminada que se usa en este instructivo:
    gcloud config set workflows/location us-central1
    

    Dado que en este instructivo se usa el modelo predeterminado de AutoML Translation que reside en us-central1, debes establecer la ubicación en us-central1.

    Si usas un modelo o un glosario de AutoML Translation distinto del predeterminado, asegúrate de que resida en la misma ubicación que la llamada al conector. De lo contrario, se mostrará un error INVALID_ARGUMENT (400). Para obtener más información, consulta el método batchTranslateText.

Crea un bucket de entrada de Cloud Storage y archivos

Puedes usar Cloud Storage para almacenar objetos. Los objetos son fragmentos inmutables de datos que constan de un archivo de cualquier formato y se almacenan en contenedores llamados buckets.

  1. Crea un bucket de Cloud Storage para contener los archivos que se traducirán:

    BUCKET_INPUT=${GOOGLE_CLOUD_PROJECT}-input-files
    gsutil mb gs://${BUCKET_INPUT}
  2. Crea dos archivos en inglés y súbelos al bucket de entrada:

    echo "Hello World!" > file1.txt
    gsutil cp file1.txt gs://${BUCKET_INPUT}
    echo "Workflows connectors simplify calling services." > file2.txt
    gsutil cp file2.txt gs://${BUCKET_INPUT}

Implementa y ejecuta el flujo de trabajo

Un flujo de trabajo está compuesto por una serie de pasos descritos con la sintaxis de Workflows, que se pueden escribir en formato YAML o JSON. Esta es la definición del flujo de trabajo. Después de crear un flujo de trabajo, debes implementarlo a fin de que esté disponible para la ejecución.

  1. Crea un archivo de texto con el nombre de archivo workflow.yaml y con el siguiente contenido:

    main:
      steps:
      - init:
          assign:
          - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
          - location: ${sys.get_env("GOOGLE_CLOUD_LOCATION")}
          - inputBucketName: ${projectId + "-input-files"}
          - outputBucketName: ${projectId + "-output-files-" + string(int(sys.now()))}
      - createOutputBucket:
            call: googleapis.storage.v1.buckets.insert
            args:
              query:
                project: ${projectId}
              body:
                name: ${outputBucketName}
      - batchTranslateText:
          call: googleapis.translate.v3beta1.projects.locations.batchTranslateText
          args:
              parent: ${"projects/" + projectId + "/locations/" + location}
              body:
                  inputConfigs:
                    gcsSource:
                      inputUri: ${"gs://" + inputBucketName + "/*"}
                  outputConfig:
                      gcsDestination:
                        outputUriPrefix: ${"gs://" + outputBucketName + "/"}
                  sourceLanguageCode: "en"
                  targetLanguageCodes: ["es", "fr"]
          result: batchTranslateTextResult

    El flujo de trabajo asigna variables, crea un bucket de salida y, luego, inicia la traducción de los archivos, y guarda los resultados en el bucket de salida.

  2. Después de crear el flujo de trabajo, impleméntalo:

    gcloud workflows deploy batch-translation --source=workflow.yaml
  3. Ejecuta el flujo de trabajo:

    gcloud workflows execute batch-translation
  4. Para ver el estado del flujo de trabajo, puedes ejecutar el comando que se muestra. Por ejemplo:

    gcloud workflows executions describe eb4a6239-cffa-4672-81d8-d4caef7d8424 /
      --workflow batch-translation /
      --location us-central1

    El flujo de trabajo debe ser ACTIVE. Después de unos minutos, los archivos traducidos (en francés y español) se suben al bucket de salida.

Obtén una lista de los objetos del bucket de salida

Puedes confirmar que el flujo de trabajo funcionó como se esperaba si enumeras los objetos en tu bucket de salida.

  1. Recupera el nombre del bucket de salida:

    gsutil ls

    El resultado es similar al siguiente:

    gs://PROJECT_ID-input-files/
    gs://PROJECT_ID-output-files-TIMESTAMP/

  2. Obtén una lista de los objetos en tu bucket de salida:

    gsutil ls -r gs://PROJECT_ID-output-files-TIMESTAMP/**

    Después de unos minutos, aparecerán los archivos traducidos, dos de cada uno en francés y español.

Limpia

Si creaste un proyecto nuevo para este instructivo, bórralo. Si usaste un proyecto existente y deseas conservarlo sin los cambios que se agregaron en este instructivo, borra los recursos creados para el instructivo.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

Para borrar el proyecto, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Elimina recursos de instructivos

  1. Quita la configuración predeterminada de gcloud que agregaste durante la configuración del instructivo:

    gcloud config unset workflows/location
    
  2. Borra el flujo de trabajo que se creó en este instructivo:

    gcloud workflows delete WORKFLOW_NAME
    
  3. Borra los buckets creados en este instructivo:

    gsutil rm -r gs://BUCKET_NAME

    En el ejemplo anterior, BUCKET_NAME es el nombre del bucket que se borrará. Por ejemplo, my-bucket

    La respuesta es similar al ejemplo a continuación:

    Removing gs://my-bucket/...

¿Qué sigue?