Storage

Se você tiver interesse em clusters de treinamento da Gemini Enterprise Agent Platform, entre em contato com seu representante de vendas para ter acesso.

Escolher a configuração de armazenamento certa é fundamental para a performance e a estabilidade do cluster de treinamento. O serviço se integra a duas soluções de armazenamento distintas e de alta performance:

  • Filestore: um serviço de arquivos gerenciado obrigatório que fornece os diretórios /home compartilhados para todos os nós do cluster.
  • Google Cloud Managed Lustre: um sistema de arquivos paralelo opcional projetado para performance de E/S extrema, ideal para treinamento em conjuntos de dados massivos. Trate-o como armazenamento de trabalho de alta performance em vez de um sistema de registro e mantenha o Cloud Storage como sua fonte da verdade. Para mais informações, consulte Fazer backup de dados do Managed Lustre no Cloud Storage.

Esta página oferece uma visão geral dos principais usos e descreve os requisitos específicos de rede e implantação para uma integração bem-sucedida com o cluster.

Integração de armazenamento para clusters de treinamento

Os clusters de treinamento da Gemini Enterprise Agent Platform dependem de soluções de armazenamento específicas e em rede para operação. O Filestore é necessário para fornecer os diretórios /home compartilhados para o cluster, enquanto o Managed Lustre é um sistema de arquivos de alta performance opcional para cargas de trabalho exigentes.

É fundamental configurar a rede para esses serviços de armazenamento corretamente antes de implantar o cluster.

Filestore para diretórios principais

Esse serviço usa uma instância do Filestore para fornecer o diretório /home compartilhado para o cluster. Para garantir a conectividade adequada, crie os recursos de nuvem nesta ordem específica:

  1. Crie a rede VPC: primeiro, implante uma rede VPC configurada com a MTU recomendada (por exemplo, 8896).
  2. Crie a instância do Filestore: em seguida, implante a instância do Filestore na VPC que você acabou de criar.
  3. Crie o cluster de treinamento: por fim, implante o cluster, que poderá se conectar à instância do Filestore na mesma rede.

Google Cloud Managed Lustre para cargas de trabalho de alta performance

Para cargas de trabalho que exigem o máximo de performance de E/S, é possível anexar um sistema de arquivos do Managed Lustre. Esse serviço se conecta à VPC usando o Acesso particular ao serviço.

O Managed Lustre é otimizado para capacidade de processamento, não para durabilidade. Uma instância é zonal e não tem capacidade de snapshot, backup ou recuperação. Faça backup de tudo o que não puder ser regenerado no Cloud Storage. Para mais informações, consulte Fazer backup de dados do Managed Lustre no Cloud Storage.

Fazer backup de dados do Managed Lustre no Cloud Storage

Mantenha o Cloud Storage como a fonte da verdade por trás do Managed Lustre. Isso protege seus checkpoints e permite que você se recupere rapidamente se uma instância falhar ou for excluída.

O Managed Lustre inclui uma transferência integrada de alta capacidade que exporta diretamente para o Cloud Storage. As transferências são incrementais: cada execução copia apenas os arquivos que ainda não existem no destino ou que foram alterados desde a última transferência.

Duas identidades precisam de permissões. O usuário ou a conta de serviço que inicia a exportação precisa de lustre.instances.exportData, que está incluída no roles/lustre.admin papel ou que pode ser concedida por um papel personalizado. O agente de serviço do Managed Lustre precisa de acesso de gravação ao bucket de destino.

  1. Conceda ao agente de serviço do Managed Lustre acesso de gravação ao bucket de destino. Você só precisa fazer isso uma 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
    

    Em que:

  2. Exporte o sistema de arquivos para o bucket:

    gcloud lustre instances export-data INSTANCE_ID \
      --location=ZONE \
      --lustre-path="/" \
      --gcs-path-uri="gs://BUCKET_NAME/INSTANCE_ID/"
    

    Em que:

    • INSTANCE_ID é o nome da instância do Managed Lustre a ser armazenada.
    • ZONE é a zona da instância, por exemplo us-central1-a.

    O valor --gcs-path-uri pode ser um bucket por conta própria ou um caminho dentro de um bucket. Se você incluir um caminho, ele precisará terminar com uma barra. A exportação de cada instância para um caminho nomeado após ela mantém as instâncias separadas: se você anexar mais de uma instância do Managed Lustre ao cluster, atribua um caminho próprio a cada uma delas, porque duas instâncias que exportam para o mesmo caminho substituem os arquivos umas das outras.

Para manter o backup atual, execute a exportação em uma programação. Por exemplo, é possível executar um cron job diário em um nó de login em vez de executá-lo apenas no final de uma execução de treinamento. Como as transferências são incrementais, cada execução após a primeira copia apenas o que foi alterado.

Considere o seguinte ao planejar um backup:

  • Apenas uma operação de transferência por instância pode estar ativa por vez. Uma transferência iniciada enquanto outra ainda está em execução falha com ABORTED: unable to queue the operation.
  • A exportação nunca exclui objetos do destino. Portanto, um arquivo excluído no Managed Lustre permanece no bucket. Ative o controle de versões de objetos no bucket de destino para que também seja possível recuperar um arquivo que foi substituído por conteúdo indesejado.
  • Links simbólicos, diretórios vazios e layouts de faixa definidos com lfs setstripe não são preservados, e links físicos são exportados como objetos separados. Portanto, um arquivo com link físico consome espaço uma vez por link no bucket. O UID, GID, modo e mtime do POSIX são preservados como metadados de objetos personalizados.
  • Escreva checkpoints atomicamente: grave em um caminho temporário e renomeie o arquivo no local. Assim, uma exportação em execução durante uma gravação captura o arquivo anterior ou o novo completo, e nunca um arquivo parcial.

Para restaurar, crie uma nova instância do Managed Lustre e carregue os dados de volta com gcloud lustre instances import-data. Para mais informações, consulte Transferir dados para ou do Cloud Storage.

Limitação de rede crítica: sem peering transitivo

Uma limitação crítica para o Filestore e o Google Cloud Managed Lustre é que eles não oferecem suporte ao peering transitivo. Isso significa que apenas os recursos na VPC conectada diretamente podem acessar o serviço de armazenamento. Por exemplo, se a VPC do cluster (N1) tiver peering com o serviço de armazenamento, outra VPC (N2) que tiver peering com N1 não terá acesso.

Integração de armazenamento para clusters de treinamento

Os clusters de treinamento da Gemini Enterprise Agent Platform dependem de soluções de armazenamento específicas e em rede para operação. O Filestore é necessário para fornecer os diretórios /home compartilhados para o cluster, enquanto o Google Cloud Managed Lustre é um sistema de arquivos de alta performance opcional para cargas de trabalho exigentes. É fundamental configurar a rede para esses serviços de armazenamento corretamente antes de implantar o cluster.

Filestore

Principais usos do Filestore com clusters de treinamento

Além do papel de diretório principal obrigatório, o Filestore oferece uma maneira flexível de compartilhar dados com o cluster.
Armazenamento compartilhado adicional: é possível anexar uma ou mais instâncias adicionais do Filestore a qualquer pool de nós. Isso é útil para fornecer conjuntos de dados compartilhados, binários de aplicativos, ou outros arquivos comuns aos jobs de treinamento. Quando especificados na configuração do pool de nós, os clusters de treinamento montam automaticamente essas instâncias no /mnt/filestore diretório em cada nó.

Requisitos do Filestore

Uma integração bem-sucedida do Filestore com clusters de treinamento exige a seguinte configuração:

  • Ativar a API: a API Filestore precisa estar ativada no seu projeto na nuvem do Google Cloud antes de criar o cluster.
  • Diretório /home obrigatório: cada cluster de treinamento requer uma instância dedicada do Filestore para servir como o diretório /home compartilhado. Essa instância tem requisitos de configuração específicos:
    • Rede: precisa estar na mesma rede VPC que os nós de computação e de login do cluster.
    • Localização: precisa estar na mesma região ou zona que o cluster.
    • Configuração: é necessário especificar o nome completo do recurso dessa instância no campo orchestrator_spec.slurm_spec.home_directory_storage ao criar o cluster pela API.

Configurar o armazenamento do Filestore

Crie uma instância zonal ou regional do Filestore na zona em que você quer criar o cluster. A API Agent Platform exige que um Filestore seja anexado ao cluster para servir como o diretório /home. Esse Filestore precisa estar na mesma zona ou região e na mesma rede que todos os nós de computação e de login. No exemplo abaixo, 172.16.10.0/24 é usado para a implantação do 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

O Google Cloud Managed Lustre oferece um sistema de arquivos paralelo de alta performance e totalmente gerenciado, otimizado para aplicativos de IA e HPC. Com capacidade de vários petabytes e capacidade de processamento de até 1 TBps, o Managed Lustre facilita a migração de cargas de trabalho exigentes para a nuvem.

As instâncias do Managed Lustre ficam em zonas dentro das regiões. Região é uma localização geográfica específica onde os recursos podem ser executados. Cada região é subdividida em várias zonas. Por exemplo, a região us-central1 na região central dos Estados Unidos tem as zonas us-central1-a, us-central1-b, us-central1-c e us-central1-f. Para mais informações, consulte Geografia e regiões.

Para diminuir a latência da rede, recomendamos criar uma instância do Managed Lustre em uma região e uma zona próximas de onde você planeja usá-la.

Ao criar uma instância do Managed Lustre, é necessário definir as seguintes propriedades:

  • O nome da instância usada pelo Google Cloud.
  • O nome do sistema de arquivos usado por ferramentas do lado do cliente, por exemplo, lfs.
  • A capacidade de armazenamento em gibibytes (GiB). A capacidade pode variar de 9.000 GiB a ~8 PiB (7.632.000 GiB). O tamanho máximo de uma instância depende do nível de performance dela.
  • O Managed Lustre oferece níveis de performance que variam de 125 MBps por TiB a 1.000 MBps por TiB.
  • Para ter o melhor desempenho, crie a instância na mesma zona que o cluster de treinamento.
  • A rede VPC dessa instância precisa ser a mesma usada pelo cluster de treinamento.

O Managed Lustre oferece quatro níveis de performance, cada um com uma velocidade máxima de capacidade de processamento diferente por TiB. Os níveis de performance também afetam o tamanho mínimo e máximo da instância e o tamanho da etapa entre os valores de capacidade aceitáveis. Não é possível mudar o nível de performance de uma instância depois que ela é criada.

A implantação do Managed Lustre requer o Acesso particular ao serviço, que estabelece o peering de VPC entre a VPC do cluster de treinamento e a VPC que hospeda o Managed Lustre, usando uma sub-rede /20 dedicada.

Configurar a instância do Managed Lustre (opcional)

Use o Google Cloud Managed Lustre somente se quiser usar o Managed Lustre no serviço de desenvolvimento de modelos.

O Google Cloud Managed Lustre é um serviço de sistema de arquivos paralelo de alta performance e totalmente gerenciado no Google Cloud. Ele foi projetado especificamente para acelerar cargas de trabalho exigentes em IA/machine learning e computação de alta performance (HPC).

Para ter a melhor performance ao usar clusters de treinamento, o Google Cloud Managed Lustre precisa ser implantado na mesma VPC e zona que o cluster de treinamento usando o peering de VPC para serviços de rede.

Criar instância do 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

  

Montagem do Cloud Storage

Como pré-requisito, verifique se a conta de serviço da VM tem o papel de usuário de objetos do Storage.

Montagem padrão

Os clusters de treinamento da Gemini Enterprise Agent Platform usam o Cloud Storage FUSE para montar dinamicamente os buckets do Cloud Storage em todos os nós de login e computação, tornando-os acessíveis no diretório /gcs. Buckets montados dinamicamente não podem ser listados a partir do ponto de montagem raiz /gcs. É possível acessar os buckets montados dinamicamente como subdiretórios:

user@testcluster:$ ls /gcs/your-bucket-name
user@testcluster:$ cd /gcs/your-bucket-name

Montagem personalizada

Para montar um bucket específico do Cloud Storage em um diretório local com opções personalizadas, use a seguinte estrutura de comando transmitindo-a como parte do script de inicialização na criação do cluster ou executando-a diretamente no nó após a criação do cluster.

sudo mkdir -p $MOUNT_DIR
echo "$GCS_BUCKET $MOUNT_DIR gcsfuse $OPTION_1,$OPTION_2,..." | sudo tee -a /etc/fstab
sudo mount -a

Por exemplo, para montar o bucket mtdata no diretório /data, use o seguinte 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 uma configuração totalmente automatizada e consistente, inclua seus scripts de montagem personalizados nos scripts de inicialização do cluster. Essa prática garante que os buckets do Cloud Storage sejam montados automaticamente em todos os nós na inicialização, eliminando a necessidade de configuração manual.

Para outras recomendações de configuração personalizadas para cargas de trabalho de IA/ML, consulte o guia de práticas recomendadas de ajuste de performance. Ele fornece orientações específicas para otimizar o Cloud Storage FUSE para treinamento, inferência e checkpoint.

A seguir

As próximas etapas se concentram no uso eficaz do cluster para treinamento em grande escala.