ที่เก็บข้อมูล Azure Blob พร้อม TensorFlow

ดูบน TensorFlow.org ทำงานใน Google Colab ดูแหล่งที่มาบน GitHub ดาวน์โหลดโน๊ตบุ๊ค

ภาพรวม

นี้แสดงให้เห็นว่าการสอนวิธีการใช้อ่านและเขียนไฟล์บน Azure Blob การจัดเก็บข้อมูล ที่มี TensorFlow ผ่านการบูรณาการระบบแฟ้ม TensorFlow IO ของ Azure

จำเป็นต้องมีบัญชีที่เก็บข้อมูล Azure เพื่ออ่านและเขียนไฟล์บน Azure Blob Storage ควรจัดเตรียม Azure Storage Key ผ่านตัวแปรสภาพแวดล้อม:

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

ชื่อบัญชีการจัดเก็บและชื่อคอนเทนเนอร์เป็นส่วนหนึ่งของชื่อไฟล์ uri:

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

ในการกวดวิชานี้เพื่อวัตถุประสงค์ในการสาธิตคุณสามารถเลือกติดตั้ง Azurite ซึ่งเป็นโปรแกรมจำลอง Azure การจัดเก็บข้อมูล ด้วยโปรแกรมจำลอง Azurite คุณสามารถอ่านและเขียนไฟล์ผ่านอินเทอร์เฟซที่เก็บข้อมูล Azure blob ด้วย TensorFlow

การตั้งค่าและการใช้งาน

ติดตั้งแพ็คเกจที่จำเป็น และรีสตาร์ทรันไทม์

try:
  %tensorflow_version 2.x 
except Exception:
  pass

!pip install tensorflow-io

ติดตั้งและตั้งค่า Azurite (ไม่บังคับ)

ในกรณีที่ไม่มีบัญชี Azure Storage จำเป็นต้องติดตั้งและตั้งค่า 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 ใช้จำลอง Azurite แทน:

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