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 GCS gs://tfds-data/datasets/ sem nenhuma 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 em sua equipe)

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

instruções simplificadas

Se você rodar do colab, pode autenticar com sua conta, mas rodando:

from google.colab import auth
auth.authenticate_user()

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

gcloud auth application-default login

Se você deseja fazer login com a 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 sã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 de 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 GCS e certifique-se de 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")

Ressalvas:

  • Essa abordagem funciona para conjuntos de dados que usam apenas tf.io.gfile para acesso a 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 a partir dele, portanto, você pode incorrer em custos de rede.

Acessando conjuntos de dados armazenados no GCS

Se os proprietários do conjunto de dados permitissem o acesso anônimo, basta seguir em frente e 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 (própria conta x 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.