Amazon Web Services ブログ

Category: Artificial Intelligence

複数の GPU に対する深層学習トレーニングをスケーリングするためのハイパーパラメーターの調整の重要性

複数の GPU による並列プロセスは、深層モデルのトレーニングのスケーリングを行う上で重要なステップです。トレーニングを繰り返すたびに、一般的に、ミニバッチと呼ばれるデータセットの小さなサブセットがプロセスされます。単一の GPU が使用可能の場合、それぞれのトレーニングの繰り返しにおけるミニバッチの処理は、この GPU により取り扱われます。複数の GPU でトレーニングするとき、ミニバッチはプロセスの負荷を均等に分散するために使用可能な GPU 全体に分割されます。各 GPU を完全に使用するためには、各追加 GPU でミニバッチのサイズを直線的に増大させる必要があります。ミニバッチのサイズは、トレーニング速度に影響を与えるだけではなく、トレーニングされるモデルの質にも影響を与えます。ミニバッチのサイズが大きくなると、他のハイパーパラメーターを微調整して、類似するモデルの質でより高速なトレーニングができるようにすることが重要です。 Gluon によるマルチ GPU と分散トレーニング 最新の真相学習モデルにより必要な広範なデータの量により、複数の GPU と分散マシンにスケーリングすることで、調査と本番稼働のための大幅な時間節約となる可能性があります。Amazon SageMaker や Amazon Elastic Compute Cloud (Amazon EC2) のようなサービスでは、数百 GPU の分散トレーニングをセットアップすることは、痛みのないだけでなく、正確な使用量に対して支払うだけで非常に経済的で、高価で十分に活用されていないハードウェアフリートを維持する必要はありません。 Apache MXNet は、柔軟でより効率的な深層学習プラットフォームです。 これは、複数のホストにわたるマルチ GPU と分散トレーニングに特に適しています。Apache MXNet の Gluon ライブラリは、深層学習のための明確で正確、さらにシンプルな API を提供します。gluon による複数の GPU のトレーニングおよび複数のマシンによる分散トレーニングに関するチュートリアルでは、マルチ GPU と分散トレーニングの容易なセットアップをデモンストレーションします。 トレーニングのハイパーパラメーター トレーニングのハイパーパラメーターは、勾配降下法によっては学習できないが、最終的なモデル品質に影響を与えるすべてのパラメーターを構成します。これらのパラメーターは、学習速度およびモメンタムなどの最適化パラメーター、ランダムなカラーシフト量などの増強パラメーター、および他の学習以外のパラメーターを含みます。 MXNet Gluon API は、すべての […]

Read More

この一週間の顔認識と Amazon Rekognition に関する公開ディスカッションについて弊社が考えること

この一週間、顔認識、監視、および個人の自由に関する、Amazon Rekognition の役割について多くの議論を見てきましたが、弊社の考えを共有したいと思ってます。 Amazon Rekognition は、弊社が 2016 年に発表したサービスです。開発者がディープラーニングなどの新しいテクノロジを簡単にかつ低料金で開発に利用できるようになりました。サービスを開始して以来、お客様は社会 (人身売買の防止、児童労働搾取の防止、失った子供との再会、子供向けの教育アプリの構築など) と組織 (マルチファクタ認証導入によるセキュリティ強化、画像検索の容易化、玄関先の商品の盗難防止など) の両面において、Amazon Rekognition の画像と動画の分析機能を活用してます。アマゾン ウェブ サービス (AWS) は、単にこれらのサービスプロバイダではありません。私たちは画像およびビデオ分析のテクノロジーが公共部門や法執行機関も含む組織においてどのように良い結果をもたらすのかを見るのがとても楽しみです。規定 (以下、「AUP」) を定めており、「違法行為、他者の権利を侵害する行為、または他者に有害である可能性のある行為」に対して本サービスの使用を禁じています。これには、本質的にあらゆる種類の違法差別や正当なプロセスやプライバシー権の侵害など、第 4、第 5、および第 14 条修正に関する憲法上の権利を侵害することが含まれます。 当社の AUP に違反しているお客様は当社のサービスを使用することはできません。 しかし新しい技術力には常にリスクが存在します。新技術の採用を決定した組織は、責任をもった行動、または法的罰則や公然の非難を受ける覚悟が必要です。AWS はその責任を真剣に受け止めています。しかし、我々は有望な技術を悪事に利用されるのを恐れて、それらの使用を禁止するといったことは誤った方法だと考えています。もしコンピュータが悪用される可能性があるという理由で、人々がコンピュータの購入を規制された場合、世界は誤った方向に行くでしょう。私たちが毎日頼っている何千もの技術についても同様です。 それらの技術を責任を持って利用することで、技術がもたらす恩恵はリスクをはるかに上回っています。 お客様は Amazon Rekognition を使い素晴らしいスタートを切りました。この新技術がもたらすプラスの効果は日々大きくなっています。我々は責任ある利用をしているお客様を引き続きサポートすることができて嬉しく思っています。 -Dr. Matt Wood 氏、AWS の人工知能ゼネラルマネジャー

Read More

Amazon SageMaker のアップデート、東京リージョン、CloudFormation、Chainer、GreenGrass ML

本日、東京での AWS Summit で、Amazon SageMaker の多数のアップデートや新機能が発表されました。本日より、SageMaker が アジアパシフィック (東京) で利用可能になります!また、SageMaker は CloudFormation もサポートします。SageMaker Python SDK では、MXNet および Tensorflow に加えて、機械学習の新しいフレームワークである Chainer も利用できます。最後に、いくつかのデバイスでの Chainer モデルの実行に対するサポートが AWS Greengrass Machine Learning に追加されました。 Amazon SageMaker Chainer エスティメーター Chainer は、定評がある、柔軟で直感的な深層学習のフレームワークです。Chainer ネットワークは、ネットワークトポロジが順方向計算によって動的に定義される「Define-by-Run」スキームで動作します。これは、ネットワークのトポロジがデータとは別に定義される「定義と実行」スキームで動作する他の多くのフレームワークとは対照的です。多くの開発者は、ネイティブの Python の構造やツールでネットワークを書くことができるので、Chainer スキームを重宝しています。 幸いなことに、SageMaker で Chainer を使用することは、TensorFlow または MXNet のエスティメーターを使用するのと同じくらい簡単です実際には、既存のスクリプトを使用して、少し修正するだけで SageMaker でトレーニングすることができるので、さらに簡単かもしれません。TensorFlow または MXNet を使用する場合には、特定の署名を持つトレーニング機能を実装する必要があります。Chainer を使用する場合は、 SM_MODEL_DIR、 SM_NUM_GPUS、その他の環境変数から簡単に読み込めるので、スクリプトはより移植しやすくなります。既存のスクリプトを、 if __name__ […]

Read More

Apache MXNet 用モデルサーバーが Gluon モデル対応サポートを追加

今日、AWS は Apache MXNet (MMS) v0.4 用 モデルサーバーをリリースし、Gluon モデルのサポートを追加しました。Gluon は、MXNet の不可欠かつダイナミックなインターフェースであり、MXNet の性能を維持しながら、短時間でのモデル開発が可能です。今回のリリースにより、MMS は Gluon モデルのパッケージ化とサービスをこれまでにない規模でサポートします。このブログ記事では、v0.4 リリースについて詳しく説明し、Gluon モデルを提供する例を紹介します。 Apache MXNet モデルサーバー (MMS) とは MMS は、オープンソースのモデルサービングフレームワークで、規模に応じて深層学習モデルの機能を果たすタスクを単純化するように設計されています。以下は MMS の主な利点の一部です。 MXNet、Gluon、および ONNX ニューラルネットワークモデルに対応するために必要なニューラルネットワークモデルアーティファクトを含むモデルアーカイブを生成するためのパッケージツールを提供します。 モデルアーカイブにパッケージ化されたカスタムコードを使用して、推論実行パイプラインの各ステップをカスタマイズする機能は、初期化、前処理、および後処理の上書きを可能にします。 REST API エンドポイントと推論エンジンを含む、事前設定されたサービススタック。 スケーラブルなモデルサービングのために事前構築および最適化されたコンテナイメージ。 サーバーとそのエンドポイントを監視するためのリアルタイム運用メトリクスを含みます。 Gluon とは何か Gluon は、MXNet に対する明確、簡潔、かつシンプルな Python インターフェイスです。エンジニアは、記号処理の性能上の利点を失うことなく、ニューラルネットワークを構築するための命令型コードを書くことができます。Gluon は、命令的な実装に基づいて最適化された記号コードを自動的に生成することができます。 MMS で Gluon モデルに対応 MMS で Gluon モデルを提供する例を見てみましょう。この例では、Xiang Zhang の文字レベル畳み込みニューラルネットワーク (char-CNN) に基づくモデルを実装するため […]

Read More

Amazon SageMaker と R の使用

このブログ記事では、Amazon SageMakerおよびRを使って、Machine Learning (ML) モデルを構築してトレーニングを受け、デプロイし、予測を見積もる方法について説明します。モデルは、殻の成長線からアワビの年齢を予測します。reticulateパッケージは、Amazon SageMaker Python SDKの R インターフェイスとして使用され、Amazon SageMaker への API コールを行います。 reticulate パッケージは、R と Python オブジェクトを相互変換し、Amazon SageMaker は ML モデルをスケールして、トレーニングやデプロイできるサーバレスのデータサイエンス環境を提供します。 このブログ記事を読み進めるには、R に関する基本的な理解が必要で、次のtidyverseパッケージに精通している必要があります。 dplyr、 readr、 stringr、および ggplot2。RStudioを使ってコードを実行します。 Rstudio は、R と連携するための統合開発環境 (IDE) です。 商用ライセンスまたはAGPLv3のライセンスを取得できます。 AWS CloudFormation の起動 Amazon SageMaker を使って、Amazon Elastic Compute Cloud (Amazon Ec2) インスタンスに Rstudio をインストール、構成、および接続するには、次のAWS CloudFormationスタックを使用します。 このスタックを起動すると、次のリソースが作成されます。 公開 Virtual Private Cloud (VPC) Amazon […]

Read More

自動スケーリングを使用して、Amazon SageMaker エンドポイントのロードテストおよび最適化を行う

機械学習 (ML) のトレーニング、最適化、およびデプロイを済ませたら、コンシューマーが簡単に起動でき、機械学習から予測が得られる形でホスティングすることが次のチャレンジとなります。多くのカスタマーは組織の内部や外部にコンシューマーを抱えており、予測のためのモデル (ML 推論) を利用したいと考えています。コンシューマーは、場合によっては ML スタックを理解しておらず、リアルタイムまたはバッチモードで予測してくれるシンプルな API を必要としているかもしれません。Amazon SageMaker を使用すると、Deploying a Model on Amazon SageMaker Hosting Services できるようになり、コンシューマーが HTTPS リクエストを使用して安全で簡単な API コールを起動できるエンドポイントを利用できるようになります。多くのカスタマーは、モデルが予想する適切なインプットでそのようなエンドポイントを起動する方法や、そのエンドポイントのスケーラビリティや高可用性に関心があります。 本ブログ記事では、Amazon SageMaker エンドポイントをウェブから起動する方法や、モデルをロードテストし、エンドポイントを供給するインスタンスのサイズおよび数量の正しい設定を見いだす方法を説明します。ユーザーは Amazon SageMaker の自動スケーリングで、モデルの伸縮性および可用性を確保できるとともに、モニタリングおよび対処の対象となる正しいメトリクスを選択することでコストを最適化できます。 モデルのためにエンドポイントを作成する 本ブログ記事では、分類および回帰のための教師付きのノンパラメトリック学習法である決定木を使用し、あらかじめビルドとトレーニングを済ませたモデルを使用しました。そのモデルは、UCI Machine Learning Repository の iris dataset を使用し、がく片および花弁の長さと幅に基づいてアイリスの品種を予測します。今回のイメージ分類モデルのためにモデルエンドポイントを作成しましたが、ユーザーにはご自分のエンドポイントを作成することを推奨します。ヘルプが必要な場合は、GitHub repository を参照してください。 多くの Jupyter ノートブックは scikit_bring-your_own ノートブックを先述の GitHub リポジトリに持っており、以下のパスにある SageMaker インスタンスで利用可能です。 /sample-notebooks/advanced_functionality/scikit_bring_your_own scikit_bring_your_own ノートブックを開き、エンドポイントを削除する最後のセルを除くすべてのセルを実行します。以下のイメージで示すとおり、モデルがデプロイされるノートブックセル内のインスタンスタイプ ml.m4.xlarge に注目してください。Amazon […]

Read More

Amazon SageMaker アルゴリズムのパイプ入力モードを使用する

本日は Amazon SageMaker の内蔵型アルゴリズムのためのパイプ入力モードについて紹介します。パイプ入力モードを使い、データセットが最初にダウンロードされるのではなく、トレーニングインスタンスに直接ストリーミングされます。これは、トレーニングジョブが直ぐに始まり、早く完了し、必要なディスク容量も少なくて済むという意味です。Amazon SageMakerのアルゴリズムは、高速で拡張性が高くなるように設計されています。このブログ記事では、パイプ入力モード、それがもたらす利点、トレーニングジョブにおいてそれをどのように活用できるかについて説明しています。 パイプ入力モードでは、データはディスク I/O なしで実行中にアルゴリズムコンテナに送られます。このアプローチは、長くかかるダウンロードの処理を短縮し、起動時間を大きく短縮します。それによって通常ならファイル入力モードより読込スループットも良くなります。これは、高度に最適化されたマルチスレッドバックグラウンドプロセスによって、データが Amazon S3 から取得されるからです。また、16 TB の Amazon Elastic Block Store (EBS) のボリュームサイズ制限よりもずっと大きいデータセットをトレーニングできます。 パイプモードによって以下のことが可能になります。 データがトレーニングインスタンスにダウンロードされるのではなく、ストリーミングされるため、起動時間がより短くなります。 より高性能なストリーミングエージェントによる I/O スループットの向上 実質的に無制限のデータ処理能力。 内蔵型 Amazon SageMaker アルゴリズムでファイル入力モードまたはパイプ入力モードを活用できます。大きなデータセットにはパイプモードが推奨されているとはいえ、メモリ内に収まる小さなファイルやアルゴリズムのエポック数が多い場合であっても、ファイルモードは有効です。現在、どちらのモードでもトレーニングジョブの小さい実験から、ペタバイト規模の分散型のトレーニングジョブに至るまでさまざまな使用範囲をカバーしています。 Amazon SageMakerのアルゴリズム 大半のファーストパーティのAmazon SageMakerアルゴリズムは、最適化された Protocol Buffers (プロトコルバッファー) のrecordIO フォーマットを使えば最適に動作します。このため、本リリースでは、protobuf の recordIO フォーマット用のパイプモードのみがサポートされています。以下に一覧するアルゴリズムは、Protocol Buffers (プロトコルバッファー) の recordIO にエンコードされたデータセットで使用した場合に、パイプ入力モードをサポートします。 主成分分析法 (PCA) K 平均法クラスタリング 因数分解法 潜在的ディリクレ配分法 (LDA) 線形の学習者 (分類と回帰) […]

Read More

Apache MXNet (Incubating) が Keras 2 のサポートを追加

Keras および Apache MXNet (Incubating) のオープンソースプロジェクトへの参画者のおかげで、Keras-MXNet 深層学習のバックエンドが現在利用可能です。Keras は Python で書かれた高水準なニューラルネットワーク API です。CNN および RNN のプロトタイピングを素早く簡単に作成することで知られています。 Keras の開発者は、現在、畳み込みニューラルネットワーク (CNN) のトレーニングおよび再帰型ニューラルネットワーク (RNN) の分散トレーニング向けのハイパフォーマンスな MXNet 深層学習エンジンを使用することができます。コードを数行更新すると、Keras の開発者は、MXNet のマルチ GPU の分散トレーニング機能を使用して、トレーニングスピードを速めることができます。MXNet モデルを保存できることは、このリリースのもう一つの注目すべき機能です。Keras での設計、Keras-MXNet によるトレーニング、本番環境のインターフェイスの実行が大規模な MXNet で可能です。 Keras 2 および MXNet の分散トレーニング この記事では、Keras-MXNet のインストール方法と CNN および RNN のトレーニング方法の説明をします。以前、他の深層学習エンジンで分散トレーニングを実施したことがある場合は、退屈で難しいかもしれません。それでは、Keras-MXNet について内容を見ていきましょう。 インストールは数ステップだけです。 AWS 深層学習 AMI のデプロイ Keras-MXNet のインストール Keras-MXNet の設定 1. AWS […]

Read More

Amazon SageMaker を使用して、より迅速に大規模な主成分分析法を実行できます

このブログ記事では、Amazon SageMaker、Spark ML、Scikit-Learn を使用した、高ディメンジョンセットでの PCA に関するパフォーマンス比較を実施します。SageMaker は一貫してより高速な計算性能を示しました。速度改善内容を確認するために、下図 (1) および (2) を参照してください。 主成分分析法 主成分分析 (PCA) とは、依然として、可能な限りより多くの情報を保持しながら、データセット内部のディメンジョナリティ (例: 機能の個数など) の低減を目的とした監督機能解除済み学習アルゴリズムです。PCA は、各列は、それ以降はお互いが独立性を有する状況となるような、1 組のデータ行列を 1 個の直交空間に線形変換するものであり、個別のカラムが対象データ内で 1 個の既知の割合を占めることができるものです。換言すれば、個別のコンポーネントが互いに無相関性のような、元の特徴の複合体である、コンポーネントと呼ばれる 1 つの新しいセットの機能を発現します。更に、これらは制限が付加されることで、第 1 コンポーネントが対象データ内で可能な限り巨大な可変率を占め、第 2 コンポーネントが第 2 番目に最大であり、そして以下も同様となることとなります。 より包括的な説明については、「https://docs.aws.amazon.com/sagemaker/latest/dg/how-pca-works.html」を参照してください。 PCA は、Exploratory Data Analysis (EDA) 用の 1 個のツールおよび 1 個の機械学習用アルゴリズム (ML) の両面でも強力です。EDA に関して、PCA はディメンジョナリティ低減および 1 件のデータ問題についての多重共線性 (マルチコ) 低減に最適です。ML 方法論の 1 つとして、異常検出 (例: […]

Read More

Amazon SageMaker で fast.ai ノートブックを実行する

fast.ai はすべての人にディープラーニング能力へのアクセスを可能にすることを目的とした組織です。彼らは fast.ai と呼ばれる人気のあるオープンソースディープラーニングフレームワークを開発しました。このテクノロジーはコンピュータビジョン、自然言語処理、構造化データ、協調フィルタリングなどドメイン内のわずか数行のコードでユーザーが最新のモデルを作成することができる使いやすいディープラーニングライブラリ PyTorch に基づいています。  彼らはまた、機械学習の経験がない開発者向けに、数週間で最先端のディープラーニングモデルをデプロイするためのライブラリの使い方を学べる非常に人気のあるオンラインコースも開講しています。 Amazon SageMaker の主な利点の 1 つは、人気のある Jupyter オープンソースノートブック形式で完全に管理された機械学習ノートブック環境を 1 クリックで提供できることです。このブログ記事では、お使いの fast.ai ベースのディープラーニングモデルをトレーニングするために、fast.ai ライブラリと Jupyter ノートブックサンプルを Amazon SageMaker でホストされたノートブックにデプロイする方法を説明します。 これは fast.ai オンラインコース経由で実行している場合、またはカスタムアプリケーションで独自の fast.ai ベースのディープラーニングモデルをビルドし、トレーニングする場合に便利です。これから、SageMaker ノートブックインスタンスでカスタム fast.ai 環境の設定と構成を自動化するために必要なすべてのステップを説明します。 ステップ 1: Amazon SageMaker ノートブックライフサイクル設定を作成する Amazon SageMaker は、追加ライブラリをノートブックインスタンスに手動でインストールする機能を備えています。しかし、ノートブックインスタンスの終了後は、これらの追加されたカスタマイズも削除されます。つまり、ノートブックインスタンスを再起動時に、手動でこれらを再度追加する必要があります。しかし、最近リリースされた Amazon SageMaker のライフサイクル設定機能では、これらのカスタマイズを自動化することで、インスタンスのライフサイクルのさまざまな段階に適用することが可能になりました。 この例では、ノートブックインスタンスが起動されるたびに、ライフサイクル設定機能を使用して fast.ai ライブラリと関連する Anaconda 環境をインストールすることで、再起動のたびに繰り返しインストールする必要がなくなりました。 Amazon SageMaker コンソール (https://console.aws.amazon.com/sagemaker/) を開きます。 左側のナビゲーションウィンドウから [Notebook]、次に [Lifecycle configurations] […]

Read More