专栏名称: TensorFlow
Google官方账号,分享人工智能和TensorFlow相关的最新消息、技术资源、活动和实践案例。联系我们:[email protected]
目录
相关文章推荐
爱可可-爱生活  ·  //@爱可可-爱生活:欢迎参与~-20250 ... ·  5 天前  
爱可可-爱生活  ·  本文提出了REST-PG框架,通过结合推理增 ... ·  5 天前  
51好读  ›  专栏  ›  TensorFlow

TensorFlow 支持向 S3 读写数据

TensorFlow  · 公众号  · AI  · 2019-02-15 11:17

正文

TensorFlow 支持向 S3 读写数据。S3 是一种几乎无处不在的对象存储 API,在数据必须由多个参与者访问的情况下(例如在分布式训练中),S3 可以提供帮助。


本文档将指导您完成所需的设置,并提供有关用法的示例。



配置

当使用 TensorFlow 程序在 S3 上读取或写入数据时,可以通过各种环境变量去控制:

  • AWS_REGION:默认情况下,区域端点用于 S3,区域由 AWS_REGION 控制。如果未指定 AWS_REGION,则使用 us-east-1

  • S3_ENDPOINT:可以使用指定的 S3_ENDPOINT 显式覆盖端点

  • S3_USE_HTTPS:默认情况下,HTTPS 用于访问 S3,除非 S3_USE_HTTPS=0

  • S3_VERIFY_SSL:如果使用 HTTPS,则可以使用 S3_VERIFY_SSL=0 禁用 SSL 验证

 

要读取或写入不可公开访问的 bucket 中的对象,必须通过以下方法之一提供 AWS credentials(凭证):

  • 在本地系统上的 AWS credentials 配置文件中设置 credentials,位于以下位置:在 linux,macOS 或 Unix上的 ~/.aws/credentials 文件中,或 Windows 上的 :\Users\USERNAME\.aws\credentials 文件中

  • 设置 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 环境变量

  • 如果在 EC2 实例上部署 TensorFlow,请指定 IAM 角色,然后授予 EC2 实例对该角色的访问权限



配置说明

使用上述信息,我们可以通过设置以下环境变量来配置 TensorFlow 与 S3 端点进行通信:

AWS_ACCESS_KEY_ID=XXXXX      

# Credentials only needed if connecting to a private endpoint


AWS_SECRET_ACCESS_KEY=XXXXX


AWS_REGION=us-east-1             

# Region for the S3 bucket, this is not always needed. Default is us-east-1.


S3_ENDPOINT=s3.us-east-1.amazonaws.com        

# The S3 API Endpoint to connect to. This is specified in a HOST:PORT format.


S3_USE_HTTPS=1                    

# Whether or not to use HTTPS. Disable with 0.


S3_VERIFY_SSL=1                    

# If HTTPS is used, controls if SSL should be enabled. Disable with 0.



用法

设置完成后,TensorFlow 可以通过多种方式与 S3 进行交互。在任何有 TensorFlow IO 功能的地方,都可以使用 S3 URL。

 

Smoke Test

要测试您的设置,请统计文件:

from tensorflow.python.lib.io import file_io
print file_io.stat('s3://bucketname/path/')


您应该会看到与此类似的输出:

 >


读取数据

读取数据时,请更改用于将数据读入 S3 路径的文件路径。例如:

filenames = ["s3://bucketname/path/to/file1.tfrecord",
             "s3://bucketname/path/to/file2.tfrecord"]
dataset = tf.data.TFRecordDataset(filenames)


TensorFlow 工具

许多 TensorFlow 工具,如 Tensorboard 或 model service,也可以将 S3 URLS 作为参数:

tensorboard --logdir s3://bucketname/path/to/model/
tensorflow_model_server --port=9000 --model_name=model --model_base_path=s3://bucketname/path/to/model/export/


这使得利用 S3 来满足所有数据从一端到另一端需求的工作流程得以实现。



S3 端点实现

S3 是由亚马逊发明的,同时 S3 API 已经普及并且有几个实现。以下实现已通过基本兼容性测试:

  • 亚马逊 S3(https://aws.amazon.com/s3/)

  • 谷歌存储(https://cloud.google.com/storage/docs/interoperability)

  • Minio(https://www.minio.io/kubernetes.html)



更多 AI 相关阅读: