Traduce texto con la función ML.TRANSLATE

En este documento, se describe cómo usar la función ML.TRANSLATE con un modelo remoto para traducir texto de una Tabla estándar de BigQuery.

Para obtener información sobre la inferencia de modelos en BigQuery ML, consulta Descripción general de la inferencia de modelos.

Para obtener información sobre los tipos de modelos compatibles de cada instrucción y función de SQL, y todas las instrucciones y funciones de SQL admitidas en cada tipo de modelo, consulta Recorrido del usuario de extremo a extremo para cada modelo.

Permisos necesarios

  • Para crear una conexión, necesitas membresía en la siguiente función

    • roles/bigquery.connectionAdmin
  • Para otorgar permisos a la cuenta de servicio de la conexión, necesitas el siguiente permiso:

    • resourcemanager.projects.setIamPolicy
  • Para crear el modelo con BigQuery AA, necesitas los siguientes permisos:

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata
  • Para ejecutar inferencias, necesitas los siguientes permisos:

    • bigquery.tables.getData en la tabla
    • bigquery.models.getData en el modelo
    • bigquery.jobs.create

Antes de comenzar

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. Enable the BigQuery, BigQuery Connection API, and Cloud Translation APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  7. Enable the BigQuery, BigQuery Connection API, and Cloud Translation APIs.

    Enable the APIs

Crear una conexión

Crea una conexión de recurso en la nube y obtén la cuenta de servicio de la conexión.

Selecciona una de las opciones siguientes:

Console

  1. Ve a la página de BigQuery.

    Ir a BigQuery

  2. Para crear una conexión, haz clic en Agregar y, luego, en Conexiones a fuentes de datos externas.

  3. En la lista Tipo de conexión, selecciona Modelos remotos de Vertex AI, funciones remotas y BigLake (Cloud Resource).

  4. En el campo ID de conexión, escribe un nombre para tu conexión.

  5. Haga clic en Crear conexión.

  6. Haz clic en Ir a la conexión.

  7. En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.

bq

  1. En un entorno de línea de comandos, crea una conexión:

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID
    

    El parámetro --project_id anula el proyecto predeterminado.

    Reemplaza lo siguiente:

    • REGION: tu región de conexión
    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • CONNECTION_ID: Es un ID para tu conexión.

    Cuando creas un recurso de conexión, BigQuery crea una cuenta de servicio del sistema única y la asocia con la conexión.

    Solución de problemas: Si recibes el siguiente error de conexión, actualiza el SDK de Google Cloud:

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Recupera y copia el ID de cuenta de servicio para usarlo en un paso posterior:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID
    

    El resultado es similar al siguiente:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Terraform

Agrega la siguiente sección a tu archivo main.tf.

 ## This creates a cloud resource connection.
 ## Note: The cloud resource nested object has only one output only field - serviceAccountId.
 resource "google_bigquery_connection" "connection" {
    connection_id = "CONNECTION_ID"
    project = "PROJECT_ID"
    location = "REGION"
    cloud_resource {}
}        
Reemplaza lo siguiente:

  • CONNECTION_ID: Es un ID para tu conexión.
  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • REGION: tu región de conexión

Otorga acceso a la cuenta de servicio

Elige una de las opciones siguientes:

Console

  1. Ir a la página IAM y administración

    Ir a IAM y administración

  2. Haga clic en Agregar.

    Se abre el cuadro de diálogo Agregar principales.

  3. En el campo Principales nuevas (New principals), ingresa el ID de la cuenta de servicio que copiaste antes.

  4. En el campo Seleccionar una función, selecciona Service Usage y, luego, Consumidor de Service Usage.

  5. Haz clic en Agregar otra función.

  6. En el campo Seleccionar un rol, selecciona BigQuery y, luego, Usuario de conexión de BigQuery.

  7. Haz clic en Agregar otro rol.

  8. En el campo Selecciona un rol, selecciona Cloud Translation y, luego, Usuario de la API de Cloud Translation.

  9. Haz clic en Guardar.

gcloud

Usa el comando gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/serviceusage.serviceUsageConsumer' --condition=None
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/bigquery.connectionUser' --condition=None
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/cloudtranslate.user' --condition=None

Reemplaza lo siguiente:

  • PROJECT_NUMBER: Es el número de tu proyecto.
  • MEMBER: Es el ID de la cuenta de servicio que copiaste antes.

Si no se otorga el permiso, se produce un error.

Crea un modelo

Crea un modelo remoto con un REMOTE_SERVICE_TYPE de CLOUD_AI_TRANSLATE_V3:

CREATE OR REPLACE MODEL
`PROJECT_ID.DATASET_ID.MODEL_NAME`
REMOTE WITH CONNECTION PROJECT_ID.REGION.CONNECTION_ID
OPTIONS (REMOTE_SERVICE_TYPE = 'CLOUD_AI_TRANSLATE_V3');

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contendrá el modelo. Este conjunto de datos debe estar en la misma ubicación que la conexión que usas.
  • MODEL_NAME: el nombre del modelo
  • REGION: Es la región que usa la conexión.
  • CONNECTION_ID: el ID de conexión, por ejemplo, myconnection.

    Cuando ves los detalles de conexión en la consola de Google Cloud, el ID de conexión es el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión, por ejemplo projects/myproject/locations/connection_location/connections/myconnection.

Traducir texto

Traduce texto con la función ML.TRANSLATE:

SELECT *
FROM ML.TRANSLATE(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  { TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (QUERY) },
  STRUCT('MODE' AS translate_mode, ['LANGUAGE' AS target_language_code])
);

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto
  • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
  • MODEL_NAME: el nombre del modelo
  • TABLE_NAME: el nombre de la tabla que contiene el texto que se traducirá en una columna llamada text_content. Si el texto está en una columna con un nombre diferente, especifica text_content como alias para esa columna.
  • QUERY: una consulta que contiene el texto que se traducirá en una columna llamada text_content. Si el texto está en una columna con un nombre diferente, especifica text_content como alias para esa columna.
  • MODE: Es el nombre de un modo de traducción compatible.
  • LANGUAGE: Es el nombre de un código de idioma compatible. Este argumento solo es necesario cuando usas el modo de traducción TRANSLATE_TEXT.

Ejemplo 1

En el siguiente ejemplo, se traduce el texto de la columna text_content de la tabla al hindi:

SELECT * FROM ML.TRANSLATE(
  MODEL `mydataset.mytranslatemodel`,
  TABLE mydataset.mytable,
  STRUCT('translate_text' AS translate_mode, 'hi' AS target_language_code))
);

Ejemplo 2

En el siguiente ejemplo, se detecta el idioma del texto en la columna comment de la tabla:

SELECT * FROM ML.TRANSLATE(
  MODEL `mydataset.mytranslatemodel`,
  (SELECT comment AS text_content from mydataset.mytable),
  STRUCT('detect_language' AS translate_mode)
);

¿Qué sigue?

Prueba el notebook Estadísticas de datos no estructurados con BigQuery ML y modelos previamente entrenados de Vertex AI.