Penyimpanan gumpalan Azure dengan TensorFlow

Lihat di TensorFlow.org Jalankan di Google Colab Lihat sumber di GitHub Unduh buku catatan

Ringkasan

Menunjukkan tutorial ini bagaimana menggunakan membaca dan menulis file di Azure Blob Storage dengan TensorFlow, melalui integrasi sistem file TensorFlow IO Azure.

Akun penyimpanan Azure diperlukan untuk membaca dan menulis file di Azure Blob Storage. Kunci Penyimpanan Azure harus disediakan melalui variabel lingkungan:

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

Nama akun penyimpanan dan nama wadah adalah bagian dari nama file uri:

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

Dalam tutorial ini, untuk tujuan demo Anda bisa secara opsional pengaturan Azurite yang merupakan emulator Azure Storage. Dengan emulator Azurite, Anda dapat membaca dan menulis file melalui antarmuka penyimpanan gumpalan Azure dengan TensorFlow.

Pengaturan dan penggunaan

Instal paket yang diperlukan, dan mulai ulang runtime

try:
  %tensorflow_version 2.x 
except Exception:
  pass

!pip install tensorflow-io

Instal dan atur Azurite (opsional)

Jika Akun Penyimpanan Azure tidak tersedia, berikut ini diperlukan untuk menginstal dan menyiapkan Azurite yang mengemulasi antarmuka Penyimpanan 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

Membaca dan menulis file ke Azure Storage dengan TensorFlow

Berikut adalah contoh membaca dan menulis file ke Azure Storage dengan API TensorFlow.

Berperilaku dengan cara yang sama seperti sistem file lain (misalnya, POSIX atau GCS) di TensorFlow sekali tensorflow-io paket diimpor, seperti tensorflow-io otomatis akan mendaftar azfs skema untuk digunakan.

The Azure Storage Key harus disediakan melalui TF_AZURE_STORAGE_KEY variabel lingkungan. Jika tidak TF_AZURE_USE_DEV_STORAGE bisa diatur untuk True untuk menggunakan emulator Azurite gantinya:

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!

Konfigurasi

Konfigurasi Azure Blob Storage di TensorFlow selalu dilakukan melalui variabel lingkungan. Di bawah ini adalah daftar lengkap konfigurasi yang tersedia:

  • TF_AZURE_USE_DEV_STORAGE : Set ke 1 untuk menggunakan emulator penyimpanan pembangunan daerah untuk koneksi seperti 'az: //devstoreaccount1/container/file.txt'. Ini akan membawa precendence atas semua pengaturan lain sehingga unset untuk menggunakan koneksi lain
  • TF_AZURE_STORAGE_KEY kunci Akun untuk akun penyimpanan digunakan:
  • TF_AZURE_STORAGE_USE_HTTP : Set ke nilai apapun jika Anda tidak ingin menggunakan https transfer. unset untuk menggunakan default https
  • TF_AZURE_STORAGE_BLOB_ENDPOINT : Atur ke titik akhir penyimpanan gumpalan - default adalah .core.windows.net .