Usar o armazenamento em cache de arquivos do Cloud Storage FUSE

Nesta página, fornecemos detalhes sobre o cache de arquivos do Cloud Storage FUSE e como configurar as propriedades de suporte dele.

Visão geral

O cache de arquivos do Cloud Storage FUSE é um cache de leitura baseado em cliente que permite repetir leituras de arquivos a serem disponibilizadas em um armazenamento de cache mais rápido de sua escolha. Nesta página, descrevemos como ativar e usar o armazenamento em cache de arquivos do Cloud Storage FUSE.

Benefícios do armazenamento em cache de arquivos

O armazenamento em cache de arquivos oferece os seguintes benefícios:

  • Melhora o desempenho de E/S pequenas e aleatórias: o armazenamento em cache de arquivos melhora a latência e a capacidade veiculando leituras diretamente da mídia de cache. Operações de E/S pequenas e aleatórias podem ser significativamente mais rápidas quando exibidas do cache.

  • Usa downloads paralelos: os downloads paralelos são ativados automaticamente nas versões 2.12 e mais recentes do Cloud Storage FUSE quando o cache de arquivos está ativado. Os downloads paralelos usam vários workers para baixar um arquivo em paralelo usando o diretório de cache de arquivos como um buffer de pré-busca, o que pode resultar em um tempo de carregamento do modelo até nove vezes mais rápido. Recomendamos o uso de downloads paralelos para cenários de leitura de linha única que carregam arquivos grandes, como a veiculação de modelos e restaurações de pontos de controle.

  • Usar a capacidade atual: o armazenamento em cache de arquivos pode usar a capacidade da máquina provisionada atual do seu diretório de cache sem gerar cobranças de armazenamento adicional. Isso inclui SSDs locais que vêm com tipos de máquina das GPUs do Cloud, como a2-ultragpu, a3-highgpu, Persistent Disk (que é o disco de inicialização usado por cada VM) ou /tmpfs na memória.

  • Cobranças reduzidas: as ocorrências em cache são veiculadas localmente e não geram cobranças de operações do Cloud Storage nem de rede.

  • Melhoria no custo total de propriedade para treinamento de IA e ML: o armazenamento em cache de arquivos aumenta a utilização das GPUs do Cloud e da Cloud TPU ao carregar dados mais rapidamente, o que reduz o tempo de treinamento e oferece uma relação melhor custo-benefício para cargas de trabalho de treinamento de inteligência artificial e machine learning (IA/ML).

Downloads paralelos

Os downloads paralelos podem melhorar o desempenho de leitura usando vários workers para baixar várias partes de um arquivo em paralelo usando o diretório de cache de arquivos como um buffer de pré-busca. Recomendamos o uso de downloads paralelos para cenários de leitura que carregam arquivos grandes, como veiculação de modelos, restaurações de pontos de controle e treinamento em objetos grandes.

Os casos de uso para ativar o armazenamento em cache de arquivos com downloads paralelos incluem o seguinte:

Tipo de caso de uso Descrição
Treinamento Ative o armazenamento em cache de arquivos se os dados que você quer acessar forem lidos várias vezes, seja o mesmo arquivo várias vezes ou diferentes intervalos do mesmo arquivo. Se o conjunto de dados for maior que o cache de arquivos, ele vai permanecer desativado. Em vez disso, use um dos seguintes métodos:
Veiculação de pesos de modelo e leituras de checkpoint Ative o armazenamento em cache de arquivos com downloads paralelos para usar downloads paralelos, que carregam arquivos grandes muito mais rápido do que se o armazenamento em cache de arquivos e os downloads paralelos não forem usados.

Considerações

As seções a seguir oferecem considerações importantes sobre o uso do armazenamento em cache de arquivos.

Tamanho do arquivo e capacidade disponível

O arquivo lido precisa caber na capacidade disponível do diretório de cache de arquivos, que pode ser controlada usando a opção da CLI --file-cache-max-size-mb ou o campo file-cache:max-size-mb.

Gerenciamento de leitura aleatória e parcial

Se a primeira operação de leitura de arquivo começar no início do arquivo, no deslocamento 0, o cache de arquivos do Cloud Storage FUSE vai ingerir e carregar todo o arquivo no cache, mesmo que você esteja apenas lendo de um subconjunto pequeno. Isso permite que leituras aleatórias ou parciais subsequentes do mesmo objeto sejam veiculadas diretamente no cache.

Se a primeira operação de leitura de um arquivo começar de qualquer lugar diferente do deslocamento 0, o Cloud Storage FUSE, por padrão, não acionará uma busca assíncrona de arquivo completo. Para mudar esse comportamento e fazer com que o Cloud Storage FUSE ingira um arquivo no cache após uma leitura aleatória inicial, use um dos seguintes métodos para definir o comportamento como true:

Recomendamos que você ative essa propriedade se muitas operações de leitura aleatória ou parcial diferentes forem executadas no mesmo objeto.

Remoção de cache

A remoção de metadados e dados armazenados em cache é baseada em um algoritmo usado menos recentemente (LRU, na sigla em inglês) que começa quando o limite de espaço configurado por limite de --file-cache-max-size-mb é atingido. Se a entrada expirar com base no TTL, uma chamada de metadados GET será feita primeiro para o Cloud Storage e estará sujeita a latências de rede. Como os dados e metadados são gerenciados separadamente, é possível que uma entidade seja removida ou invalidada e não a outra.

Persistência de cache

Os caches do Cloud Storage FUSE não são mantidos após a desmontagem e a reinicialização. Para o armazenamento em cache de arquivos, embora as entradas de metadados necessárias para veicular arquivos do cache sejam removidas em desmontagens e reinicializações, os dados no cache de arquivos ainda podem estar presentes no diretório de arquivos. Recomendamos que você exclua os dados no diretório de cache de arquivos após desmontagens ou reinicializações.

Segurança de dados

Quando você ativa o armazenamento em cache, o Cloud Storage FUSE usa o diretório de cache especificado com um dos seguintes métodos como o diretório subjacente para o cache manter os arquivos do bucket do Cloud Storage em um formato criptografado:

Qualquer usuário ou processo com acesso a esse diretório de cache pode acessar esses arquivos. Recomendamos restringir o acesso a esse diretório.

Acesso direto ou múltiplo ao cache de arquivos

O uso de um processo diferente do Cloud Storage FUSE para acessar ou modificar um arquivo no diretório de cache pode corromper os dados. Os caches do Cloud Storage FUSE são específicos para cada processo em execução do Cloud Storage FUSE, sem reconhecimento entre diferentes processos do Cloud Storage FUSE em execução na mesma máquina ou em máquinas diferentes. Portanto, não recomendamos usar o mesmo diretório de cache para diferentes processos do Cloud Storage FUSE.

Se vários processos do Cloud Storage FUSE precisarem ser executados na mesma máquina, cada processo do Cloud Storage FUSE precisará ter o próprio diretório de cache específico ou usar um dos métodos a seguir para garantir que os dados não sejam corrompidos:

  • Monte todos os buckets com um cache compartilhado: use a montagem dinâmica para ativar todos os buckets a que você tem acesso em um único processo com um cache compartilhado. Para saber mais, consulte Ativação dinâmica do Cloud Storage FUSE.

  • Ativar o armazenamento em cache em um bucket específico: é possível ativar o armazenamento em cache somente em um bucket especificado usando a montagem estática. Para saber mais, consulte Ativação estática do Cloud Storage FUSE.

  • Armazenar em cache somente uma pasta ou um diretório específico: ative e armazene em cache somente uma pasta específica no nível do bucket em vez de ativar um bucket inteiro. Para saber mais, consulte Montar um diretório em um bucket.

Antes de começar

O cache de arquivos exige que um caminho de diretório seja usado para armazenar arquivos em cache. É possível criar um novo diretório em um sistema de arquivos atual ou um novo no armazenamento provisionado. Se você estiver provisionando um novo armazenamento a ser usado, siga as instruções a seguir para criar um novo sistema de arquivos:

  1. Para o Google Cloud Hyperdisk, consulte Criar um novo volume do Google Cloud Hyperdisk.

  2. Para o Persistent Disk, consulte Criar um novo volume de Persistent Disk.

  3. Para SSDs locais, consulte Adicionar uma SSD local à VM.

  4. Para discos RAM na memória, consulte Como criar discos RAM na memória.

Ativar e configurar o comportamento do armazenamento em cache de arquivos

Ative e configure o armazenamento em cache de arquivos usando uma das seguintes opções:

  1. Especifique o diretório de cache que você quer usar com um dos seguintes métodos. Isso permite ativar o cache de arquivos para implantações que não são do Google Kubernetes Engine:

    Se você estiver usando uma implantação do Google Kubernetes Engine com o driver CSI do Cloud Storage FUSE para o Google Kubernetes Engine, especifique uma das seguintes opções:

  2. Opcional: ative os downloads paralelos definindo uma das seguintes opções como true se eles não tiverem sido ativados automaticamente:

  3. Limite a capacidade total que o cache do Cloud Storage FUSE pode usar no diretório ativado ajustando uma das seguintes opções, que é definida automaticamente como um valor de -1 quando você especifica um diretório de cache:

    Você também pode especificar um valor em MiB ou GiB para limitar o tamanho do cache.

  4. Opcional: ignore a expiração de TTL das entradas armazenadas em cache e disponibilize os metadados do arquivo do cache, se ele estiver disponível, usando um dos seguintes métodos e definindo um valor de -1:

    O padrão é de 60 segundos, e um valor de -1 define como ilimitado. Também é possível especificar um valor alto com base nos seus requisitos. Recomendamos definir o valor de ttl-secs como o máximo permitido pela carga de trabalho. Para mais informações sobre como definir um TTL para entradas em cache, consulte Time to live.

  5. Opcional: ative a capacidade do cache de arquivos de carregar de forma assíncrona todo o arquivo no cache se a primeira operação de leitura do arquivo começar de qualquer lugar que não seja offset 0 para que leituras subsequentes de diferentes deslocamentos do mesmo arquivo também possam ser veiculadas do cache. Use um dos seguintes métodos e defina a opção como true:

  6. Opcional: configure o armazenamento em cache de estatísticas e de tipos. Para saber mais sobre caches de estatísticas e tipos, consulte Visão geral do armazenamento em cache de tipos ou Visão geral do armazenamento em cache de estatísticas.

  7. Execute manualmente o comando ls -R no bucket ativado antes de executar a carga de trabalho para pré-preencher os metadados e garantir que o cache de tipos seja preenchido antes da primeira leitura em um método mais rápido e em lote. Para mais informações sobre como melhorar a performance da leitura pela primeira vez, consulte Melhorar as leituras pela primeira vez.

Depois de ativar o armazenamento em cache de arquivos, os downloads paralelos serão ativados automaticamente nas versões 2.12 e mais recentes do Cloud Storage FUSE. Se você estiver usando uma versão mais antiga do Cloud Storage FUSE, defina a opção enable-parallel-downloads como true para ativar os downloads paralelos.

Configurar propriedades de suporte para downloads paralelos

É possível configurar as seguintes propriedades de suporte para downloads paralelos usando a CLI do Cloud Storage FUSE ou um arquivo de configuração do Cloud Storage FUSE:

Descrição da propriedade Opção da CLI Campo do arquivo de configuração
O número máximo de workers que podem ser gerados por arquivo para baixar o objeto do Cloud Storage para o cache de arquivos. --file-cache-parallel-downloads-per-file file-cache:parallel-downloads-per-file
O número máximo de workers que podem ser gerados a qualquer momento em todos os jobs de download de arquivos. O padrão é definido como o dobro do número de núcleos de CPU na máquina. Para não especificar um limite, insira o valor `-1`. --file-cache-max-parallel-downloads file-cache:max-parallel-downloads
O tamanho de cada solicitação de leitura em MiB que cada worker faz para o Cloud Storage ao fazer o download do objeto no cache de arquivos. Um download paralelo só é acionado se o arquivo que está sendo lido tiver o tamanho especificado. --file-cache-download-chunk-size-mb file-cache:download-chunk-size-mb

Desativar downloads paralelos

Para desativar os downloads paralelos, defina uma das seguintes opções como false:

  • Opção da CLI --file-cache-enable-parallel-downloads
  • Campo file-cache:enable-parallel-downloads

A seguir