Storage

Si te interesan los clústeres de entrenamiento de Gemini Enterprise Agent Platform, comunícate con tu representante de ventas para obtener acceso.

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 /home compartidos 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 en 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 de almacenamiento para clústeres de entrenamiento

Los clústeres de entrenamiento de Gemini Enterprise Agent Platform dependen de soluciones de almacenamiento específicas y conectadas en red 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 correctamente las redes para estos servicios de almacenamiento antes de implementar tu 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 la nube en este orden específico:

  1. Crea la red de VPC: Primero, implementa una red de VPC configurada con la MTU recomendada (por ejemplo, 8896).
  2. Crea la instancia de Filestore: Luego, implementa la instancia de Filestore en la VPC que acabas de crear.
  3. 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 mediante el Acceso privado al servicio.

Managed Lustre está optimizado para la capacidad de procesamiento en lugar de la durabilidad. Una instancia es zonal y no tiene capacidad de instantánea, copia de seguridad ni eliminación. Crea una copia de seguridad de todo lo que no puedas regenerar en Cloud Storage. Para obtener más información, consulta Crea una copia de seguridad de los datos de Managed Lustre 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. Si lo haces, protegerás tus puntos de control y te permitirás recuperarte rápidamente si una instancia falla o se borra.

Managed Lustre incluye una transferencia integrada de alto rendimiento que se 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. El usuario o la cuenta de servicio que inicia la exportación necesita lustre.instances.exportData, que se incluye en el roles/lustre.admin rol o que puedes otorgar a través de un rol personalizado. El agente de servicio de Managed Lustre necesita acceso de escritura por separado al bucket de destino.

  1. Otorga acceso de escritura al agente de servicio de Managed Lustre 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.objectUser
    

    Aquí:

  2. 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 que se creará en la copia de seguridad.
    • ZONE es la zona de la instancia, por ejemplo us-central1-a.

    El valor --gcs-path-uri puede 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 de acceso con su nombre mantiene las instancias separadas: si adjuntas más de una instancia de Managed Lustre al clúster, asigna a cada una su propia ruta de acceso, ya que dos instancias que se exportan a la misma ruta de acceso reemplazan los archivos de cada una.

Para mantener actualizada la copia de seguridad, ejecuta la exportación según una programación. 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 borras en Managed Lustre permanece en el bucket. Habilita Control de versiones de objetos en el bucket de destino para que también puedas recuperar un archivo que se reemplazó con contenido no deseado.
  • No se conservan los vínculos simbólicos, los directorios vacíos ni los diseños de bandas establecidos con lfs setstripe, y los vínculos físicos se exportan como objetos separados, por lo que un archivo vinculado de forma física 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 los puntos de control de forma atómica (escribe en una ruta de acceso temporal y, luego, cambia el nombre del archivo en su lugar) para 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 nueva de Managed Lustre y vuelve a cargar los datos con gcloud lustre instances import-data. Para obtener más información, consulta Transfiere datos a Cloud Storage o desde allí.

Limitación crítica de redes: No hay intercambio de tráfico transitivo

Una limitación crítica 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 intercambia tráfico con N1 no tendrá acceso.

Integración de almacenamiento para clústeres de entrenamiento

Los clústeres de entrenamiento de Gemini Enterprise Agent Platform dependen de soluciones de almacenamiento específicas y conectadas en red 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 opcional de alto rendimiento para cargas de trabajo exigentes. Es fundamental configurar correctamente las redes para estos servicios de almacenamiento antes de implementar tu clúster.

Filestore

Usos clave de Filestore con clústeres de entrenamiento

Además de su rol 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 adicionales de Filestore a cualquier grupo de nodos. Esto es útil para proporcionar conjuntos de datos compartidos, objetos binarios de aplicaciones, o cualquier otro archivo común 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 /mnt/filestore directorio de cada nodo.

Requisitos de Filestore

Una integración exitosa de Filestore con clústeres de entrenamiento 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 /home obligatorio: Cada clúster de entrenamiento requiere una instancia de Filestore dedicada para que actúe como el directorio /home compartido. Esta instancia tiene requisitos de configuración específicos:
    • Red: Debe residir en la misma red de VPC que los nodos de acceso y de procesamiento del clúster.
    • Ubicación: Debe estar ubicada 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 orchestrator_spec.slurm_spec.home_directory_storage campo cuando crees el clúster a través de la API.

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 adjunte un Filestore al clúster para que actúe 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 acceso y de procesamiento. 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 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 viven en zonas dentro de las regiones. Una región es una ubicación geográfica específica donde puedes ejecutar tus recursos. Cada región está subdividida 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 la red, recomendamos crear una instancia de Managed Lustre en una región y zona que estén cerca de donde planeas usarla.

Cuando crees una instancia de Managed Lustre, debes definir las siguientes propiedades:

  • El nombre de la instancia que usa Google Cloud.
  • El nombre del sistema de archivos que usan las herramientas del cliente, por ejemplo, lfs.
  • La capacidad de almacenamiento en gibibytes (GiB). La capacidad puede variar de 9,000 GiB a aproximadamente 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 varían de 125 MBps por TiB a 1,000 MBps por TiB.
  • Para obtener el mejor rendimiento, crea tu instancia en la misma zona que tu clúster de entrenamiento.
  • La red de VPC para 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 que se haya creado.

La implementación de Managed Lustre requiere el Acceso privado al servicio, que establece el intercambio de tráfico entre VPC entre la VPC del clúster de entrenamiento y la VPC que aloja Managed Lustre, mediante una subred /20 dedicada.

Configura la instancia de Managed Lustre (opcional)

Usa Google Cloud Managed Lustre solo si deseas usar Managed Lustre en el servicio de desarrollo de modelos.

Google Cloud Managed Lustre es un servicio de sistema de archivos paralelos completamente administrado y de alto rendimiento en Google Cloud. Está diseñado 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 debe implementarse desde la misma VPC y zona que tu clúster de entrenamiento con el intercambio de tráfico entre VPC a las redes de servicios.

Crea una 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 VM tenga el rol de Usuario de objetos de almacenamiento.

Activación predeterminada

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 de 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

Activación personalizada

Para activar un bucket específico de Cloud Storage 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 que se crea 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 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 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 de ajuste del 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 centran en usar tu clúster de manera eficaz para el entrenamiento a gran escala.