Google Cloud 上のデータへのアクセスを迅速かつ簡単にする TensorFlow Enterprise
Google Cloud Japan Team
※この投稿は米国時間 2019 年 10 月 31 日に、Google Cloud blog に投稿されたものの抄訳です。
AI イニシアチブにおいて、データはその中心となります。簡単に言うと、ディープ ラーニング モデルをトレーニングするには、大量のデータを収集して保存する必要があります。また、GPU や Cloud TPU などのアクセラレータが進歩し、その可用性が増すにつれ、保存場所からデータを取得してトレーニング プロセスに取り込むまでの速度がますます重要になってきています。
TensorFlow は、最もよく利用されている機械学習フレームワークの 1 つで、2015 年に Google によってオープンソース化されました。TensorFlow はあらゆるユーザーに対応しますが、特に Google Cloud にデプロイした場合は、TensorFlow の作成者によるエンタープライズ クラスのサポートとパフォーマンスのメリットを享受できます。これが最近、Google Cloud での AI 対応ビジネスを対象とした TensorFlow Enterprise の提供を開始した理由です。
この投稿では、TensorFlow Enterprise によってもたらされるメリットを、Google Cloud に保存されたデータへのアクセスの面から見ていきます。トレーニング データの保存に Cloud Storage を使用している場合は、「Cloud Storage リーダーの改善」セクションに進み、TensorFlow Enterprise によって Cloud Storage からのデータ スループットが 2 倍になる仕組みをご覧ください。データの保存に BigQuery を使用している場合は、「BigQuery リーダー」セクションに進み、TensorFlow Enterprise によって、TensorFlow から BigQuery データに直接アクセスして高スループットを実現できるようになる仕組みをご覧ください。
Cloud Storage リーダーの改善
TensorFlow Enterprise では、Cloud Storage から TensorFlow Dataset がデータを読み取る方法に改善が加えられています。この改善の効果を測るために、同じ TensorFlow コードを TensorFlow 1.14 と TensorFlow Enterprise で実行して、Cloud Storage から読み取られる 1 秒あたりの平均サンプル数を比較してみます。このコードは、単に tfrecord ファイルを読み取り、1 秒あたりのサンプル数を出力します。
出力は次のようになります。
このテストで使用するデータセットは架空の ImageNet データで、 gs://cloud-samples-data/ai-platform/fake_imagenet
から取得できます。
最初に TensorFlow 1.14 を搭載した Compute Engine VM、次に TensorFlow Enterprise を搭載した Compute Engine VM で同じコードを実行し、1 秒あたりの平均サンプル数を比較します。このテストでは、CPU 8 個、メモリ 64 GB の VM でコードを実行して、VM と同じリージョン内にあるリージョン Cloud Storage バケットから読み取りました。
テストの結果、大きな改善が認められました。
Cloud Storage からのデータ読み取り速度は、TensorFlow で提供されるさまざまなパラメータを調整することによってさらに改善できます。たとえば、前述の parallel_interleave
呼び出しを次のコードに置き換えます。
次のようなさらなる改善を確認できます。
Cloud Storage からの読み取り速度に影響を与える要素はほかにもあります。よくある間違いが、少数の大きな tfrecord ファイルではなく、多数の小さい tfrecord ファイルを Cloud Storage に保存することです。TensorFlow による Cloud Storage からのデータ読み取りのスループットを高くするには、各ファイルが 150 MB を超えるようにデータをグループ化する必要があります。
BigQuery リーダー
TensorFlow Enterprise には BigQuery リーダーが導入されているので、BigQuery からデータを直接読み取ることができます。たとえば、次のようなコードを実行できます。
BigQuery リーダーでは、データ スループットを高くするための並列データアクセス向けに、BigQuery の Storage API が使用されます。出力は次のようになります。
前述のコードでは、サンプルの各バッチは Python OrderedDict として構造化されます。そのキーは read_session
呼び出しに指定された列名、値はモデルで使用される TensorFlow テンソルです。たとえば、次のようになります。
まとめ
データを保存場所から取得して機械学習トレーニング プロセスに取り込むまでの速度は、ディープ ラーニング モデル作成者の生産性にとって、ますます重要になってきています。TensorFlow Enterprise を利用することで、パフォーマンスが最適化され、データソースへのアクセスが簡単になります。また、TensorFlow Enterprise では、ユーザーが GCP での TensorFlow ワークロードの効率性を向上させるための改善が継続してサポートされます。
詳細は、TensorFlow Enterprise についての Google のサマリーブログをご覧ください。ご利用を開始するには、TensorFlow Enterprise にアクセスしてください。