Este documento fornece arquiteturas de referência que mostram como pode usar o Cloud Storage FUSE para otimizar o desempenho das cargas de trabalho de IA e ML no Google Kubernetes Engine (GKE).
O público-alvo deste documento inclui arquitetos e profissionais técnicos que concebem, aprovisionam e gerem o armazenamento para as respetivas cargas de trabalho de IA e ML no Google Cloud. Este documento pressupõe que tem conhecimentos do ciclo de vida, dos processos e das capacidades de ML.
O Cloud Storage FUSE é um adaptador de código aberto FUSE que lhe permite montar contentores do Cloud Storage como sistemas de ficheiros locais. Esta configuração permite que as aplicações interajam facilmente com contentores de armazenamento baseados na nuvem através da utilização de semântica de sistema padrão semelhante a ficheiros. O Cloud Storage FUSE permite-lhe tirar partido da escalabilidade e da rentabilidade do Cloud Storage.
Arquitetura
Consoante os seus requisitos de desempenho, disponibilidade e recuperação de desastres (DR), pode escolher um dos seguintes Google Cloud arquétipos de implementação para executar as suas cargas de trabalho de IA e ML no Google Cloud:
- Regional: as suas aplicações são executadas de forma independente numa única Google Cloud região. Recomendamos este arquétipo de implementação para aplicações que não sejam essenciais, mas que precisem de ser robustas contra falhas de zonas.
- Multirregional: as suas aplicações são executadas de forma independente em duas ou mais Google Cloud regiões, no modo ativo-ativo ou ativo-passivo. Este arquétipo de implementação é ideal para suportar cenários de recuperação de desastres. Recomendamos este arquétipo de implementação para aplicações críticas para a missão que precisam de resiliência contra interrupções e desastres regionais. As implementações duplas ou multirregionais podem reduzir a latência e melhorar o débito através da proximidade dos recursos.
O arquétipo de implementação que escolher informa os Google Cloud produtos e as funcionalidades de que precisa para a sua arquitetura. A arquitetura multirregional usa a cache em qualquer lugar para aumentar a largura de banda da rede e fornecer resultados da cache zonal com menor latência em comparação com um contentor regional. Geralmente, a cache em qualquer lugar é recomendada para todas as cargas de trabalho e elimina as taxas de transferência de dados quando usada com contentores de várias regiões. Para avaliar se a cache em qualquer lugar é adequada para a sua carga de trabalho, use o recomendador da cache em qualquer lugar para analisar a sua utilização de dados e armazenamento.
Os separadores seguintes fornecem arquiteturas de referência para os arquétipos de implementação regionais e multirregionais:
Regional
O diagrama seguinte mostra uma arquitetura regional de exemplo que usa o Cloud Storage FUSE para otimizar o desempenho da preparação de modelos e fluxos de trabalho de publicação de modelos:
Esta arquitetura inclui os seguintes componentes:
- Cluster do GKE: o GKE gere os nós de computação nos quais os processos de preparação e apresentação de modelos de IA e ML são executados. O GKE gere a infraestrutura subjacente dos clusters do Kubernetes, incluindo o plano de controlo, os nós e todos os componentes do sistema.
- Programador do Kubernetes: o plano de controlo do GKE agenda cargas de trabalho e gere o respetivo ciclo de vida, escalabilidade e atualizações. O agente do nó do Kubernetes (
kubelet
), que não é apresentado no diagrama, comunica com o plano de controlo. O agentekubelet
é responsável por iniciar e executar contentores agendados nos nós do GKE. Para mais informações sobre o agendador, consulte o artigo Orquestração de IA/ML no GKE. - Rede de nuvem virtual privada (VPC): todos os Google Cloud recursos na arquitetura usam uma única rede VPC. Consoante os seus requisitos, pode optar por criar uma arquitetura que use várias redes. Para mais informações sobre a configuração de uma rede VPC para o Cloud Storage FUSE, consulte o artigo Decidir se deve criar várias redes VPC.
- Cloud Load Balancing: nesta arquitetura, o Cloud Load Balancing distribui eficientemente os pedidos de inferência recebidos dos utilizadores da aplicação para os contentores de publicação no cluster do GKE. Para mais informações, consulte o artigo Compreender o balanceamento de carga do GKE.
- Unidade de processamento de gráficos (GPU) ou Unidades de processamento de tensores (TPUs): As GPUs e as TPUs são aceleradores de aprendizagem automática especializados que melhoram o desempenho das suas cargas de trabalho de IA e ML. Para obter informações sobre como escolher um tipo de processador adequado, consulte as Opções de acelerador mais adiante neste documento.
- Cloud Storage: o Cloud Storage oferece armazenamento persistente, escalável e económico para as suas cargas de trabalho de IA e ML. O Cloud Storage funciona como o repositório central dos seus conjuntos de dados de preparação brutos, pontos de verificação do modelo e modelos preparados finais.
- Cloud Storage FUSE com cache de ficheiros ativada: o Cloud Storage FUSE permite-lhe montar um contentor do Cloud Storage como um sistema de ficheiros local. A cache de ficheiros no Cloud Storage FUSE é um diretório na máquina local que armazena ficheiros acedidos com frequência dos seus contentores do Cloud Storage. O controlador CSI do FUSE do Cloud Storage gere a integração do FUSE do Cloud Storage com a API Kubernetes para consumir contentores do Cloud Storage como volumes.
As secções seguintes descrevem o fluxo de trabalho nas cargas de trabalho de preparação e publicação da arquitetura.
Multirregional
O diagrama seguinte mostra uma arquitetura multirregional de exemplo que usa o Cloud Storage FUSE e a cache em qualquer lugar para otimizar o desempenho dos fluxos de trabalho de preparação e publicação de modelos:
Esta arquitetura inclui os seguintes componentes:
- Cluster do GKE: O GKE gere os nós de computação nos quais os processos de preparação e apresentação de modelos de IA e ML são executados. O GKE faz a gestão da infraestrutura subjacente dos clusters do Kubernetes, incluindo o plano de controlo, os nós e todos os componentes do sistema.
- Programador do Kubernetes: o plano de controlo do GKE agenda cargas de trabalho e gere o respetivo ciclo de vida, escalabilidade e atualizações. O agente do nó do Kubernetes (
kubelet
), que não é apresentado no diagrama, comunica com o plano de controlo. O agentekubelet
é responsável por iniciar e executar contentores agendados nos nós do GKE. Para mais informações sobre o agendador, consulte o artigo Orquestração de IA/ML no GKE. - Rede de nuvem virtual privada (VPC): todos os Google Cloud recursos na arquitetura usam uma única rede VPC. Consoante os seus requisitos, pode optar por criar uma arquitetura que use várias redes. Para mais informações sobre a configuração de uma rede VPC para o Cloud Storage FUSE, consulte o artigo Decidir se deve criar várias redes VPC.
- Cloud DNS: nas arquiteturas multirregionais, o Cloud DNS direciona o tráfego para os balanceadores de carga para garantir um desempenho e uma disponibilidade ideais através do encaminhamento anycast. Os pedidos são automaticamente encaminhados para a localização mais próxima, o que reduz a latência e melhora o desempenho da pesquisa de nomes autoritativos para os seus utilizadores. Para ver informações sobre os princípios gerais e as práticas recomendadas, consulte Práticas recomendadas para o Cloud DNS.
- Cloud Load Balancing: nesta arquitetura, o Cloud Load Balancing distribui eficientemente os pedidos de inferência recebidos dos utilizadores da aplicação para os contentores de publicação no cluster do GKE. Para mais informações, consulte o artigo Compreender o balanceamento de carga do GKE.
- Unidade de processamento de gráficos (GPU) ou Unidades de processamento de tensores (TPUs): As GPUs e as TPUs são aceleradores de aprendizagem automática especializados que melhoram o desempenho das suas cargas de trabalho de IA e ML. Para obter informações sobre como escolher um tipo de processador adequado, consulte as Opções de acelerador mais adiante neste documento.
- Cloud Storage: o Cloud Storage oferece armazenamento persistente, escalável e económico para as suas cargas de trabalho de IA e ML. O Cloud Storage funciona como o repositório central dos seus conjuntos de dados de preparação brutos, pontos de verificação do modelo e modelos preparados finais.
- Cloud Storage FUSE: O Cloud Storage FUSE permite-lhe montar um contentor do Cloud Storage como um sistema de ficheiros local. O controlador CSI do FUSE do Cloud Storage, que não é apresentado no diagrama, gere a integração do FUSE do Cloud Storage com a API Kubernetes para consumir contentores do Cloud Storage como volumes.
- Cache em qualquer lugar: A cache em qualquer lugar é uma funcionalidade do Cloud Storage que oferece até 1 PiB de cache de leitura apenas zonal baseada em SSD para contentores do Cloud Storage. Durante a preparação e a publicação, a cache em qualquer lugar ajuda a reduzir as latências de leitura e a alcançar um débito superior a 2 TB/s ao dimensionar a capacidade da cache e a largura de banda. Quando combinado com contentores multirregionais, o Anywhere Cache pode ser usado em várias zonas e regiões. Para informações sobre as regiões e as zonas suportadas, consulte o artigo Localizações suportadas.
As secções seguintes descrevem o fluxo de trabalho nas cargas de trabalho de preparação e publicação da arquitetura.
Carga de trabalho de preparação
Nas arquiteturas anteriores, seguem-se os passos no fluxo de dados durante o treino do modelo:
- Carregue dados de preparação para o Cloud Storage: os dados de preparação são carregados para um contentor do Cloud Storage com os espaços de nomes hierárquicos ativados. O Cloud Storage funciona como um repositório central escalável.
- Carregue dados de preparação e execute tarefas de preparação no GKE: o contentor do Cloud Storage montado nos seus pods do GKE permite que as suas aplicações de preparação carreguem e acedam de forma eficiente aos dados de preparação através da interface FUSE. Os nós do GKE executam o processo de preparação do modelo usando a cache de ficheiros montada como origem de dados. As suas aplicações de preparação enviam continuamente dados de preparação para os aceleradores de aprendizagem automática para realizar os cálculos complexos necessários para a preparação do modelo. Consoante os requisitos da sua carga de trabalho, pode usar GPUs ou TPUs. Para informações sobre como escolher um tipo de processador adequado, consulte Opções de acelerador mais adiante neste documento.
Posto de controlo e restauro e gravação de modelos:
- Guardar pontos de verificação ou modelo: durante a preparação, os pontos de verificação são guardados de forma assíncrona a intervalos frequentes num contentor do Cloud Storage separado. Os pontos de verificação captam o estado do modelo com base em métricas ou intervalos que definir.
- Restaurar pontos de verificação ou o modelo: quando a sua carga de trabalho de preparação requer que restaure um ponto de verificação ou dados do modelo, tem de localizar o recurso que quer restaurar no Cloud Storage. Pode usar o ponto de verificação ou o modelo restaurado para retomar a preparação, otimizar os parâmetros ou avaliar o desempenho num conjunto de validação.
Carga de trabalho de publicação
Nas arquiteturas anteriores, seguem-se os passos no fluxo de dados durante a publicação do modelo:
- Carregar modelo: após a conclusão da preparação, os seus pods carregam o modelo preparado usando o FUSE do Cloud Storage com transferências paralelas ativadas. As transferências paralelas aceleram o carregamento do modelo ao obter as partes do modelo em paralelo a partir do Cloud Storage. Para reduzir significativamente os tempos de carregamento dos modelos, o processo usa o diretório da cache como um buffer de obtenção prévia.
- Pedido de inferência: os utilizadores da aplicação enviam pedidos de inferência a partir da aplicação de IA e ML através do serviço Cloud Load Balancing. O Cloud Load Balancing distribui os pedidos recebidos pelos contentores de publicação no cluster do GKE. Esta distribuição garante que nenhum contentor individual fica sobrecarregado e que os pedidos são processados de forma eficiente.
- Fornecimento de respostas: os nós processam o pedido e geram uma previsão. Os contentores de publicação enviam as respostas de volta através do Cloud Load Balancing e, em seguida, para os utilizadores da aplicação.
Produtos usados
As arquiteturas de referência usam os seguintes Google Cloud produtos:
- Google Kubernetes Engine (GKE): um serviço Kubernetes que pode usar para implementar e operar aplicações em contentores em grande escala através da infraestrutura da Google.
- Cloud Storage: um serviço de armazenamento de objetos de baixo custo e sem limite para diversos tipos de dados. Os dados podem ser acedidos a partir do interior e do exterior Google Cloud, e são replicados em várias localizações para redundância.
- Nuvem virtual privada (VPC): um sistema virtual que oferece funcionalidade de rede global e escalável para as suas Google Cloud cargas de trabalho. A VPC inclui o intercâmbio da rede da VPC, o Private Service Connect, o acesso a serviços privados e a VPC partilhada.
- Cloud Load Balancing: um portefólio de balanceadores de carga globais, escaláveis e de elevado desempenho, bem como balanceadores de carga regionais.
- Cloud DNS: um serviço que fornece um serviço de DNS resiliente e de baixa latência a partir da rede mundial da Google.
Exemplo de utilização
Para cargas de trabalho de IA e ML que requerem uma grande capacidade de armazenamento e acesso a ficheiros de alto desempenho, recomendamos que use uma arquitetura criada em torno do Cloud Storage FUSE. Com um planeamento adequado, pode alcançar mais de 1 TB/s de débito com estas arquiteturas. Além disso, o Cloud Storage FUSE permite-lhe tirar partido de um repositório de armazenamento central que serve como uma única fonte de informação fidedigna para todas as fases do fluxo de trabalho de IA e ML. Esta abordagem pode ser usada para qualquer carga de trabalho, independentemente da respetiva escala ou tamanho.
Para estas cargas de trabalho, o Cloud Storage FUSE oferece as seguintes vantagens:
- Acesso simplificado aos dados: aceda aos dados de preparação e aos pontos de verificação com frameworks de IA e ML, como o conetor para PyTorch, o JAX e o TensorFlow. O acesso aos dados através de frameworks de IA e ML elimina a necessidade de refatoração de código.
- Arranque acelerado: elimine a necessidade de transferir grandes conjuntos de dados para recursos de computação usando o Cloud Storage FUSE para aceder diretamente aos dados no Cloud Storage. Este acesso direto aos dados resulta em tempos de início dos trabalhos mais rápidos.
- Rentabilidade: otimize os custos usando a escalabilidade inerente e a rentabilidade do Cloud Storage.
O FUSE do Cloud Storage não é adequado para cargas de trabalho sensíveis à latência que contenham ficheiros com menos de 50 MB ou que exijam uma latência inferior a 1 milissegundo para E/S aleatória e acesso a metadados.
Para a preparação intensiva de dados ou as cargas de trabalho de pontos de verificação e reinício, considere uma alternativa de armazenamento durante a fase de preparação intensiva de E/S.
Alternativas de design
As secções seguintes apresentam abordagens de design alternativas que pode considerar para a sua aplicação de IA e ML no Google Cloud.
Alternativa à plataforma
Em vez de alojar o fluxo de trabalho de preparação e apresentação do modelo no GKE, pode considerar o Compute Engine com o Slurm. O Slurm é um gestor de recursos e cargas de trabalho de código aberto e altamente configurável. A utilização do Compute Engine com o Slurm é particularmente adequada para simulações e preparação de modelos em grande escala. Recomendamos que use o Compute Engine com o Slurm se precisar de integrar propriedade intelectual (PI) de IA e ML proprietária num ambiente escalável com a flexibilidade e o controlo para otimizar o desempenho para cargas de trabalho especializadas. Para mais informações sobre como usar o Compute Engine com o Slurm, consulte o artigo Implemente um cluster de HPC com o Slurm.
No Compute Engine, aprovisiona e gere as suas máquinas virtuais (VMs), o que lhe dá um controlo detalhado sobre os tipos de instâncias, o armazenamento e a rede. Pode personalizar a sua infraestrutura de acordo com as suas necessidades exatas, incluindo a seleção de tipos de máquinas virtuais específicos. Para ver informações sobre como usar as opções de linha de comandos do FUSE do Cloud Storage no Compute Engine, consulte os artigos CLI gcsfuse e Ficheiro de configuração do FUSE do Cloud Storage. Também pode usar a família de máquinas otimizadas para aceleradores para um desempenho melhorado com as suas cargas de trabalho de IA e ML. Para mais informações sobre as famílias de tipos de máquinas disponíveis no Compute Engine, consulte o recurso de famílias de máquinas e o guia de comparação.
O Slurm oferece uma opção poderosa para gerir cargas de trabalho de IA e ML, e permite-lhe controlar a configuração e a gestão dos recursos de computação. Para usar esta abordagem, precisa de conhecimentos especializados em administração do Slurm e gestão do sistema Linux.
Opções do acelerador
Os aceleradores de máquinas são processadores especializados concebidos para acelerar os cálculos necessários para cargas de trabalho de IA e ML. Pode escolher GPUs ou TPUs.
- Os aceleradores de GPU oferecem um excelente desempenho para uma ampla gama de tarefas, incluindo a renderização de gráficos, a preparação de aprendizagem avançada e a computação científica. Google Cloud tem uma ampla seleção de GPUs para corresponder a uma variedade de pontos de desempenho e preço. As GPUs incluem frequentemente SSDs locais em cada configuração de máquina, que podem ser usados pelo Cloud Storage FUSE como um diretório de cache. Para informações sobre os modelos de GPU e os preços, consulte o artigo Preços das GPUs.
- As TPUs são aceleradores de IA de design personalizado, otimizados para a preparação e a inferência de grandes modelos de IA. São ideais para uma variedade de exemplos de utilização, como chatbots, geração de código, geração de conteúdo multimédia, voz sintética, serviços de visão, motores de recomendações e modelos de personalização. Para mais informações sobre os modelos de TPUs e os preços, consulte os preços das TPUs.
Alternativas de armazenamento
O Cloud Storage FUSE oferece um sistema de ficheiros conveniente que lhe permite tirar partido da escalabilidade e da rentabilidade do Cloud Storage. No entanto, o Cloud Storage FUSE não é ideal para cargas de trabalho que exigem baixa latência para leituras de ficheiros pequenos ou para cargas de trabalho que requerem uma solução de armazenamento totalmente compatível com POSIX. Para estes exemplos de utilização, recomendamos que considere as seguintes alternativas de armazenamento:
- Google Cloud Managed Lustre: um sistema de ficheiros paralelos (PFS) persistente e totalmente Google Cloudgerido que se baseia no EXAScaler Lustre da DDN. O Lustre gerido é a solução principal recomendada para a preparação e a criação de pontos de verificação de cargas de trabalho de IA. É particularmente eficaz para migrar cargas de trabalho existentes do Lustre ou de outras soluções de PFS. Para aumentar o desempenho durante a criação de pontos de verificação, considere usar o Lustre gerido para aumentar o FUSE do Cloud Storage com a cache em qualquer lugar. Para mais informações, consulte o artigo Otimize as cargas de trabalho de IA e ML com o Lustre gerido do Google Cloud.
- Conetor para PyTorch: Um produto de código aberto no Cloud Storage ideal para cargas de trabalho que usam o PyTorch. O conetor para o PyTorch otimiza a sua carga de trabalho de preparação através de: streaming de dados diretamente dos seus contentores do Cloud Storage e eliminação da necessidade de armazenamento intermédio. Este acesso direto e otimização oferece um desempenho significativamente melhor do que as chamadas diretas à API para o Cloud Storage para carregamento de dados, preparação e criação de pontos de verificação.
Embora as opções de armazenamento alternativas possam oferecer vantagens de desempenho para determinadas cargas de trabalho de IA e ML, é fundamental avaliar as suas necessidades de latência, débito e capacidade de armazenamento.
Para uma comparação abrangente das opções de armazenamento para cargas de trabalho de IA e ML, consulte o artigo Conceber armazenamento para cargas de trabalho de IA e ML no Google Cloud.
Considerações de design
Esta secção fornece orientações sobre as práticas recomendadas e as considerações de design para configurar o Cloud Storage FUSE para segurança, fiabilidade, custo e desempenho. Embora as recomendações aqui apresentadas não sejam exaustivas, abordam as principais considerações para maximizar as vantagens do FUSE do Cloud Storage no seu ambiente. Consoante as suas necessidades específicas e características da carga de trabalho, pode ter de considerar opções de configuração adicionais e compromissos.
As seguintes recomendações de design realçam as configurações para refinar a forma como implementa o Cloud Storage FUSE no GKE. A maioria das opções do FUSE do Cloud Storage é configurada com opções de montagem. Para mais informações acerca das opções de linha de comandos do Cloud Storage FUSE e como as usar, consulte a CLI gcsfuse e o artigo Otimize o controlador CSI do Cloud Storage FUSE para o desempenho do GKE.
Para uma vista geral dos princípios e recomendações de arquitetura específicos das cargas de trabalho de IA e ML no Google Cloud, consulte aperspetiva de IA e ML no Well-Architected Framework.
Segurança, privacidade e conformidade
Esta secção descreve as considerações para as suas cargas de trabalho de IA e ML que cumprem os seus requisitos de segurança, privacidade e conformidade. Google Cloud
Considerações do GKE
No modo de funcionamento do Autopilot, o GKE pré-configura o seu cluster e gere os nós de acordo com as práticas recomendadas de segurança, o que lhe permite focar-se na segurança específica da carga de trabalho. Para mais informações, consulte o seguinte:
Para garantir um controlo de acesso melhorado para as suas aplicações que são executadas no GKE, pode usar o Identity-Aware Proxy (IAP). O IAP integra-se com o recurso GKE Ingress e ajuda a garantir que apenas os utilizadores autenticados com a função de gestão de identidade e de acesso (IAM) correta podem aceder às aplicações. Para mais informações, consulte Ativar o IAP para o GKE.
Por predefinição, os seus dados no GKE são encriptados em repouso e em trânsito através da utilização de Google-owned and Google-managed encryption keys. Como camada adicional de segurança para dados confidenciais, pode encriptar dados na camada de aplicação usando uma chave que lhe pertence e que gere com o Cloud Key Management Service (Cloud KMS). Para mais informações, consulte o artigo Encriptar segredos na camada de aplicação.
Se usar um cluster do GKE padrão, pode usar as seguintes capacidades de encriptação de dados adicionais:
- Encriptar dados em utilização (ou seja, na memória) através de nós GKE confidenciais. Para mais informações sobre as funcionalidades, a disponibilidade e as limitações dos Confidential GKE Nodes, consulte o artigo Encriptar dados de cargas de trabalho em utilização com Confidential GKE Nodes.
- Se precisar de mais controlo sobre as chaves de encriptação usadas para encriptar o tráfego de pods nos nós do GKE, pode encriptar os dados em trânsito usando chaves que gere. Para mais informações, consulte o artigo Encripte os seus dados em trânsito no GKE com chaves de encriptação geridas pelo utilizador.
Considerações sobre o Cloud Storage
Por predefinição, os dados armazenados no Cloud Storage são encriptados através de Google-owned and Google-managed encryption keys. Se necessário, pode usar chaves de encriptação geridas pelo cliente (CMEKs) ou as suas próprias chaves que gere através de um método de gestão externo, como chaves de encriptação fornecidas pelo cliente (CSEKs). Para mais informações, consulte as Opções de encriptação de dados.
O Cloud Storage suporta dois métodos para conceder aos utilizadores acesso aos seus contentores e objetos: o IAM e as listas de controlo de acesso (ACLs). Na maioria dos casos, recomendamos que use o IAM, que lhe permite conceder autorizações ao nível do contentor e do projeto. Para mais informações, consulte o artigo Vista geral do controlo de acesso.
Os dados de preparação que carrega através do Cloud Storage podem incluir dados confidenciais. Para proteger esses dados, pode usar a Proteção de dados confidenciais para descobrir, classificar e desidentificar os dados. Para separar os seus fluxos de trabalho de preparação e serviço, guarde o modelo e os pontos de verificação em contentores do Cloud Storage separados. Este isolamento ajuda a evitar a exposição acidental de informações confidenciais do seu conjunto de dados de preparação durante a publicação. Para mais informações, consulte Usar a proteção de dados confidenciais com o Cloud Storage.
Se tiver requisitos de residência dos dados, o Cloud Storage pode ajudar a cumprir esses requisitos. Os dados são armazenados ou replicados nas regiões que especificar.
Considerações sobre o FUSE do Cloud Storage
Quando ativa o armazenamento em cache, o Cloud Storage FUSE armazena ficheiros persistentes do seu contentor do Cloud Storage num formato não encriptado no diretório que especificar. O Cloud Storage expõe todos os ficheiros a qualquer utilizador ou processo que tenha acesso ao diretório. Para mitigar estes riscos e melhorar a segurança, a camada do kernel FUSE restringe o acesso ao sistema de ficheiros ao utilizador que montou o sistema. Esta restrição nega o acesso a outros utilizadores, incluindo o utilizador root, mesmo que as autorizações de inode sejam mais permissivas.
No entanto, existem exemplos de utilização em que a substituição das restrições de acesso predefinidas
pode ser necessária. Por exemplo, numa carga de trabalho de preparação de IA e ML distribuída, em que vários nós têm de aceder e partilhar pontos de verificação armazenados no Cloud Storage, pode ter de permitir um acesso mais amplo. Nesses casos,
pode substituir a restrição predefinida através da opção -o allow_other
.
No entanto, se ampliar o acesso aos seus ficheiros, pode potencialmente expor os seus dados a utilizadores não autorizados.
Por conseguinte, deve ter cuidado quando usa esta opção.
Por predefinição, todos os inodes num sistema de ficheiros FUSE do Cloud Storage são propriedade do utilizador que montou o sistema de ficheiros. Embora estas predefinições possam ser adequadas para muitos casos, pode personalizar um contexto de segurança para o seu pod. Para obter informações sobre a personalização de um contexto de segurança, consulte Segurança e autorizações.
Outras considerações de segurança
Para ver princípios e recomendações de segurança específicos das cargas de trabalho de IA e ML, consulte o artigo Perspetiva de IA e ML: segurança no Well-Architected Framework.
Fiabilidade
Para garantir um funcionamento fiável, o Cloud Storage FUSE incorpora novas tentativas automáticas para processar potenciais interrupções e manter a consistência dos dados. As solicitações com falhas são automaticamente tentadas novamente com retirada exponencial para o Cloud Storage. A retirada exponencial aumenta gradualmente o tempo entre as novas tentativas. Este mecanismo integrado ajuda a sua aplicação a superar problemas de rede transitórios ou indisponibilidade temporária do Cloud Storage.
Embora o Cloud Storage FUSE ofereça muitas vantagens, considere o seguinte:
- Escritas simultâneas: quando vários utilizadores tentam modificar um ficheiro, a operação a última escrita ganha tem precedência e todas as operações de escrita anteriores são perdidas. Para manter a integridade dos dados, recomendamos que um único objeto seja modificado por apenas uma origem em qualquer momento.
- Persistência da cache: quando desmonta ou reinicia o seu contentor, as caches não persistem. Para evitar potenciais problemas de segurança, depois de desmontar ou reiniciar o contentor, é essencial que elimine manualmente o diretório da cache de ficheiros.
- Processos com caches dedicadas: embora o Cloud Storage FUSE suporte o acesso concorrente para um processamento paralelo eficiente, é importante lembrar que as caches são específicas de cada processo do Cloud Storage FUSE. Por conseguinte, o mesmo diretório de cache não deve ser usado por diferentes processos do FUSE do Cloud Storage executados em máquinas iguais ou diferentes.
Outras considerações de fiabilidade
Para ver princípios e recomendações de fiabilidade específicos das cargas de trabalho de IA e ML, consulte o artigo Perspetiva de IA e ML: fiabilidade no Well-Architected Framework.
Otimização de custos
Esta secção fornece orientações para ajudar a otimizar o custo de configuração e funcionamento do seu fluxo de trabalho de IA e ML no Google Cloud.
Considerações do GKE
No modo Autopilot, o GKE otimiza a eficiência da infraestrutura do seu cluster com base nos requisitos da carga de trabalho. Para controlar os custos, não precisa de monitorizar constantemente a utilização de recursos nem gerir a capacidade.
Se conseguir prever a utilização da CPU, da memória e do armazenamento efémero do seu cluster do Autopilot, pode receber descontos por utilização garantida. Para reduzir o custo de execução da sua aplicação, pode usar VMs de capacidade instantânea para os seus nós do GKE. As VMs de capacidade instantânea têm um preço inferior ao das VMs padrão, mas não oferecem uma garantia de disponibilidade.
Para otimizar o custo e o desempenho através de uma gestão eficiente, use o programador de carga de trabalho dinâmico. O Dynamic Workload Scheduler é um agendador de tarefas e gestão de recursos que ajuda a melhorar o acesso aos recursos de IA e ML. O Dynamic Workload Scheduler agenda todos os seus aceleradores simultaneamente e pode ser executado durante as horas de menor atividade com a gestão da capacidade do acelerador definida. Ao agendar tarefas estrategicamente, o Dynamic Workload Scheduler ajuda a maximizar a utilização do acelerador, reduzir o tempo de inatividade e, em última análise, otimizar os seus gastos na nuvem.
Para mais informações sobre orientações de otimização de custos, consulte o artigo Práticas recomendadas para executar aplicações Kubernetes otimizadas em termos de custos no GKE.
Considerações sobre o Cloud Storage
As suas necessidades de armazenamento de IA e ML podem ser dinâmicas. Por exemplo, pode precisar de uma capacidade de armazenamento significativa para os dados de preparação, mas o requisito de capacidade diminui para a publicação, onde armazena principalmente dados do modelo e pontos de verificação. Para controlar os custos, recomendamos que ative a gestão do ciclo de vida de objetos e o Autoclass.
A gestão do ciclo de vida de objetos permite-lhe mover automaticamente dados mais antigos ou não utilizados para classes de armazenamento mais baratas ou até eliminar os dados, com base nas regras que definir.
A funcionalidade de classificação automática move automaticamente os dados entre classes de armazenamento com base na forma como acede aos dados. Esta funcionalidade garante o melhor equilíbrio entre o desempenho e o custo.
Considerações sobre o FUSE do Cloud Storage
Aplicam-se os custos padrão do Cloud Storage ao armazenamento, às operações de metadados e ao tráfego de rede gerado pelas suas atividades do FUSE. Não existem custos adicionais para usar o FUSE do Cloud Storage. Para mais informações sobre as operações comuns do FUSE do Cloud Storage e como são mapeadas para as operações do Cloud Storage, consulte o mapeamento de operações.
Para otimizar os custos do diretório da cache, pode usar a capacidade da máquina aprovisionada existente, incluindo SSDs locais, discos persistentes ou dados na memória para sistemas de ficheiros temporários. Quando usa a capacidade da máquina existente, pode evitar incorrer em cobranças por recursos de armazenamento adicionais. Além disso, a maximização dos resultados da cache pode reduzir significativamente os custos do Cloud Storage, uma vez que os dados fornecidos localmente não incorrem em encargos de operação nem encargos de transferência de dados.
Para mais informações sobre as cobranças, consulte os preços do Cloud Storage.
Outras considerações sobre o custo
Para ver princípios e recomendações de otimização de custos específicos das cargas de trabalho de IA e ML, consulte o artigo Perspetiva de IA e ML: otimização de custos no Well-Architected Framework.
Otimização do desempenho
O Cloud Storage FUSE foi concebido para oferecer acesso eficiente aos dados no Cloud Storage para as suas cargas de trabalho de IA e ML. No entanto, os pedidos de metadados frequentes podem reduzir o desempenho, especialmente em clusters de grande escala. Para mais informações sobre como melhorar o desempenho, consulte os artigos Otimize o controlador CSI FUSE do Cloud Storage para o desempenho do GKE e Práticas recomendadas de otimização do desempenho.
Para otimizar o desempenho, considere as seguintes configurações:
- Ative os espaços de nomes hierárquicos: para melhorar o acesso aos dados e a organização, crie contentores do Cloud Storage com espaços de nomes hierárquicos ativados. Os espaços de nomes hierárquicos permitem-lhe organizar os dados numa estrutura do sistema de ficheiros, o que melhora o desempenho, garante a consistência e simplifica a gestão para cargas de trabalho de IA e ML. Os espaços de nomes hierárquicos permitem um QPS inicial mais elevado e renomeações atómicas rápidas de diretórios.
Ativar colocação em cache de ficheiros: a colocação em cache de ficheiros acelera o acesso repetido aos dados de preparação usando um diretório de nós local para colocar em cache os ficheiros lidos com frequência. A publicação de leituras repetidas a partir de um meio de cache reduz a latência e minimiza as operações de volta ao Cloud Storage. Nos tipos de máquinas com GPU com um SSD local, o diretório do SSD local é usado automaticamente. Para tipos de máquinas que não incluem SSD local, como as TPUs, pode usar um diretório de disco RAM, como
/tmpfs
.Para ativar a cache de ficheiros, use as seguintes opções de montagem:
- Para definir o valor da cache de ficheiros utilizável para o limite de capacidade da cache, defina
file-cache:max-size-mb:
como-1
. - Para definir o tempo de vida (TTL) da cache de metadados para uma duração ilimitada e a remoção com base no algoritmo usado mais recentemente (LRU) após atingir a capacidade máxima, defina
metadata-cache:ttl-secs:
como-1
.
- Para definir o valor da cache de ficheiros utilizável para o limite de capacidade da cache, defina
Aumente os valores da cache de metadados: o Cloud Storage FUSE tem duas formas de cache de metadados que melhoram o desempenho das operações relacionadas com pesquisas de metadados: cache de estatísticas e cache de tipos.
Para aumentar os valores da cache de metadados, defina as seguintes opções de montagem:
- Para definir o valor da cache de estatísticas utilizável para o limite de capacidade da cache, defina
metadata-cache:stat-cache-max-size-mb:
como-1
. - Para definir o valor da cache de tipo utilizável para o limite de capacidade, defina
metadata-cache:type-cache-max-size-mb:
como-1
. - Para evitar que os itens de metadados em cache expirem, com um valor predefinido de 60 segundos, defina
metadata-cache:ttl-secs:
como-1
. Os valores infinitos devem ser usados apenas para volumes de leitura e nós com configurações de memória grandes.
- Para definir o valor da cache de estatísticas utilizável para o limite de capacidade da cache, defina
Pré-preencha a cache de metadados: a funcionalidade de pré-obtenção de metadados permite que o controlador CSI do FUSE do Cloud Storage carregue proativamente metadados relevantes sobre os objetos no seu contentor do Cloud Storage nas caches do FUSE do Cloud Storage. Esta abordagem reduz as chamadas para o Cloud Storage e é especialmente benéfica para aplicações que acedem a grandes conjuntos de dados com muitos ficheiros, como cargas de trabalho de preparação de IA e ML.
Para pré-preencher a cache de metadados, ative a pré-obtenção de metadados para o volume indicado. Definir o atributo de volume
gcsfuseMetadataPrefetchOnMount
paratrue
. Para evitar interrupções da carga de trabalho, considere aumentar o limite de memória do sidecargke-gcsfuse-metadata-prefetch
configurando os recursos do sidecar.Ativar colocação em cache de listas: esta funcionalidade otimiza os diretórios de fichas e os ficheiros. É particularmente benéfico para cargas de trabalho de preparação de IA e ML, que envolvem frequentemente o acesso e a listagem repetidos de diretórios completos. O armazenamento em cache de listas oferece processos de preparação altamente eficientes, reduzindo a necessidade de aceder repetidamente às listas de diretórios na memória do seu computador.
Para ativar o armazenamento em cache de listas e impedir que os itens de cache de listas do kernel expirem, defina a opção de montagem
file-system:kernel-list-cache-ttl-secs:
como-1
.Ative as transferências em paralelo: as transferências em paralelo aceleram o carregamento inicial do modelo ao obter vários fragmentos em simultâneo. A ativação das transferências paralelas resulta num carregamento mais rápido do modelo e numa capacidade de resposta melhorada durante a publicação.
Para ativar as transferências paralelas, ative a cache de ficheiros e defina a opção de montagem
file-cache:enable-parallel-downloads:
comotrue
.Aumente os limites do sidecar do GKE: para evitar que as restrições de recursos prejudiquem o desempenho, configure limites nos recursos do contentor sidecar, como o consumo de CPU e memória. Se usar uma cache de SSD local, considere definir
ephemeral-storage-limit
como ilimitado. Esta definição permite que o Cloud Storage FUSE use totalmente o armazenamento SSD local disponível para uma colocação em cache melhorada.Montagem só de leitura: uma vez que as cargas de trabalho de preparação normalmente só precisam de ler dados, configure o ponto de montagem como só de leitura para um desempenho ideal, especialmente quando usa o armazenamento em cache de ficheiros. Esta configuração também ajuda a maximizar as vantagens das otimizações em clusters de grande escala e a evitar potenciais inconsistências de dados.
Outras considerações de desempenho
Para ver princípios e recomendações de otimização do desempenho específicos das cargas de trabalho de IA e ML, consulte o artigo Perspetiva de IA e ML: otimização do desempenho no Well-Architected Framework.
O que se segue?
- Saiba mais:
- Vista geral do Cloud Storage FUSE.
- Acerca do controlador CSI FUSE do Cloud Storage para o GKE.
- Práticas recomendadas de otimização do desempenho do FUSE do Cloud Storage.
- Otimize o controlador CSI FUSE do Cloud Storage para o desempenho do GKE.
- Práticas recomendadas para implementar a aprendizagem automática no Google Cloud.
- Conceba armazenamento para cargas de trabalho de IA e ML no Google Cloud.
- Implementar:
- Para ver mais arquiteturas de referência, diagramas e práticas recomendadas, explore o Centro de arquitetura na nuvem.
Colaboradores
Autor: Samantha He | Redator técnico
Outros colaboradores:
- Dean Hildebrand | Technical Director, Office of the CTO
- Kumar Dhanagopal | Cross-Product Solution Developer
- Marco Abela | Gestor de produtos
- Sean Derrington | Group Product Manager, Storage