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
/homecompartilhados 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:
- Crie a rede VPC: primeiro, implante uma rede VPC configurada com a MTU recomendada (por exemplo, 8896).
- Crie a instância do Filestore: em seguida, implante a instância do Filestore na VPC que você acabou de criar.
- 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.
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.objectUserEm que:
- BUCKET_NAME é o bucket de destino.
- PROJECT_NUMBER é o número do projeto que contém a instância do Managed Lustre. Para mais informações, consulte Permissões para o agente de serviço do Managed Lustre.
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-uripode 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 setstripenã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
/homeobrigatório: cada cluster de treinamento requer uma instância dedicada do Filestore para servir como o diretório/homecompartilhado. 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
ao criar o cluster pela API.orchestrator_spec.slurm_spec.home_directory_storage
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.
- Adapte seu código para treinamento distribuído: para aproveitar ao máximo um cluster de vários nós e armazenamento de alta performance, adapte seu código de treinamento para um ambiente distribuído.
- Orquestre seus jobs com os pipelines da Gemini Enterprise Agent Platform: para fluxos de trabalho de produção, automatize o processo de preparação de dados, envio de jobs e registro de modelos usando os pipelines da Agent Platform.
- Monitore e depure seus jobs de treinamento: acompanhe o progresso e a utilização de recursos dos jobs de treinamento distribuído para identificar e resolver problemas.