Amazon Web Services ブログ

複数の CPU/GPU にかけて並列化して、エッジでの深層学習の推論を高速化する

AWS のお客様は、レイテンシーを最小限に抑えるために、エッジで機械学習 (ML) 推論を実行することを選択することがよくあります。これらの状況の多くでは、ML 推論は多数の入力で個別に実行する必要があります。 たとえば、ビデオの各フレームでオブジェクトの検出モデルを実行する場合です。これらの場合、エッジデバイスで利用可能なすべての CPU/GPU で ML 推論を並列化すると、全体的な推論時間を短縮できる可能性があります。 最近、私のチームはこの最適化の必要性を認識しながら、お客様が産業用異常検出システムを構築するのを支援しました。このユースケースでは、一連のカメラが通過するマシンの画像を取得してアップロードしました (マシンごとに約 3,000 枚の画像)。お客様は、サイトのエッジデバイスにデプロイした深層学習ベースのオブジェクト検出モデルに各画像を入力する必要がありました。各サイトのエッジハードウェアは、2 つの GPU と複数の CPU を搭載していました。最初に、AWS IoT Greengrass コアにデプロイされた長期実行 Lambda 関数 (これについては記事の後半で詳しく説明します) を実装しました。この設定では、各イメージをエッジデバイスで順次処理します。 ただし、この設定では、エッジデバイスの単一の CPU および単一の GPU コアで深層学習推論が実行されます。推論時間を短縮するために、利用可能なハードウェアの全容量を活用する方法を検討しました。調査をいくらか行った後、(さまざまな深層学習フレームワークに対して) 複数の CPU/GPU (TensorFlow、MXNet、PyTorchなど) にトレーニングを分散させる多くの方法に関するドキュメントを見つけました。ただし、特定のホストで並列化を行う方法に関する資料は見つかりませんでした。 この投稿では、推論を並列化する方法をいくつか示し、コードスニペットの例とパフォーマンスベンチマークの結果を提供します。 この投稿では、データの並列処理のみに焦点を当てます。これは、入力データのリストを均等な部分に分割し、各 CPU/GPU コアがそのような部分 1 つを処理することを意味します。このアプローチはモデルの並列処理とは異なり、ML モデルを異なる部分に分割し、各部分を異なるプロセッサにロードする必要があります。データの並列処理は、その単純さにより、はるかに一般的で実用的です。 単一のマシンで ML 推論を並列化するのにどの点が難しいのでしょうか? マルチスレッドコードの記述に精通しているソフトウェアエンジニアであれば、上記の内容を読んで疑問に思うかもしれません。単一のマシンで ML 推論を並列化するのに、何が課題なんだろうかと。 これをよりよく理解するために、デバイスに少なくとも 1 つの GPU があると仮定して、単一の ML 推論をエンドツーエンドで実行するプロセスを手短に確認しましょう。 複数の […]

Read More

大規模なデータウェアハウスをダウンタイムなしで IBM Netezza から Amazon Redshift に移行する方法

最近、EMEA 地域の大企業がオンプレミスの IBM Netezza データウェアハウスの Amazon Redshift への移行を決定しました。データのボリューム (非圧縮容量 270 TB、および 27,000 個を超えるテーブル)、このデータを活用する相互接続されたシステムの数 (4,500 個を超えるビジネスプロセス)、かつダウンタイムなしという要件を考えると、このプロジェクトが困難であれどもやりがいがあるものなることは明らかでした。この会社は、データウェアハウスがデプロイされているデータセンターを 1 年以内に廃止することを計画していたので、時間的な制約もありました。 データウェアハウスは会社の中核を成す部分であり、あらゆる部門のユーザーが業務を遂行するために必要なデータを収集し、日報を生成することを可能にします。ほんの数年間で、クラスターにアクセスする事業部門はほぼ 3 倍に増加し、ユーザー数は当初の 5 倍となり、クラスターが設計された 1 日あたりのクエリ数 50 倍分のクエリが実行されるようになりました。レガシーデータウェアハウスは、これ以上これらの部門のビジネスニーズに対応できなくなり、毎晩の ETL プロセスの実行がその時間制限を超え、ライブクエリに時間がかかりすぎる原因となっていました。 この会社は、データセンターの廃止時期が近づいていたこともあり、ビジネスユーザー間における全般的な不満から移行の計画に踏み切り、IT 部門が新しいアーキテクチャの定義とプロジェクトの実施を担当することになりました。 アマゾン ウェブ サービス (AWS) の迅速かつスケーラブルな OLAP データウェアハウスであり、データウェアハウスとデータレイク全体における全データの分析をシンプル化してコスト効率性を高める Amazon Redshift は、この会社の問題を解決するために申し分ありませんでした。Amazon Redshift は今後の成長のための完全な伸縮性、および需要が高いピーク時を補うための同時実行スケーリングなどの機能を提供するだけでなく、簡単に統合できる分析サービスの完全なエコシステムも提供します。 この記事では、このお客様が綿密に計画された移行プロセスに従い、AWS Schema Conversion Tool (SCT) と Amazon Redshift のベストプラクティスを活用することによって、ダウンタイムなしで IBM Netezza から Amazon […]

Read More

Amazon Forecast が一般公開されました

履歴データを基に正確な時系列予測を得るのは、たやすい作業とは言えません。当社は昨年の re:Invent において Amazon Forecast を発表しました。これは、機械学習についてまったく経験がない人でも高い精度の予測をすることができる、完全マネージド型のサービスです。 その Amazon Forecast が一般公開されたことを、本日お伝えできるのは非常に喜ばしいことです。 Amazon Forecast では、サーバーのプロビジョニングは必要ありません。 これに必要なのは、履歴データ、そして予測結果に影響がありそうなメタデータを追加で揃えることだけです。たとえば、入手するか製造しようとしている特定の製品に関する需要は、天候、季節、そしてその製品が使用される土地などにより、おそらく変わってくるでしょう。 Amazon Forecast は、Amazon で使われているものと同じテクノロジーをベースにしており、スケーラブルで高い精度を持つ予測技術を使いやすく構築および運用するための、長年の経験を詰め込んだものとなっています。これは複数のデータセットを基に深層学習 を行い、多様なアルゴリズムを自動的に切り替えて使用するので、製品需要、クラウドのコンピューティング使用量、財務計画、サプライチェーン管理システムでのリソース管理など多くのユースケースに対応できます。 Amazon Forecast を使ってみる 今回の記事では、いくつかのサンプルデータを利用します。興味深いユースケースが良いので、今回はUCI の機械学習レポジトリが提供する、個別家庭の電力消費データセットを使うことにします。作業を簡単にするため、時間ごとのデータが CSV 形式のファイルに集められたバージョンを使っていきます。次に示すのはこのデータの最初の数行で、ここにはタイムスタンプ、電力消費量、クライアント ID が記述されています。 2014-01-01 01:00:00,38.34991708126038,client_12 2014-01-01 02:00:00,33.5820895522388,client_12 2014-01-01 03:00:00,34.41127694859037,client_12 2014-01-01 04:00:00,39.800995024875625,client_12 2014-01-01 05:00:00,41.044776119402975,client_12 それでは、Amazon Forecast コンソールを使いながら、予測子の構築と予測値の取得がいかに簡単かを確かめてみましょう。より進んだユーザーのためのオプションは、Jupyter ノートブックと AWS SDK for Python から利用できます。この GitHub レポジトリにサンプルのノートブックがいくつかあります。 Amazon Forecast コンソールで先ず最初に行うステップは、データセットグループの作成です。データセットグループは、お互いに関連のあるデータのためのコンテナーとして機能します。 データセットグループに合わせて、[Forecasting domain] から一つを選択します。各ドメインは、小売り、在庫計画、ウェブのトラフィックなど、それぞれ特定のユースケースに対応しています。また、そのトレーニングに使われたデータ形式を基にしたデータセットタイプを使用します。今回は、帰属するカテゴリーがないすべてのユースケースをカバーしている、[Custom] ドメインを使用しましょう。 次に行うのは、データセットの作成です。今アップロードしようとしているデータは時間ごとに集められたものですので、[Frequency […]

Read More

SQL Server 2012 および 2016 での SQL Server Reporting Service 2016 の設定

 SQL Server Reporting Services (SSRS) への接続試行は、「Reporting Services インスタンスが見つかりませんでした」というエラーで失敗することがあります。 このエラーは、SSRS、SQL Server Integration Services (SSIS)、および SQL Server Analysis Services (SSAS) でインストールされた Amazon Machine Images (AMI) を使用するときに発生する場合があります。 この記事では、これらのエラーを避けるために SQL Server 2016 で SSRS 2016 を設定する方法のステップバイステップ手順を説明します。 エラーを確認する まず、SSRS が開始されたことを確認します。 関連する AMI を使用して Amazon EC2 インスタンスを起動します。 services.msc コンソールに移動します。これは 2 つの方法のいずれかを使って実行できます。 [ファイル名を指定して実行] から services.msc に入る。 SQL Server 構成マネージャーを使用する。 SQL Server […]

Read More

AWS DMS を使ってデータベースの移行とリフレッシュ処理を自動化する

アプリケーション開発者やシステム管理者は、データの移行、更新、マスクなどの目的で、データストア間での複製を行うことがあります。事前調査、スキーマ変換、スクリプト変換、データ移行、機能試験、パフォーマンスのチューニング、その他のタスクが伴うデータ複製作業は、多くの組織にとって複雑で複数のフェーズが必要な作業となります。そのため、データ複製をサポートするいくつものツールが存在します。 AWS Database Migration Service (DMS) は、データベースを AWS に迅速かつ安全に移行するためのツールです。ソースのデータベースは移行処理中でも完全な機能を維持するので、アプリケーションの中断時間を最小にできます。AWS DMS を利用すると、オープンソースで広く使われている商用データベースとの間で、双方向のデータ移行が行えます。 同種間および異種間、両方の移行をサポートする AWS DMS では、高い可用性を維持したまま、データストア間でのデータ複製を持続的に実行できます。AWS DMS では、全ロードで変更がキャッシュされたデータを、データストア間で継続的に複製できます。 今回の記事では、グローバルなデータの移行や更新、マスキングを自動で行うソリューションをご紹介していきます。このソリューションでは、DMS、AWS Lambda、Amazon CloudWatch リソースなどを統合しながら、AWS CloudFormation スタックをデプロイします。DMS のレプリケーションタスクが、オンプレミスから AWS Cloud 上にあるデータストアへのデータ移行もしくは更新を行います。 今回のデモでは、オンプレミス側のデータベースとしては Amazon RDS for Oracle DB インスタンスを使い、クラウドデータベースとしては Amazon Aurora MySQL インスタンスを使います。DMS のイベントサブスクリプション機能を有効にしておくと、DMS のレプリケーションタスクはすべてのタスクイベントを、Amazon SNS トピックを使い通知するようになります。この SNS トピックは、サブスクライブした Lambda 関数へ通知されます。この Lambda 関数が CloudWatch Events のルールを有効化もしくは無効化した後、DMS のレプリケーションタスクをトリガーします。 ネットワーク上の問題を簡素化するため今回のソリューションでは、すべてのサポートサービスを 1 つの […]

Read More

Deliveroo の宅配サービスと Amazon Rekognition で、毎日の夕食がお手軽に

ソフトウェアエンジニアの Florian Thomas 氏が、急成長中かつ求められている企業である Deliverooについて、このように話しています。どのみち、人は食べなければ生きていけません。Deliveroo には、彼の言葉で言うと「食事を注文する方法を変えるという使命があります」。  具体的には、Deliveroo はレストランと提携し、利用客の贔屓のメニューを玄関口に届けるのです。 Deliveroo は創設者兼 CEO である Will Shu 氏が、ロンドンに越してきた2013 年に起業しました。ロンドンには素敵なレストランが数多くあるにもかかわらず、たいていのレストランは宅配をしていないことにがっかりしたのです。そこで、地元の最高のレストランの食事を、客の玄関先に直接届けようと決意したのです。現在、Deliveroo のチームは 2,000 人となり、イギリスだけでなく、オーストラリア、アラブ首長国連邦、香港、ヨーロッパの国々のほとんどを含む 14 のグローバル市場で運営しています。 Deliveroo は常に顧客を中心に考え、各国のチームは成長してきました。Deliveroo が提供するものは、利用客が選んだメニューをお手軽かつタイムリーに提供することだけではありません。注文でトラブルが起こった場合 (漏れているなど)、そうした問題も同じようにタイムリーで、反応よく、そして創造的に処理します。利用客はサービスポータルを利用して、起こったトラブルを画像ベースのレポートでシェアできます。 「トラブルが発生したら、お客様は私たちに連絡するだけでなく、その状況を見せたいと思っていることを知ったのです」と Thomas 氏は言います。画像の付いたレポートでカスタマーケアチームがそれぞれの利用客にソリューションを提供できるだけでなく、その画像を Deliveroo のレストランパートナーともシェアし、カスタマーエクスペリエンスを改善し続けていくことが可能となります。 しかし、利用客がアップロードした画像がどれも適切であるわけではないと、Thomas 氏とチームはすぐに気付きました。そこで Deliveroo は、Amazon Rekognition を利用して、カスタマーサービスチームが不適切な画像を選別する必要をなくしました。このコンテンツモデレーションソリューションは使いやすく、Deliveroo のカスタマーケアフローに不可欠なものとなりました。実際に、週に数百枚の写真 (送信されるすべての画像の約 1.7%) を受取拒否しています。 Thomas 氏は次のように説明します。「Amazon Rekognition で、これらの写真をすべてリアルタイムで迅速かつ正確に処理できるため、実際の問題が発生した際も迅速にお客様に対応できます。さらに、エージェントとやり取りする時間も節約できるため、大切なお客様の問題に集中できるのです。」「Amazon Rekognition を使用すると、エージェントが重要である利用客の問題に素早く安全に対応するようになるため、お客様からの正当なクレームを自動的に処理できるようになります。」 Amazon Rekognition は長い間 AWS を使用してきた Deliveroo にとって、当然の選択でした。チームは当初、サービスへの信頼から AWS を選択しました。現在、Amazon […]

Read More

管理型スポットトレーニング: Amazon SageMaker トレーニングジョブで最大 90% を節約

Amazon SageMaker は、開発者やデータサイエンティストがあらゆる規模の機械学習 (ML) モデルを迅速かつ簡単に構築、トレーニング、デプロイできるようにする完全マネージド型プラットフォームです。組み込みアルゴリズムを使用するか、自分自身のものを使用するか、AWS Marketplace 内で使用可能なアルゴリズムから選択することがで、実験からスケールアウト生産までMLモデルを取得することは、かつてないほど簡単かつ迅速になりました。 One of the key benefits of Amazon SageMaker は重要な利点の 1 つは、作業するスケールにかかわらず、インフラストラクチャ管理から解放することです。たとえば、複雑なトレーニングクラスタのセットアップをし、管理する代わりに、Amazon SageMakerに使用する Amazon Elastic Compute Cloud (EC2) インスタンスタイプと必要な数を伝えるだけでかまいません。適切なインスタンスは、オンデマンドで作成され、設定され、トレーニングジョブが完了したら自動的に終了します。カスタマーが素早く理解するように、このことはトレーニングインスタンスを待機させるための支払いは行わず、コストを管理できる状態にするための簡単な方法であることを意味します。 管理型スポットトレーニングの紹介 ワンステップ更に進めて、当社はこれまでの Amazon SageMaker のオンデマンドのインスタンスを使用する場合に比べて、最大 90% のコストを削減することで ML トレーニングコストを下げることを支援する Amazon EC2 スポットインスタンスに基づいた新しい機能である Amazon SageMaker の管理型スポットトレーニングを発表することを非常に喜ばしく思っています。スポットインスタンスは約 10 年前にローンチされ、それ以来、AWS でスケール自在でコスト最適化された IT プラットフォームを構築する礎石となってきました。本日より、お使いの Amazon SageMaker トレーニングジョブが完全管理型のインフラすトラクター状で実行されるだけではなく、完全に管理されたコスト最適化の恩恵も受け、同じ予算でより多くの成果を上げることもできるようになりました。では、中を見ていきましょう! 管理型スポットトレーニングは、次のすべてのトレーニング設定で利用できます。 Amazon SageMakerによりサポートされているすべてのインスタンスタイプ。 全モデル: 組み込みアルゴリズム、組み込みフレームワーク、およびカスタムモデル 全設定: 単一インスタンストレーニング、分散トレーニング、および自動的なモデルの微調整 […]

Read More

Amazon Linux 2 の SQL Server 2017 で Active Directory 認証をデプロイし、設定する

Windows 上での SQL Server は、SQL Server インスタンスを設定して、Active Directory アカウントで Windows 認証を使用できるようにします。この記事は、Amazon Linux 2 で SQL Server 2017 を扱う方法について取り上げます。このソリューションは、Amazon EC2 で SQL Server Linux インスタンスを管理するために Windows 認証を使用して、Active Directory アカウントにログインできるようにします。 この記事では、次の作業方法について説明しています。 ドメインに SQL Server Linux インスタンスをデプロイし、結合します。 新しい Active Directory ユーザーを作成して、SQL Server Linux のサービス プリンシパル名を設定します。 SQL Server サービス キータブを追加します。キータブ ファイルを使用して、Active Directory に認証します。 SQL Server Management Studio (SSMS) を使用して、Active […]

Read More

研究データ管理基盤でのAmazon S3の活用

学術研究機関においては研究不正対策なども含め、研究データや関連資料の長期保存が必要となってきています。日本学術会議から公開された文章においても論文の実験データ等の資料は原則論文発表後10年保存することが必要であるとされています。 研究データや関連資料の保存のための基盤は多くの機関で必要となりますが、その際に考えるべきことは何でしょうか? 様々なことを考える必要はありますが、例えば、 メンバー管理・アクセスコントロール ファイル等のバージョン管理 研究証跡の記録 ファイル保管 高い耐久性でかつ大容量のストレージ 長期保管 のようなことを考える必要があるでしょう。 この1〜4の部分に関しては 米国NPOである Center for Open Science  (COS)のOpen Science Framework  (OSF) など研究データ管理用のオープンソースソフトウェア等の開発が進み、国内でも国立情報学研究所などがこれらをGakuNinRDMとしてカスタマイズして提供するなど、研究データ管理基盤の利用が開始されはじめています。 研究データ管理基盤としてこのようなソフトウェア等を利用していくためには、ストレージについて考えておく必要があります。研究データは年々増える一方ですので、各機関にてストレージを確保しておく必要があります。その際に前述の5〜6についても考える必要があります。 まず高い耐久性を持つためにには、オブジェクトのコピーを複数分散して配置するなどして耐久性を高める必要があります。ストレージの容量ですが、実際に研究を進めてみなければ必要な容量が分かってきません。急激に研究が進み、保存すべきデータが急増することもあるでしょう。あまりに大きく容量を見積もりすぎてしまうと、実際にはそこまで使用しなかった場合にその分のコストが無駄になってしまいます。また長期保存の場合、サービスの永続性が重要になってきます。論文を公開してから10年ということは、論文を発表し続ける研究者にとって、常にそこから10年ということになり、永続的にストレージを確保し続けて行く必要があることを意味します(図1)。 図1 研究が継続している場合のデータ保管期間 ストレージをオンプレミスで確保しようと考えた場合、データの耐久性を確保するために、複数拠点に冗長化されたストレージを用意する必要が出てきます。運用中はディスク等の故障時の交換やハードウェアの保守期限に合わせて後継となる機器の調達、またそれに伴うデータをコピーの手間も発生します。またオンプレミスで用意する多くの場合、最初にストレージ容量を決めておかなくてはならないため、過剰な容量を確保する傾向にもなってしまいコストが増大します。 現在、SINET5とAWSはInternet Exchange(IX)でピアリングもしているため※1、各機関からAWS上に構築されているシステムへアクセスするとSINET5の出口であるIXから直接AWS入る形となり、いわゆる一般に言うインターネットには出て行くことなく通信が可能となります。 また機関で用意されるストレージ はAmazon S3※2を利用頂くことで、標準で耐久性の高いストレージを利用でき、使用した分だけの支払いとなるため、スモールスタートが可能で、研究データや関連資料の量など将来を見積もり事が難しいものを長期間保管するのに適しており、前述の5〜6に対処することができると考えられます。 さまなざな機関や組織においてクラウドを利用する機会が増えています。利用形態もいくつか選択肢があり、AWSに直接サインアップしてご利用いただくケースやAPNパートナーの請求代行サービスを利用しアカウント管理と日本円での支払いを選択いただくことも可能です。各機関に合わせた幅広い選択肢があります。一方で入札による一括でしか調達できないような場合には、単価契約での調達や、図2のように例えば「Amazon S3で月あたりの積み上げで総計T[GB]のストレージをNヶ月以上利用出来、月あたり最大M[GB]以上利用できる環境を提供すること」などとして調達することが考えられます。このようにすることで、オンプレミスのように最初から最大の容量を調達することなく、徐々に増えていくストレージを調達することが可能であると考えられます。この際機関側と契約する企業間で総計容量の上限に達した場合にどのような扱いとするのかをあらかじめ決めておくことも重要です。 図2 時間軸とストレージの容量 他方、法令やデータの置き場所を気にされるお客様もいらっしゃいますが、お客様自身でAWS カスタマーアグリーメントの準拠法を日本法に変更し、更に、同契約に関するあらゆる紛争に関する第一審裁判所を東京地方裁判所に変更※3することができます。AWS ではコンテンツの所有権と管理権をお客様にお渡ししていますので、例えば東京リージョンを選択し、そこにデータを置いている場合はデータは日本国内に留まります。詳しくはAWSのデータプライバシー※4をお読みください。 まとめ 研究データ保管のための基盤としてが研究データ管理用のオープンソースソフトウェア等の開発がすすんでいます 研究データを置くための機関側ストレージとしてAmazon S3を利用頂くことができます Amazon S3は標準で耐久性が高く、使用した分だけの課金となるため、スモールスタートが可能で、研究データや関連資料の長期保存にも向いています   ※1  Amazon Web Services ブログ「学術研究機関でのSINET5を経由したAWSの利用」: https://aws.amazon.com/jp/blogs/news/sinet5-aws-explain/ ※2  Amazon Simple Storage Service (Amazon […]

Read More

[AWS Black Belt Online Seminar] AWS Serverless Application Model 資料及び QA 公開

先日 (2019/08/14) 開催しました AWS Black Belt Online Seminar「AWS Serverless Application Model」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。   20190814 AWS Black Belt Online Seminar AWS Serverless Application Model   AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. AWS SAM CLI 自体を Docker コンテナの中で実行することは可能でしょうか? A. Docker コンテナの中で実行することも可能です。ただし、Lambda 関数のローカル実行や、コンテナを利用したビルドを行う場合、コンテナの中でコンテナを起動する形になるため、たとえば docker コマンドの実行時に privileged フラグを付与するといった、いわゆる docker in docker の構成でコンテナを起動するための手続きは必要になりますので、ご留意いただければと思います。 Q. 自動で生成されるLambdaの単体テストはどのように実施できるのでしょうか? A. SAM CLI の sam init コマンドにより自動生成される […]

Read More