ホーム » TensorFlow » TensorFlow : Deploy : S3 上の TensorFlow

TensorFlow : Deploy : S3 上の TensorFlow

TensorFlow : Deploy : S3 上の TensorFlow (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 11/22/2018 (v1.12.0)

* 本ページは、TensorFlow の本家サイトの Deploy – TensorFlow on S3 を翻訳した上で
適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

TensorFlow は S3 からのデータの読み込み / S3 へのデータの書き出しをサポートします。S3 はオブジェクト・ストレージ API で近くに偏在し、分散訓練のように複数のアクターによりデータがアクセスされなければならない状況で役立ちます。

このドキュメントは必要なセットアップを教え導いて、利用方法上の例を提供します。

 

Configuration

貴方の TensorFlow プログラムで S3 上のデータを読み書きするとき、その挙動は各種の環境の変数により制御できます :

  • AWS_REGION: デフォルトでは、S3 のために regional エンドポイントが使用され、リージョンは AWS_REGION により制御されます。AWS_REGION が指定されない場合には、us-east-1 が使用されます。
  • S3_ENDPOINT: エンドポイントは指定された S3_ENDPOINT で明示的にオーバーライド可能です。
  • S3_USE_HTTPS: S3_USE_HTTPS=0 でない限りは、デフォルトでは S3 へのアクセスに HTTPS が使用されます。
  • S3_VERIFY_SSL: HTTPS が使用される場合、SSL verification は S3_VERIFY_SSL=0 で無効にされます。

パブリックにアクセス可能ではないバケットのオブジェクトを読み書きするためには、AWS credentials が次の方法の一つを通して提供されなければなりません :

  • credentials をローカルシステムの AWS credentials profile ファイルに設定します、Linux, macOS あるいは Unix 上の ~/.aws/credentials か、Windows の C:\Users\USERNAME\.aws\credentials に位置します。
  • AWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEY 環境変数を設定します。
  • TensorFlow が EC2 インスタンス上で配備される場合、IAM ロールを指定してから EC2 インスタンスにそのロールへのアクセスを与えます。

 

Example セットアップ

上の情報を使用して、次の環境変数を設定することにより TensorFlow を S3 エンドポイントと通信するために configure できます :

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 が使用可能です。

 

スモークテスト

セットアップをテストするためには、stat a file :

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

これに類似の出力を見るはずです :

<tensorflow.python.pywrap_tensorflow_internal.FileStatistics; proxy of <Swig Object of type 'tensorflow::FileStatistics *' at 0x10c2171b0> >

 

データを読む

データを読むとき、読み書きするために使用しているファイルパスを S3 パスに変更します。例えば :

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

 

Tensorflow ツール

Tensorboard やモデル serving のような、多くの TensorFlow ツールもまた引数として S3 URL を取れます :

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 を使用して end-to-end ワークフローを可能にします。

 

S3 エンドポイント実装

S3 は Amazon により創案されましたが、その S3 API は人気が広まり複数の実装を持ちます。次の実装が基本的な互換性テストを合格しています :

 

以上


AI導入支援 #2 ウェビナー

スモールスタートを可能としたAI導入支援   Vol.2
[無料 WEB セミナー] [詳細]
「画像認識 AI PoC スターターパック」の紹介
既に AI 技術を実ビジネスで活用し、成果を上げている日本企業も多く存在しており、競争優位なビジネスを展開しております。
しかしながら AI を導入したくとも PoC (概念実証) だけでも高額な費用がかかり取組めていない企業も少なくないようです。A I導入時には欠かせない PoC を手軽にしかも短期間で認知度を確認可能とするサービの紹介と共に、AI 技術の特性と具体的な導入プロセスに加え運用時のポイントについても解説いたします。
日時:2021年10月13日(水)
会場:WEBセミナー
共催:クラスキャット、日本FLOW(株)
後援:働き方改革推進コンソーシアム
参加費: 無料 (事前登録制)
人工知能開発支援
◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com