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

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

  1. 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.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 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-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 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 /home obligatorio: Cada clúster de entrenamiento requiere una instancia de Filestore dedicada para que funcione 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 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 orchestrator_spec.slurm_spec.home_directory_storage cuando creas 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 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.