ذخیره سازی حباب لاجوردی با TensorFlow

مشاهده در TensorFlow.org در Google Colab اجرا شود مشاهده منبع در GitHub دانلود دفترچه یادداشت

بررسی اجمالی

این آموزش نشان می دهد که چگونه به استفاده خواندن و نوشتن فایل ها بر روی لاجورد لکه ذخیره سازی با TensorFlow، از طریق لاجورد ادغام فایل سیستم TensorFlow IO است.

یک حساب ذخیره سازی Azure برای خواندن و نوشتن فایل ها در Azure Blob Storage مورد نیاز است. کلید ذخیره سازی Azure باید از طریق متغیر محیطی ارائه شود:

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

نام حساب ذخیره سازی و نام کانتینر بخشی از نام فایل uri است:

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

در این آموزش، برای نسخه ی نمایشی اهداف شما می توانید به صورت اختیاری راه اندازی آزوریت است که یک شبیه ساز لاجورد ذخیره سازی. با شبیه ساز Azurite امکان خواندن و نوشتن فایل ها از طریق رابط ذخیره سازی Azure blob با TensorFlow وجود دارد.

راه اندازی و استفاده

بسته های مورد نیاز را نصب کنید و زمان اجرا را مجددا راه اندازی کنید

try:
  %tensorflow_version 2.x 
except Exception:
  pass

!pip install tensorflow-io

نصب و راه اندازی Azurite (اختیاری)

در صورتی که یک حساب ذخیره‌سازی Azure در دسترس نباشد، برای نصب و راه‌اندازی Azurite که رابط 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

خواندن و نوشتن فایل ها در Azure Storage با TensorFlow

در زیر نمونه ای از خواندن و نوشتن فایل ها در Azure Storage با API TensorFlow است.

این رفتار به همان شیوه به عنوان سیستم های دیگر فایل (به عنوان مثال، POSIX یا GCS) در TensorFlow یک بار tensorflow-io بسته وارد شده است، به عنوان tensorflow-io به طور خودکار ثبت نام azfs طرح برای استفاده.

لاجورد ذخیره سازی کلید باید از طریق ارائه 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!

پیکربندی

پیکربندی Azure Blob Storage در TensorFlow همیشه از طریق متغیرهای محیطی انجام می شود. در زیر لیست کاملی از تنظیمات موجود است:

  • TF_AZURE_USE_DEV_STORAGE : مجموعه ای به 1 استفاده کنید محلی شبیه ساز ذخیره سازی توسعه برای اتصال به شبکه مانند AZ: //devstoreaccount1/container/file.txt. این precendence بیش از همه تنظیمات دیگر را به طوری unset به استفاده از هر گونه ارتباط دیگر
  • TF_AZURE_STORAGE_KEY کلیدی حساب برای حساب ذخیره سازی در استفاده:
  • TF_AZURE_STORAGE_USE_HTTP : تنظیم کنید تا هر مقدار اگر شما نمی خواهید به استفاده از https انتقال. unset به استفاده از پیش فرض از HTTPS
  • TF_AZURE_STORAGE_BLOB_ENDPOINT : تنظیم کنید تا نقطه پایانی ذخیره سازی لکه - به طور پیش فرض است .core.windows.net .