¡El Día de la Comunidad de ML es el 9 de noviembre! Únase a nosotros para recibir actualizaciones de TensorFlow, JAX, y más Más información

Almacenamiento de blobs en Azure con TensorFlow

Ver en TensorFlow.org Ejecutar en Google Colab Ver fuente en GitHub Descargar cuaderno

Descripción general

Este tutorial muestra cómo usar archivos de lectura y escritura en Azure Blob Storage con TensorFlow, a través de la integración del sistema de archivos de Azure de TensorFlow IO.

Se necesita una cuenta de Azure Storage para leer y escribir archivos en Azure Blob Storage. La clave de almacenamiento de Azure debe proporcionarse a través de la variable de entorno:

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

El nombre de la cuenta de almacenamiento y el nombre del contenedor son parte del nombre de archivo uri:

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

En este tutorial, con fines de demostración, puede configurar opcionalmente Azurite, que es un emulador de Azure Storage. Con el emulador Azurite es posible leer y escribir archivos a través de la interfaz de almacenamiento de blobs de Azure con TensorFlow.

Configuración y uso

Instale los paquetes necesarios y reinicie el tiempo de ejecución

try:
  %tensorflow_version 2.x 
except Exception:
  pass

!pip install tensorflow-io

Instalar y configurar Azurite (opcional)

En caso de que una cuenta de Azure Storage no esté disponible, se necesita lo siguiente para instalar y configurar Azurite que emula la interfaz de Azure Storage:

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

Leer y escribir archivos en Azure Storage con TensorFlow

El siguiente es un ejemplo de lectura y escritura de archivos en Azure Storage con la API de TensorFlow.

Se comporta de la misma manera que otros sistemas de archivos (por ejemplo, POSIX o GCS) en TensorFlow una vez que se tensorflow-io paquete tensorflow-io , ya que tensorflow-io registrará automáticamente el esquema azfs para su uso.

La clave de almacenamiento de Azure debe proporcionarse a través de la variable de entorno TF_AZURE_STORAGE_KEY . De TF_AZURE_USE_DEV_STORAGE contrario, TF_AZURE_USE_DEV_STORAGE podría establecerse en True para usar el emulador Azurite en su lugar:

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>'
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!

Configuraciones

Las configuraciones de Azure Blob Storage en TensorFlow siempre se realizan a través de variables ambientales. A continuación se muestra una lista completa de configuraciones disponibles:

  • TF_AZURE_USE_DEV_STORAGE : TF_AZURE_USE_DEV_STORAGE en 1 para usar el emulador de almacenamiento de desarrollo local para conexiones como 'az: //devstoreaccount1/container/file.txt'. Esto tendrá prioridad sobre todas las demás configuraciones, por lo que no se puede unset para usar cualquier otra conexión.
  • TF_AZURE_STORAGE_KEY : clave de cuenta para la cuenta de almacenamiento en uso
  • TF_AZURE_STORAGE_USE_HTTP : TF_AZURE_STORAGE_USE_HTTP cualquier valor si no desea utilizar la transferencia https. unset para usar el valor predeterminado de https
  • TF_AZURE_STORAGE_BLOB_ENDPOINT : establecido en el punto final del almacenamiento de blobs; el valor predeterminado es .core.windows.net .