Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
tensorflow
GitHub Repository: tensorflow/docs-l10n
Path: blob/master/site/es-419/io/tutorials/azure.ipynb
25118 views
Kernel: Python 3
#@title Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.

Almacenamiento de blobs de Azure con TensorFlow

Advertencia: Además de los paquetes de Python, este cuaderno usa npm install --user para instalar los paquetes. Tenga cuidado al ejecutar localmente.

Descripción general

Este tutorial muestra cómo usar archivos de lectura y escritura en Azure Blob Storage con TensorFlow, a través de la integración del sistema de archivos Azure de TensorFlow IO.

Se necesita una cuenta de Azure Storage para leer y escribir archivos en Azure Blob Storage. La clave de Azure Storage se debe proporcionar a través de la variable del entorno:

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

El nombre de la cuenta de almacenamiento y el nombre del contenedor son parte del nombre de archivo uri:

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

En este tutorial, para fines de demostración, puede configurar opcionalmente Azurite, que es un emulador de Azure Storage. Con el emulador de Azurite es posible leer y escribir archivos a través de la interfaz de Azure Blob Storage con TensorFlow.

Preparación y uso

Instale los paquetes necesarios y reinicie el tiempo de ejecución

try: %tensorflow_version 2.x except Exception: pass !pip install tensorflow-io
TensorFlow 2.x selected. Collecting tensorflow-io Downloading https://files.pythonhosted.org/packages/c0/d0/c5d7adce72c6a6d7c9a59c062150f60b5404c706578a0922f7dc2835713c/tensorflow_io-0.12.0-cp36-cp36m-manylinux2010_x86_64.whl (20.1MB) |████████████████████████████████| 20.1MB 42.7MB/s Requirement already satisfied: tensorflow<2.2.0,>=2.1.0 in /tensorflow-2.1.0/python3.6 (from tensorflow-io) (2.1.0) Requirement already satisfied: opt-einsum>=2.3.2 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (3.1.0) Requirement already satisfied: tensorflow-estimator<2.2.0,>=2.1.0rc0 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (2.1.0) Requirement already satisfied: grpcio>=1.8.6 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (1.27.2) Requirement already satisfied: wheel>=0.26; python_version >= "3" in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (0.34.2) Requirement already satisfied: google-pasta>=0.1.6 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (0.1.8) Requirement already satisfied: tensorboard<2.2.0,>=2.1.0 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (2.1.0) Requirement already satisfied: wrapt>=1.11.1 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (1.12.0) Requirement already satisfied: scipy==1.4.1; python_version >= "3" in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (1.4.1) Requirement already satisfied: protobuf>=3.8.0 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (3.11.3) Requirement already satisfied: termcolor>=1.1.0 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (1.1.0) Requirement already satisfied: absl-py>=0.7.0 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (0.9.0) Requirement already satisfied: keras-applications>=1.0.8 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (1.0.8) Requirement already satisfied: astor>=0.6.0 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (0.8.1) Requirement already satisfied: gast==0.2.2 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (0.2.2) Requirement already satisfied: keras-preprocessing>=1.1.0 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (1.1.0) Requirement already satisfied: numpy<2.0,>=1.16.0 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (1.18.1) Requirement already satisfied: six>=1.12.0 in /tensorflow-2.1.0/python3.6 (from tensorflow<2.2.0,>=2.1.0->tensorflow-io) (1.14.0) Requirement already satisfied: setuptools>=41.0.0 in /tensorflow-2.1.0/python3.6 (from tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (45.2.0) Requirement already satisfied: markdown>=2.6.8 in /tensorflow-2.1.0/python3.6 (from tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (3.2.1) Requirement already satisfied: google-auth<2,>=1.6.3 in /tensorflow-2.1.0/python3.6 (from tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (1.11.2) Requirement already satisfied: requests<3,>=2.21.0 in /tensorflow-2.1.0/python3.6 (from tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (2.22.0) Requirement already satisfied: werkzeug>=0.11.15 in /tensorflow-2.1.0/python3.6 (from tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (1.0.0) Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /tensorflow-2.1.0/python3.6 (from tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (0.4.1) Requirement already satisfied: h5py in /tensorflow-2.1.0/python3.6 (from keras-applications>=1.0.8->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (2.10.0) Requirement already satisfied: cachetools<5.0,>=2.0.0 in /tensorflow-2.1.0/python3.6 (from google-auth<2,>=1.6.3->tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (4.0.0) Requirement already satisfied: rsa<4.1,>=3.1.4 in /tensorflow-2.1.0/python3.6 (from google-auth<2,>=1.6.3->tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (4.0) Requirement already satisfied: pyasn1-modules>=0.2.1 in /tensorflow-2.1.0/python3.6 (from google-auth<2,>=1.6.3->tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (0.2.8) Requirement already satisfied: idna<2.9,>=2.5 in /tensorflow-2.1.0/python3.6 (from requests<3,>=2.21.0->tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (2.8) Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /tensorflow-2.1.0/python3.6 (from requests<3,>=2.21.0->tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (3.0.4) Requirement already satisfied: certifi>=2017.4.17 in /tensorflow-2.1.0/python3.6 (from requests<3,>=2.21.0->tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (2019.11.28) Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /tensorflow-2.1.0/python3.6 (from requests<3,>=2.21.0->tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (1.25.8) Requirement already satisfied: requests-oauthlib>=0.7.0 in /tensorflow-2.1.0/python3.6 (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (1.3.0) Requirement already satisfied: pyasn1>=0.1.3 in /tensorflow-2.1.0/python3.6 (from rsa<4.1,>=3.1.4->google-auth<2,>=1.6.3->tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (0.4.8) Requirement already satisfied: oauthlib>=3.0.0 in /tensorflow-2.1.0/python3.6 (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard<2.2.0,>=2.1.0->tensorflow<2.2.0,>=2.1.0->tensorflow-io) (3.1.0) Installing collected packages: tensorflow-io Successfully installed tensorflow-io-0.12.0

Instalar y preparar Azurite (opcional)

En caso de que una cuenta de Azure Storage no esté disponible, se necesita lo siguiente para instalar y configurar Azurite que emula la interfaz de Azure Storage:

!npm install azurite@2.7.0
npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142 npm 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. + [email protected] 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

Leer y escribir archivos en Azure Storage con TensorFlow

El siguiente es un ejemplo de lectura y escritura de archivos en Azure Storage con la API de TensorFlow.

Se comporta de la misma manera que otros sistemas de archivos (por ejemplo, POSIX o GCS) en TensorFlow una vez que se importa el paquete tensorflow-io, ya que tensorflow-io registrará automáticamente el esquema azfs para su uso.

La clave de Azure Storage se debe proporcionar a través de la variable del entorno TF_AZURE_STORAGE_KEY. De lo contrario, TF_AZURE_USE_DEV_STORAGE podría establecerse en True para usar el emulador Azurite en su lugar:

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!

Configuraciones

Las configuraciones de Azure Blob Storage en TensorFlow siempre se realizan a través de variables del entorno. A continuación se muestra una lista completa de las configuraciones disponibles:

  • TF_AZURE_USE_DEV_STORAGE: se debe establecer en 1 para usar el emulador de almacenamiento de desarrollo local para conexiones como 'az://devstoreaccount1/container/file.txt'. Esto tendrá prioridad sobre todas las demás configuraciones, por eso se puede anular (unset) para usar cualquier otra conexión.

  • TF_AZURE_STORAGE_KEY: clave de cuenta para la cuenta de almacenamiento en uso

  • TF_AZURE_STORAGE_USE_HTTP: se debe establecer en cualquier valor si no se desea usar la transferencia https. Se puede anular (unset) para usar el valor predeterminado https

  • TF_AZURE_STORAGE_BLOB_ENDPOINT: se debe establecer en el punto final del almacenamiento de blobs; el valor predeterminado es .core.windows.net.