En este documento, se explica cómo crear y ejecutar un trabajo por lotes que use instancias de máquina virtual (VM) con unidades de procesamiento tensorial (TPU). Las TPU son circuitos integrados específicos de la aplicación (ASIC) personalizados de Google diseñados para acelerar las cargas de trabajo de aprendizaje automático (ML) y de inteligencia artificial (IA). Cuando creas un trabajo de Batch, puedes especificar de forma opcional un tipo de máquina de TPU para acelerar las cargas de trabajo de inferencia, evaluación, ajuste y entrenamiento de IA y AA en contenedores o basadas en secuencias de comandos.
Para obtener más información sobre las TPU, consulta Acerca de las TPU en Google Cloud y Tipos de máquinas de TPU en la documentación de Compute Engine. Como alternativa, puedes acelerar las cargas de trabajo de procesamiento de datos, IA y AA con GPU.
Antes de comenzar
- Si nunca usaste Batch, consulta Comienza a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
Para obtener los permisos que necesitas para crear un trabajo, pídele a tu administrador que te otorgue los siguientes roles de IAM:
- Editor de trabajos por lotes (
roles/batch.jobsEditor) en el proyecto - Usuario de cuenta de servicio (
roles/iam.serviceAccountUser) en la cuenta de servicio del trabajo, que, de forma predeterminada, es la cuenta de servicio predeterminada de Compute Engine
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
- Editor de trabajos por lotes (
Restricciones
Cuando un trabajo usa TPU, se aplican todas las siguientes restricciones, además de las limitaciones de Compute Engine para las TPU.
Solo porciones de TPU de host único: Batch solo admite VMs de TPU independientes, que se denominan porciones de TPU de host único. No se admiten las porciones de TPU de varios hosts, que constan de varias VMs interconectadas.
Un trabajo se puede ejecutar en una o más porciones de TPU de host único. Por ejemplo, si un trabajo establece
taskCounten4ytaskCountPerNodeen1, la cantidad de VMs en las que se ejecuta el trabajo es 4 o menos. A diferencia de las porciones de TPU de varios hosts, cada porción de TPU de host único funciona como una VM independiente y no proporciona redes de interconexión entre chips (ICI) para la comunicación de alto ancho de banda y baja latencia.Obtén más información sobre las porciones de TPU de host único y de varios hosts en la documentación de Compute Engine.
Versiones de TPU y tipos de máquinas compatibles: Batch solo admite porciones de TPU de host único (VMs de TPU independientes) para las siguientes versiones de TPU y tipos de máquinas:
- TPU7x (Ironwood):
tpu7x-standard-4t v6e (Trillium):
ct6e-standard-1t,ct6e-standard-4tyct6e-standard-8tv5p:
ct5p-hightpu-4tOpciones de consumo admitidas: Batch no admite VMs de inicio flexible (modelo de aprovisionamiento
FLEX_START) para trabajos que usan TPU. Excepto las VMs de inicio flexible, puedes especificar cualquier opción de consumo que sea compatible con la versión de TPU de tu trabajo según la disponibilidad de la opción de consumo por versiones de TPU en la documentación de Compute Engine.Se requiere una ubicación de zona única: Cuando creas un trabajo que usa TPU, debes restringir el trabajo a una zona específica configurando las ubicaciones permitidas del trabajo (campo
allowedLocations[]) a una zona que contenga tu versión de TPU o, si corresponde, tu reserva.Funciones no admitidas: Los trabajos que usan TPU no admiten las siguientes funciones:
- flexibilidad de instancias
(campo
instanceFlexibilityPolicy) - Políticas de posición compacta
(campo
collocation)
- flexibilidad de instancias
(campo
Para obtener más información sobre cada tipo de máquina de TPU, como los discos compatibles, consulta Tipos de máquinas de TPU en la documentación de Compute Engine.
Crea un trabajo que use TPUs
Para crear un trabajo que use TPU, haz lo siguiente:
- Planifica la configuración de un trabajo que use TPUs.
- Crea un trabajo con la configuración que identificaste. Para ver ejemplos de cómo crear un trabajo que use TPU, consulta Crea un trabajo que use TPU en este documento.
Planifica la configuración de un trabajo que use TPUs
Antes de continuar con la creación de un trabajo que use TPU, debes hacer lo siguiente:
Elige la versión de TPU: selecciona la versión de TPU que sea adecuada para tu carga de trabajo. Para obtener una lista de las versiones de TPU por tipo de carga de trabajo, consulta Versiones de TPU recomendadas por tipos de carga de trabajo.
Asegúrate de seleccionar una de las versiones de TPU compatibles.
Elige una opción de consumo de TPU: Selecciona la opción de consumo que mejor se adapte a tu carga de trabajo, su duración y tus necesidades de costo. Asegúrate de seleccionar una de las opciones de consumo admitidas. Los casos de uso y los requisitos de trabajo para cada opción de consumo se resumen en la siguiente tabla.
Opciones de consumo y sus requisitos de trabajo Vinculadas a reservas (reservas futuras en modo Calendario o reservas futuras para bloques de capacidad)
Caso de uso: Recomendamos las opciones de consumo vinculadas a reservas para los trabajos que necesitan un nivel muy alto de garantía de disponibilidad de recursos de TPU durante un período específico. En Compute Engine, estas se describen como reservas futuras en modo de calendario (de 1 a 90 días) y reservas futuras para bloques de capacidad (de 1 año o más).
Detalles: Antes de crear un trabajo, debes obtener o identificar una reserva para la versión de TPU que elegiste y el modelo de aprovisionamiento
RESERVATION_BOUND. Después de crear una reserva, se generan los costos de las VMs especificadas al mismo precio que la ejecución de las VMs hasta que borres la reserva. Las VMs que consumen una reserva no generan costos independientes, pero las reservas generan costos sin importar el consumo.Para obtener más información, consulta Elige un tipo de reserva en la documentación de Compute Engine.
Batch consume reservas vinculadas a reservas para los trabajos que cumplen con todas las condiciones siguientes:
- Configura el campo
provisioningModelcomoRESERVATION_BOUND. - Orientarse específicamente a una reserva compatible Establece el
campo
reservationen el nombre corto (si la reserva está en el mismo proyecto y zona) o en la ruta de acceso completa del recurso de la reserva, el bloque de reserva o el subbloque de reserva.
A pedido
Caso de uso: El modo a pedido es rápido y fácil de probar, por lo que es la opción de consumo predeterminada para la mayoría de los trabajos. Sin embargo, no recomendamos el uso de la opción on demand si otra opción de consumo se adapta mejor a tus prioridades o si tienes problemas de forma reiterada con la obtención de recursos.
Detalles: Por lo general, el acceso a pedido es la forma predeterminada de acceder a las VMs de Compute Engine. On demand te permite acceder a los recursos (si están disponibles) cuando se solicitan. Los recursos no se borran hasta que finaliza el trabajo o se alcanza el límite de tiempo de ejecución.
De forma predeterminada, Batch usa el modo on-demand para la mayoría de los trabajos. Si quieres asegurarte de que un trabajo use el modelo on demand, haz todo lo siguiente:
- Establece el campo
provisioningModelcomoSTANDARD. - Evita el consumo de reservas. Para evitar que un trabajo consuma
automáticamente con reservas compatibles, establece el
campo
reservationenNO_RESERVATION. Para obtener más información, consulta Crea y ejecuta un trabajo que no pueda consumir VMs reservadas.
VMs Spot
Caso de uso: Te recomendamos que uses VMs Spot para reducir los costos de las cargas de trabajo tolerantes a errores.
Detalles: Si se cumple una solicitud para crear un trabajo que usa VMs Spot, se cobran las VMs según los precios de las VMs Spot, que pueden cambiar con frecuencia y podrían proporcionar el mayor descuento, hasta un 91% de descuento en los precios a pedido. Sin embargo, es posible que las VMs Spot no siempre estén disponibles y se puedan interrumpir en cualquier momento.
Obtén más información sobre las VMs Spot y las recomendaciones para trabajos con VMs Spot.
Batch usa VMs Spot para los trabajos que hacen todo lo siguiente:
- Establece el campo
provisioningModelcomoSPOT. - Evita el consumo de reservas (opcional). No puedes usar
VMs Spot con reservas. Específicamente, el trabajo puede
establecer de forma opcional el campo
reservationenNO_RESERVATION. Para obtener más información, consulta Crea y ejecuta un trabajo que no pueda consumir VMs reservadas.
Selecciona una zona en la que estén disponibles las TPU que elegiste: Para usar una versión de TPU, el campo
allowedLocations[]de un trabajo debe establecerse en una zona que contenga las TPU que elegiste, de la siguiente manera:- Si elegiste una opción de consumo que usa reservas, debes usar la zona en la que se encuentra la reserva.
- De lo contrario, selecciona una zona que contenga tu versión de TPU según la disponibilidad de TPU.
En cualquier caso, la zona también debe estar en una de las regiones admitidas para Batch.
Asegúrate de que tu proyecto tenga suficiente cuota de TPU: Si creas un trabajo que usa TPU con VMs a pedido o VM Spot, debes tener suficiente cuota de TPU disponible en la región que deseas usar. Crear un trabajo que use TPU que consuma una reserva de TPU no requiere ninguna cuota de TPU, ya que la cuota se usa cuando se crea la reserva. Para obtener una lista de los nombres de las cuotas de TPU, consulta Cuota de TPU y, para obtener instrucciones sobre cómo ver la cuota, consulta Visualiza y administra cuotas.
Elige un tipo de máquina de TPU: selecciona un tipo de máquina de TPU para la versión de TPU que elegiste. Si elegiste una opción de consumo que usa reservas, debes usar el tipo de máquina de tu reserva. Para obtener una lista de los tipos de máquinas disponibles para cada versión de TPU, consulta Tipos de máquinas de TPU.
Debido a las restricciones, debes usar la topología de host único para tu tipo de máquina de TPU.
Crea un trabajo que use TPUs
En las siguientes secciones, se explica cómo crear un trabajo de ejemplo que use TPUs para cada opción de consumo.
| Opción de consumo | Ejemplo de instrucciones de trabajo |
|---|---|
| Vinculadas a reservas (reservas futuras en modo de calendario o reservas futuras para bloques de capacidad) | |
| VMs a pedido o VMs Spot |
Usa TPUs con VMs Spot o a pedido
Puedes crear un trabajo que use TPU con VMs Spot o a pedido con gcloud CLI o la API de Batch.
gcloud
Crea un archivo de configuración JSON que especifique un tipo de máquina de TPU de host único compatible, establezca el modelo de aprovisionamiento en
STANDARDoSPOTy se ejecute en una ubicación que ofrezca el tipo de máquina de TPU.Por ejemplo, para crear un trabajo de secuencia de comandos básico, crea un archivo JSON con el siguiente contenido:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "provisioningModel": "PROVISIONING_MODEL", "machineType": "MACHINE_TYPE" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }Reemplaza lo siguiente:
PROVISIONING_MODEL: Es el modelo de aprovisionamiento para tu opción de consumo:STANDARDpara VMs a pedido oSPOTpara VMs Spot.MACHINE_TYPE: un tipo de máquina de TPU de host único compatible, por ejemplo,ct5p-hightpu-4t.ALLOWED_LOCATIONS: son las ubicaciones permitidas para el trabajo. Para un trabajo que usa TPU, debes establecer el campoallowedLocations[]en una zona que ofrezca el tipo de máquina de TPU; por ejemplo,zones/us-central1-aofrece el tipo de máquina de TPUct5p-hightpu-4t.
Para crear y ejecutar el trabajo, usa el comando
gcloud batch jobs submit:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEReemplaza lo siguiente:
JOB_NAME: Es el nombre del trabajo.LOCATION: Es la ubicación del trabajo.JSON_CONFIGURATION_FILE: Es la ruta de acceso a un archivo JSON con los detalles de configuración del trabajo.
API
Realiza una solicitud POST al
método jobs.create
que especifique un tipo de máquina de TPU de host único compatible, establezca el
modelo de aprovisionamiento en STANDARD o SPOT, y se ejecute en una ubicación que
ofrezca el tipo de máquina de TPU.
Por ejemplo, para crear un trabajo de secuencia de comandos básico, realiza la siguiente solicitud:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"provisioningModel": "PROVISIONING_MODEL",
"machineType": "MACHINE_TYPE"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto de tu proyecto.LOCATION: Es la ubicación del trabajo.JOB_NAME: Es el nombre del trabajo.PROVISIONING_MODEL: Es el modelo de aprovisionamiento para tu opción de consumo:STANDARDpara VMs a pedido oSPOTpara VMs Spot.MACHINE_TYPE: un tipo de máquina de TPU de host único compatible, por ejemplo,ct5p-hightpu-4t.ALLOWED_LOCATIONS: son las ubicaciones permitidas para el trabajo. Para un trabajo que usa TPU, debes establecer el campoallowedLocations[]en una zona que ofrezca el tipo de máquina de TPU; por ejemplo,zones/us-central1-aofrece el tipo de máquina de TPUct5p-hightpu-4t.
Usa TPU con opciones de consumo vinculadas a reservas
Puedes crear un trabajo que use TPU con una opción de consumo para el
modelo de aprovisionamiento vinculado a la reserva (RESERVATION_BOUND), ya sea
reservas futuras para bloques de capacidad o
reservas futuras en modo Calendario, con gcloud CLI o
la API de Batch.
gcloud
Crea un archivo de configuración JSON que especifique una reserva para un tipo de máquina de TPU de host único, establezca el modelo de aprovisionamiento en
RESERVATION_BOUNDy se ejecute en la zona de la reserva.Por ejemplo, para crear un trabajo de secuencia de comandos básico, crea un archivo JSON con el siguiente contenido:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "provisioningModel": "RESERVATION_BOUND", "reservation": "RESERVATION", "machineType": "MACHINE_TYPE" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }Reemplaza lo siguiente:
RESERVATION: Reemplaza por una de las siguientes rutas de acceso a tu reserva:Si deseas usar una reserva futura en modo Calendario o cualquier parte de la reserva para una reserva futura de bloques de capacidad, especifica la reserva:
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAMESi deseas usar un bloque específico de una reserva futura para bloques de capacidad, especifica el bloque de reserva:
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAMESi deseas usar un subbloque específico de una reserva futura para bloques de capacidad, especifica el subbloque de reserva:
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationSubBlocks/SUB_BLOCK_NAME
MACHINE_TYPE: el tipo de máquina de TPU de tu reserva, por ejemplo,ct5p-hightpu-4t.ALLOWED_LOCATIONS: son las ubicaciones permitidas para el trabajo. Para un trabajo que usa TPU reservadas, debes establecer el campoallowedLocations[]en la zona de tu reserva; por ejemplo,zones/us-central1-aofrece el tipo de máquina de TPUct5p-hightpu-4t.
Para crear y ejecutar el trabajo, usa el comando
gcloud batch jobs submit:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEReemplaza lo siguiente:
JOB_NAME: Es el nombre del trabajo.LOCATION: Es la ubicación del trabajo.JSON_CONFIGURATION_FILE: Es la ruta de acceso a un archivo JSON con los detalles de configuración del trabajo.
API
Realiza una solicitud POST al
método jobs.create
que especifique una reserva para un tipo de máquina de TPU de host único, establezca el
modelo de aprovisionamiento en RESERVATION_BOUND y se ejecute en la zona de la
reserva.
Por ejemplo, para crear un trabajo de secuencia de comandos básico, realiza la siguiente solicitud:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from TPU task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"provisioningModel": "RESERVATION_BOUND",
"reservation": "RESERVATION",
"machineType": "MACHINE_TYPE"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto de tu proyecto.LOCATION: Es la ubicación del trabajo.JOB_NAME: Es el nombre del trabajo.RESERVATION: Reemplaza por una de las siguientes rutas de acceso a tu reserva:Si deseas usar una reserva futura en modo Calendario o cualquier parte de la reserva para una reserva futura de bloques de capacidad, especifica la reserva:
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAMESi deseas usar un bloque específico de una reserva futura para bloques de capacidad, especifica el bloque de reserva:
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAMESi deseas usar un subbloque específico de una reserva futura para bloques de capacidad, especifica el subbloque de reserva:
projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationSubBlocks/SUB_BLOCK_NAME
MACHINE_TYPE: el tipo de máquina de TPU de tu reserva, por ejemplo,ct5p-hightpu-4t.ALLOWED_LOCATIONS: son las ubicaciones permitidas para el trabajo. Para un trabajo que usa TPU reservadas, debes establecer el campoallowedLocations[]en la zona de tu reserva; por ejemplo,zones/us-central1-aofrece el tipo de máquina de TPUct5p-hightpu-4t.
Para obtener más información sobre cómo crear trabajos que consuman reservas, consulta Garantiza la disponibilidad de recursos con VM VMs.
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Consulta trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.