Amazon Web Services ブログ

Waves における大規模なユーザークエリとレコメンデーションへの Amazon Neptune の利用

本記事は、ClearScale のソリューションアーキテクチャディレクタであり、APN のプレミアコンサルティングパートナーとしてもクラウドの全体的なプロフェッショナルサービスを提供している、Pavel Vasilyev 氏の寄稿です Waves は Y Combinator から支援を受けているデートアプリです。同社の既存の IT アーキテクチャが、Google Cloud では維持しきれなくなると経営陣が認識したとき、それは AWS への移行を開始するタイミングとなりました。Waves は、Google Cloud から AWS への移行、およびグラフデータベースエンジン専用に設計された Amazon Neptune などのサービスを使った機能を実装するにあたり、 ClearScale とパートナーを結ぶことを決めました。Neptune を使用する開発者は、相互接続したデーセットを扱うアプリケーションの構築と実行が可能になります。これは、Waves が必要としていた機能そのものです それまで Waves アプリケーションは、急速に増加するユーザー数に起因する、いくつもの課題と対峙していました。これらの課題には、特定のデータベースクエリが原因となった信頼性やレイテンシーの問題が含まれます。これらのクエリは、アプリに組み込まれたレコメンデーションエンジンが実行しているものです。加えて、Waves でのインフラストラクチャ向け予算は想定外の速さで増加し続けており、その終着点も見えない状態だったのです。 この記事では、Waves のワークロードを AWS に移行するために、ClearScale が取った手法をご紹介します。またそこで、膨大なクエリボリュームを処理できる先進的なレコメンデーションエンジンを構築するために、Neptune を導入した方法についてもご説明していきます。加えて、AWS が提供する他の機能を使用しながら、ClearScale が Waves の全体的なアーキテクチャを強化した方法も解説します。 移行プロジェクト まず、Waves と ClearScale の両者は、この共同作業が、次のような 5 つのステージに分かれることを明確化しました。 Cloud Storage から Amazon Simple Storage […]

Read More

機械学習を使用してリアルタイムのレース分析を提供

AWS DeepRacer は、機械学習 (ML) を初めて使用する経験のない開発者にとって、楽しく簡単な方法です。2019 年シーズンの終わりに、AWS DeepRacer リーグは、Amazon ML Solutions Lab と協力して、re:Invent 2019 で行われた AWS DeepRacer チャンピアオンシップカップの新しいスポーツ分析機能を開発しました。 このようなリアルタイム分析の目的は、上位の競争相手の戦略や戦術について、コンテキストやより詳細な経験を提供することにありました。これにより、視聴者は特定のモデル戦略がどのようにして順調に進展したのかを明確に理解でき、ML の開発をさらに分かりやすいものにし、実世界での応用できることを実証しました。この強化により、ファンは世界中の競争相手のパフォーマンスと運転スタイルを監視できるようになりました。 この投稿では、これらの分析を開発し、本番環境にデプロイし、ファンに配信した方法について説明します。 ML と従来の統計情報から得られるインサイトを活用 ML Sokutions Labは、モータースポーツに関する当社の専門知識を活用して、ML と従来の統計学の両方を活用したカスタムのアナリティクススイートを構築しました。 競争相手の勢いは、将来のパフォーマンスを示す重要な指標です。例えば、連勝状態にあると、超高速ラップを続けて記録する場合のように、自信を深めることができます。しかし、連敗状態になると、逆に働き、順調に進めることは困難になります。競争相手の次のラップタイムを予測することで、この傾向をファンに伝えました。Amazon Forecast で AutoML を使用してさまざまな予測方法を比較した結果、指数平滑化法( ETS )アルゴリズムを使うと、使用可能なデータセットが小さいにも関わらず正確な予測が得られることが分かりました。 ラップタイムの一貫性のようなメトリクスにより、ファンは、64 人の競技者が参加するチャンピオンシップカップ開幕戦では、さまざまな運転スタイルを解釈することができるようになりましたが、2 日目のトーナメント試合では、どのスタイルが優位に立つのははっきりしませんでした。ソラの攻撃的で危険なほど早いペースを、フミアキの一貫して正確なスタイルが抑えて勝利を収めるのでしょうか? シミュレーションされたレースを使用して、各対戦の勝者を予測することができ、ファンが最後まで大接戦となるようなレースを予測することできるようにしました。統計的アプローチをとり、各競合相手のラップタイムを確率分布でモデル化しました。2019 年の AWS DeepRacer サミットのデータを参照することで、特定の競合相手のラップタイムの分布は全体的に右に歪んでおり、時間の経過とともに改善していることが分かりました。このラップタイムの歪度をとらえるには、最尤推定法を用いてワイブル分布にあてはめることにより、最適スケールとシフトパラメータを見つけます。 次にグラフは、上位 3 名の競合相手のラップタイムの分布を示しています。 勝者の予測問題を、より早い競争相手の最速タイムに打ち勝つ可能性(テイル確率)としてとらえ、モンテカルトシミュレーションを使用して、各競争相手のワイブル分布からサンプルと採取し、その可能性を計算しました。 サーバレスアーキテクチャを使用したソリューションをデプロイ これらのインサイトをリアルタイムで計算するために、AWS 上で低レイテンシでサーバーレスのアーキテクチャに分析法一式をデプロイしました。次の図は、このアーキテクチャを示しています。 アーキテクチャには、次の手順が含まれます。 競争者がラップを完了すると、その時間は Amazon Aurora サーバーレスを動作させている Amazon Relational […]

Read More

オンラインテックトーク (6 月 24 日): Amazon S3 のためのコスト最適化ガイドライン

6 月 24 日、弊社の AWS オンラインストレージテックトークにおいて、AWS の専門家が Amazon S3 のためのコスト最適化ガイドラインを説明します。どうぞお見逃しなく。このテックトークは、午前 11:00~午後 12:00 太平洋時間 (午後 2:00~午後 3:00 東部時間) に開催されます。 Amazon S3 ストレージクラス 全体のコスト最適化を効果的にするには、アプリケーションレイテンシおよびアクセスパターンに応じて、様々なアプローチが必要となります。全ての S3 ストレージクラスは、それに相当するコストにて特定のデータアクセスレベルをサポートします。例えば、頻繁なアクセスのために S3 標準でミッションクリティカルな本番データを保存したり、アクセスされるのが稀なデータを S3 標準 – IA で保存することでコストを削減したり、Intelligent-Tiering を使用してコスト削減を自動化したり、アーカイブストレージクラス(S3 Glacier および S3 Glacier Deep Archive)でデータを最低コストでアーカイブしたりなどです。.このテックトークにおいては、 Amazon S3 でデータを保存するための鍵となるコスト最適化ガイドラインをレビューします。また、共通の Amazon S3 ワークロードのためにデザインパターンを共有し、ワークロードパフォーマンスの要求事項を満たしながらもコストを最適化するためのサポートをします。 この 300 レベルのオンラインセミナーの内容は、以下の通りです。 S3 ストレージクラス全体にオブジェクトを保存することにより、コスト最適化のベストプラクティスを学ぶ オブジェクトをより低コストなストレージクラスへ移動させるために S3 Lifecycle と Storage Class […]

Read More
Lambda Thumb

新機能 – Lambda関数の共有ファイルシステム – Amazon Elastic File System for AWS Lambda

本投稿は AWS の Chief Evangelist (EMEA)であるDanilo Pocciaによる寄稿です。 AWS Lambda関数がAmazon Elastic File System(EFS)をマウントできるようになったことを非常に嬉しく思います。EFSは、高可用性と耐久性のために複数のアベイラビリティーゾーン(AZ)にまたがってデータを格納するスケーラブルでエラスティックなNFSファイルシステムです。このように、使い慣れたファイルシステムインターフェイスを使用して、関数単体、および複数のLambda関数のすべての同時実行環境にわたってデータを保存および共有できます。 EFSは、強力な整合性やファイルロックなどの完全なファイルシステムアクセスセマンティクスをサポートしています。 Lambda関数を使用してEFSファイルシステムを接続するには、EFSアクセスポイントを使用します。これは、ファイルシステムへのアクセス時に使用するオペレーティングシステムのユーザーとグループを含むEFSファイルシステムへのアプリケーション固有のエントリポイント、ファイルシステムのアクセス許可、およびファイルシステム内の特定のパスへのアクセスを制限できます。これにより、ファイルシステム構成をアプリケーションコードから切り離しておくことができます。 同一のアクセスポイント、または異なるアクセスポイントを使用して、複数の関数から同じEFSファイルシステムにアクセスできます。たとえば、異なるEFSアクセスポイントを使用して、各Lambda関数はファイルシステムの異なるパスにアクセスしたり、異なるファイルシステムのアクセス許可を使用したりできます。 同じEFSをAmazon Elastic Compute Cloud(EC2)インスタンス、Amazon ECSとAWS Fargateを使用するコンテナ化されたアプリケーションや、オンプレミスサーバーと共有できます。このアプローチに従って、異なるコンピューティングアーキテクチャ(関数、コンテナ、仮想サーバー)を使用して同じファイルを処理できます。たとえば、イベントに反応するLambda関数は、コンテナで実行されているアプリケーションによって読み取られる構成ファイルを更新できます。または、Lambda関数を使用して、EC2で実行されているWebアプリケーションによってアップロードされたファイルを処理できます。 このようにすると、いくつかのユースケースではLambda関数によって実装がより容易になります。例えば: /tmpで使用可能な容量(512MB)より大きいデータを処理またはロードする。 頻繁に変更されるファイルの最新バージョンをロードする。 モデルやその他の依存関係をロードするためにストレージ容量を必要とするデータサイエンスパッケージを使用する。 呼び出し間で関数の状態を保存する(一意のファイル名またはファイルシステムロックを使用)。 大量の参照データへのアクセスを必要とするアプリケーションの構築。 レガシーアプリケーションをサーバーレスアーキテクチャに移行する。 ファイルシステムアクセス用に設計されたデータ集約型ワークロードとの相互作用。 ファイルを部分的に更新する(同時アクセス用のファイルシステムロックを使用)。 アトミック操作でファイルシステム内のディレクトリとそのすべてのコンテンツを移動する。 EFSの作成 EFSをマウントするには、Lambda関数がEFSマウントターゲットに到達できるAmazon Virtual Private Cloud(VPC)に接続されている必要があります。ここでは、簡単にするために、各AWSリージョンで自動的に作成されるデフォルトのVPC を使用しています。 Lambda関数をVPCに接続する構成にすると、ネットワーク環境の変化に伴う変更が必要になることがある点に注意してください。 Lambda関数がAmazon Simple Storage Service(S3)またはAmazon DynamoDBを使用している場合は、それらのサービスのゲートウェイVPCエンドポイントを作成する必要があります。 Lambda関数がパブリックインターネットにアクセスする必要がある場合、たとえば外部APIを呼び出す場合は、NATゲートウェイを構成する必要があります。通常、デフォルトVPCの構成は変更しません。特定の要件がある場合は、AWS Cloud Development Kitを使用してプライベートおよびパブリックサブネットで新しいVPCを作成するか、これらのAWS CloudFormationのサンプルテンプレートのいずれかを使用します。このようにすることで、ネットワークをコードとして管理できます。 EFSコンソールで、[Create file system]を選択し、default のVPCとそのサブネットが選択されていることを確認します。すべてのサブネットで、同じセキュリティグループを使用してVPC内の他のリソースへのネットワークアクセスを提供するデフォルトのセキュリティグループを使用します。 次のステップでは、ファイルシステムにNameタグを付け、他のすべてのオプションをデフォルト値のままにします。 次に、[Add access […]

Read More

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

AWS Secrets Controller PoC: AWS Secrets Manager と Kubernetes の統合

  はじめに Kubernetes では、API キーや証明書などのシークレットオブジェクトを使用して、podSpec の外部に機密情報を保存して管理できます。概念的には、これにより、他のタイプの Kubernetes オブジェクトとは異なる方法でシークレットを処理できます。それにもかかわらず、多くの顧客は、最初に導入されたときにカスタマーマネージドキーによる強力な暗号化オプションが含まれていなかったため、シークレット素材の保存用に Kubernetes Secrets を使用することを避けました。これが、この PoC を作成する動機となりました。Kubernetes 動的アドミッションコントローラを使用して、外部サービス (AWS Secrets Manager) からシークレットを使用する方法を示します。 EKS の最近の進歩 最近、EKS は Kubernetes Secrets の KMS エンベロープ暗号化のサポートを追加しました。エンベロープ暗号化では、カスタマーマネージドの AWS KMS キーを使用して、Kubernetes がシークレットの暗号化に使用するデータキーを暗号化できます。これにより、Kubernetes の外部に保存されている別のキーに依存するため、全体的なセキュリティ体制を強化できます。AWS が etcd に保持されているデータを保護するために、既に使用しているフルボリューム暗号化に追加されます。Kubernetes Secrets データ暗号化の詳細については、暗号化データのドキュメントをご覧ください。 エンベロープ暗号化により、Kubernetes Secrets はシークレット素材を保存するための実行可能なオプションになりますが、これにはいくつかの欠点があります。まず、Kubernetes ポッドとシークレットのスコープは名前空間です。ポッドとシークレットが名前空間を共有している場合、ポッドはその名前空間で作成されたすべてのシークレットを読み取ることができます。次に、Kubernetes Secrets は自動的にローテーションされません。シークレットを定期的にローテーションする必要がある場合は、手動でローテーションを行う必要があります。 Kubernetes Secrets の代案 従来からお客様は、詳細な権限とシークレットの自動ローテーションの両方をサポートする Hashicorp の Vault などの外部シークレットプロバイダーを使用して、Kubernetes Secrets の欠点に対処してきました。また、Kubernetes サービスアカウントおよび変更ウェブフックを介して Kubernetes […]

Read More

Amazon Aurora MySQL から Amazon S3 にデータをエクスポートおよびインポートするためのベストプラクティス

複雑なアプリケーションを小さな部分に分割することにより、多数の専用データベースを使用して高度に分散したアプリケーションを構築できます。これにより、ジョブに適したデータベースを選択できます。Amazon Aurora は、OLTP ワークロードの推奨される選択肢です。Aurora により、クラウド内でリレーショナルデータベースをセットアップ、操作、スケーリングするのが容易になります。 この記事では、Aurora MySQL から Amazon Simple Storage Service (Amazon S3) にデータをエクスポートおよびインポートする方法を示し、関連するベストプラクティスについて説明します。Amazon Aurora PostgreSQL では、データを Amazon S3 機能にエクスポートおよびインポートすることもできます。このブログでは、Amazon Aurora MySQL に焦点を当てます。 Aurora と Amazon S3 の概要 Aurora は、クラウド向けに構築された MySQL と PostgreSQL の互換性があるリレーショナルデータベースで、従来のエンタープライズデータベースのパフォーマンスと可用性、およびオープンソースデータベースのシンプルさと費用対効果を兼ね備えています。 Amazon S3 は、業界をリードするスケーラビリティ、データの可用性、セキュリティ、およびパフォーマンスを提供するオブジェクトストレージサービスです。つまり、どの規模と業界の顧客もこれを使用して、任意の量のデータを保存および保護できます。 前提条件 始める前に、以下を完了してください。 Aurora MySQL DB クラスターを起動します。既存のクラスターを使用することもできます。 MySQL クライアントをインストールした Amazon EC2 インスタンスを起動します。ここでは、MySQL Workbench を使用することもできます。 次の必須の Identity and Access […]

Read More

Amazon DocumentDB (MongoDB 互換) の開始方法 – パート 3; – Robo 3T の使用

Amazon DocumentDB (MongoDB 互換) は、MongoDB のワークロードをサポートする、高速かつスケーラブルで可用性に優れたフルマネージド型のドキュメントデータベースサービスです。お客様は、基盤となるインフラストラクチャの管理を気にすることなく、現在ご使用のものと同じ MongoDB 3.6 向けのアプリケーションコード、ドライバー、ツールを、そのまま Amazon DocumentDB 上でワークロードを実行、管理、そしてスケールするのに使えます。ドキュメントデータベースである Amazon DocumentDB は、JSON データの保存、クエリ、およびインデックスを容易にします。 このシリーズのパート 3 であるこの投稿では、Amazon DocumentDB と Robo 3T (旧 Robomongo) の開始方法を説明します。Robo 3T は、軽量でシェル中心のオープンソースプラットフォーム間のグラフィカルユーザーインターフェイスツールであり、MongoDB ワークロードを管理します。Robo 3T は、データベースとコレクションの作成、ユーザーやドキュメントの追加、オートコンプリート機能を搭載した 1 回限りのクエリの実行、GUI インターフェイスからの結果の視覚化を実現するため、より効率的です。 この投稿では、VPC 内に単一インスタンスの Amazon DocumentDB クラスター、同じ VPC 内の EC2 Linux VM を作成し、2 つの間に SSH トンネルを設定します。また、Robo 3T を使用してクラスターに接続し、ローカルコンピュータからいくつかのクエリを実行します。次の図は、このチュートリアルの最終的なアーキテクチャを示しています。 Amazon DocumentDB クラスターの作成 AWS コマンドラインインターフェイス […]

Read More

Amazon EKS Windows コンテナで Calico を使用する

 この投稿は、ソフトウェア開発エンジニアの Anuj Singh 氏とエンタープライズソリューションアーキテクトの Steven David 氏によって提供されたものです。 このブログ投稿では、Amazon Elastic Kubernetes Service (EKS) で実行されている Calico for Windows コンテナをインストールして使用する方法について、順を追って説明します。 Tigera Calico for Windows は、Kubernetes ベースの Windows ワークロード向けのネットワーキングおよびネットワークセキュリティソリューションです。.NET アプリケーションなどの Windows ワークロードを EKS 環境に移動でき、ネットワークポリシーの適用の管理に Calico を役立てることができます。ネットワークポリシーは、ポッドなどの低レベルのデプロイでネットワークを定義できる AWS セキュリティグループに似ています。 Calico は以前 Amazon EKS Linux 環境で検証されました。プロセスはこちらに記載されています。本日は、EKS Windows ワーカーノードにおける Calico のサポートについて詳しく説明しています。Windows ノードの Calico は、Linux ノードのポッドとは対照的に、Windows サービスとして実行されます。 Tigera Calico for Windows は通常、Tigera […]

Read More

Amazon SageMaker を使用して本番稼働で ML モデルの A/B テストを行う

 完全マネージドサービスの Amazon SageMaker では、開発者やデータサイエンティストが機械学習 (ML) モデルを迅速に構築、トレーニング、デプロイできます。Intuit、Voodoo、ADP、Cerner、Dow Jones、Thompson Reuters をはじめとする何万人ものお客様が、Amazon SageMaker を使って ML プロセスで発生する負担の大部分を解消しています。Amazon SageMaker を使用すれば、ホストされたエンドポイントに ML モデルをデプロイし、リアルタイムに推論結果を取得できます。エンドポイントのパフォーマンスメトリクスは Amazon CloudWatch で簡単に表示でき、自動スケーリングを有効化することで、トラフィックに基づいて自動的にエンドポイントのスケールを調整できるほか、可用性を失うことなく本番稼働でモデルを更新できます。 e コマースアプリケーションなど、多くの場合、オフラインでのモデル評価では不十分であり、モデル更新の意思決定をする前に、本番稼働でモデルの A/B テストを実施する必要があります。Amazon SageMaker を使用すると、エンドポイントで複数の本番稼働用バリアントを実行することで、ML モデル上で A/B テストを簡単に実施できます。本番稼働用バリアントを使用することで、さまざまなトレーニングデータセット、アルゴリズム、および ML フレームワークを使用してトレーニングされた ML モデルをテストしたり、異なるインスタンスタイプのモデルの振る舞いをテストしたり、あるいは上記すべてを組み合わせたテストを行うことができます。 今までの場合、Amazon SageMaker は、ユーザーがエンドポイント上の各バリアントに指定した配分に基づいて、バリアント間の推論トラフィックを分割していました。これは、各バリアントにどれくらいのトラフィックを送るかを制御する必要がある一方で、リクエストを特定のバリアントにルーティングする必要がない場合に役立ちます。たとえば、本番稼働でモデルを更新して、トラフィックの一部を新規モデルに転送することで、既存のモデルと比較する必要がある場合などです。しかしユースケースによっては、特定のモデルで推論リクエストを処理して、特定のバリアントを呼び出す必要があります。たとえば、異なるカスタマーセグメントをまたいで ML モデルがどのような振る舞いをするかをテストおよび比較し、あるセグメントのカスタマーからのリクエストすべてを、特定のバリアントを用いて処理する必要がある場合などです。 今では、どのバリアントで推論リクエストを処理するかを選べるようになりました。各推論リクエストで TargetVariant ヘッダーを指定することで、Amazon SageMaker は指定されたバリアントでリクエストを処理します。 ユースケース: Amazon Alexa Amazon Alexa では、Amazon SageMaker を使用して、さまざまな ML ワークロードを管理しています。Amazon Alexa […]

Read More