tfds e Google Cloud Storage

O Google Cloud Storage (GCS) pode ser usado com tfds por vários motivos:

  • Armazenando dados pré-processados
  • Acessando conjuntos de dados que possuem dados armazenados no GCS

Acesso por meio do bucket TFDS GCS

Alguns conjuntos de dados estão disponíveis diretamente em nosso bucket do GCS gs://tfds-data/datasets/ sem qualquer autenticação:

Você pode verificar se um conjunto de dados está hospedado no bucket público com tfds.is_dataset_on_gcs('mnist') .

Autenticação

Antes de começar, você deve decidir como deseja autenticar. Existem três opções:

  • sem autenticação (também conhecido como acesso anônimo)
  • usando sua conta do Google
  • usando uma conta de serviço (pode ser facilmente compartilhada com outras pessoas da sua equipe)

Você pode encontrar informações detalhadas na documentação do Google Cloud

Instruções simplificadas

Se você executar no Colab, poderá autenticar com sua conta, mas executando:

from google.colab import auth
auth.authenticate_user()

Se você executar em sua máquina local (ou em VM), poderá autenticar com sua conta executando:

gcloud auth application-default login

Se você deseja fazer login com uma conta de serviço, baixe a chave do arquivo JSON e defina

export GOOGLE_APPLICATION_CREDENTIALS=<JSON_FILE_PATH>

Usando o Google Cloud Storage para armazenar dados pré-processados

Normalmente, quando você usa conjuntos de dados do TensorFlow, os dados baixados e preparados serão armazenados em cache em um diretório local (por padrão ~/tensorflow_datasets ).

Em alguns ambientes onde o disco local pode ser efêmero (um servidor em nuvem temporário ou um notebook Colab ) ou você precisa que os dados sejam acessíveis por várias máquinas, é útil definir data_dir para um sistema de armazenamento em nuvem, como um Google Cloud Storage (GCS) balde.

Como?

Crie um bucket do GCS e garanta que você (ou sua conta de serviço) tenha permissões de leitura/gravação nele (consulte as instruções de autorização acima)

Ao usar tfds , você pode definir data_dir como "gs://YOUR_BUCKET_NAME"

ds_train, ds_test = tfds.load(name="mnist", split=["train", "test"], data_dir="gs://YOUR_BUCKET_NAME")

Advertências:

  • Essa abordagem funciona para conjuntos de dados que usam apenas tf.io.gfile para acesso aos dados. Isso é verdade para a maioria dos conjuntos de dados, mas não para todos.
  • Lembre-se de que acessar o GCS é acessar um servidor remoto e transmitir dados dele, portanto, você poderá incorrer em custos de rede.

Acessando conjuntos de dados armazenados no GCS

Se os proprietários do conjunto de dados permitissem acesso anônimo, você pode simplesmente executar o código tfds.load - e funcionaria como um download normal da Internet.

Se o conjunto de dados exigir autenticação, use as instruções acima para decidir qual opção você deseja (conta própria versus conta de serviço) e comunique o nome da conta (também conhecido como e-mail) ao proprietário do conjunto de dados. Depois que eles permitirem o acesso ao diretório GCS, você poderá executar o código de download do tfds.