تخزين البيانات الثنائية الكبيرة Azure مع TensorFlow

عرض على TensorFlow.org تشغيل في Google Colab عرض المصدر على جيثب تحميل دفتر

ملخص

وهذا يدل على تعليمي كيفية استخدام القراءة والكتابة الملفات على أزور النقطة التخزين مع TensorFlow، من خلال أزور التكامل نظام الملفات TensorFlow IO ل.

يلزم وجود حساب تخزين Azure لقراءة الملفات وكتابتها على مساحة تخزين Azure Blob. يجب توفير مفتاح تخزين 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 باستخدام واجهة برمجة تطبيقات 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 في TensorFlow من خلال المتغيرات البيئية. فيما يلي قائمة كاملة بالتكوينات المتاحة:

  • TF_AZURE_USE_DEV_STORAGE : تعيين إلى 1 لاستخدام محاكي تخزين التنمية المحلية للاتصالات مثل 'من الألف إلى الياء: //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 .