Elegir la configuración de almacenamiento adecuada es fundamental para el rendimiento y la estabilidad de tu clúster de entrenamiento. El servicio se integra con dos soluciones de almacenamiento distintas y de alto rendimiento:
- Filestore: Es un servicio de archivos administrado obligatorio que proporciona los directorios
/homecompartidos para todos los nodos del clúster. - Google Cloud Managed Lustre: Es un sistema de archivos paralelos opcional diseñado para un rendimiento de E/S extremo, ideal para el entrenamiento con conjuntos de datos masivos. Trátalo como un almacenamiento de trabajo de alto rendimiento en lugar de un sistema de registro y mantén Cloud Storage como tu fuente de información. Para obtener más información, consulta Crea una copia de seguridad de los datos de Managed Lustre en Cloud Storage.
En esta página, se proporciona una descripción general de sus usos clave y se describen los requisitos específicos de redes y de implementación para una integración exitosa con tu clúster.
Integración del almacenamiento para clústeres de entrenamiento
Los clústeres de entrenamiento de Gemini Enterprise Agent Platform dependen de soluciones de almacenamiento en red específicas
para su
funcionamiento. Se requiere Filestore para proporcionar los directorios /home compartidos
para el clúster, mientras que Managed Lustre es un sistema de archivos opcional de alto rendimiento
para cargas de trabajo exigentes.
Es fundamental configurar las redes de estos servicios de almacenamiento de forma correcta antes de implementar el clúster.
Filestore para directorios principales
Este servicio usa una instancia de Filestore para proporcionar el directorio /home
compartido para el clúster. Para garantizar una conectividad adecuada, debes crear tus
recursos de nube en este orden específico:
- Crea la red de VPC: Primero, implementa una red de VPC configurada con la MTU recomendada (por ejemplo, 8896).
- Crea la instancia de Filestore: Luego, implementa la instancia de Filestore en la VPC que acabas de crear.
- Crea el clúster de entrenamiento: Por último, implementa el clúster, que luego podrá conectarse a la instancia de Filestore dentro de la misma red.
Google Cloud Managed Lustre para cargas de trabajo de alto rendimiento
Para las cargas de trabajo que requieren el máximo rendimiento de E/S, puedes adjuntar un sistema de archivos de Managed Lustre. Este servicio se conecta a tu VPC con el acceso privado a servicios.
Managed Lustre está optimizado para la capacidad de procesamiento, no para la durabilidad. Una instancia es zonal y no tiene capacidad de instantánea, copia de seguridad ni recuperación. Crea una copia de seguridad en Cloud Storage de todo lo que no puedas volver a generar. Para obtener más información, consulta Crea una copia de seguridad de los datos de Lustre administrado en Cloud Storage.
Crea una copia de seguridad de los datos de Managed Lustre en Cloud Storage
Mantén Cloud Storage como la fuente de información detrás de Managed Lustre. De esta manera, se protegen tus puntos de control y puedes recuperarte rápidamente si una instancia falla o se borra.
Managed Lustre incluye una transferencia integrada de alta capacidad de procesamiento que exporta directamente a Cloud Storage. Las transferencias son incrementales: cada ejecución copia solo los archivos que aún no existen en el destino o que cambiaron desde la última transferencia.
Dos identidades necesitan permisos. La cuenta de servicio o el usuario que inicia la
exportación necesita lustre.instances.exportData, que se incluye en el
rol roles/lustre.admin o que puedes otorgar a través de un
rol personalizado. El
agente de servicio de Managed Lustre necesita acceso de escritura al
bucket de destino por separado.
Otorga al agente de servicio de Managed Lustre acceso de escritura al bucket de destino. Solo debes hacerlo una vez por bucket:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com \ --role=roles/storage.objectUserAquí:
- BUCKET_NAME es el bucket de destino.
- PROJECT_NUMBER es el número del proyecto que contiene la instancia de Managed Lustre. Para obtener más información, consulta Permisos para el agente de servicio de Managed Lustre.
Exporta el sistema de archivos al bucket:
gcloud lustre instances export-data INSTANCE_ID \ --location=ZONE \ --lustre-path="/" \ --gcs-path-uri="gs://BUCKET_NAME/INSTANCE_ID/"Aquí:
- INSTANCE_ID es el nombre de la instancia de Managed Lustre de la que se creará una copia de seguridad.
- ZONE es la zona de la instancia, por ejemplo,
us-central1-a.
El valor
--gcs-path-uripuede ser un bucket por sí solo o una ruta de acceso dentro de un bucket. Si incluyes una ruta de acceso, debe terminar con una barra diagonal. Exportar cada instancia a una ruta con su nombre mantiene las instancias separadas: si conectas más de una instancia de Managed Lustre al clúster, asigna a cada una su propia ruta, ya que dos instancias que exportan a la misma ruta reemplazan los archivos de la otra.
Para mantener la copia de seguridad actualizada, ejecuta la exportación de forma programada. Por ejemplo, puedes ejecutar un trabajo cron diario en un nodo de acceso en lugar de ejecutarlo solo al final de una ejecución de entrenamiento. Debido a que las transferencias son incrementales, cada ejecución después de la primera copia solo lo que cambió.
Ten en cuenta lo siguiente cuando planifiques una copia de seguridad:
- Solo puede haber una operación de transferencia activa por instancia a la vez. Una transferencia
que se inicia mientras otra aún se está ejecutando falla con
ABORTED: unable to queue the operation. - La exportación nunca borra objetos del destino, por lo que un archivo que borres en Managed Lustre permanecerá en el bucket. Habilita el control de versiones de objetos en el bucket de destino para que también puedas recuperar un archivo que se reemplazó por contenido no deseado.
- No se conservan los vínculos simbólicos, los directorios vacíos ni los diseños de seccionamiento establecidos con
lfs setstripe, y los vínculos duros se exportan como objetos independientes, por lo que un archivo con vínculo duro consume espacio una vez por vínculo en el bucket. El UID, el GID, el modo y el mtime de POSIX se conservan como metadatos de objetos personalizados. - Escribe puntos de control de forma atómica: escribe en una ruta de acceso temporal y, luego, cambia el nombre del archivo en su lugar, de modo que una exportación que se ejecute durante una escritura capture el archivo anterior o el nuevo completo, y nunca un archivo parcial.
Para restablecer, crea una instancia de Managed Lustre nueva y vuelve a cargar los
datos con gcloud lustre instances import-data. Para obtener más información, consulta
Transfiere datos hacia o desde Cloud Storage.
Limitación crítica de las redes: No hay intercambio de tráfico transitivo
Una limitación fundamental para Filestore y Google Cloud Managed Lustre es que no admiten el intercambio de tráfico transitivo. Esto significa que solo los recursos dentro de la VPC conectada directamente pueden acceder al servicio de almacenamiento. Por ejemplo, si la VPC de tu clúster (N1) intercambia tráfico con el servicio de almacenamiento, otra VPC (N2) que intercambie tráfico con N1 no tendrá acceso.
Integración del almacenamiento para clústeres de entrenamiento
Los clústeres de entrenamiento de Gemini Enterprise Agent Platform dependen de soluciones de almacenamiento
en red específicas para su funcionamiento. Se requiere Filestore para proporcionar
los directorios /home compartidos para el clúster, mientras que Google Cloud Managed Lustre es un
sistema de archivos de alto rendimiento opcional para cargas de trabajo exigentes.
Es fundamental configurar las redes de estos servicios de almacenamiento de forma correcta
antes de implementar el clúster.
Filestore
Usos clave de Filestore con clústeres de entrenamiento
Además de su función como directorio principal obligatorio, Filestore proporciona una forma flexible
de compartir datos con tu clúster.
Almacenamiento compartido adicional: Puedes adjuntar una o más instancias de Filestore
adicionales a cualquier grupo de nodos. Esto es útil para proporcionar conjuntos de datos compartidos, objetos binarios de aplicaciones
u otros archivos comunes a tus trabajos de entrenamiento. Cuando se especifica en la configuración del grupo de nodos,
los clústeres de entrenamiento activan automáticamente estas instancias en el
directorio /mnt/filestore de cada nodo.
Requisitos de Filestore
Para que la integración de Filestore con los clústeres de entrenamiento sea exitosa, se requiere la siguiente configuración:
- Habilita la API: La API de Filestore debe estar habilitada en tu proyecto de Google Cloud antes de que puedas crear el clúster.
- Directorio
/homeobligatorio: Cada clúster de entrenamiento requiere una instancia de Filestore dedicada para que funcione como el directorio/homecompartido. Esta instancia tiene requisitos de configuración específicos:- Red: Debe residir en la misma red de VPC que los nodos de procesamiento y acceso del clúster.
- Ubicación: Debe estar en la misma región o zona que el clúster.
- Configuración: Debes especificar el nombre completo del recurso de esta instancia en el campo
cuando creas el clúster a través de la API.orchestrator_spec.slurm_spec.home_directory_storage
Configura el almacenamiento de Filestore
Crea una instancia de Filestore zonal o regional en la zona en la que deseas
crear el clúster. La API de Agent Platform requiere que se conecte un Filestore al clúster para que funcione como el directorio /home.
Este Filestore debe estar en la misma zona o región, y en la misma red
que todos los nodos de procesamiento y de acceso. En el siguiente ejemplo, se usa 172.16.10.0/24 para la
implementación de Filestore.
SERVICE_TIER=ZONAL # Can use BASIC_SSD # Create reserved IP address range gcloud compute addresses create CLUSTER_IDfs-ip-range \ --project=PROJECT_ID \ --global \ --purpose=VPC_PEERING \ --addresses=172.16.10.0 \ --prefix-length=24 \ --description="Filestore instance reserved IP range" \ --network=NETWORK # Get the CIDR range FS_IP_RANGE=$( gcloud compute addresses describe CLUSTER_IDfs-ip-range \ --global \ --format="value[separator=/](address, prefixLength)" ) # Create the Filestore instance gcloud filestore instances create FS_INSTANCE_ID \ --project=PROJECT_ID \ --location=ZONE \ --tier=ZONAL \ --file-share=name="nfsshare",capacity=1024 \ --network=name=NETWORK,connect-mode=DIRECT_PEERING,reserved-ip-range="${FS_IP_RANGE}"
Lustre
Google Cloud Managed Lustre ofrece un sistema de archivos paralelos completamente administrado y de alto rendimiento optimizado para aplicaciones de IA y HPC. Con una capacidad de escala de varios petabytes y una capacidad de procesamiento de hasta 1 TBps, Managed Lustre facilita la migración de cargas de trabajo exigentes a la nube.
Las instancias de Managed Lustre se encuentran en
zonas dentro de regiones. Una región es una ubicación geográfica específica donde puedes ejecutar tus recursos. Cada región se subdivide en
varias zonas. Por ejemplo, la región us-central1 en el centro de Estados Unidos tiene las zonas
us-central1-a, us-central1-b, us-central1-c y us-central1-f. Para obtener más información, consulta
Geografía y regiones.
Para disminuir la latencia de red, te recomendamos que crees una instancia de Lustre administrado en una región y zona que esté cerca de donde planeas usarla.
Cuando creas una instancia de Managed Lustre, debes definir las siguientes propiedades:
- Es el nombre de la instancia que usa Google Cloud.
- Es el nombre del sistema de archivos que usan las herramientas del cliente, por ejemplo,
lfs. - Es la capacidad de almacenamiento en gibibytes (GiB). La capacidad puede variar de 9,000 GiB a ~8 PiB (7,632,000 GiB). El tamaño máximo de una instancia depende de su nivel de rendimiento.
- Managed Lustre ofrece niveles de rendimiento que van desde 125 MBps por TiB hasta 1,000 MBps por TiB.
- Para obtener el mejor rendimiento, crea la instancia en la misma zona que el clúster de entrenamiento.
- La red de VPC de esta instancia debe ser la misma que usa tu clúster de entrenamiento.
Managed Lustre ofrece 4 niveles de rendimiento, cada uno con una velocidad máxima de capacidad de procesamiento diferente por TiB. Los niveles de rendimiento también afectan el tamaño mínimo y máximo de la instancia, y el tamaño del paso entre los valores de capacidad aceptables. No puedes cambiar el nivel de rendimiento de una instancia después de crearla.
La implementación de Lustre administrado requiere acceso privado a servicios, que establece el intercambio de tráfico de VPC entre la VPC del clúster de entrenamiento y la VPC que aloja Lustre administrado, con una subred /20 dedicada.
Configura la instancia de Managed Lustre (opcional)
Usa Google Cloud Managed Lustre solo si quieres usar Managed Lustre en Model Development Service.
Google Cloud Managed Lustre es un servicio de sistema de archivos paralelos de alto rendimiento y completamente administrado en Google Cloud. Está diseñada específicamente para acelerar las cargas de trabajo exigentes en IA/aprendizaje automático y computación de alto rendimiento (HPC).
Para obtener un rendimiento óptimo cuando se usan clústeres de entrenamiento, Google Cloud Managed Lustre se debe implementar desde la misma VPC y zona que tu clúster de entrenamiento con el intercambio de tráfico de VPC con las redes de servicios.
Crear instancia de Lustre
gcloud lustre instances create LUSTRE_INSTANCE_ID \
--project=PROJECT_ID \
--location=ZONE \
--filesystem=lustrefs \
--per-unit-storage-throughput=500 \
--capacity-gib=36000 \
--network=NETWORK_NAME
Activación de Cloud Storage
Como requisito previo, asegúrate de que la cuenta de servicio de la VM tenga el rol de Usuario de objetos de almacenamiento.
Montaje predeterminado
Los clústeres de entrenamiento de Gemini Enterprise Agent Platform usan Cloud Storage FUSE para activar de forma dinámica tus
buckets de Cloud Storage
en todos los nodos de acceso y procesamiento, lo que los hace accesibles en el
directorio /gcs. Los buckets activados de forma dinámica no pueden aparecer en una lista desde el punto de activación raíz /gcs. Puedes acceder a los buckets activados de forma dinámica como
subdirectorios:
user@testcluster:$ ls /gcs/your-bucket-name
user@testcluster:$ cd /gcs/your-bucket-name
Montaje personalizado
Para activar un bucket de Cloud Storage específico en un directorio local con opciones personalizadas, usa la siguiente estructura de comandos, ya sea pasándola como parte de la secuencia de comandos de inicio en la creación del clúster o ejecutándola directamente en el nodo después de crear el clúster.
sudo mkdir -p $MOUNT_DIR
echo "$GCS_BUCKET $MOUNT_DIR gcsfuse $OPTION_1,$OPTION_2,..." | sudo tee -a /etc/fstab
sudo mount -a
Por ejemplo, para activar el bucket mtdata en el directorio /data, usa
el siguiente comando:
sudo mkdir -p /data
echo "mtdata /data gcsfuse defaults,_netdev,implicit_dirs,allow_other,dir_mode=777,file-mode=777,metadata_cache_negative_ttl_secs=0,metadata_cache_ttl_secs=-1,stat_cache_max_size_mb=-1,type_cache_max_size_mb=-1,enable_streaming_writes=true" | sudo tee -a /etc/fstab
sudo mount -a
Para obtener una configuración completamente automatizada y coherente, incluye tus secuencias de comandos de activación personalizadas en las secuencias de comandos de inicio del clúster. Esta práctica garantiza que tus buckets de Cloud Storage se activen automáticamente en todos los nodos durante el inicio, lo que elimina la necesidad de realizar una configuración manual.
Para obtener recomendaciones de configuración adicionales adaptadas a las cargas de trabajo de IA/AA, consulta la guía de prácticas recomendadas para ajustar el rendimiento. Proporciona orientación específica para optimizar Cloud Storage FUSE para el entrenamiento, la inferencia y la creación de puntos de control.
¿Qué sigue?
Los siguientes pasos se enfocan en usar tu clúster de manera eficaz para el entrenamiento a gran escala.
- Adapta tu código para el entrenamiento distribuido: Para aprovechar al máximo un clúster de varios nodos y el almacenamiento de alto rendimiento, adapta tu código de entrenamiento para un entorno distribuido.
- Organiza tus trabajos con Gemini Enterprise Agent Platform Pipelines: Para los flujos de trabajo de producción, automatiza el proceso de preparación de datos, envío de trabajos y registro de modelos con Agent Platform Pipelines.
- Supervisa y depura tus trabajos de entrenamiento: Realiza un seguimiento del progreso y el uso de recursos de tus trabajos de entrenamiento distribuidos para identificar y resolver problemas.