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:
- Se
tfds.load(..., try_gcs=False)
(padrão), o conjunto de dados será copiado localmente em~/tensorflow_datasets
durantedownload_and_prepare
. - Se
tfds.load(..., try_gcs=True)
, o conjunto de dados será transmitido diretamente do GCS (download_and_prepare
será ignorado).
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.