Хранилище BLOB-объектов Azure с TensorFlow

Посмотреть на TensorFlow.org Запустить в Google Colab Посмотреть исходный код на GitHub Скачать блокнот

Обзор

В этом учебнике показано , как использовать чтение и запись файлов на Azure Blob Storage с TensorFlow, через интеграцию файловой системы Azure TensorFlow Ио.

Учетная запись хранения Azure необходима для чтения и записи файлов в хранилище BLOB-объектов Azure. Ключ хранилища Azure должен быть предоставлен через переменную среды:

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

Имя учетной записи хранения и имя контейнера являются частью uri имени файла:

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

В этом учебнике, для демонстрационных целей можно при необходимости установки Азурит , которая является эмулятором Azure Storage. С помощью эмулятора Азурите можно читать и записывать файлы через интерфейс хранилища BLOB-объектов Azure с помощью TensorFlow.

Настройка и использование

Установите необходимые пакеты и перезапустите среду выполнения.

try:
  %tensorflow_version 2.x 
except Exception:
  pass

!pip install tensorflow-io

Установите и настройте Азурите (необязательно)

Если учетная запись хранения Azure недоступна, для установки и настройки азурите, эмулирующего интерфейс хранилища 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

Чтение и запись файлов в хранилище Azure с помощью TensorFlow

Ниже приведен пример чтения и записи файлов в службу хранилища Azure с помощью API TensorFlow.

Он ведет себя так же, как и другие файловые системы (например, POSIX или ГКС) в TensorFlow раза tensorflow-io пакет импортируется, а tensorflow-io автоматически регистрировать azfs схему использования.

Azure Key Storage должна предоставляться через TF_AZURE_STORAGE_KEY переменную окружения. В противном случае TF_AZURE_USE_DEV_STORAGE может быть установлен в значение True , чтобы использовать азурит эмулятор вместо:

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!

Конфигурации

Конфигурации хранилища BLOB-объектов Azure в TensorFlow всегда выполняются с помощью переменных среды. Ниже приведен полный список доступных конфигураций:

  • TF_AZURE_USE_DEV_STORAGE : Установите в 1 для использования локального эмулятора хранения для разработки соединений , таких как 'аз: //devstoreaccount1/container/file.txt. Это займет precendence над всеми другими настройками так unset с unset , чтобы использовать любое другое соединение
  • TF_AZURE_STORAGE_KEY ключ счета за счет хранения в использовании:
  • TF_AZURE_STORAGE_USE_HTTP : Установите любое значение , если вы не хотите использовать HTTPS передачи. unset с unset , чтобы использовать значение по умолчанию HTTPS
  • TF_AZURE_STORAGE_BLOB_ENDPOINT : Установить в конечную точку хранения больших двоичных объектов - по умолчанию .core.windows.net .