Archiviazione BLOB di Azure con TensorFlow

Visualizza su TensorFlow.org Esegui in Google Colab Visualizza l'origine su GitHub Scarica quaderno

Panoramica

Questo tutorial mostra come utilizzare leggere e scrivere file su Azure Blob archiviazione con tensorflow, attraverso l'integrazione del file system Azure di tensorflow IO.

È necessario un account di archiviazione di Azure per leggere e scrivere file in Archiviazione BLOB di Azure. La chiave di archiviazione di Azure deve essere fornita tramite la variabile ambientale:

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

Il nome dell'account di archiviazione e il nome del contenitore fanno parte dell'uri del nome file:

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

In questo tutorial, demo per scopi è possibile opzionalmente configurazione Azzurrite che è un emulatore di Azure. Con l'emulatore Azurite è possibile leggere e scrivere file tramite l'interfaccia di archiviazione BLOB di Azure con TensorFlow.

Configurazione e utilizzo

Installa i pacchetti richiesti e riavvia il runtime

try:
  %tensorflow_version 2.x 
except Exception:
  pass

!pip install tensorflow-io

Installa e configura Azurite (opzionale)

Nel caso in cui un account di archiviazione di Azure non sia disponibile, per installare e configurare Azurite che emula l'interfaccia di archiviazione di Azure è necessario quanto segue:

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

Leggi e scrivi file in Archiviazione di Azure con TensorFlow

Di seguito è riportato un esempio di lettura e scrittura di file in Archiviazione di Azure con l'API di TensorFlow.

Si comporta allo stesso modo di altri sistemi di file (ad esempio, POSIX o GCS) in tensorflow volta tensorflow-io pacchetto viene importato, come tensorflow-io registrerà automaticamente azfs regime per l'uso.

La chiave di archiviazione Azure dovrebbe essere fornito attraverso TF_AZURE_STORAGE_KEY variabile d'ambiente. Altrimenti TF_AZURE_USE_DEV_STORAGE potrebbe essere impostato per True usare emulatore Azzurrite invece:

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!

Configurazioni

Le configurazioni di Archiviazione BLOB di Azure in TensorFlow vengono sempre eseguite tramite variabili ambientali. Di seguito è riportato un elenco completo delle configurazioni disponibili:

  • TF_AZURE_USE_DEV_STORAGE : Impostare su 1 per utilizzare l'emulatore di archiviazione sviluppo locale per le connessioni come 'az: //devstoreaccount1/container/file.txt'. Questo richiederà la precedenza sugli tutte le altre impostazioni in modo unset per utilizzare qualsiasi altra connessione
  • TF_AZURE_STORAGE_KEY Key Account per l'account di archiviazione in uso:
  • TF_AZURE_STORAGE_USE_HTTP : Impostare su qualsiasi valore se non si desidera utilizzare il trasferimento https. unset da utilizzare di default https
  • TF_AZURE_STORAGE_BLOB_ENDPOINT : Impostare il punto finale di archiviazione blob - di default è .core.windows.net .