tfds et Google Cloud Storage

Google Cloud Storage (GCS) peut être utilisé avec tfds pour plusieurs raisons :

  • Stockage des données prétraitées
  • Accéder aux ensembles de données contenant des données stockées sur GCS

Accès via le compartiment TFDS GCS

Certains ensembles de données sont disponibles directement dans notre bucket GCS gs://tfds-data/datasets/ sans aucune authentification :

Vous pouvez vérifier si un ensemble de données est hébergé sur le bucket public avec tfds.is_dataset_on_gcs('mnist') .

Authentification

Avant de commencer, vous devez décider de la manière dont vous souhaitez vous authentifier. Il existe trois options :

  • pas d'authentification (c'est-à-dire accès anonyme)
  • en utilisant votre compte Google
  • en utilisant un compte de service (peut être facilement partagé avec d'autres membres de votre équipe)

Vous pouvez trouver des informations détaillées dans la documentation Google Cloud

Instructions simplifiées

Si vous exécutez depuis Colab, vous pouvez vous authentifier avec votre compte, mais en exécutant :

from google.colab import auth
auth.authenticate_user()

Si vous exécutez sur votre machine locale (ou dans une VM), vous pouvez vous authentifier avec votre compte en exécutant :

gcloud auth application-default login

Si vous souhaitez vous connecter avec un compte de service, téléchargez la clé du fichier JSON et définissez

export GOOGLE_APPLICATION_CREDENTIALS=<JSON_FILE_PATH>

Utiliser Google Cloud Storage pour stocker des données prétraitées

Normalement, lorsque vous utilisez TensorFlow Datasets, les données téléchargées et préparées seront mises en cache dans un répertoire local (par défaut ~/tensorflow_datasets ).

Dans certains environnements où le disque local peut être éphémère (un serveur cloud temporaire ou un notebook Colab ) ou où vous avez besoin que les données soient accessibles par plusieurs machines, il est utile de définir data_dir sur un système de stockage cloud, comme un Google Cloud Storage (GCS) seau.

Comment?

Créez un compartiment GCS et assurez-vous que vous (ou votre compte de service) disposez des autorisations de lecture/écriture sur celui-ci (voir les instructions d'autorisation ci-dessus)

Lorsque vous utilisez tfds , vous pouvez définir data_dir sur "gs://YOUR_BUCKET_NAME"

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

Mises en garde :

  • Cette approche fonctionne pour les ensembles de données qui utilisent uniquement tf.io.gfile pour l'accès aux données. Cela est vrai pour la plupart des ensembles de données, mais pas pour tous.
  • N'oubliez pas qu'accéder à GCS revient à accéder à un serveur distant et à diffuser des données à partir de celui-ci, vous pouvez donc encourir des frais de réseau.

Accéder aux ensembles de données stockés sur GCS

Si les propriétaires de l'ensemble de données autorisent l'accès anonyme, vous pouvez simplement exécuter le code tfds.load - et cela fonctionnera comme un téléchargement Internet normal.

Si l'ensemble de données nécessite une authentification, veuillez utiliser les instructions ci-dessus pour décider quelle option vous souhaitez (compte propre ou compte de service) et communiquer le nom du compte (c'est-à-dire e-mail) au propriétaire de l'ensemble de données. Une fois qu'ils vous ont permis d'accéder au répertoire GCS, vous devriez pouvoir exécuter le code de téléchargement tfds.