Usar o Cloud Storage como um sistema de arquivos ativado

Com o Cloud Storage FUSE, é possível carregar dados de treinamento em um bucket do Cloud Storage e acessá-los a partir do job de treinamento personalizado como um sistema de arquivos montado. Usar o Cloud Storage como um sistema de arquivos tem os seguintes benefícios:

  • Os dados de treinamento são transmitidos para o job de treinamento em vez de transferidos por download para réplicas, o que pode tornar o carregamento dos dados e as tarefas de configuração mais rápidos quando o job começa a ser executado.
  • Os jobs de treinamento podem processar entradas e saídas em escala sem fazer chamadas de API, lidar com respostas ou fazer a integração com bibliotecas do lado do cliente.
  • O Cloud Storage FUSE fornece alta capacidade para leituras sequenciais de arquivos grandes e em cenários de treinamento distribuído.

Casos de uso

Recomendamos o uso do Cloud Storage para armazenar dados de treinamento nas seguintes situações:

  • Seus dados de treinamento são dados não estruturados, como imagem, texto e vídeo.
  • Os dados de treinamento são estruturados em um formato como o TFRecord.
  • Seus dados de treinamento contêm arquivos grandes, como vídeos brutos.
  • Você usa treinamento distribuído.

Como funciona

Os jobs de treinamento personalizados podem acessar seus buckets do Cloud Storage como subdiretórios do diretório raiz /gcs. Por exemplo, se os dados de treinamento estiverem localizados em gs://example-bucket/data.csv, será possível ler e gravar no bucket a partir do aplicativo de treinamento em Python da seguinte maneira:

Ler no bucket

with open('/gcs/example-bucket/data.csv', 'r') as f:
  lines = f.readlines()

Gravar no bucket

with open('/gcs/example-bucket/epoch3.log', 'a') as f:
  f.write('success!\n')

Permissões de acesso ao bucket

Por padrão, um job de treinamento personalizado pode acessar qualquer bucket do Cloud Storage no mesmo projeto do Google Cloud usando o agente de serviço de código personalizado da Vertex AI. Para controlar o acesso a buckets, atribua uma conta de serviço personalizada ao job. Nesse caso, o acesso a um bucket do Cloud Storage é concedido com base nas permissões associadas aos papéis do Cloud Storage da conta de serviço personalizada.

Por exemplo, se você quiser conceder ao job de treinamento personalizado acesso de leitura e gravação ao bucket-A, mas apenas acesso de leitura ao bucket-B, atribua uma conta de serviço que tenha os seguintes papéis ao job:

  • roles/storage.objectAdmin para bucket-A
  • roles/storage.objectViewer para Bucket-B

Se o job de treinamento tentar gravar no bucket-B, um erro "permissão negada" será retornado.

Para mais informações sobre os papéis do Cloud Storage, consulte Papéis do IAM para o Cloud Storage.

Práticas recomendadas

  • Evite renomear diretórios. Uma operação de renomeação não é atômica no Cloud Storage FUSE. Se a operação for interrompida, alguns arquivos permanecerão no diretório antigo.
  • Evite fechar (close()) ou limpar os arquivos (flush()) desnecessariamente. Fechar ou limpar arquivos envia o arquivo para o Cloud Storage, o que incorre em um custo.

Diretrizes de otimização de desempenho

Para ter a capacidade ideal de leitura ao usar o Cloud Storage como sistema de arquivos, recomendamos a implementação das seguintes diretrizes:

  • Para reduzir a latência introduzida ao procurar e abrir objetos em um bucket, armazene os dados em arquivos maiores e em menos arquivos.
  • Use o treinamento paralelo para maximizar a utilização da largura de banda.
  • Armazene em cache os arquivos acessados com frequência para melhorar o desempenho de leitura.

Limitações

Para saber mais sobre as limitações do Cloud Storage FUSE, incluindo as diferenças entre os sistemas de arquivos do Cloud Storage FUSE e POSIX, consulte Diferenças de outros sistemas de arquivos.

Carregar dados no Cloud Storage

Para saber mais sobre as opções de transferência de dados para o Cloud Storage, consulte Opções de transferência de dados.

A seguir