Planejar armazenamento para cargas de trabalho de IA e ML no Google Cloud

Last reviewed 2024-03-20 UTC

Ao escolher os serviços de armazenamento do Google Cloud para suas cargas de trabalho de inteligência artificial (IA) e machine learning (ML), tenha o cuidado de selecionar a combinação correta de opções de armazenamento para cada job específico. Essa seleção cuidadosa é necessária quando você faz upload do seu conjunto de dados, treina e ajusta seu modelo, coloca o modelo em produção ou armazena o conjunto de dados e o modelo em um arquivo. Em resumo, é necessário selecionar os melhores serviços de armazenamento que fornecem a latência, a escala e o custo adequados para cada fase das suas cargas de trabalho de IA e ML.

Para ajudar você a fazer escolhas bem fundamentadas, este documento contém orientações de planejamento sobre como usar e integrar as várias opções de armazenamento oferecidas pelo Google Cloud para as principais cargas de trabalho de IA e ML.

A Figura 1 mostra um resumo das principais opções de armazenamento. Conforme mostrado no diagrama, o Cloud Storage normalmente é escolhido quando você arquivos de tamanho maior, operações de entrada e saída por segundo (IOPS) menores ou maior latência. No entanto, quando você precisar de IOPS maiores, arquivos de tamanho menor ou menor latência, escolha o Filestore.

Figura 1: principais considerações sobre armazenamento para IA e ML

Escolha o Cloud Storage quando você tiver arquivos de tamanho maior, IOPS menores ou maior latência. Escolha o Filestore quando você precisar de IOPS maiores, arquivos de tamanho menor ou menor latência.

Informações gerais sobre as fases das cargas de trabalho de IA e ML

As cargas de trabalho de IA e ML consistem em quatro fases principais: preparar, treinar, disponibilizar e arquivar. Esses são os quatro momentos no ciclo de vida de uma carga de trabalho de IA e ML em que você precisa decidir quais opções de armazenamento usar. Na maioria dos casos, recomendamos que você continue usando a mesma opção de armazenamento selecionada na fase de preparação para as demais fases. Seguir essa recomendação ajuda a reduzir o processo de copiar conjuntos de dados entre os serviços de armazenamento. No entanto, há algumas exceções a essa regra geral, que serão descritas posteriormente neste guia.

Algumas soluções de armazenamento funcionam melhor do que outras em cada fase e talvez precisem ser combinadas com outras opções de armazenamento para alcançar os melhores resultados. A eficácia da opção de armazenamento depende das propriedades do conjunto de dados, da escala dos recursos de computação e armazenamento necessários, da latência e de outros fatores. A tabela a seguir descreve as fases e um breve resumo das opções de armazenamento recomendadas para cada fase. Para uma representação visual dessa tabela e outros detalhes, consulte a árvore de decisão.

Tabela 1: recomendações de armazenamento para as fases e etapas em cargas de trabalho de IA e ML
Fases Etapas Recomendações de armazenamento

Preparar

Preparação de dados

  • Faça upload e a ingestão dos seus dados.
  • Transforme os dados no formato correto antes de treinar o modelo.

Cloud Storage

  • Arquivos grandes (50 MB ou mais) que toleram maior latência de armazenamento (dezenas de milissegundos).

Filestore Zonal

  • Conjuntos de dados menores com arquivos menores (menos de 50 MB) e menor latência de armazenamento (aproximadamente 1 milissegundo).

Treinar

  1. Desenvolvimento de modelo
    • Desenvolva seu modelo usando notebooks e aplicando iteração de tentativa e erro.
  2. Treinamento de modelo
    • Use números de pequena a grande escala de unidades de processamento gráfico (Cloud GPUs) ou Unidades de Processamento de Tensor (Cloud TPUs) para ler repetidamente o conjunto de dados de treinamento.
    • Aplique um processo iterativo ao desenvolvimento e treinamento do modelo.

Cloud Storage

  • Se você selecionar o Cloud Storage na fase de preparação, é melhor treinar seus dados nele.

Cloud Storage com SSD local ou Filestore

  • Se você selecionar o Cloud Storage na fase de preparação, mas precisar oferecer suporte a solicitações de E/S ou arquivos pequenos, complemente as tarefas de treinamento. Para isso, mova alguns dos seus dados do Cloud Storage para o SSD local ou Filestore Zonal.

Filestore

  • Se você selecionar o Filestore na fase de preparação, é melhor treinar seus dados nele.
  • Crie um cache do SSD local para complementar as tarefas de treinamento do Filestore.
  1. Criação de checkpoint e reinicialização
    • Salve o estado periodicamente durante o treinamento de modelo criando um checkpoint para que o treinamento possa ser reiniciado após uma falha no nó.
    • Faça essa seleção com base no padrão de E/S e na quantidade de dados que precisam ser salvos no checkpoint.

Cloud Storage

  • Se você selecionar o Cloud Storage na fase de preparação, será melhor usá-lo para criação de checkpoint e reinicialização.
  • Bom para capacidade de processamento e cargas de trabalho que precisam de um grande número de processadores lógicos.

Filestore Zonal

  • Se você selecionar o Filestore na fase de preparação, será melhor usá-lo para criação de checkpoint e reinicialização.
  • Bom para latência, alta capacidade de processamento por cliente e baixo número de processadores lógicos.

Disponibilizar

  • Armazene o modelo.
  • Carregue o modelo em uma instância que execute Cloud GPUs ou Cloud TPUs na inicialização.
  • Armazene resultados da inferência de modelo, como imagens geradas.
  • Se preferir, armazene e carregue o conjunto de dados usado para inferência de modelo.

Cloud Storage

  • Se você treinar o modelo no Cloud Storage, será melhor usá-lo para disponibilizar o modelo.
  • Salve o conteúdo gerado pelo modelo no Cloud Storage.

Filestore

  • Se você treinar seu modelo no Filestore, será melhor usá-lo para disponibilizar o modelo.
  • Se você precisar de durabilidade e baixa latência ao gerar arquivos pequenos, escolha o Filestore Zonal (zonal) ou o Filestore Empresarial (regional).

Arquivar

  • Retenha os dados de treinamento e o modelo por períodos longos.

Cloud Storage

Para mais detalhes sobre as suposições dessa tabela, consulte as seções a seguir:

Critérios

Para reduzir suas opções de armazenamento a serem escolhidas para uso nas cargas de trabalho de IA e ML, comece respondendo a estas perguntas:

  • Os tamanhos das solicitações de E/S de IA e ML e os tamanhos de arquivo são pequenos, médios ou grandes?
  • Suas cargas de trabalho de IA e ML são sensíveis à latência de E/S e ao Time to First Byte (TTFB)?
  • Você precisa de alta capacidade de processamento de leitura e gravação para clientes individuais, clientes agregados ou ambos?
  • Qual é o maior número de Cloud GPUs ou Cloud TPUs que sua maior carga de trabalho de treinamento de IA e ML exige?

Além de responder às perguntas anteriores, você também precisa conhecer as opções de computação e os aceleradores que podem ser escolhidos para ajudar a otimizar suas cargas de trabalho de IA e ML.

Considerações sobre a plataforma de computação

O Google Cloud permite três métodos principais para executar cargas de trabalho de IA e ML:

Tanto para o Compute Engine quanto para o GKE, recomendamos o uso do Cluster Toolkit para implantar clusters repetíveis e completos que seguem as práticas recomendadas do Google Cloud.

Considerações sobre aceleradores

Ao selecionar opções de armazenamento para cargas de trabalho de IA e ML, você também precisa selecionar as opções de processamento de acelerador apropriadas para sua tarefa. O Google Cloud permite duas opções de acelerador: Cloud GPUs da NVIDIA e as Cloud TPUs especialmente desenvolvidas pelo Google. Os dois tipos de acelerador são circuitos integrados específicos do aplicativo (ASICs, na sigla em inglês), usados para processar cargas de trabalho de machine learning com mais eficiência do que os processadores padrão.

Há algumas diferenças importantes de armazenamento entre aceleradores de Cloud GPUs e Cloud TPU. As instâncias que usam Cloud GPUs permitem SSD local com até 200 GBps disponíveis de capacidade de processamento de armazenamento remoto. Os nós e as VMs de Cloud TPU não são compatíveis com SSD local e dependem exclusivamente do acesso ao armazenamento remoto.

Para mais informações sobre os tipos de máquinas com otimização para aceleradores, consulte Família de máquinas com otimização para aceleradores. Para mais informações sobre Cloud GPUs, consulte Plataformas de Cloud GPUs. Para mais informações sobre Cloud TPUs, consulte Introdução a Cloud TPU. Para mais informações sobre como escolher entre Cloud TPUs e Cloud GPUs, consulte Quando usar Cloud TPUs.

Opções de armazenamento

Conforme resumido anteriormente na Tabela 1, use o armazenamento de objetos ou o armazenamento de arquivos com suas cargas de trabalho de IA e ML e, em seguida, complemente essa opção de armazenamento com o armazenamento em blocos. A Figura 2 mostra três opções típicas que podem ser consideradas ao selecionar a opção de armazenamento inicial para sua carga de trabalho de IA e ML: Cloud Storage, Filestore e Google Cloud NetApp Volumes.

Figura 2: serviços de armazenamento apropriados para IA e ML oferecidos pelo Google Cloud

As três opções que podem ser consideradas ao selecionar a opção de armazenamento inicial para suas cargas de trabalho de IA e ML são o Cloud Storage, Filestore e NetApp Volumes.

Se você precisar de armazenamento de objetos, escolha o Cloud Storage. O Cloud Storage oferece isto:

  • Um local de armazenamento para dados e objetos não estruturados.
  • APIs, como a API JSON do Cloud Storage, para acessar os buckets de armazenamento.
  • Armazenamento permanente para salvar seus dados.
  • Capacidade de processamento de terabytes por segundo, mas exige maior latência de armazenamento.

Se precisar de armazenamento de arquivos, você terá duas opções, Filestore e NetApp Volumes, que oferecem isto:

  • Filestore
    • Armazenamento de arquivos empresarial de alto desempenho baseado em NFS.
    • Armazenamento permanente para salvar seus dados.
    • Baixa latência de armazenamento e capacidade de processamento de 26 GBps.
  • NetApp Volumes
    • Armazenamento de arquivos compatível com NFS e bloco de mensagens do servidor (SMB, na sigla em inglês).
    • Pode ser gerenciado com a opção de usar a ferramenta de software de armazenamento NetApp ONTAP.
    • Armazenamento permanente para salvar seus dados.
    • Capacidade de processamento de 4,5 GBps.

Use as seguintes opções de armazenamento como sua primeira escolha para cargas de trabalho de IA e ML:

Use as opções de armazenamento a seguir para complementar suas cargas de trabalho de IA e ML:

Se for preciso transferir dados entre essas opções de armazenamento, use as ferramentas de transferência de dados.

Cloud Storage

O Cloud Storage é um serviço de armazenamento de objetos totalmente gerenciado com foco na preparação de dados, no treinamento de modelo de IA, na disponibilização de dados, no backup e no arquivamento de dados não estruturados. O Cloud Storage inclui alguns dos seguintes benefícios:

  • Capacidade de armazenamento ilimitado com escalonamento global até exabytes
  • Desempenho ultra-alto de capacidade de processamento
  • Opções de armazenamento regional e birregional para cargas de trabalho de IA e ML

O Cloud Storage escalona a capacidade de processamento até terabytes por segundo e além, mas tem uma latência relativamente maior (dezenas de milissegundos) do que o Filestore ou um sistema de arquivos local. A capacidade de processamento de processadores lógicos individuais é limitada a aproximadamente 100-200 MB por segundo. Isso significa que só é possível conseguir uma alta capacidade de processamento usando centenas ou milhares de processadores lógicos individuais. Além disso, a alta capacidade de processamento também requer o uso de solicitações de E/S e arquivos grandes.

O Cloud Storage permite bibliotecas de cliente em várias linguagens de programação, além de permitir o Cloud Storage FUSE. O Cloud Storage FUSE permite montar buckets do Cloud Storage no seu sistema de arquivos local. Com o Cloud Storage FUSE, os aplicativos usam as APIs padrão do sistema de arquivos para ler de um bucket ou gravar em um bucket. É possível armazenar e acessar dados de treinamento, modelos e checkpoints com a escala, a acessibilidade e o desempenho do Cloud Storage.

Para saber mais sobre o Cloud Storage, use os seguintes recursos:

Filestore

O Filestore é um serviço de armazenamento baseado em arquivos do NFS totalmente gerenciado. Os níveis de serviço do Filestore usados para cargas de trabalho de IA e ML incluem:

  • Nível Empresarial: usado para cargas de trabalho essenciais que exigem disponibilidade regional.
  • Nível Zonal: usado para aplicativos de alto desempenho que exigem disponibilidade zonal com altos requisitos de desempenho de capacidade de processamento e IOPS.
  • Nível Básico: usado para compartilhamento de arquivos, desenvolvimento de software, hospedagem na Web e cargas de trabalho básicas de IA e ML.

O Filestore oferece desempenho de E/S de baixa latência. É uma boa opção para conjuntos de dados com requisitos de acesso de E/S pequena ou arquivos pequenos. No entanto, o Filestore também pode lidar com casos de uso de E/S grande ou arquivos grandes, conforme necessário. O Filestore pode ser escalonado até aproximadamente 100 TB de tamanho. Para cargas de trabalho de treinamento de IA que leem dados repetidamente, é possível melhorar a capacidade de processamento de leitura usando FS-Cache com SSD local.

Para mais informações sobre o Filestore, consulte a Visão geral do Filestore. Para mais informações sobre os níveis de serviço do Filestore, consulte Níveis de serviço. Para mais informações sobre o desempenho do Filestore, consulte Otimizar e testar o desempenho da instância.

Google Cloud NetApp Volumes

O NetApp Volumes é um serviço totalmente gerenciado com recursos avançados de gerenciamento de dados que aceita ambientes NFS, SMB e multiprotocolo. O NetApp Volumes permite baixa latência, volumes de vários tebibytes e gigabytes por segundo de capacidade de processamento.

Para mais informações sobre o NetApp Volumes, consulte O que é o Google Cloud NetApp Volumes? Para mais informações sobre o desempenho do NetApp Volumes, consulte Desempenho esperado.

Armazenamento em blocos

Depois de selecionar a opção de armazenamento principal, é possível usar o armazenamento em blocos para complementar o desempenho, transferir dados entre opções de armazenamento e aproveitar operações de baixa latência. Há duas opções de armazenamento com o armazenamento em blocos: SSD local e Persistent Disk.

SSD local

O SSD local fornece armazenamento local diretamente para uma VM ou um contêiner. A maioria dos tipos de máquina do Google Cloud que contém Cloud GPUs contém alguma quantidade de SSD local. Como os discos do SSD local estão fisicamente anexados às Cloud GPUs, eles fornecem acesso de baixa latência com potencialmente milhões de IOPS. Por outro lado, as instâncias baseadas em Cloud TPU não incluem SSD local.

Embora o SSD local ofereça alto desempenho, cada instância de armazenamento é temporária. Assim, os dados armazenados em uma unidade SSD local são perdidos quando você interrompe ou exclui a instância. Em razão da natureza temporária do SSD local, considere outros tipos de armazenamento quando os dados exigirem maior durabilidade.

No entanto, quando a quantidade de dados de treinamento é muito pequena, é comum copiá-los do Cloud Storage para o SSD local de uma GPU. O motivo é que o SSD local fornece menor latência de E/S e reduz o tempo de treinamento.

Para mais informações sobre o SSD local, consulte este link. Para mais informações sobre a quantidade de capacidade disponível do SSD local com os tipos de instância de Cloud GPUs, consulte Plataformas de GPU.

Persistent Disk

O Persistent Disk é um serviço de armazenamento em blocos de rede com um pacote abrangente de recursos de gerenciamento e persistência de dados. Além do uso como disco de inicialização, é possível usar o Persistent Disk com cargas de trabalho de IA, como o armazenamento temporário. O Persistent Disk está disponível nas seguintes opções:

  • Standard, que oferece armazenamento em blocos eficiente e confiável.
  • Balanced, que oferece armazenamento em blocos confiável e econômico.
  • SSD, que oferece armazenamento em blocos rápido e confiável.
  • Extreme, que fornece a opção de armazenamento em blocos de melhor desempenho com IOPS personalizáveis.

Para mais informações sobre o Persistent Disk, consulte este link.

Ferramentas de transferência de dados

Ao executar tarefas de IA e ML, há vezes em que você precisa copiar os dados de um local para outro. Por exemplo, se os dados começam no Cloud Storage, talvez você precise movê-los para outro lugar para treinar o modelo e, em seguida, copiar os snapshots do checkpoint ou o modelo treinado de volta para o Cloud Storage. Também é possível executar a maioria das tarefas no Filestore e, em seguida, mover os dados e o modelo para o Cloud Storage para fins de arquivamento. Nesta seção, abordamos as opções para mover dados entre serviços de armazenamento no Google Cloud.

Serviço de transferência do Cloud Storage

Com o Serviço de transferência do Cloud Storage, é possível transferir seus dados entre o Cloud Storage, o Filestore e o NetApp Volumes. Esse serviço totalmente gerenciado também permite copiar dados entre os repositórios de armazenamento local de arquivos e objetos, o Google Cloud Storage e outros provedores de nuvem. Com o Serviço de transferência do Cloud Storage, você consegue copiar os dados com segurança do local de origem para o local de destino, bem como realizar transferências periódicas de dados alterados. Ele também fornece validação da integridade de dados, novas tentativas automáticas e balanceamento de carga.

Para mais informações sobre o Serviço de transferência do Cloud Storage, consulte O que é o Serviço de transferência do Cloud Storage?

Interface de linha de comando

Ao mover dados entre o Filestore e o Cloud Storage, use a CLI do Google Cloud. A gcloud CLI permite criar e gerenciar buckets e objetos do Cloud Storage com capacidade de processamento ideal e um pacote completo de comandos.

Mapear suas opções de armazenamento com as fases de IA e ML

Nesta seção, expandimos o resumo apresentado na Tabela 1 a fim de examinar as recomendações e orientações específicas para cada fase de uma carga de trabalho de IA e ML. O objetivo é ajudar você a entender a lógica dessas escolhas e selecionar as melhores opções de armazenamento para cada fase de IA e ML. Essa análise resulta em três recomendações principais que são examinadas na seção Recomendações de armazenamento para IA e ML.

A figura a seguir apresenta uma árvore de decisão que mostra as opções de armazenamento recomendadas para as quatro fases principais de uma carga de trabalho de IA e ML. O diagrama é seguido por uma explicação detalhada de cada fase e as escolhas que podem ser feitas em cada uma delas.

Figura 3: opções de armazenamento para cada fase de IA e ML

Uma árvore de decisão que mostra as opções de armazenamento recomendadas para as quatro fases principais de uma carga de trabalho de IA e ML.

Preparar

Nessa fase inicial, você precisa decidir se quer usar o Cloud Storage ou o Filestore como fonte permanente da verdade para seus dados. Também é possível selecionar otimizações potenciais para treinamento com uso intensivo de dados. Lembre-se que equipes diferentes na sua organização podem ter tipos variados de carga de trabalho e conjunto de dados, o que pode levar essas equipes a tomar decisões de armazenamento diferentes. Para atender a essas necessidades variadas, é possível combinar e corresponder suas opções de armazenamento entre o Cloud Storage e o Filestore.

Cloud Storage para a fase de preparação

  • Sua carga de trabalho contém arquivos grandes de 50 MB ou mais.
  • Sua carga de trabalho requer IOPS menores.
  • Sua carga de trabalho pode tolerar uma latência de armazenamento maior em dezenas de milissegundos.

  • Você precisa conseguir acesso ao conjunto de dados por APIs Cloud Storage ou pelo Cloud Storage FUSE e por um subconjunto de APIs de arquivos.

Para otimizar sua carga de trabalho no Cloud Storage, selecione o armazenamento regional e coloque o bucket na mesma região dos recursos de computação. No entanto, se você precisar de maior confiabilidade ou usar aceleradores localizados em duas regiões diferentes, selecione o armazenamento birregional.

Filestore para a fase de preparação

Selecione o Filestore para preparar seus dados se alguma das condições a seguir for aplicável:

  • Sua carga de trabalho contém arquivos com tamanho menor que 50 MB.
  • Sua carga de trabalho requer IOPS maiores.
  • Sua carga de trabalho precisa de uma latência menor que 1 milissegundo para atender aos requisitos de armazenamento para E/S aleatória e acesso a metadados.
  • Os usuários precisam de uma experiência semelhante a um computador com suporte total a POSIX para ver e gerenciar os dados.
  • Seus usuários precisam realizar outras tarefas, como o desenvolvimento de software.

Outras considerações para a fase de preparação

Se você achar difícil escolher uma opção nessa etapa, considere os seguintes pontos para tomar sua decisão:

  • Se você quiser usar outros frameworks de IA e ML, como Dataflow, Spark ou BigQuery, no conjunto de dados, o Cloud Storage será uma escolha lógica por causa da integração personalizada que ele tem com esses tipos de framework.
  • O Filestore tem uma capacidade máxima de aproximadamente 100 TB. Se você precisar treinar seu modelo com conjuntos de dados maiores que isso ou se não for possível dividir o conjunto em várias instâncias de 100 TB, o Cloud Storage será uma opção melhor.

Durante a fase de preparação de dados, muitos usuários reorganizam os dados em grandes divisões para melhorar a eficiência de acesso e evitar solicitações de leitura aleatórias. Para reduzir ainda mais os requisitos de desempenho de E/S no sistema de armazenamento, muitos usuários usam pipelines, otimização de treinamento para aumentar o número de processadores lógicos de E/S ou ambos.

Trem

Na fase de treinamento, normalmente você reutiliza a opção de armazenamento principal selecionada na fase de preparação. Se sua opção de armazenamento principal não puder lidar apenas com a carga de trabalho de treinamento, talvez seja necessário complementar o armazenamento principal. É possível adicionar armazenamento complementar conforme necessário, como SSDs locais, para balancear a carga de trabalho.

Além de conter recomendações para usar o Cloud Storage ou o Filestore nessa fase, esta seção também contém mais detalhes sobre essas recomendações. Estes são os detalhes:

  • Orientação sobre tamanhos de arquivo e de solicitação
  • Sugestões sobre quando complementar sua opção de armazenamento principal
  • Uma explicação sobre os detalhes de implementação das duas principais cargas de trabalho nessa fase: carregamento de dados e criação de checkpoint e reinicialização

Cloud Storage para a fase de treinamento

Estes são os principais motivos para selecionar o Cloud Storage ao treinar seus dados:

  • Se você usa o Cloud Storage ao preparar seus dados, é melhor treiná-los nele.
  • O Cloud Storage é uma boa opção para capacidade de processamento, cargas de trabalho que não exigem alta capacidade de processamento de uma única VM ou cargas de trabalho que usam muitos processadores lógicos para aumentar a capacidade de processamento, conforme necessário.

Cloud Storage com SSD local ou Filestore para a fase de treinamento

O principal motivo para selecionar o Cloud Storage com SSD local ou Filestore ao treinar seus dados é quando você precisa oferecer suporte a solicitações de E/S pequenas ou arquivos pequenos. Nesse caso, é possível complementar a tarefa de treinamento do Cloud Storage movendo alguns dos dados para o SSD local ou o Filestore Zonal.

Filestore para a fase de treinamento

Estes são os principais motivos para selecionar o Filestore ao treinar seus dados:

  • Se você usa o Filestore ao preparar seus dados, na maioria dos casos, precisa continuar treinando seus dados nele.
  • O Filestore é uma boa opção para baixa latência, alta capacidade de processamento por cliente e aplicativos que usam um número baixo de processadores lógicos, mas ainda exigem alto desempenho.
  • Se você precisa complementar suas tarefas de treinamento no Filestore, considere criar um cache do SSD local, conforme necessário.

Tamanhos de arquivo e de solicitação

Quando o conjunto de dados está pronto para treinamento, há duas opções principais que podem ajudar a avaliar as diferentes opções de armazenamento.

Conjuntos de dados com arquivos grandes e acessados com solicitações de tamanho grande

Nessa opção, o job de treinamento consiste principalmente em arquivos maiores, com 50 MB ou mais. O job de treinamento ingere os arquivos de 1 MB a 16 MB por solicitação. Geralmente, recomendamos o Cloud Storage com o Cloud Storage FUSE para essa opção porque os arquivos são grandes o suficiente para que o Cloud Storage possa manter os aceleradores fornecidos. Lembre-se de que você talvez precise de centenas ou milhares de processadores lógicos para atingir o desempenho máximo com essa opção.

No entanto, se você precisar de APIs POSIX completas para outros aplicativos ou se a carga de trabalho não for apropriada para o número alto de processadores lógicos necessários, o Filestore será uma boa alternativa.

Conjuntos de dados com arquivos de tamanho pequeno a médio ou acessados com solicitações de tamanho pequeno

Com essa opção, é possível classificar seu job de treinamento de duas maneiras:

  • Muitos arquivos de tamanho pequeno a médio, com menos de 50 MB.
  • Um conjunto de dados com arquivos maiores, mas os dados são lidos sequencial ou aleatoriamente com solicitações de leitura de tamanho relativamente pequeno (por exemplo, menos de 1 MB). Um exemplo desse caso de uso é quando o sistema lê menos de 100 KB por vez de um arquivo com vários gigabytes ou terabytes.

Se você já usa o Filestore para recursos POSIX dele, recomendamos manter seus dados no Filestore para treinamento. O Filestore oferece acesso de baixa latência de E/S aos dados. Essa latência menor pode reduzir o tempo total de treinamento e o custo de treinamento do seu modelo.

Se você usa o Cloud Storage para armazenar seus dados, recomendamos copiá-los para o SSD local ou o Filestore antes do treinamento.

Carregamento de dados

Durante o carregamento de dados, as Cloud GPUs ou Cloud TPUs importam lotes de dados repetidamente para treinar o modelo. Essa fase pode ser compatível com cache, dependendo do tamanho dos lotes e da ordem em que você os solicita. Neste ponto, seu objetivo é treinar o modelo com eficiência máxima, mas com o menor custo.

Se o tamanho dos dados de treinamento for escalonado para petabytes, talvez seja necessário reler várias vezes. Esse escalonamento requer processamento intensivo por um acelerador de GPU ou TPU. No entanto, você precisa garantir que suas Cloud GPUs e Cloud TPUs não estejam inativas, mas processem os dados ativamente. Caso contrário, você pagará por um acelerador caro e inativo enquanto copia os dados de um local para outro.

Para o carregamento de dados, considere isto:

  • Paralelismo: há várias maneiras de carregar o treinamento em paralelo, e cada uma delas pode afetar o desempenho geral do armazenamento necessário e a necessidade de armazenamento em cache de dados localmente em cada instância.
  • Número máximo de Cloud GPUs ou Cloud TPUs para um único job de treinamento: à medida que o número de aceleradores e VMs aumenta, o impacto no sistema de armazenamento poderá ser significativo e resultar em custos maiores se as Cloud GPUs ou Cloud TPUs estiverem inativas. No entanto, há maneiras de minimizar os custos à medida que você aumenta o número de aceleradores. Dependendo do tipo de paralelismo usado, é possível minimizar os custos aumentando os requisitos de capacidade de processamento de leitura agregada necessários para evitar aceleradores inativos.

Para permitir essas melhorias no Cloud Storage ou no Filestore, é preciso adicionar o SSD local a cada instância para poder descarregar a E/S do sistema de armazenamento sobrecarregado.

No entanto, o pré-carregamento de dados do Cloud Storage no SSD local de cada instância tem seus próprios desafios. Você corre o risco de ter custos maiores com os aceleradores inativos enquanto os dados estão sendo transferidos. Se os tempos de transferência de dados e os custos de inatividade do acelerador forem altos, use o Filestore com o SSD local para reduzir os custos.

  • Número de Cloud GPUs por instância: ao implantar mais Cloud GPUs em cada instância, é possível aumentar a capacidade de processamento entre Cloud GPUs com o NVLink. No entanto, a capacidade de processamento disponível do SSD local e da rede de armazenamento nem sempre aumenta de maneira linear.
  • Otimizações de armazenamento e aplicativos: as opções de armazenamento e os aplicativos têm requisitos de desempenho específicos para serem executados de maneira ideal. Equilibre esses requisitos de armazenamento e sistema de aplicativos com as otimizações de carregamento de dados, como manter as Cloud GPUs ou Cloud TPUs ocupadas e operando com eficiência.

Criação de checkpoint e reinicialização

Para criação de checkpoint e reinicialização, os jobs de treinamento precisam salvar periodicamente os respectivos estados para que possam se recuperar rapidamente de falhas na instância. Quando a falha acontece, os jobs precisam ser reiniciados, ingerir o checkpoint mais recente e retomar o treinamento. O mecanismo exato usado para criar e ingerir checkpoints geralmente é específico de um framework, como o TensorFlow ou o PyTorch. Alguns usuários criam frameworks complexos para aumentar a eficiência na criação de checkpoint. Esses frameworks complexos permitem executar um checkpoint com mais frequência.

No entanto, a maioria dos usuários normalmente usa um armazenamento compartilhado, como o Cloud Storage ou o Filestore. Ao salvar checkpoints, você só precisa salvar de três a cinco checkpoints em um determinado momento. As cargas de trabalho de checkpoint tendem a consistir principalmente em gravações, várias exclusões e, de preferência, leituras pouco frequentes quando ocorrem falhas. Durante a recuperação, o padrão de E/S inclui gravações intensivas e frequentes, exclusões e leituras frequentes do checkpoint.

Também é preciso considerar o tamanho do checkpoint que cada GPU ou TPU precisa criar. O tamanho do checkpoint determina a capacidade de processamento de gravação necessária para concluir o job de treinamento de maneira econômica e pontual.

Para minimizar os custos, considere aumentar os seguintes itens:

  • A frequência dos checkpoints
  • A capacidade de processamento de gravação agregada necessária para os checkpoints
  • Eficiência da reinicialização

Disponibilização

Quando você disponibiliza seu modelo, o que também é conhecido como inferência de IA, o padrão principal de E/S é somente leitura para carregar o modelo na memória de Cloud GPUs ou Cloud TPU. Nessa fase, o objetivo é executar o modelo em produção. O modelo é muito menor que os dados de treinamento. Portanto, é possível replicar e escalonar o modelo em várias instâncias. A alta disponibilidade e a proteção contra falhas zonais e regionais são importantes nessa fase. Portanto, garanta que o modelo esteja disponível para vários cenários de falha.

Em muitos casos de uso de IA generativa, os dados de entrada no modelo podem ser muito pequenos e não precisar ser armazenados de maneira permanente. Em outros casos, talvez seja necessário executar volumes grandes de dados no modelo (por exemplo, conjuntos de dados científicos). Nesse caso, você precisa selecionar uma opção que possa manter as Cloud GPUs ou Cloud TPUs fornecidas durante a análise do conjunto de dados, bem como selecionar um local permanente para armazenar os resultados de inferência.

Há duas opções principais para disponibilizar o modelo.

Cloud Storage para a fase de disponibilização

Estes são os principais motivos para selecionar o Cloud Storage ao disponibilizar seus dados:

  • Ao treinar o modelo no Cloud Storage, você economiza custos de migração por deixar o modelo no Cloud Storage ao disponibilizá-lo.
  • É possível salvar o conteúdo gerado no Cloud Storage.
  • O Cloud Storage é uma boa opção quando a inferência de IA ocorre em várias regiões.
  • É possível usar buckets birregionais e multirregionais para fornecer disponibilidade de modelo em falhas regionais.

Filestore para a fase de disponibilização

Estes são os principais motivos para selecionar o Filestore ao disponibilizar seus dados:

  • Ao treinar o modelo no Filestore, você economiza custos de migração por deixar o modelo no Filestore ao disponibilizá-lo.
  • Como o contrato de nível de serviço (SLA, na sigla em inglês) oferece 99,99% de disponibilidade, o nível de serviço do Filestore Empresarial é uma boa opção para alta disponibilidade quando você quer disponibilizar seu modelo entre várias zonas de uma região.
  • Os níveis de serviço do Filestore Zonal podem ser uma opção razoável de menor custo, mas apenas se a alta disponibilidade não for um requisito para a carga de trabalho de IA e ML.
  • Se você precisar de uma recuperação entre regiões, armazene o modelo em um local de backup remoto ou um bucket remoto do Cloud Storage e restaure o modelo conforme necessário.
  • O Filestore oferece uma opção durável e altamente disponível que permite acesso de baixa latência ao seu modelo quando você gera arquivos pequenos ou exige APIs de arquivo.

Arquivar

A fase de arquivamento tem um padrão de E/S de "escrever uma vez, ler raramente". Seu objetivo é armazenar os diferentes conjuntos de dados de treinamento e as diferentes versões dos modelos que você gerou. É possível usar essas versões incrementais de dados e modelos para fins de backup e recuperação de desastres. Você também precisa armazenar esses itens em um local durável por um longo período. Embora você talvez não precise acessar os dados e modelos com muita frequência, convém que esses itens estejam disponíveis quando precisar deles.

Em razão da durabilidade extrema, escala expansiva e do baixo custo, a melhor opção para armazenar dados de objeto por um longo período é o Cloud Storage. Dependendo da frequência com que você acessa os arquivos de backup, conjunto de dados e modelo, o Cloud Storage oferece otimização de custos por diferentes classes de armazenamento com as seguintes abordagens:

  • Coloque seus dados acessados com frequência no Standard Storage.
  • Mantenha os dados acessados mensalmente no Nearline Storage.
  • Armazene os dados acessados a cada três meses no Coldline Storage.
  • Preserve os dados acessados uma vez por ano no Archive Storage.

Ao usar o Gerenciamento do ciclo de vida de objetos, é possível criar políticas para mover dados para classes de armazenamento de acesso mais raro ou para excluir dados com base em critérios específicos. Se não tiver certeza da frequência com que você acessará os dados, use o recurso de Classe automática para mover dados entre classes de armazenamento automaticamente, com base no padrão de acesso.

Se seus dados estão no Filestore, geralmente faz sentido mover os dados para o Cloud Storage para fins de arquivamento. No entanto, é possível oferecer proteção extra aos seus dados do Filestore criando backups em outra região. Também é possível criar snapshots do Filestore para recuperação de arquivos locais e sistemas de arquivos. Para mais informações sobre backups do Filestore, consulte Visão geral de backups. Para mais informações sobre snapshots do Filestore, consulte Visão geral de snapshots.

Recomendações de armazenamento para IA e ML

Nesta seção, resumimos a análise feita na seção anterior, Mapear suas opções de armazenamento com as fases de IA e ML. Ela contém detalhes sobre as três principais combinações de opções de armazenamento que recomendamos para a maioria das cargas de trabalho de IA e ML. Estas são as três opções:

Selecionar o Cloud Storage

O Cloud Storage fornece o produto de armazenamento com o menor custo por capacidade em comparação com todos os outros produtos de armazenamento. Ele é escalonado para um número grande de clientes, oferece acessibilidade e disponibilidade regional e birregional e pode ser acessado pelo Cloud Storage FUSE. Selecione o armazenamento regional quando sua plataforma de computação para treinamento estiver na mesma região e escolha o armazenamento birregional se precisar de maior confiabilidade ou usar Cloud GPUs ou Cloud TPUs localizadas em duas regiões diferentes.

O Cloud Storage é a melhor opção para retenção de dados de longo prazo e para cargas de trabalho com requisitos menores de desempenho de armazenamento. No entanto, outras opções, como o Filestore e o SSD local, são alternativas valiosas em casos específicos quando você precisa de suporte total a POSIX ou o Cloud Storage torna-se um gargalo de desempenho.

Selecionar o Cloud Storage com SSD local ou Filestore

Para cargas de trabalho de checkpoint e reinicialização ou treinamento com uso intensivo de dados, pode ser útil usar um produto de armazenamento mais rápido durante a fase de treinamento intensivo de E/S. As opções típicas incluem copiar os dados para um SSD local ou o Filestore. Essa ação reduz o ambiente de execução geral do job mantendo as Cloud GPUs ou Cloud TPUs fornecidas com dados e impede que as instâncias sejam interrompidas enquanto as operações de checkpoint são concluídas. Além disso, quanto maior for a frequência de criação de checkpoints, maior será o número de checkpoints disponíveis como backups. Esse aumento no número de backups também aumenta a taxa geral em que os dados úteis chegam (também conhecida como goodput). Essa combinação de otimizar os processadores e aumentar o goodput reduz os custos gerais de treinamento do modelo.

Há vantagens e desvantagens a serem consideradas ao usar o SSD local ou o Filestore. A seção a seguir descreve algumas vantagens e desvantagens de cada um.

Vantagens do SSD local

  • Alta capacidade de processamento e IOPS depois que os dados forem transferidos
  • Custo adicional baixo ou mínimo

Desvantagens do SSD local

  • As Cloud GPUs ou Cloud TPUs permanecem inativas enquanto os dados são carregados.
  • A transferência de dados precisa acontecer em cada job de todas as instâncias.
  • Disponível apenas para alguns tipos de instâncias de Cloud GPUs.
  • Fornece capacidade de armazenamento limitada.
  • Compatível com criação de checkpoint, mas você precisa transferir manualmente os checkpoints para uma opção de armazenamento durável, como o Cloud Storage.

Vantagens do Filestore

  • Fornece armazenamento NFS compartilhado que permite que os dados sejam transferidos uma vez e, em seguida, compartilhados entre vários jobs e usuários.
  • Não há tempo de inatividade de Cloud GPUs ou Cloud TPUs porque os dados são transferidos antes de você pagar pelas Cloud GPUs ou Cloud TPUs.
  • Tem uma grande capacidade de armazenamento.
  • Compatível com criação de checkpoint rápido para milhares de VMs.
  • Compatível com Cloud GPUs, Cloud TPUs e todos os outros tipos de instância do Compute Engine.

Desvantagens do Filestore

  • Alto custo inicial, mas o aumento da eficiência de computação tem o potencial de reduzir os custos gerais de treinamento.

Selecionar o Filestore com SSD local opcional

O Filestore é a melhor opção para cargas de trabalho de IA e ML que precisam de baixa latência e suporte total a POSIX. Além de ser a opção recomendada para jobs de treinamento de E/S ou arquivos pequenos, o Filestore pode oferecer uma experiência responsiva para notebooks de IA e ML, desenvolvimento de software e muitos outros aplicativos. Também é possível implantar o Filestore em uma zona para oferecer treinamento de alto desempenho e armazenamento permanente de checkpoints. A implantação do Filestore em uma zona também oferece reinicialização rápida após uma falha. Outra possibilidade é implantar o Filestore regionalmente para permitir jobs de inferência altamente disponíveis. A adição opcional do FS-Cache para permitir o armazenamento em cache do SSD local possibilita leituras rápidas e repetidas de dados de treinamento para otimizar as cargas de trabalho.

A seguir

Para mais informações sobre opções de armazenamento e IA e ML, consulte os seguintes recursos:

Colaboradores

Autores:

  • Dean Hildebrand | Diretor técnico, escritório do CTO
  • Sean Derrington | Gerente de produtos externos do grupo, Armazenamento
  • Richard Hendricks | Equipe do centro de arquitetura

Outro colaborador: Kumar Dhanagopal | Desenvolvedor de soluções com vários produtos