Amazon Web Services ブログ

Category: Tensorflow on AWS

Amazon EKS が EC2 Inf1 インスタンスのサポートを開始

Amazon Elastic Kubernetes Service (EKS) は、短期間で機械学習ワークロードのための主要な選択肢になりました。開発者の俊敏性と Kubernetes のスケーラビリティを組み合わせており、AWS で利用可能な Amazon Elastic Compute Cloud (EC2) インスタンスタイプの幅広い選択肢 (C5、P3、G4 ファミリーなど) からお選びいただけます。 モデルがより高度になるにつれ、高スループットで予測を素早く提供するためにハードウェアアクセラレーションがますます求められています。本日より、AWS のお客様は、Amazon Elastic Kubernetes Service で Amazon EC2 Inf1 インスタンスを使用できるようになりました。これにより、クラウドでの高いパフォーマンスを最小限の予測コストで実現できます。 EC2 Inf1 インスタンス入門 Inf1 インスタンスは、AWS re:Invent 2019 でリリースされました。これらは AWS が一から構築したカスタムチップの AWS Inferentia を使用しており、機械学習の推論ワークロードが加速します。 Inf1 インスタンスは複数のサイズで利用可能で、1、4、または 16 の AWS Inferentia チップがあり、最大 100 Gbps のネットワーク帯域幅と最大 19 Gbps の EBS […]

Read More

Kubeflow Pipelines 用 Amazon SageMaker コンポーネントの紹介

本日、Kubeflow Pipelines 用の Amazon SageMaker コンポーネントを発表しました。今回の記事では、Kubeflow Pipelines SDK を使用しながら、Amazon SageMaker コンポーネントにより最初の Kubeflow パイプラインを構築する方法をご説明します。 Kubeflow は、カスタム ML パイプラインを構築しようとする Kubernetes ユーザーに良く使用されている、オープンソースの機械学習 (ML) ツールキットです。  Kubeflow Pipelines は Kubeflow のアドオン機能であり、ポータブルかつスケーラブルなエンドツーエンドの ML ワークフローのために、構築およびデプロイの手段をユーザーに提供します。しかしながら、この Kubeflow Pipelines をデータサイエンティストが使用する際には、データラベリングのワークフローやモデルチューニングなど、生産性向上のためのツールを、ご自身で追加で実装する必要があります。 さらに、Kubeflow Pipelines を使用する ML Ops チームには、CPU や GPU インスタンスを含む Kubernetes クラスターの管理が必要であり、投資から得る収益を最大化するために、それらの利用率を常に高く維持することも求められます。データサイエンスチーム全体でクラスターの利用率を最大化することは簡単ではなく、ML Ops チームに余計な運用経費を負担させることになります。たとえば、GPU インスタンスの利用は深層学習トレーニングや推論といったような要求の厳しいタスクに制限し、CPU インスタンスには、データの前処理や Kubeflow Pipelines のコントロールプレーンなど要求レベルの低いタスクを受け持たせる、といったことが必要です。 その代替手段である Kubeflow Pipelines 向けの Amazon SageMaker コンポーネントにより、ユーザーはパワフルな […]

Read More

Amazon SageMaker での全体的な TensorFlow 2 ワークフローの作成

深層学習プロジェクトの全体的なライフサイクルを管理することには課題が伴います。特に、複数の別々なツールやサービスを使用する場合はそれが顕著です。たとえば、データの前処理、トレーニングと推論用コードのプロトタイピング、フルスケールでのモデルトレーニングとチューニング、モデルのデプロイ、そしてそれらすべてを稼働環境向けにオーケストレーションするためのワークフローの自動化などには、それぞれ異なるツールが使われるでしょう。ツールの入れ替えで手間がかかると、プロジェクトが遅延しコストは増大しがちです。今回のブログ記事では、Amazon SageMaker を使い、深層学習プロジェクトの全体的なライフサイクルを効率的に管理する方法をご紹介します。ここでは、サンプルコードのフレームワークとして TensorFlow 2 を使いますが、解説しているコンセプトは、他のフレームワークにも基本的に適用可能です。 また記事内では、関連したサンプルノートブックを取り上げていますが、これも、1 時間以内に実行が可能なものであり、解説しているすべての機能をお試しいただくことができます。詳細については、GitHub リポジトリをご参照ください。 Amazon SageMaker ワークフローの概要 TensorFlow 2 あるいは他のフレームワークを使用するデータサイエンスプロジェクトでは、データセットの取得、調査、前処理が、必ず作業の出発点となります。Amazon SageMaker ワークフローについて言えば、データの調査は一般的にノートブック内で行われます。こういったノートブックは、通常、就業時間帯のほとんどで実行されるため、比較的小型でさほどパワーがなく、料金も低いインスタンスタイプに適しています。 したがって、データセットが小さめな場合を除けば、ノートブックはフルスケールのデータ処理やモデルトレーニング、そして推論などに最適とは言えません。通常これらのタスクでは、相当量の並列コンピューティングリソースが必要となるため、ノートブックでの実行は現実的とは言えない訳です。一方で、サイズが最適でよりパワーがあり、これらのタスクが迅速に完了できる個別のインスタンスによるクラスターに、Amazon SageMaker のスピンアップ機能を使用すれば、かなり実践的でコスト効率も良くできます。この場合の料金は秒単位で発生し、各インスタンスはジョブの完了時点で Amazon SageMaker により自動的にシャットダウンされます。結果的に、Amazon SageMaker での通常のワークフローでの最も頻度の高い課金は、パワーがあり高価な GPU や高速化されたコンピューティングインスタンスではなく、データ調査やプロトタイピングを行う比較的低料金のノートブックで発生します。 プロトタイピングが完了すれば、自動化されたワークフローにより、作業はノートブックの上位へと移行されます。頑強かつ反復可能な手法でモデルのデプロイを行うワークフロー全体をオーケストレーションするためには、自動化されたパイプラインが不可欠です。そして、Amazon SageMaker では、このソリューションがネイティブに用意されています。この記事内の以降のセクションにおいて、プロジェクトライフサイクルでの各ステージで実装する、Amazon SageMaker のさまざまな機能をご紹介していきます。 Amazon SageMaker Processing によるデータ変換 Amazon SageMaker Processing は、ノートブックから分離されており適切なサイズで管理されたクラスターでの、大規模なデータセットの前処理に役立ちます。Amazon SageMaker Processing では、用意されたたサポートにより、Scikit-learn がすぐに使えます。また、他のコンテナ化されたテクノロジーもサポートしています。たとえば、Amazon SageMaker Processing の中で、機能変換のために一時的な Apache Spark クラスターを起動できます。 Amazon SageMaker Processing で Scikit-learn […]

Read More

Amazon SageMaker で TensorFlow を使用して ALBERT をトレーニングし、自然言語処理を行う

re:Invent 2019 で、AWS は、BERT (自然言語処理) および Mask-RCNN (オブジェクト検出) という 2 つの一般的な機械学習 (ML) モデルに対して、クラウドで最速のトレーニング時間を叩き出したところを披露しました。BERT を 1 時間でトレーニングするために、基盤となるインフラストラクチャ、ネットワーク、ML フレームワークを改善することにより、効率的に 2,048 の NVIDIA V100 GPU にスケールアウトしました。 今日、当社は最適化されたトレーニングコードを ALBERT (A Lite BERT) にオープンソーシングしています。ALBERT は、業界のベンチマークで最先端のパフォーマンスを実現しながら、1.7 倍の速さで安価なトレーニングを実現する強力な BERT ベースの言語モデルです。 この記事では、Amazon SageMaker で ALBERT という高速で小型の高品質モデルをトレーニングする方法を示します。ALBERT は、ML モデルの構築、トレーニング、調整、デプロイを容易にするフルマネージドサービスです。 これは新しいモデルではありませんが、TensorFlow 2 の最初の効率的な分散 GPU 実装です。AWS トレーニングスクリプトを使用して、単一ノードトレーニングと分散トレーニングの両方で、Amazon SageMaker の p3dn インスタンスと g4dn インスタンスで ALBERT をトレーニングできます。スクリプトは、混合精度トレーニングと加速線形代数を使用して、24 時間以内にトレーニングを完了します (このような最適化を使用しない場合の 5 […]

Read More

PyTorch のオープンソースモデルサーバー、TorchServe を発表

PyTorch は、ディープラーニングで最も人気のあるオープンソースライブラリの 1 つです。開発者と研究者は、モデルの構築とトレーニングにおいて享受できる柔軟性を特に重宝しています。しかし、これはストーリーの半分にすぎず、本番環境でのモデルのデプロイと管理は、機械学習プロセスの最も困難な部分であることが多々あります。オーダーメイドの予測 API の構築、それらのスケーリング、保護などがその厄介な部分です。 モデルのデプロイプロセスを簡略化する 1 つの方法は、モデルサーバー、つまり、本番環境で機械学習予測を行うために特別に設計された既製のウェブアプリケーションを使用することです。モデルサーバーを使用すると、1 つまたは複数のモデルを簡単に読み込むことができ、スケーラブルなウェブサーバーに基づく予測 API が自動的に作成されます。また、予測リクエストに対して前処理と後処理のコードを実行することもできます。最後に忘れてならないのが、モデルサーバーは、ログ記録、モニタリング、セキュリティなどの生産に不可欠な機能も提供している点です。一般的なモデルサーバーには、TensorFlow Serving と Multi Model Server があります。 今日、TorchServe を発表できることをとても嬉しく思います。これは、カスタムコードを記述することなく、トレーニングされた PyTorch モデルを大規模かつ簡単にデプロイできる PyTorch のモデルサービングライブラリです。 TorchServe のご紹介 TorchServe は AWS と Facebook 間のコラボレーションであり、PyTorch オープンソースプロジェクトの一部として利用できます。プロジェクトの開始方法に興味がある場合は、Github で初期の RFC を読むことができます。 TorchServe を使用すると、PyTorch ユーザーは、カスタムコードを記述することなく、モデルをより迅速に本番環境に導入できるようになります。低レイテンシーの予測 API の提供に加えて、TorchServe は、オブジェクト検出やテキスト分類などの最も一般的なアプリケーションのデフォルトハンドラーも埋め込んでいます。さらに、TorchServe には、アプリケーション統合のためのマルチモデルの提供、A/B テストのモデルバージョン管理、モニタリング指標、RESTful エンドポイントが含まれます。ご想像のとおり、TorchServe は、Amazon SageMaker、コンテナサービス、Amazon Elastic Compute Cloud (EC2) などの機械学習環境をサポートしています。 一部のお客様はすでに TorchServe のメリットを享受しています。 […]

Read More

Amazon SageMaker を使用した分散型 TensorFlow トレーニングの実行

TensorFlow は、複数のホストで複数の GPU を使用した分散型トレーニングを必要とするヘビーウェイトなディープニューラルネットワーク (DNN) の開発に広く使用されるオープンソースの機械学習 (ML) ライブラリです。Amazon SageMaker は、アクティブラーニングを使用したデータのラベル付けから、モデルの分散型トレーニング、トレーニングの進捗状況のモニタリング、訓練されたモデルの自動スケーリング可能な RESTful サービスとしてのデプロイメント、並列的な ML 実験の一元管理までの ML ワークフローをシンプル化するマネージドサービスです。 この記事では、Amazon SageMaker を使用した分散型 TensorFlow トレーニングに注目していきます。 コンセプトの概要 この記事における分散型トレーニングコンセプトの多くは、さまざまなタイプの TensorFlow モデル全体に広く該当するものですが、この記事ではCommon Object in Context (COCO) 2017 データセット での Mask R-CNN モデルの分散型 TensorFlow トレーニングに焦点を当てます。 モデル Mask R-CNN モデルはオブジェクトインスタンスセグメンテーションのために使用されるものであることから、このモデルは画像内の各オブジェクトインスタンスを区分するために、ピクセルレベルのマスク (シグモイドバイナリ分類) と、オブジェクトカテゴリでアノテーションが付けられた (SoftMax 分類) 境界ボックス (Smooth L1 回帰) を生成します。Mask R-CNN の一般的なユースケースには、自動運転車における認知、表面欠陥検出、および地理空間画像の分析などがあります。 この記事に Mask R-CNN […]

Read More

Amazon SageMaker の Horovod またはパラメータサーバーでTensorFlow 分散トレーニングを簡単に起動する

Amazon SageMaker は、TensorFlow を含む一般的なディープラーニングフレームワークをすべてサポートしています。クラウド内の TensorFlow プロジェクトの 85% 以上が AWS で実行されています。プロジェクトの多くはすでに Amazon SageMaker で実行されています。これは、Amazon SageMaker が TensorFlow モデルのホスティングとトレーニングにもたらす大きな利便性によるものです。これには、Horovod とパラメータサーバーを使用した完全マネージド型の分散トレーニングが含まれます。 お客様は、1 週間以上かかる大規模なデータセットのトレーニングモデルにますます関心を持ってきています。この場合、クラスター内の複数のマシンまたはプロセスにトレーニングを分散することにより、プロセスを高速化できる可能性があります。この記事では、Amazon SageMaker により、トレーニングクラスターを直接管理する費用や困難なしに、TensorFlow を使用して分散トレーニングを迅速にセットアップおよび起動する方法について説明します。 TensorFlow バージョン 1.11 以降では、Amazon SageMaker の事前作成された TensorFlow コンテナを使用できます。Python トレーニングスクリプトを提供し、ハイパーパラメータを指定し、トレーニングハードウェア設定を指定するだけです。Amazon SageMaker は、トレーニングクラスターをスピンアップし、トレーニングが終了したらクラスターを破棄するなど、残りの作業を行います。この機能は「スクリプトモード」と呼ばれます。 スクリプトモードは、すぐに使用できる以下の 2 つの分散トレーニングアプローチを現在サポートしています。 オプション #1: TensorFlow のネイティブパラメータサーバー (TensorFlow バージョン 1.11 以降) オプション #2: Horovod (TensorFlow バージョン 1.12 以降) 次のセクションでは、これらの TensorFlow 分散トレーニングオプションを […]

Read More