TensorFlow ile Azure blob depolama

TensorFlow.org'da görüntüleyin Google Colab'da çalıştırın Kaynağı GitHub'da görüntüleyin Not defterini indir

genel bakış

Bu eğitimde gösterileri nasıl okuma ve yazma dosyaları kullanmak Azure Blob Depolama TensorFlow IO Azure dosya sistemi entegrasyonu ile, TensorFlow ile.

Azure Blob Storage üzerinde dosya okumak ve yazmak için bir Azure depolama hesabı gerekir. Azure Depolama Anahtarı, çevresel değişken aracılığıyla sağlanmalıdır:

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

Depolama hesabı adı ve kapsayıcı adı, uri dosya adının bir parçasıdır:

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

Bu eğitimde, demo amaçlı yapabilirsiniz isteğe kurulum Azurit bir Azure Depolama emülatörü. Azurite öykünücüsü ile TensorFlow ile Azure blob depolama arabirimi üzerinden dosya okumak ve yazmak mümkündür.

Kurulum ve kullanım

Gerekli paketleri kurun ve çalışma zamanını yeniden başlatın

try:
  %tensorflow_version 2.x 
except Exception:
  pass

!pip install tensorflow-io

Azurite'yi kurun ve kurun (isteğe bağlı)

Bir Azure Depolama Hesabının mevcut olmaması durumunda, Azure Depolama arabirimine öykünen Azurite yüklemek ve kurmak için aşağıdakiler gereklidir:

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

TensorFlow ile dosyaları Azure Storage'a okuyun ve yazın

Aşağıda, TensorFlow'un API'si ile Azure Storage'a dosya okuma ve yazma örneği verilmiştir.

Bir zamanlar TensorFlow diğer dosya sistemleri (örneğin, POSIX veya GCS) ile aynı şekilde çalışır tensorflow-io olarak paket içe, tensorflow-io otomatik kayıt olacak azfs kullanılmak üzere şeması.

Azure Depolama Anahtar yoluyla sağlanmalıdır TF_AZURE_STORAGE_KEY çevre değişkeni. Aksi TF_AZURE_USE_DEV_STORAGE ayarlı olabilir True yerine Azurit emülatör kullanmak:

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!

konfigürasyonlar

TensorFlow'daki Azure Blob Storage yapılandırmaları her zaman çevresel değişkenler aracılığıyla yapılır. Aşağıda mevcut konfigürasyonların tam listesi bulunmaktadır:

  • TF_AZURE_USE_DEV_STORAGE : ': //devstoreaccount1/container/file.txt az' 1'e ayarla gibi bağlantılar için yerel kalkınma depolama emülatör kullanmak. Böylece bu diğer tüm ayarları üzerinde precendence alacak unset başka bağlantı kullanmak
  • TF_AZURE_STORAGE_KEY : Kullanılan depolama hesabı için Hesap anahtar
  • TF_AZURE_STORAGE_USE_HTTP : Https'leri transferi kullanmak istemiyorsanız herhangi bir değere ayarlayın. unset https varsayılan kullanmak
  • TF_AZURE_STORAGE_BLOB_ENDPOINT : blob depolama bitiş noktasına ayarlayın - varsayılan değer .core.windows.net .