Stockage d'objets blob Azure avec TensorFlow

Voir sur TensorFlow.org Exécuter dans Google Colab Voir la source sur GitHub Télécharger le cahier

Aperçu

Ce tutoriel montre comment utiliser les fichiers de lecture et d' écriture sur Azure Blob Storage avec tensorflow, grâce à l'intégration du système de fichiers Azure tensorflow IO.

Un compte de stockage Azure est nécessaire pour lire et écrire des fichiers sur Azure Blob Storage. La clé de stockage Azure doit être fournie via la variable d'environnement :

os.environ['TF_AZURE_STORAGE_KEY'] = '<key>'

Le nom du compte de stockage et le nom du conteneur font partie du nom de fichier uri :

azfs://<storage-account-name>/<container-name>/<path>

Dans ce tutoriel, pour démonstration des fins Optionnellement , vous pouvez Azurite qui est un émulateur de stockage Azure. Avec l'émulateur Azurite, il est possible de lire et d'écrire des fichiers via l'interface de stockage d'objets blob Azure avec TensorFlow.

Configuration et utilisation

Installez les packages requis et redémarrez le runtime

try:
  %tensorflow_version 2.x 
except Exception:
  pass

!pip install tensorflow-io

Installer et configurer Azurite (facultatif)

Si un compte de stockage Azure n'est pas disponible, les éléments suivants sont nécessaires pour installer et configurer Azurite qui émule l'interface de stockage Azure :

npm install azurite@2.7.0
[K[?25hnpm WARN deprecated request@2.87.0: request has been deprecated, see https://github.com/request/request/issues/3142
[K[?25hnpm WARN saveError ENOENT: no such file or directory, open '/content/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '/content/package.json'
npm WARN content No description
npm WARN content No repository field.
npm WARN content No README data
npm WARN content No license field.

+ azurite@2.7.0
added 116 packages from 141 contributors in 6.591s
# The path for npm might not be exposed in PATH env,
# you can find it out through 'npm bin' command
npm_bin_path = get_ipython().getoutput('npm bin')[0]
print('npm bin path: ', npm_bin_path)

# Run `azurite-blob -s` as a background process. 
# IPython doesn't recognize `&` in inline bash cells.
get_ipython().system_raw(npm_bin_path + '/' + 'azurite-blob -s &')
npm bin path:  /content/node_modules/.bin

Lire et écrire des fichiers dans Azure Storage avec TensorFlow

Voici un exemple de lecture et d'écriture de fichiers dans Azure Storage avec l'API de TensorFlow.

Il se comporte de la même manière que les autres systèmes de fichiers (par exemple, ou POSIX GCS) en tensorflow une fois tensorflow-io package est importé, tensorflow-io enregistrera automatiquement azfs système d'utilisation.

Le Azure Storage Key devrait être fournie par TF_AZURE_STORAGE_KEY variable d' environnement. Dans le cas contraire TF_AZURE_USE_DEV_STORAGE pourrait être réglé à True utiliser l' émulateur Azurite à la place:

import os
import tensorflow as tf
import tensorflow_io as tfio

# Switch to False to use Azure Storage instead:
use_emulator = True

if use_emulator:
  os.environ['TF_AZURE_USE_DEV_STORAGE'] = '1'
  account_name = 'devstoreaccount1'
else:
  # Replace <key> with Azure Storage Key, and <account> with Azure Storage Account
  os.environ['TF_AZURE_STORAGE_KEY'] = '<key>'
  account_name = '<account>'

  # Alternatively, you can use a shared access signature (SAS) to authenticate with the Azure Storage Account
  os.environ['TF_AZURE_STORAGE_SAS'] = '<your sas>'
  account_name = '<account>'
pathname = 'az://{}/aztest'.format(account_name)
tf.io.gfile.mkdir(pathname)

filename = pathname + '/hello.txt'
with tf.io.gfile.GFile(filename, mode='w') as w:
  w.write("Hello, world!")

with tf.io.gfile.GFile(filename, mode='r') as r:
  print(r.read())
Hello, world!

Configurations

Les configurations du stockage Azure Blob dans TensorFlow sont toujours effectuées via des variables d'environnement. Vous trouverez ci-dessous une liste complète des configurations disponibles :

  • TF_AZURE_USE_DEV_STORAGE : Set 1 pour utiliser l' émulateur de stockage de développement local pour les connexions comme « az: //devstoreaccount1/container/file.txt ». Cela prendra precendence sur tous les autres paramètres afin unset d'utiliser toute autre connexion
  • TF_AZURE_STORAGE_KEY : clé de compte pour le compte de stockage utilisé
  • TF_AZURE_STORAGE_USE_HTTP : ne importe quelle valeur si vous ne souhaitez pas utiliser le transfert https. unset à utiliser par défaut de https
  • TF_AZURE_STORAGE_BLOB_ENDPOINT : Régler sur le point final de stockage de blob - par défaut est .core.windows.net .