Sobre o driver CSI do Cloud Storage FUSE para o GKE


Esta visão geral apresenta o driver CSI do Cloud Storage FUSE para montagem de buckets do Cloud Storage como sistemas de arquivos locais no Google Kubernetes Engine (GKE). Esse recurso é especialmente útil para cargas de trabalho de machine learning que precisam armazenar dados de treinamento, modelos e checkpoints no Cloud Storage.

Esta visão geral é destinada a desenvolvedores e cientistas de dados que querem acessar ou armazenar dados de treinamento, pesos de modelos de inferência e checkpoints armazenados no Cloud Storage nos aplicativos do Kubernetes.

Antes de ler esta página, conheça o Kubernetes, o GKE e o Cloud Storage.

Como funciona

O driver usa o padrão Container Storage Interface (CSI) para permitir que os aplicativos executados em pods acessem os buckets do Cloud Storage como se fossem sistemas de arquivos montados. Isso significa que você pode tratar seus buckets do Cloud Storage como uma fonte de dados persistente e escalonável para seus aplicativos Kubernetes sem configurações ou mudanças de código complexas.

O driver CSI do Cloud Storage FUSE oferece uma experiência totalmente gerenciada com a tecnologia de código aberto do plug-in CSI do Google Cloud Storage FUSE. O driver CSI permite usar a API Kubernetes para consumir buckets pré-existentes do Cloud Storage como volumes. Seus aplicativos podem fazer upload e download de objetos usando a semântica do sistema de arquivos do Cloud Storage FUSE.

O sistema de arquivos no espaço do usuário (FUSE, na sigla em inglês) é uma interface usada para exportar um sistema de arquivos para o kernel do Linux. O Cloud Storage FUSE permite montar buckets do Cloud Storage como um sistema de arquivos para que os aplicativos possam acessar os objetos em um bucket usando operações comuns de E/S de arquivo (por exemplo, abrir, ler, gravar e fechar) em vez de usar APIs específicas da nuvem.

O driver é compatível nativamente com as seguintes maneiras de configurar seus volumes compatíveis com o Cloud Storage:

  • Volumes temporários do CSI: especifique o bucket do Cloud Storage inline com a especificação do pod. Use volumes CSI temporários se quiser uma interface simplificada baseada em pods que não exija experiência anterior com volumes persistentes do Kubernetes. Para usar essa opção, consulte Montar buckets do Cloud Storage como volumes temporários do CSI.
  • PersistentVolumes: você cria um recurso PersistentVolume que se refere ao bucket do Cloud Storage usando o provisionamento estático. Seu pod pode fazer referência a um PersistentVolumeClaim vinculado a esse PersistentVolume. Use essa opção se você já conhece os PersistentVolumes e quer consistência com as implantações atuais que dependem desse tipo de recurso. Para usar essa opção, consulte Montar buckets do Cloud Storage como volumes persistentes.

Casos de uso

O driver CSI do Cloud Storage FUSE é adequado para cenários como estes:

IA e machine learning

  • Treinamento: é possível usar o driver CSI do Cloud Storage FUSE para ler dados de treinamento e verificar modelos salvos usando o Cloud Storage como a fonte da verdade. Por exemplo, ao treinar um modelo no GKE usando PyTorch, JAX ou TensorFlow, o driver pode fornecer acesso a conjuntos de dados de treinamento armazenados em buckets do Cloud Storage.
  • Inferência: é possível usar modelos de inferência de ML que inferem resultados de arquivos armazenados no Cloud Storage. É possível usar o CSI do Cloud Storage FUSE para pré-carregar pesos de modelos armazenados no Cloud Storage. Além disso, é possível usar o recurso de download paralelo para acelerar a leitura de arquivos grandes do Cloud Storage para downloads multithread. Esse recurso ajuda a melhorar os tempos de carregamento de modelos, principalmente para leituras com mais de 1 GB.

Pipelines de análise de dados

É possível usar o driver CSI do Cloud Storage FUSE para simplificar as tarefas de processamento de dados, permitindo que os aplicativos acessem e analisem diretamente grandes conjuntos de dados armazenados no Cloud Storage. Por exemplo, um job do Spark executado no GKE pode usar o driver CSI para processar dados armazenados no Cloud Storage sem precisar fazer o download primeiro.

Vantagens

O uso do driver CSI oferece os seguintes benefícios:

  • Fácil de configurar: o driver CSI do Cloud Storage FUSE implanta e gerencia automaticamente o driver em clusters padrão e Autopilot. O uso de volumes temporários CSI simplifica a configuração e o gerenciamento de volumes. Isso ocorre porque não há necessidade de objetos PersistentVolumeClaim e PersistentVolume.
  • Segurança: o driver CSI do Cloud Storage FUSE não precisa de acesso privilegiado. Isso minimiza os riscos associados ao acesso privilegiado e leva a uma postura de segurança melhor. É possível usar a Federação de Identidade da Carga de Trabalho para GKE para gerenciar a autenticação e ter controle granular sobre como os pods acessam objetos do Cloud Storage.
  • Desempenho: o driver CSI do Cloud Storage FUSE melhora o desempenho com recursos como um sidecar para interações otimizadas, downloads paralelos para acesso mais rápido aos dados e armazenamento em cache de arquivos e metadados para melhorar a leitura e reduzir a latência. Para saber mais sobre esses recursos, consulte Opções e recursos de ajuste de desempenho.
  • Portabilidade e flexibilidade:o driver CSI do Cloud Storage FUSE permite usar a semântica padrão do sistema de arquivos para montar e acessar buckets do Cloud Storage. Isso fornece uma interface familiar que melhora a portabilidade para cargas de trabalho de ML e evita a necessidade de fazer mudanças extensas no código ou no aplicativo. O driver tem suporte em todos os aceleradores disponíveis no GKE, incluindo GPUs e TPUs. O driver CSI do Cloud Storage FUSE é compatível com os modos de acesso ReadWriteMany, ReadOnlyMany e ReadWriteOnce. É possível consumir volumes do Cloud Storage FUSE em contêineres init.
  • Gerenciabilidade: o driver permite executar o Cloud Storage FUSE sem precisar instalá-lo ou gerenciá-lo. Também é possível conferir insights de métricas do Cloud Storage FUSE, incluindo o uso do sistema de arquivos, do Cloud Storage e do cache de arquivos.

Recursos e opções de ajuste de performance

O driver CSI do Cloud Storage FUSE vem com várias opções de ajuste de desempenho e recursos para otimizar a maneira como seus pods acessam dados armazenados em buckets do Cloud Storage.

Por exemplo, ao ativar o armazenamento em cache de arquivos e ajustar a simultaneidade de solicitações, é possível reduzir significativamente o tempo necessário para carregar os dados de treinamento, resultando em tempos de treinamento mais rápidos.

  • Sidecar nativo: o driver CSI do FUSE do Cloud Storage anexa um contêiner secundário aos seus pods para gerenciar as interações com o Cloud Storage. O sidecar processa a montagem e a interação com o Cloud Storage, permitindo que seus aplicativos acendam os dados sem problemas. É possível ajustar a performance configurando recursos como CPU e memória para o contêiner do sidecar ou ajustando as configurações relacionadas ao armazenamento em cache e em buffer. O contêiner do sidecar do driver CSI do Cloud Storage FUSE e o Istio podem coexistir e ser executados simultaneamente no pod.

  • Download paralelo: a partir da versão 1.30.3-gke.1571000 do GKE e do Cloud Storage FUSE v.2.4.0 com o cache de arquivos ativado, é possível usar o recurso de download paralelo para acelerar a leitura de arquivos grandes do Cloud Storage para downloads multithread. Esse recurso ajuda a melhorar os tempos de carregamento de modelos, principalmente para leituras com mais de 1 GB (por exemplo, até o dobro da velocidade ao carregar o Llama 2 70B).

  • Suporte a armazenamento em cache de metadados: o driver CSI do Cloud Storage FUSE melhora o desempenho armazenando metadados de arquivos em cache, como tamanho e tempo de modificação. O driver CSI ativa esse cache de estatísticas por padrão e reduz a latência armazenando informações localmente em vez de solicitá-las repetidamente do Cloud Storage. É possível configurar o tamanho máximo e a duração em que os dados permanecem no cache. Ao ajustar o cache de metadados, você pode reduzir as chamadas de API para o Google Cloud Storage, melhorando a performance e a eficiência do aplicativo, minimizando o tráfego de rede e a latência.

  • Suporte a armazenamento em cache de arquivos: é possível usar o driver CSI do Cloud Storage FUSE com armazenamento em cache de arquivos para melhorar o desempenho de leitura de aplicativos que processam arquivos pequenos de buckets do Cloud Storage. O recurso de cache de arquivos do Cloud Storage FUSE é um cache de leitura baseado em cliente que permite que leituras repetidas de arquivos sejam veiculadas mais rapidamente a partir do armazenamento em cache de sua escolha. Escolha entre uma variedade de opções de armazenamento para o cache de leitura, incluindo SSDs locais, armazenamento baseado em Persistent Disk e disco RAM, de acordo com suas necessidades de preço-desempenho.

Para conferir as práticas recomendadas de ajuste de desempenho, consulte Otimizar o driver CSI do Cloud Storage FUSE para o desempenho do GKE.

Limitações

O driver CSI tem as seguintes limitações:

Requisitos

Para usar o driver CSI do Cloud Storage FUSE, os clusters precisam atender aos seguintes requisitos de versão do GKE:

Para usar recursos específicos do driver CSI do Cloud Storage FUSE, você também precisa atender a estes requisitos:

Recurso Requisitos da versão do GKE
Imagem particular para o contêiner sidecar, volume de buffer de gravação personalizado e solicitações de recursos do contêiner sidecar 1.27.10-gke.1055000, 1.28.6-gke.1369000, 1.29.1-gke.1575000 ou mais recente.
Arquivo em cache, atributos de volume 1.27.12-gke.1190000, 1.28.8-gke.1175000, 1.29.3-gke.1093000 ou mais recente.
Volumes do Cloud Storage FUSE em contêineres init 1.29.3-gke.1093000 ou mais recente, com todos os nós na versão 1.29 ou mais recente do GKE.
Download paralelo 1.29.6-gke.1254000, 1.30.2-gke.1394000 ou mais recente.
Métricas do Cloud Storage FUSE 1.31.1-gke.1621000 ou mais recente.
Pré-busca de metadados 1.31.3-gke.1162000 ou mais recente.

A seguir