Amazon Web Services ブログ

Amazon SageMaker Neo と Amazon Elastic Inference を使用してパフォーマンスを向上させ、MXNet 推論のコストを削減する

 本番環境でディープラーニングモデルを実行する場合、インフラストラクチャコストとモデルレイテンシーのバランスを常に考えることが重要です。re:Invent 2018 で、AWS は Amazon SageMaker Neo と Amazon Elastic Inference を導入しました。これらは、ディープラーニングのモデルの作成をより効率的にする 2 つのサービスです。 ほとんどのディープラーニングアプリケーションでは、トレーニング済みのモデルを使用した予測 (これは推論と呼ばれるプロセスです) が、2 つの要因により、アプリケーションの計算コストの 90% を占める可能性があります。まず、スタンドアロン GPU インスタンスはモデルのトレーニング用に設計されており、通常、推論のためにサイズが大きくなっています。トレーニングジョブは何百ものデータサンプルを並行してバッチ処理しますが、ほとんどの推論は単一の入力でリアルタイムに発生し、GPU コンピューティングの消費量は少量に過ぎません。ピーク負荷時でも、GPU のコンピューティングキャパシティは十分に活用されていない可能性があります。これは無駄があり、コストがかかります。次に、モデルごとに必要な GPU、CPU、メモリリソースの量が異なります。最も要求の厳しいリソースの要件を満たすのに十分な大きさの GPU インスタンスタイプを選択すると、他のリソースが十分に活用されず、コストが高くなることがよくあります。 Elastic Inference は、推論を実行するために最適な量の GPU コンピューティングを提供するサービスです。SageMaker Neo は、実行速度が最大 2 倍になる可能性のあるメモリインプリントを削減することにより、特定のインフラストラクチャデプロイのディープラーニングモデルを最適化するサービスです。 この記事では、MXNet hot dog/not hot dog 画像分類モデルを Amazon SageMaker にデプロイし、さまざまなデプロイシナリオでモデルのレイテンシーとコストを測定します。また、Amazon SageMaker と Amazon Elastic Inference を使用した導入オプションと、別の Amazon EC2 インスタンスを選択した場合に得られる可能性があるさまざまな結果を評価します。 […]

Read More

PostgreSQL 12 – いくつかの新機能のご紹介

 PostgreSQL コミュニティは毎年、PostgreSQL 12 のメジャーリリースを一貫して続けています。PostgreSQL 12 は、JSON データをクエリする新しい方法、インデックスの拡張、パーティション化されたテーブルでのパフォーマンスの向上などの機能を導入し、すでに堅牢な機能の管理を簡素化しながら、新たに開発する機会を設けています。 この記事では、PostgreSQL 12 の素晴らしい新機能のいくつかを詳しく見ていきます。それらを既存の開発および運用プラクティスに組み込む方法を探っていきます。これらの機能の一部は透過的で、PostgreSQL 12 にアップグレードするだけでご利用いただけます。他の部分については、ご利用いただくには既存のアプリケーションまたはプロセスへの変更を加えていただく必要があります。これらの新機能の利点を取り上げ、さらにこのような機能を既存のアプリケーションに適応させる方法の例をご紹介します。 インデックスの改善 PostgreSQL のデフォルトのインデックスタイプは B ツリーです。B ツリーインデックスは、ほとんどのタイプのデータをプライマリキーである整数から E メールアドレスである文字列へインデックスを付けるために使用します。テーブルが大きくなると、対応するインデックスも大きくなります。B ツリーインデックスが大きくなると、データ構造のバランスを保つ必要があります。そうすることで、特定のリーフページがいっぱいになったときにページが必ず分割されるようにします。ほとんどの場合、PostgreSQL はこれらのページを中央で分割することで、新しく分割された各ページに同じ量のデータと空き領域ができるようにします。テーブルに追加されるデータがややランダムである場合は、中央で分割するのが理想的です。ただし、データに重複するインデックスエントリが多数ある場合は、途中で分割すると大量の空き領域が未使用になる可能性があります。PostgreSQL 12 は、B ツリーインデックスページを分割するロジックを変更して、重複するインデックスエントリのコンテキストを使用し、いくつかの圧縮技術を用いています。これらを改善することで、インデックスのデータに応じて、一部の B ツリーインデックスが PostgreSQL 12 で 40% も小さくなる可能性があります。 古いバージョンの PostgreSQL からアップグレードされたデータベースは、古い B ツリー形式のままです。新しい B ツリー形式を利用するには、PostgreSQL 12 でインデックスを作成する必要があります。PostgreSQL には、指定されたテーブルのすべてのインデックスを再構築する REINDEX コマンドがありますが、REINDEX コマンドは、多くの本番環境で禁止ロックを取得します。 postgres=# REINDEX TABLE events; postgres=# SELECT locktype, transactionid, mode, […]

Read More

Amazon SageMaker Debugger と Amazon SageMaker Experiments による機械学習モデルのプルーニング

 過去 10 年間、ディープラーニングは、コンピュータービジョンや自然言語処理など、さまざまな分野を進歩させてきました。最先端のモデルは、画像分類などのタスクで人間に近いパフォーマンスを実現しています。ディープニューラルネットワークでこれが実現できるのは、大規模なトレーニングデータセットでトレーニングする数百万のパラメータで構成されているためです。たとえば、BERT (ラージ) モデルは 3 億 4,000 万のパラメータで構成され、Resnet-152 は 6,000 万のパラメータで構成されています。このようなモデルを最初からトレーニングすることは、計算量が多く、数時間、数日、はたまた数週間かかることもあります。 通常、データサイエンティストは転移学習を実行します。これは、ある問題を解くことによって得られた知識を、関連するが異なる問題に応用するプロセスです。転移学習では、より小さなデータセットで事前学習済みモデルを微調整して、精度を向上させられます。このようなシナリオでは、モデルに多数のパラメータは必要ない場合があります。小さなモデルでも同様に機能する場合もあるかもしれません。 エッジでの機械学習 (ML) のコンテキストでは、小さなモデルを持つことが不可欠です。ハードウェアの制約により、レイテンシー、メモリフットプリント、コンピューティング時間などの要素は、モデルの精度と同様に重要です。たとえば、自動運転には高精度で低レイテンシーのモデルが必要です。このようなシナリオでは、精度は 1% 向上するが、予測に 2 倍の時間がかかるモデルは好ましくありません。 モデルプルーニングは、精度を犠牲にすることなくモデルサイズを大幅に削減できます。考え方は簡単です。トレーニングプロセスにほとんど寄与しないモデル内の冗長パラメータを特定するのです。 この記事は、Amazon SageMaker を使用した反復モデルのプルーニング (枝刈り) を示します。この記事では、事前トレーニング済みのモデルを使用したサンプルアプリケーションについて説明します。そのアプリケーションは、精度を大幅に損なうことなく、繰り返しプルーニングして 3 分の 1 以上削減します。 モデルプルーニング モデルプルーニングは、トレーニングプロセスにあまり貢献しない重みを削減することを目指しています。重みは学習可能なパラメータです。これは、トレーニングプロセス中にランダムに初期化され、最適化されます。転送パスの間、データはモデルを通過します。損失関数は、ラベルを指定してモデル出力を評価します。逆方向パス中は、重みを更新して損失を最小限に抑えます。そうするために、重みに関する損失の勾配を計算し、それぞれの重みは異なる更新を受け取ります。数回反復した後、特定の重みは通常、他の重みよりも影響力があります。プルーニングの目的は、モデルの精度を大幅に低下させることなく、不要なものを削除することにあります。次の図は、このワークフローを示しています。 次のヒューリスティックを使用して、重みの重要性を測定できます。 重みの大きさ – 絶対値がしきい値より小さい場合は、重みを削除します。重みが小さいほど、出力への影響が少なくなります。 平均活性化 – ニューロンがトレーニング全体を通じてほとんど活性化されていない場合、活性化関数に加わる重みの関連性が低いと推測できます。 非構造化と構造化の重みプルーニングは、次のように区別できます。 非構造化プルーニングは任意の重みを削除します (前の図のように) 構造化されたプルーニングは、畳み込みフィルターと関連するチャネル全体を削除します 構造化されたプルーニングは、多くの畳み込み層で通常構成されるコンピュータビジョンモデルに特に関わっています。フィルターはカーネルのコレクションです (1 つの入力チャネルごとに 1 つのカーネル)。フィルターは、出力チャネルとも呼ばれる 1 つの機能マップを生成します。次の図は、3 つの出力機能マップを生成する 3 つのカーネルを示しています。モデルが学習する必要があるパラメータの数 (その重み) […]

Read More

Autodesk が、Amazon SageMaker Debugger で Fusion 360 の視覚的類似性検索モデルを最適化

 この記事は、Autodesk の機械学習エンジニアである Alexander Carlson が共同執筆したものです。 Autodesk は、数年前にプライベートデータセンターから AWS のサービスにワークロードを移動したことからデジタルトランスフォーメーションの旅を始めました。デジタルトランスフォーメーションの利点は、ジェネレーティブデザインで明らかになります。これは、クラウドコンピューティングを使用して、人間が行える範囲を超えてデザインの探索を推し進める新しいテクノロジーです。ジェネレーティブデザインを使用すると、特定の制約 (材料、重量、コスト、製造方法など) に基づいて一連の高性能デザインオプションをすばやく生成できます。ジェネレーティブデザインには、製造業を (良い方向へ) 淘汰する可能性があります。Autodesk は、Amazon SageMaker を使用して、ジェネレーディブデザインにより数時間または数日ではなく 1 時間で数百のシミュレーションを実行できるようにスケーリングしました。 2019 年秋、Autodesk は、機械学習 (ML) を使用して、Fusion 360 のジェネレーティブデザインテクノロジー向けの視覚的類似性検索機能を構築およびリリースする準備をしていました。Autodesk チームは、AWS と提携し、Amazon SageMaker Debugger を使用して、モデルのトレーニングとデバッグプロセスをどのように改善できるかを評価しました。SageMaker Debugger は、コードを変更することなく、トレーニング実行からのデータのキャプチャと分析をリアルタイムで自動化することにより、ML モデルのトレーニングプロセスに対する完全な洞察を提供します。 この記事では、Autodesk が他のいくつかの利点を享受しながら、モデルをどのように素早く設計、トレーニング、デバッグしたかについて概説します。以下のセクションでは、視覚的類似性検索モデル、Autodesk の SageMaker Debugger 以前のアプローチ、SageMaker Debugger にコードを適合させるために行われる手順、SageMaker Debugger 後のアプローチ、および両方のアプローチのパフォーマンス比較について見ていきます。 視覚的類似性検索モデル トレーニングされた視覚的類似性検索モデルは、特徴ベクトルを計算します。特徴ベクトルは、距離でグループ化したり、最近傍のジェネレーティブデザインの結果を見つけたりするために使用できます。同じ様なジェネレーティブデザインは、同様の特徴ベクトルを生み出します。視覚的類似性検索は、ジェネレーティブデザインからのデザイン結果のカテゴリ別ビューを提供するため、最適なデザインを選択できます。次のスクリーンショットは、視覚的類似性検索モデルを使用した Fusion 360 の例を示しています。 Fusion 360 のジェネレーティブデザインが生成する各結果は 3D の形状をしています。ビジュアル検索モデルは、3D オブジェクトのいくつかのスナップショットをさまざまな角度から取得し、モデルはそれらのスナップショットの再構築を試みます。 […]

Read More

EMR 6.0.0 での Hive LLAP の使用で 2 倍速くなる Apache Hive

 お客様は、Amazon S3 に保存されたペタバイト規模のデータへの SQL ベースのアクセスを提供するために Amazon EMR で Apache Hive を使用します。Amazon EMR 6.0.0 には Hive LLAP のサポートが追加され、EMR 5.29 よりも 2 倍速い平均パフォーマンスに加えて、個々の Hive TPC-DS クエリでも最大 10 倍の向上を実現します。この記事では、Hive LLAP を有効化する方法を紹介し、TPC-DS ベンチマークからのクエリを使用して観測したパフォーマンス向上について説明します。 Amazon EMR 5.29.0 と比べて速度が 2 倍に Amazon EMR のリリース 6.0.0 で Hive を実行するパフォーマンスメリットを評価するために、6 ノードの c4.8xlarge EMR クラスターで 3 TB の Apache Parquet データセットに 70 個の […]

Read More

Amazon SageMaker 強化学習と Amazon EKS を使用して、プレイヤーの待機時間を短縮し、コンピューティング割り当てのサイズを適切に設定する

 マルチプレイヤーゲームのパブリッシャーは、オンラインゲームを起動または維持するときに、リソースを過剰にプロビジョニングするか、手動でコンピューティング割り当てを管理して、プレイヤーの待機時間を短くする必要があることがよくあります。コンピューティング割り当てのモニタリングと制御に役立つツールを開発、設定、デプロイする必要があります。この記事では、プレイヤーが待機する時間とオーバープロビジョニングを計算する時間の両方を簡単に短縮できる新しい機械学習 (ML) ベースのツールである GameServer Autopilot について説明します。GameServer Autopilot は、手動設定の決定を排除し、人為的エラーが発生する機会を減らします。 GameServer Autopilot の初期バージョンでは、線形回帰を使用して必要なコンピューティング能力を推定していました。詳細については、YouTube で機械学習によるゲームサーバーの自動スケーリングをご覧ください。予測があっても、Amazon EC2 インスタンスの準備にはかなりの時間がかかるため、コンピューティングリソースの割り当てを最適化することは簡単ではありません。割り当てアルゴリズムは、EC2 インスタンスをスピンアップしてゲームアセットをインストールするために必要な時間を考慮する必要があります。絶えず変化する使用パターンには、新しいプレイヤーの習慣に適応するモデルが必要です。システムは、需要の変化に合わせてスケールアップおよびスケールダウンする必要があります。 この記事では、Amazon SageMaker 強化学習を使用して、Amazon EKS、Amazon DynamoDB、AWS Lambda 関数、および Amazon API Gatewayで強化学習 (RL) を適用する方法を説明します。さらに、プレイヤーの使用パターンに応じてリソースを割り当てることを学習する ML システムについて説明します。ホストされているモデルは、プレイヤーの待機時間を短縮するために初期化する必要のあるゲームサーバーインスタンスの数を直接予測します。トレーニングプロセスはゲームエコシステムと統合され、必要な設定は最小限で、それを他のコンピューティングリソース割り当てシナリオに拡張できます。 コンピューティングの割り当て マルチプレイヤーゲームのアーキテクチャには、ゲームサーバー向けのコンピューティングホスティングと、場所とスキルに基づいてプレイヤーをゲームセッションにマッチングするマッチメイキングシステムが含まれます。プレイヤーは仮想ゲームロビーで対戦を待ちます。現在のマルチプレイヤーゲームシステムでは、さまざまなレベルのプレイヤーの数と、マッチメイキングのようなシステムが、ゲームサーバーの需要を左右します。EKS はホスティングプラットフォームを管理します。ホスティングプラットフォームは、マッチメイキングシステムからリクエストを受信すると、ゲームサーバージョブを事後的にスケジュールします。ゲームサーバーは、利用可能な EC2 インスタンスに垂直に格納されます。EKS クラスターオートスケーラーは、現在の EC2 インスタンスがゲームサーバーで満たされると、新しい EC2 インスタンスをスピンアップします。次の図は、典型的な専用ゲームサーバーファームとアーキテクチャを示しています。これは、プレイヤー、マッチメイキング、およびゲームロビーアプリケーションと、EKS がホストする専用ゲームサーバーとのやり取りを示しています。 自動スケーリングの課題 時間的なピークに備えて過剰にプロビジョニングする必要がある静的な割り当てよりも、反応的な割り当ての方が適しています。Amazon EC2 Auto Scaling グループには、自動スケーリングと自動管理のための論理グループとして扱われる EC2 インスタンスのコレクションが含まれています。この反応的アプローチには、Auto Scaling グループのルールベースの動的スケーリングポリシーが含まれます。たとえば、既存のインスタンスの CPU 使用率が 60% を超えたときに […]

Read More

AWS DeepComposer – 新機能付きで一般提供開始

AWS DeepComposer は、機械学習を始めるための独創的な方法で、AWS re:Invent 2019 のプレビューでローンチされました。本日、すべての AWS ユーザーが DeepComposer を利用できるようになり、新しい機能で拡張されたことをお知らせできることを大変嬉しく思います。 AWS DeepComposer 入門 AWS DeepComposer を初めて使用する場合は、以下の手順に従ってください。 AWS DeepComposer コンソールにログインします。 このサービスと、生成 AI の使用方法について学びます。 コンソールの仮想キーボード、または Amazon.com で注文可能な物理キーボードのいずれかを使用して、短い楽曲を録音します。 お気に入りのジャンルの事前トレーニング済みモデルを選択します。 このモデルを使用して、曲に基づいて新しいポリフォニックコンポジションを生成します。 コンソールでコンポジションを再生し、 コンポジションをエクスポートするか、SoundCloud で共有します。 次に、生成 AI をさらに簡単に使用開始できるようにする新機能を見てみましょう。 ラーニングカプセル DeepComposer は、既存のデータセットから新しいサンプルを生成するために特別に構築されたニューラルネットワークアーキテクチャである Generative Adversarial Networks (別名 GAN、研究論文) を利用しています。GAN は、2 つの異なるニューラルネットワークを互いに対比させて、サンプル入力に基づいてオリジナルのデジタル作品を生成します。DeepComposer では、GAN モデルをトレーニングおよび最適化して、オリジナルの音楽を作成できます。 これまで、GAN のスキルの向上に関心のある開発者は、簡単に始める方法がありませんでした。ML や音楽のバックグラウンドに関係なくそういった開発者を支援するために、AWS は主要な概念を紹介する簡単な学習カプセルのコレクションと、GAN のトレーニングと評価の方法を構築しています。これには、ハンズオンラボと、GAN モデルを構築するためのステップバイステップの説明とコードが含まれます。 GAN に慣れたら、独自のモデルのトレーニングに進む準備が整います。 コンソール内トレーニング […]

Read More

機械学習モデルをサーバーレス API としてデプロイ

 機械学習 (ML) のプラクティショナーは、データの収集、アルゴリズムの設計、実験の実行を行い、結果を評価します。機械学習モデルを作成した後は、費用対効果の高いスケールで予測を提供するといった別の問題に直面します。 サーバーレステクノロジーを使用すると、基盤となるインフラストラクチャの管理方法を気にすることなく、モデル予測を提供できます。AWS Lambda などのサービスは、コードの実行時間に対してのみ請求されるため、大幅なコスト削減が可能になります。レイテンシーとメモリの要件に応じて、機械学習モデルを簡単にデプロイするには AWS Lambda が最適です。この記事では、機械学習モデルをサーバーレス API としてエンドユーザーに簡単に公開する方法の例を示します。 このブログ記事について 読む時間 5 分 完了するまでの時間 15 分 完了するためのコスト 無料利用枠または 1 USD 未満 (公開時刻) 学習レベル 中級 (200) 前提条件 このソリューションを実装するには、次のサービスにアクセスできる AWS アカウントが必要です。 Amazon API Gateway AWS CloudFormation Amazon CloudFront AWS CodeBuild AWS Lambda Amazon S3 ソリューションの概要 次の図は、このソリューションのアーキテクチャを示しています。   このソリューションは次のサービスを採用しています。 AWS Lambda – サーバーのプロビジョニングや管理を行わずに、機械学習推論コードを実行できます。実行時間のみに対してお支払いいただきます。Lambda 関数はディープラーニングモデルを読み込み、画像内のオブジェクトを検出します。Lambda レイヤーには、複数の関数にわたってインポートできるパッケージ化されたコードが含まれています。 […]

Read More

[AWS Black Belt Online Seminar] AWS Elemental MediaConvert 資料及び QA 公開

先日 (2020/03/31) 開催しました AWS Black Belt Online Seminar「AWS Elemental MediaConvert」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。 20200331 AWS Black Belt Online Seminar AWS Elemental MediaConvert AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. トランスコードにおいて Amazon Elastic Transcoder との使い分けというか立ち位置はどう捉えたらいいでしょうか?Elemental のチェーンを利用するか、単体でトランスコードするかでしょうか? A. Elastic Transcoder の機能は一部(※)を除き、MediaConvert でもサポートしています。機能追加も MediaConvert 中心ですので、新規もしくは既存でも下記以外のケースでは MediaConvert の利用をご検討ください。 ※現時点で Elastic Transcoder でのみ利用可能な機能: WebM (VP8, VP9) での出力(MediaConvert への入力は可能) アニメーションGIFの出力 FLAC、Vorbis、WAV オーディオのみ の出力 こちらの Blog もあわせてご確認ください。 […]

Read More

[AWS Black Belt Online Seminar] AWSにおけるマイクロサービスアーキテクチャの設計パターン 資料及び QA 公開

先日 (2020/03/25) 開催しました AWS Black Belt Online Seminar「AWSにおけるマイクロサービスアーキテクチャの設計パターン」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。 20200325 AWS Black Belt Online Seminar AWSにおけるマイクロサービスアーキテクチャの設計パターン AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. Amazon API Gateway は複数のバックエンドを統合する機能は持たないと思います。その意味で BFF パターンの実装に位置付けるには機能不足ではないでしょうか?(AppSyncの方が近いのでは?) A. 仰る通りAmazon API Gateway 単体ではREST APIを公開する機能の提供になりますが、AWS Lambda と組み合わせることで統合する機能を提供することが可能となります。 Q. 集約ログパターンで表示されている構成ですと、すべてデータが受け取れるようなイメージですが、取得できないものが発生しますでしょうか? A. どのようなログデータを取得するかにも依存すると思いますが、アプリケーションログの観点から見ると、Amazon EC2 上で動作するアプリケーション、Amazon ECS/EKS 上のコンテナで動作するアプリケーション、AWS Lambda ファンクションなど様々なアプリケーションから Amazon CloudWatch Logs へログを送信することが可能です。但し Amazon CloudWatch Logs には クォータがありますのでご注意ください。Amazon CloudWatch Logs […]

Read More