Armazenamento de blob do Azure com TensorFlow

Ver no TensorFlow.org Executar no Google Colab Ver fonte no GitHub Baixar caderno

Visão geral

Isto mostra tutorial como usar ler e escrever arquivos no Azure Blob Storage com TensorFlow, através da integração do sistema de arquivos Azure do TensorFlow IO.

Uma conta de armazenamento do Azure é necessária para ler e gravar arquivos no Armazenamento de Blobs do Azure. A chave de armazenamento do Azure deve ser fornecida por meio da variável ambiental:

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

O nome da conta de armazenamento e o nome do contêiner fazem parte do nome do arquivo uri:

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

Neste tutorial, para demonstração fins você pode opcionalmente configurar Azurita que é um emulador Azure armazenamento. Com o emulador de azurite, é possível ler e gravar arquivos por meio da interface de armazenamento de blobs do Azure com o TensorFlow.

Configuração e uso

Instale os pacotes necessários e reinicie o tempo de execução

try:
  %tensorflow_version 2.x 
except Exception:
  pass

!pip install tensorflow-io

Instalar e configurar o Azurita (opcional)

Caso uma conta de armazenamento do Azure não esteja disponível, é necessário o seguinte para instalar e configurar o azurite que emula a interface de armazenamento do 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

Ler e gravar arquivos no Armazenamento do Azure com TensorFlow

Veja a seguir um exemplo de leitura e gravação de arquivos no Armazenamento do Azure com a API do TensorFlow.

Ele se comporta da mesma forma que outros sistemas de arquivos (por exemplo, POSIX ou GCS) em TensorFlow uma vez tensorflow-io pacote é importado, como tensorflow-io irá registrar automaticamente azfs esquema para uso.

O Azure armazenamento de chaves deve ser fornecida através de TF_AZURE_STORAGE_KEY variável ambiental. Caso contrário TF_AZURE_USE_DEV_STORAGE poderia ser ajustado para True usar emulador Azurita em vez disso:

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!

Configurações

As configurações do Armazenamento de Blobs do Azure no TensorFlow são sempre feitas por meio de variáveis ​​ambientais. Abaixo está uma lista completa das configurações disponíveis:

  • TF_AZURE_USE_DEV_STORAGE : Definido como 1 para usar emulador de armazenamento desenvolvimento local para conexões como 'az: //devstoreaccount1/container/file.txt'. Isso levará precedência sobre todas as outras configurações para unset para usar qualquer outra conexão
  • TF_AZURE_STORAGE_KEY chave conta para a conta de armazenamento em uso:
  • TF_AZURE_STORAGE_USE_HTTP : definido para qualquer valor se você não quiser usar a transferência de https. unset para usar o padrão de https
  • TF_AZURE_STORAGE_BLOB_ENDPOINT : Define o ponto final do armazenamento blob - o padrão é .core.windows.net .