Amazon Web Services ブログ

AWS 中国 (寧夏) リージョンが利用可能になりました

AWS は世界で 17番目、中国では 2 番目のリージョン提供を開始しました。Ningxia Western Cloud Data Technology Co. Ltd. (NWCD) が運営している AWS 中国 (寧夏) リージョンの一般公開を開始しました。これにより、中国の AWS でアプリケーションを実行したりデータを保管するお客様に新たなオプションを提供できるようになりました。

詳細
現在、NWCD が運営する新しい中国 (寧夏) リージョンは Auto ScalingAWS ConfigAWS CloudFormationAWS CloudTrailAmazon CloudWatchCloudWatch EventsAmazon CloudWatch LogsAWS CodeDeployAWS Direct ConnectAmazon DynamoDBAmazon Elastic Compute Cloud (EC2)Amazon Elastic Block Store (EBS)Amazon EC2 Systems ManagerAWS Elastic BeanstalkAmazon ElastiCacheAmazon Elasticsearch ServiceElastic Load BalancingAmazon EMRAmazon GlacierAWS Identity and Access Management (IAM)Amazon Kinesis StreamsAmazon RedshiftAmazon Relational Database Service (RDS)Amazon Simple Storage Service (S3)Amazon Simple Notification Service (SNS)Amazon Simple Queue Service (SQS)AWS Support APIAWS Trusted AdvisorAmazon Simple Workflow Service (SWF)Amazon Virtual Private CloudVM Import をサポートしています。サービス詳細については AWS 中国の製品ページをご覧ください。

同リージョンは C4D2M4T2R4I3X1 インスタンスすべてのサイズをサポートしています。

現在および今後の AWS リージョン詳細については、AWS グローバルインフラストラクチャのページを参照してください。

オペレーティングパートナー
中国の法律および規制を順守した状態で AWS 中国 (寧夏) リージョンにてサービスを運営し提供するため、AWS は NWCD と技術戦略の提携を組んでいます。2015 年に設立された NWCD は中国の寧夏にある認定データセンターおよびクラウドサービスプロバイダです。NWCD は中国における AWS オペレーティングパートナーとして AWS 中国の北京リージョンを運営している Sinnet と提携しています。NWCD と Sinnet が地元顧客に対し AWS クラウドサービスの運営と提供を行いながら、こうした提携を介して AWS は業界をリードするテクノロジーやガイダンス、専門知識を NWCD や Sinnet に提供しています。この 2 つの AWS 中国リージョンで提供しているクラウドサービスは他の AWS リージョンで提供しているものと同様ですが、AWS 中国はその他の AWS リージョンから単離しており、他とは区別された状態で AWS 中国のパートナーにより運営されています。そのため、AWS 中国リージョンをご利用のお客様は AWS とではなく Sinnet そして NWCD と取引約諾書を結ぶことになります。

今すぐ使用可能
NWCD が運営する AWS 中国 (寧夏) リージョンは今すぐ使い始めることができます。本日より、中国の開発者、スタートアップ、エンタープライズそして政府機関や教育機関、非営利組織は NWCD が運営する新しい AWS 中国 (寧夏) リージョンでアプリケーションの実行やデータを保管することができます。Sinnet が運営している AWS 中国 (北京) リージョンをすでにご利用のお客様は、AWS マネジメントコンソールから直接 AWS 中国 (寧夏) リージョンを選択することができます。AWS 中国リージョン両方の使用開始をご希望の新規のお客様は www.amazonaws.cn でアカウントをリクエストしてください。

Jeff;

AWS Deep Learning AMI の更新: TensorFlow、Apache MXNet、Keras、PyTorch の新バージョン

TensorFlow、PyTorch、Keras、最新バージョンの Apache MXNet 1.0 などを含む様々なフレームワークにわたり、NVIDIA Tesla V100 “Volta” GPUs でのトレーニング速度を大幅に改善するため、AWS Deep Learning AMI を更新しました。

現在使用可能な AMI には主に 2 つのタイプがあります。Conda ベースの AWS Deep Learning AMI は、一般的に使用されているフレームワークの最新のポイントリリース (事前設定済みの CUDA、ノートブック、サポートしているライブラリを含む) を Conda ベースの仮想環境内にまとめています。これはすべての開発者に対して推奨されています。ソースコードを使用する Deep Learning AMI は、基盤となるフレームワークに変更を施したい場合や、最先端の技術を取り入れたい場合に適しています。AWS はこの AMI で使用可能なカスタムそして最適化したビルドを構築しています。これにはいくつもの高度な機能やパフォーマンスの改善が含まれています。本稼働環境で導入する前にコードをテストしてください。 

TensorFlow の様々な精度を使用してトレーニング速度を改善

ソースコードを使用した新しい AMI には TensorFlow のカスタマイズされた更新済みビルドが含まれています。これは EC2 の P3 インスタンスで使用可能な V100 GPU で様々な精度を使用するトレーニングと推論を活用します。これによりトレーニング時間を大幅に短縮することができます。たとえば、このビルドを使用して ResNet-50 をトレーニングした場合、ストックの TensorFlow 1.4 に比べて 1.6 倍も優れた結果を得ることができます。

このビルドは Amazon LinuxUbuntu を対象とした CUDA 9 とソースコードを使用した更新済みの AMI で使用可能です。これは TensorFlow のマスターブランチをベースにしています (コミット: d73e8b3、抽出日: 2017 年 12 月 5)。TensorFlow 1.4 を使用したい場合は Amazon LinuxUbuntu を対象とした AWS Deep Learning AMI の Conda 仮想環境で利用することができます。 

Keras 2.0 のパフォーマンス改善

TensorFlow 1.4 バックエンドで実行している AMI の Conda 仮想環境で Keras 2.0 を使用できるようになりました。また、Volta に最適化した TensorFlow ビルドに対しても Keras コードを実行することができます。詳しくは先述の CUDA 9 を使用するソースコード AMI の項目をご覧ください。

Volta サポートを備えた PyTorch の最新バージョン

Conda とソースコード AMI に最新バージョンの PyTorch v0.3.0 が含まれるようになりました。これには CUDA 9、cuDNN 7 のサポートが追加されているほか、V100 “Volta” GPU で行うトレーニングモデルに関連するパフォーマンスの改善も含まれています。また、MXNet、Caffe2、Microsoft Cognitive Toolkit がサポートしている一般的なモデル交換形式の ONNX モデルエクスポーターを含むなど、新たなパフォーマンスとユーザビリティの改善も追加しています。

パフォーマンス、ユーザビリティ、相互運用性を含む Apache MXNet 1.0 の最新バージョン

AMI には Apache MXNet 1.0 リリースも含まれています。MXNet パッケージの新たなモデル提供機能は、数行のコードでディープラーニングモデルを実行し提供することができます。これには新しいグラデーション圧縮機能、Caffe フレームワークで記述されたニューラルネットワークコードを MXNet コードに変換する新しいモデルコンバーターも用意されており、開発者は MXNet のスケーラビリティとパフォーマンスをより簡単に活用できます。

ディープラーニングと ONNX

Open Neural Network Exchange (ONXX) は Facebook、Microsoft、AWS がサポートするイニシアチブで、フレームワーク間のトレーニング済みモデルの可搬性を改善します。Deep Learning AMI に含まれているフレームワークの多くが何らかの ONNX サポートを含むようになったため、AMI はインスタンスを終了せずに複数のエンジンでモデルの推論パフォーマンスをテストするのに優れた場所になりました。たとえば PyTorch をトレーニングし Caffe2 で推論を行うことができます。この移動を簡単に行い評価するのに必要な最新のフレームワークとツールをすべて備えているため、Deep Learning AMI が素早くスムーズに移動することができます。 

AWS Deep Learning AMI の使用開始

AWS Deep Learning AMI の使用開始は簡単です。Machine Learning ユーザーの様々なニーズに応えるため、AMI の最新リリースは AWS Marketplace で使用可能になっています。AWS の「AMI セレクションガイド (AMI selection guide)」では、1 回のクリックでディープラーニングプロジェクトに適した AMI を選択、取得できます。また、AWS ではモデルトレーニングを迅速に進められるよう、クイックチュートリアル開発者用リソースを多数ご用意しています。

Conda ベースの AMI:

Deep Learning AMI (Ubuntu)

Deep Learning AMI (Amazon Linux)

AMI とソースコード:

P3 インスタンス

Deep Learning AMI とソースコード (CUDA 9、Ubuntu)

Deep Learning AMI とソースコード (CUDA 9、Amazon Linux)

P2 インスタンス

Deep Learning AMI とソースコード (CUDA 8、Ubuntu)

Deep Learning AMI とソース (CUDA 8、Amazon Linux)


今回のブログの投稿者について

Cynthya Peranandamは、AWS 人工知能ソリューションのプリンシパルマーケティングマネージャーです。ユーザーがビジネス価値の提供を実現できるように、ディープラーニングの使用をサポートしています。余暇にはジョギングをしたり音楽鑑賞を楽しんでいます。

re:Invent Recap – Windows によるエンタープライズイノベーション推進に関するアナウンスについて

私の同僚であるSandy Carterが先週の AWS re:Invent にてエンタープライズイノベーション戦略について共有しました。以下に彼女のステージでのアナウンス内容についての概略をお伝えいたします。 – Jeff;


 

“私はこの会社にイノベーションを起こしたいと思っていますが、成功できるかどうか自信がありません…”。私は自らの経験の中で、こういった懸念の言葉を何度も企業の経営幹部の方から伺いました。実際、最近のプライスウォーターハウスクーパースの調査では、93%の経営幹部がイノベーションを起こすことで企業の成長を達成するという事を信じていますが、そのうち半数の方々がその革新的なアイディアを速やかに市場に投入してゆく事に課題を持っている、という結果が出ています。

多くのお客様が企業におけるイノベーションを起こすことに苦労しておられるので、私はAWS re:Inventのこのステージ上から、奇跡的なイノベーションに成功された皆様の体験を共有していただけることに大変興奮を感じております。Johnson & Johnson 社から Parag Karnik 氏、Hess Corporation 社からBill Rothe 氏、Just Eat 社からDave Williams 氏そして Pitney Bowes 社からはOlga Lagunova 氏に、その素晴らしい成功体験と創造性をシェアして頂ける事に感謝いたします。

 

 

昨週にAWSから発表したもののうち、私は特に以下の企業におけるイノベーションを推進する新製品とプログラムについて興奮を覚えています :

AI: 深層学習向け “Amazon Machine Image (AMI) on EC2 Windows”

re:Inventでも共有しましたが、すでにInforのようなお客様はAWS上で展開、提供される業界特化型アプリケーションにAIを取り入れることに成功されております。我々はWindowsデベロッパーの方にも、MXNetTensorFlowCaffe2といった著名なフレームワークと取り入れ、簡単に素早くAIや機械学習への取り組みを開始していただきたいと考えています。これらを実現するために、我々はre:Inventにて新しく Deep Learning AMI for Microsoft Windowsをアナウンスいたしました。このAMIは機械学習アプリケーションのためのWindows Serverベースの大規模な深層学習のモデルトレーニング環境を簡単にそして素早く構築できるものです。

IoT: SQLとIoTデータの可視化と分析

市場予測によれば、2020年までに310億ものIoTデバイスが生まれるといわれています。AWSはWindowsを利用する全てのお客様が、そういったデバイスから得られるデータを有効活用できるようになる事を望んでいます。例えばPitney Bowes社は今や13万ものIoTデバイスのストリームデータをAWSで管理しています。そして機械学習を用いて顧客体験を向上させ、効率を改善し新しいサービスを充実させることに成功しています。AWS IoT Analyticsを活用して、IoTデータの分析を実行しIoTアプリケーションや機械学習のユースケースをより正確に判断するのに役立つ解析を行う事ができます。AWS IoT Analyticsは、SQL ServerのトランザクションデータなどのコンテキストメタデータでIoTデバイスのデータを自動的に補完させることができます。

AWS上での.NETデベロッパー向け機能の追加

AWS上のWindows開発者のために提供した快適な開発体験を支援する拡張に加えて、AWS LambdaおよびAWS CodeBuildに来年初頭より.NET Core 2.0サポートを追加することを発表しました。.NET Core 2.0には、Razorページ、.NETフレームワークとのより良い互換性、前バージョンの2倍以上のAPIなど多数の新機能が含まれています。この発表によりLambdaとCodeBuild上で、最新の.NET Core機能を利用してサーバーレスおよびDevOps環境を構築することができます。

Windowsアプリケーションの容易なバックアップ (VSSサポート)

我々は最近Amazon EC2 Systems Manager による Microsoft VSS を使用したスナップショットサポートをアナウンスしました。これによってAmazon Elastic Block Store (EBS) を使いWindowsインスタンス上で稼働しているアプリケーションに対して、バックアップを取得するためのカスタムスクリプトやインスタンスのシャットダウンをすることなくVSSスナップショットを取得することが可能となります。Windowsアプリケーションをバックアップする際の運用負荷を取り除く事が可能となります。

BYOL方式におけるライセンスの最適化

AWSでは、お客様のワークロードのニーズに最も適した様々なインスタンスタイプとファミリを提供しています。お客様がもしvCPUカウントでライセンスされたソフトウェアを使用している場合は、vCPU数を微調整してライセンス費用を最適化するご要望があるかもしれません。私はここに、EC2のインスタンスを2つの側面でより適切にコントロールするための機能をアナウンスいたします:
1. vCPUベースのライセンス費用を節約するために、新しいインスタンスを起動するときにカスタムのvCPU数を指定できます。例えばSQL Serverのライセンスなどです。
2. 一部のハイパフォーマンスコンピューティング(HPC)アプリケーションのように、シングルスレッドCPUが適しているワークロードに対してハイパースレッディングテクノロジを無効にすることができます。これらの機能を使用することで、独自のライセンス(BYOL)を所有されているお客様はライセンス使用を最適化し節約することが可能となります。

Server Migration Service for Hyper-V Virtual Machines

Hess社のBill Rothe氏がre:Inventで共有していたように、Hess社ではSQL Server、SharePoint、SAP HANAなど幅広いワークロードのクラウドへの移行を成功させました。 AWS Server Migration Service(SMS)は、このようなエンタープライズでの移行をさらにサポートするために Hyper-V仮想マシン(VM)の移行をサポートするようになりました。AWS Server Migration Serviceにより、オンプレミスのHyper-V環境からAWSへの大規模なサーバー移行をより簡単に行うことができます。AWS Server Migration Serviceによって、稼働中のサーバーボリュームの増分レプリケーションを自動化し、スケジューリングし、追跡管理することが出来ます。複製されたボリュームは転送中に暗号化され、新しいAmazon Machine Image (AMI) として保存され、AWS上のEC2インスタンスとして起動可能となります。

Microsoft Premier Support for AWS End-Customers

マイクロソフトとAWSが優れたカスタマーエクスペリエンスを確保するための、新しいサポート統合プログラムを提供できることを嬉しく思います。マイクロソフトのプレミアサポートは、AWSがお客様を支援するのをサポートする事が出来るようになりました。AWSサポートエンジニアはMicrosoftワークロードを実行するAWSのお客様の代わりに、直接Microsoftサポートにエスカレーションすることができます。

ベストプラクティスツール: HIPAA コンプライアンスとデジタルイノベーションワークショップ

我々はこの11月に、AWSを使用してHIPAA準拠のアプリケーションを構築する方法を解説したHIPAAに焦点を当てたホワイトペーパーを更新しました。来年第1四半期には、一般的な医療系ユースケースでの強固なセキュリティ、コンプライアンス、リスク管理に関するHIPAAクイックスタートを拡張した導入ガイド提供する予定です. 私は自身のre:Inventセッションの中で、デジタルイノベーションワークショップをお客様に提供出来ることを嬉しく思い、より多くのお客様がこのワークショップを利用するのを楽しみにしています。

AWS: The Continuous Innovation Cloud

我々とお客様の共通のテーマは、AWSの継続的なイノベーションによっておお客様の改革を実現するという事です。継続的なイノベーションとは、日々より新しくより良いサービスを受けられるという事に他なりません。これは時には新しいサービスや機能の形をとっていたり、時には目に見えない部分の環境がよりよくなっていく形であったりもします。私はぜひ皆さんにも最近AWSが発表したサービスベストプラクティスを活用して、イノベーションの旅をどのように加速させることができるか体験していただきたいと思っています。Windowsワークロードを移行される場合には、ぜひAWSセールス担当者またはAWS Microsoft Workload Competencyパートナーと話し合って、どのようにすればマイグレーションを効率的に行えるかを検討する対話を開始していただければと思います。

– Sandy Carter, Vice President, AWS

Jeff Barr is Chief Evangelist for AWS. He started this blog in 2004 and has been writing posts just about non-stop ever since.

 

 

 

翻訳はSA松崎が担当しました. 原文はこちらです

Apache MXNet 用のモデルサーバーのご紹介

今週初めに、AWS はディープラーニングモデルを提供する Apache MXNet の上に構築されるオープンソースのコンポーネントである、Apache MXNet 用のモデルサーバーの提供開始を発表しました。Apache MXNet は、機械学習のための使いやすく簡潔な API を備えた、高速でスケーラブルなトレーニングおよび推論フレームワークです。Apache MXNet 用のモデルサーバーにより、エンジニアは MXNet モデルを簡単、迅速、大規模に提供することができます。

Apache MXNet 用のモデルサーバーとは

Apache MXNet (MMS) 用のモデルサーバーは、推論のディープラーニングモデルを大規模なデプロイするタスクを簡略化するために設計された、オープンソースのコンポーネントです。推論のモデルをデプロイすることは、ささいなタスクではありません。さまざまなモデルアーティファクトの収集、提供スタックのセットアップ、ディープラーニングフレームワークの初期化と設定、エンドポイントの公開、リアルタイムメトリクスの出力、カスタム前処理および後処理コードの実行をはじめ、数多くのエンジニアリングタスクがあります。各タスクが必要以上に複雑にならないこともありますが、モデルのデプロイに関連する全体的な労力は、デプロイプロセスが時間のかかる面倒なものとなる要因として十分です。

MMS により、AWS はディープラーニングモデルのデプロイプロセスを大幅に簡略化する、Apache MXNet 用のオープンソースのエンジニアリングツールセットを提供します。モデルのデプロイに MMS を使用することにより得られる主要な機能を以下に示します。

  • MXNet モデルを提供するために必要なすべてをカプセル化する単一の「モデルアーカイブ」にすべてのモデルアーティファクトをパッケージ化し、エクスポートするためのツール。
  • HTTP 推論エンドポイント、MXNet ベースのエンジンを含むサービススタックの自動セットアップ。このすべては、ホストする特定のモデルに対して自動的に設定されます。
  • スケーラブルなモデルの提供用に NGINX、MXNet、および MMS で設定された、事前設定済みの Docker イメージ。
  • モデルの初期化から、前処理と推論を経てモデルの出力の後処理に至る、推論実行パイプラインの各ステップをカスタマイズする機能。
  • レイテンシー、リソース使用率、エラーを含む、推論サービスとエンドポイントをモニタリングするリアルタイムのオペレーションメトリクス。
  • Java、JavaScript、C# など一般的なスタックのクライアントコードの簡単な統合と自動生成を可能にする、OpenAPI 仕様のサポート。

MMS は PyPi パッケージを通じて、またはモデルサーバーの GitHub レポジトリから直接利用でき、Mac および Linux で実行されます。スケーラブルな本稼働のユースケースでは、MMS GitHub レポジトリで提供される事前設定済み Docker イメージの使用をお勧めします。

次の図は、リファレンスアーキテクチャの例を示しています。

モデル提供のクイックスタート

MMS; の使用開始は簡単です。以下の例で示します。この例では、MMS Model Zoo で一般公開されている事前トレーニング済みの SqueezeNet v1.1 オブジェクト検出モデルを利用します。

使用を開始するには、Python が必要です。これは MMS の唯一の前提条件です。Python がインストールされていない場合は、Python のウェブサイトの手順に従って、Python 2.7 または 3.6 をインストールします。

次に、PyPi を使用して選択したマシンに MMS をインストールします。MMS では Mac および Linux オペレーティングシステムがサポートされています。

$ pip install mxnet-model-server

モデルの提供は、MMS を実行し、モデルアーカイブ URL またはローカルファイルでそれを指すことにより行われます。

$ mxnet-model-server --models squeezenet=https://s3.amazonaws.com/model-server/models/squeezenet_v1.1/squeezenet_v1.1.model

このコマンドを実行すると、MMS プロセスが開始され、モデルアーカイブのダウンロードと解凍、モデルアーティファクトによるサービスの設定が行われた後で、ポート 8080、localhost の /squeezenet/predict エンドポイント経由で受信リクエストのリッスンが開始されます (ホストとポートは設定可能です)。

新しく作成されたサービスをテストするため、HTTP 経由で推論リクエストを送信し、イメージの分類をモデルに要求してみましょう。

$ curl -O https://s3.amazonaws.com/model-server/inputs/kitten.jpg
$ curl http://127.0.0.1:8080/squeezenet/predict -F "input0=@kitten.jpg"

次のようなレスポンスが表示され、モデルは 85% の確立で、イメージ内のオブジェクトを「Egyptian cat」として識別します。

{
  "prediction": [
    [
      {
        "class": "n02124075 Egyptian cat",
        "probability": 0.8515276312828064
      },
… (その他のより低い確率の予測) …
}

モデル提供の理解を深めるため、サーバードキュメントを参照してください。

提供用のモデルのエクスポート

MMS は、MMS モデルアーカイブ形式でパッケージ化されたモデルを提供します。これには、モデルアーティファクトをパッケージ化し、単一のモデルアーカイブファイルをエクスポートするコマンドラインインターフェイス mxnet-model-export が含まれます。エクスポートされたモデルアーカイブは、モデルを提供するために必要なすべてのアーティファクトとメタデータをカプセル化します。これは、提供エンドポイントを初期化するときに MMS によって消費されます。提供のために追加のモデルメタデータまたはリソースは必要ありません。

次の図はエクスポートプロセスを示しています。

図に示すように、モデルアーカイブをパッケージ化するために必要な必須のアーティファクトは、モデルのニューラルネットワークアーキテクチャとパラメータ (レイヤー、演算子、ウェイト) と、サービスの入出力データ型およびテンソル形状の定義です。ただし、現実のユースケースでモデルを使用するには、ニューラルネットワーク以上のものが必要になります。たとえば、多くのビジョンモデルでは、モデルに渡す前に入力イメージの前処理および変換が必要になります。別の例として、通常、分類結果をソートおよび切り捨てるために後処理を必要とする分類モデルがあります。これらの要件に対応し、モデルアーカイブへのモデルの完全なカプセル化を可能にするため、MMS はカスタム処理コードと補助ファイルをアーカイブにパッケージ化して、それらにファイルを実行時に利用可能にできます。この強力なメカニズムにより、完全な処理パイプラインをカプセル化するモデルアーカイブを生成できます。入力の前処理から開始し、推論のカスタマイズを経て、ネットワークの出力でクラスラベル ID を適用した直後に、ネットワーク経由でクライアントに返されます。

モデルアーカイブのエクスポートの詳細については、MMS エクスポートのドキュメントを参照してください。

詳細と貢献

MMS は、使いやすさ、柔軟性、およびスケーラビリティを実現するように設計されています。提供エンドポイントの設定、リアルタイムのメトリクスとログ記録、事前設定されたコンテナイメージなど、このブログ投稿の説明以外にも追加機能を備えています。

MMS の詳細を学習するには、「Single Shot MultiBox Detector (SSD) チュートリアル」から始めることをお勧めします。このチュートリアルでは、SSD モデルのエクスポートと提供について説明しています。その他の例と追加のドキュメントが、レポジトリのドキュメントフォルダで利用できます。

当社が MMS をさらに開発、拡大する際に、質問、リクエスト、貢献を通じたコミュニティへの参加を歓迎いたします。awslabs/mxnet-model-server レポジトリに移動して開始してください。


その他の参考資料

AWS と MXNet の詳細情報をご覧ください。


今回のブログの投稿者について

Hagay Lupesko は AWS Deep Learning のエンジニアリングマネージャーです。開発者やサイエンティストがインテリジェントアプリケーションを構築できるようにするディープラーニングツールの構築を担当しています。読書やハイキング、家族と時間を過ごすことが趣味です。

Ruofei Yu は AWS Deep Learning のソフトウェアエンジニアです。ソフトウェアエンジニアやサイエンティスト向けの革新的なディープラーニングツールの構築を担当しています。友人や家族と時間を過ごすことが趣味です。

Yao Wang は AWS Deep Learning のソフトウェアエンジニアです。ソフトウェアエンジニアやサイエンティスト向けの革新的なディープラーニングツールの構築を担当しています。ハイキング、読書、音楽を楽しむことが趣味です。

AWS Glue や Amazon Athena を用いたサーバーレスな Machine Learning 環境

属性をもとにデータセットを分割しなければならなかったことはありませんか?K-means はデータ分割を行うために最も頻繁に使用されている Machine Learning アルゴリズムの 1 つです。このアルゴリズムは異なるグループ (クラスター) にデータを分けることで機能します。各サンプルにはクラスターが指定されます。これは同じクラスターに指定されたサンプルが、他のクラスターにあるサンプルに比べて互いが類似しているようにするためです。

今回のブログでは AWS Glue を使用して、Amazon S3 にあるタクシー乗車のデータセットを例に K-means を適用し、そのデータをタクシーの座標に基づき 100 通りのクラスターに分割する方法を説明します。次に Amazon Athena を使用し、乗車数そして各クラスターのおおよその地域をクエリします。最後に Amazon Athena を使用して、最も乗車数の多かった 4 つの地域の座標を割り出します。AWS Glue と Amazon Athena では、ユーザーによるプロビジョンやサーバー管理を必要とせずに、こうしたタスクを実行することができます。

ソリューションの概要

今回は、過去のブログで使用したニューヨーク市のタクシーに関するデータセットを使用します: 「AWS Glue、Amazon Athena、Amazon QuickSight を使用して様々なプロバイダからのデータを調和、クエリ、視覚化する (Harmonize, Query, and Visualize Data from Various Providers using AWS Glue, Amazon Athena, and Amazon QuickSight)」2016 年 1 月のタクシー乗車に関する緑色のタイプから構成されたテーブルを使用します。

座標に基づいたデータセットを分割するために、Spark Machine Learning K-means クラスタリングライブラリを使用した AWS Glue のジョブスクリプトをお見せします。このスクリプトは緑のタクシーデータを読み込み、各行に指定されるクラスターを示す列を追加することで、このジョブを実行します。スクリプトは parquet 形式を使用してテーブルを Amazon S3 バケット (保存先ファイル) に保存します。バケットをクエリするには Amazon Athena を使用できます。

乗客を拾うすべての登録済みの場所に対し、100 種類のグループ (クラスター) にあるタクシー乗車のデータセットを分配させる場合の問題について見てみましょう ( pickup_longitude および pickup_latitude の列)。この問題を解決するため、AWS Glue スクリプトは出力テーブルを読み込み、Spark Machine Learning ライブラリを使用してクラスター数を 100 に設定した K-means を実装します。結果は parquet 形式を使用して Amazon S3 バケットに保存されるので、Amazon Athena を使用してクエリすることができます。

演習

AWS Glue ジョブの実行

以下の手順に従ってください。

  1. AWS マネジメントコンソールで AWS コンソールにアクセスします。テーブルを書き込むために AWS Glue クローラの新しいデータベースを作成します。
  2. 次にポイントする新しいクローラを作成します。
    s3://serverless-analytics/glue-blog  -- set to run on-demand

  3. クローラを実行します。

    クローラが次の属性を含む緑色のテーブルを分類しているか確認します。
  4. スクリプトファイル MLkmeans.py を S3 バケットいずれかにアップロードします。
  5. 新しい AWS Glue ジョブを追加し、ジョブの名前とロールを選びます。次に [An existing script that you provide] からジョブを実行するオプションを選択し、アップロードしたスクリプトの S3 パスを選んでから一時ファイルの S3 パスを選択します。[Next] を 2 回に渡り選択して完了します。
  6. スクリプトを編集します。
    • ジョブを選びオプションを選択して編集します。
    • [destination] の変数を希望する結果の保存先に変更します (次のイメージでは 17 列目)。
    • [namespace] と [tablename] を先に実行したクローラによる緑色のテーブルのデータベースと名前に変更します (次のイメージでは 18 列目と 19 列目)。
  7. AWS Glue ジョブを実行します。
  8. 送信先のパスで parquet 形式のファイルが作成されているか確認します。
  9. 送信先のパスにポイントするクローラを新たに作成します。
  10. 送信先のパスでクローラを実行し、新たに変換したデータセットにポイントする AWS Glue のデータカタログで新しいテーブルを作成します。

Athena を使用して結果をクエリする方法

AWS Glue が抽出した parquet 形式データセットの分析、変換、ジョブの読み込み (ETL) をクローラが完了したら、次の列を含むデータカタログにテーブルが表示されます。

予測用の列は k-means のアルゴリズムにより追加されたもので、各行に指定されたクラスター ID を表す整数が含まれています。

Amazon Athena にある次のクエリを使用して、算出済みのクラスタすべてをリストにした例を見てみましょう。

SELECT  count(*) as count, 
     (max(pickup_latitude) - min(pickup_latitude))*(max(pickup_longitude) - min(pickup_longitude)) 
as approximate_cluster_area , prediction  
FROM RESULTDATABASE.RESULTTABLENAME group by prediction  order by prediction 

結果のテーブル名とデータベースを RESULTDATABASE.RESULTTABLENAME に置き換えると、クエリは次のようになります。

この結果は地理的な各地域で客を拾ったタクシーの数を列にある数字で表しています。また、 approximate_cluster_area の列で示されている各エリアも対象にしています。

アクティビティが最も多い 10 件のクラスターをリストにした別の例も見てみましょう。そのセンターの座標も算出します。

 SELECT count(*) AS count,
         avg(pickup_latitude) AS latitute,
         avg(pickup_longitude) AS longitude,
         prediction
FROM RESULTDATABASE.RESULTTABLENAME
GROUP BY  prediction
ORDER BY  count DESC limit 10

RESULTDATABASE.RESULTTABLENAME を結果のテーブル名とデータベースに変えると、クエリは次のようになります。

乗車数が最も多かったクラスター 10 件が結果として表示されます。Amazon Quicksight 地理空間の視覚化を可能にする機能でこの座標を使うと次のように表示されます。

まとめ

このブログでは、サーバーを起動したり管理する必要がなく監視されていない Machine Learning アルゴリズムを使用して、AWS Glue や Amazon Athena を使う方法を説明しました。この例ではタクシーの座標に基づき、タクシーの乗車数のデータセットを 100 通りのグループに分類しました。クエリデータを使用して、各グループのエリアや乗車数を計算することができます。

このブログで説明したソリューションは、いくつかの編集を加えるだけで別のデータセットを適用することもできるので、独自のユースケースに使用することもできます。


その他の参考資料

PMML ベースのアプリケーション構築や AWS で予測を生成する方法をご覧ください。


今回のブログの投稿者について

Luis Caro は AWS プロフェッショナルサービスのビッグデータコンサルタントです。お客様にビッグデータプロジェクトに関するガイドや技術的なサポートの提供を担当、AWS を使用して顧客が独自のソリューション価値を改善するためのサポートに努めています。

AWS Single Sign-On 紹介

12/7 にリリースされた AWS Single Sign-On (AWS SSO) サービスをご紹介します。このサービスにより、複数の AWS アカウントやビジネスアプリケーションへの SSO アクセスを簡単に集中管理できるようになります。AWS SSO はユーザポータルを提供するため、ユーザは既にある企業内の認証情報を使ってアサインされた全ての AWS アカウントやアプリケーションを確認して、アクセスできます。AWS SSO は AWS Organizations と統合されており、組織内にある複数の AWS アカウントへのアクセスを管理できます。加えて、AWS SSO は Security Assertion Markup Language (SAML) 2.0 をサポートしており、AWS SSO アプリケション設定ウィザートを使って SAML が利用できるアプリケーションへの SSO アクセスにも広げることができます。AWS SSO は Salesforce、BOX、Office 365 など多くのビジネスアプリケーションとの SSO 連携が組み込まれており、簡単に設定が行なえます。

このブログ記事では、以下の 3 つの質問に答えることで AWS SSO を使い始めに役立つよう説明します。:

  1. AWS SSO はどんなメリットを提供するか?
  2. AWS SSO の主要機能は何か?
  3. どうやって使い始めればいいか?

(more…)

Amazon Polly を使用した Haptik のパーソナルアシスタントサービス

今回のブログは Haptik Inc. の共同創立者および CTO の Swapan Rajdev 氏より寄稿いただきました。

日々忙しく過ごしている我々にとって、やるべき事柄は増加する一方で達成しなければならない毎日のタスクをすべて管理することは容易ではありません。ミーティング日程を忘れないようにしたり、飛行機のチケットを購入したり、十分な水分補給そしてジムで体を動かすことなど、すべきことを数えだせばきりがありません。スケジュール管理というのは本当に面倒です。

Haptik はインド初のパーソナルアシスタントアプリです。ユーザーは旅行のプランを立てたり、フライトの確認、タクシーの予約そしてリマインダー設定を行うために、このアプリを使用しています。様々な機能を搭載しているこのアプリですが、中でユーザーが頻繁に使用しているのはリマインダー機能です。このアプリのユーザーは、モーニングコールを設定したり、水分補給を忘れずに行うようにリマインダーをセットアップしたり、異なる時間に電話を掛けたり、特別な日にメッセージを送るなど、リマインダーを必要とする様々な事柄に Haptik を使用しています。リマインダー機能を介して、ユーザーはアプリでリマインダーメッセージに関する通知を受信、そしてリクエストした時間に電話を受け取ることができます。

今回のブログでは、タスクを知らせるため指定時間にユーザーに電話をする場合に、当社がどのように Machine Learning や読み上げ機能 (TTS) を使用してユーザーのリマインダーを設定しているのかご説明します。各ユーザーに合わせて電話を掛けたり、何百万人というユーザーに対しリマインダー機能をスケーリングする場合に、どれほど Amazon Polly が役立っているか解説します。

Haptik のリマインダー機能

パーソナルアシスタントに仕事をさせるため、ユーザーは Haptik アプリにアクセスしてボットにメッセージを送信します。当社のシステムにあるメッセージはすべてメッセージパイプラインを通るようになっています。ここでは次の点を検出します。

  • ユーザーが意図するドメイン (リマインダー、旅行、周辺情報など)
  • ユーザーが完了したいタスク (目的)
  • エンティティ (ユーザーのタスクを完了するために必要な別のデータ)

このパイプラインの終わりに近づいた時点でボットがすべての情報を取得している場合は、タスクを完了します。それ以外の場合は、関連性のある質問を返してすべての情報を収集します。

このベーシックパイプラインの他にも、アルゴリズムがいくつもあります。これはディープラーニングを使用してユーザーの介入なしに、ユーザーのタスクを完了しやすくするため、チャット履歴から学習します。

ユーザーに電話を掛ける理由は?

ユーザーに予定のタスクを知らせるため、アプリで通知を送信し電話でも連絡します。Haptik は一般的に使用されている通知技術を使用してユーザーにリマインダーを送信していますが、次のいくつかの理由により、ユーザーに電話を掛ける方がさらに効果的であると当社は考えています。

まず、今のスマートフォン時代では、どのアプリからも大量の通知が届くようになっているので、重要な通知を見逃してしまうことがあります。そのため、知らない番号または Haptik から電話を受け取ることは、スヌーズボタンを押すだけで終わってしまう通常のアラームに比べて効果的です。

2 つめの理由は、当社はリマインダーを設定したタスクの種類に基づいて、電話を掛ける声とその内容を変更し、より優れたユーザーエクスペリエンスを提供しています。たとえば、モーニングコールには穏やかで落ち着いた音声を使用しています。そして時々、ユーザーが気持ち良く元気な状態で起床できるようにするため、電話の終わりに自己啓発的なメッセージも追加しています。Amazon Polly を使用することで、こうした TTS ユースケースの実装をシンプルで信頼性があるものにすることができます。

(more…)

ONNX 1.0 の提供開始を発表

アマゾン ウェブ サービス (AWS)、Facebook、Microsoft は Open Neural Network Exchange (ONNX) 形式が本稼働環境で使用できるようになったことを発表しました。

ディープラーニングモデルのオープンスタンダード形式である ONNX は、Apache MXNet、Caffe2、Microsoft Cognitive Toolkit、PyTorch といったディープラーニングフレームワーク間での相互運用を可能にします。ONNX 1.0 は、ユーザーがフレームワーク間でディープラーニングモデルを移動できるようにし、本番稼働環境に取り入れやすくします。たとえば、開発者は PyTorch のようなフレームワークを使用して洗練されたコンピュータビジョンモデルを構築し、Microsoft Cognitive Toolkit または Apache MXNet を使用し推論で実行することができます。

ONNX の初回リリースは 9 月だったので、我々はこの成長とコミュニティサポートの勢いやその関与をたのもしく思いながら観察しています。Qualcomm、Huawei、Intel などを含む数々のハードウェアパートナーが各社のハードウェアプラットフォームで ONNX 形式をサポートしていることを発表しており、ユーザーが異なるハードウェアプラットフォームでモデルを実行しやすくしています。新機能のコードやサポートに貢献して下さったコミュニティの皆さんに、この場を借りて感謝申し上げます。

開発者が最新のリサーチにアクセスし最先端モデルを本稼働アプリケーションと統合できるようにするため、今後も ONNX の進化において ONNX パートナーやコミュニティと協力していきます。

関連の発表


今回のブログの投稿者について

Sukwon Kim は AWS Deep Learning のシニアプロダクトマネージャーです。 特にオープンソースの Apache MXNet エンジンに注目し、ディープラーニングエンジンを使いやすくする製品を担当しています。余暇にはハイキングや旅行を楽しんでいます。

AWS利用におけるマネージドサービスの重要性

ラスベガスで開催された re:Invent が終わり、日本各地で、パートナーやユーザーコミュニティ、弊社による re:Capイベント(まとめイベント)が行われています。

ウェブページ「AWS re:Invent 2017 で発表された新しい機能とサービスの詳細」で新しく発表されたサービスの一覧がまとまっていますので、是非ご覧ください。

今回Amazon EC2では、C5インスタンスM5インスタンスH1インスタンスBare Metalインスタンス、等いくつかの新サービスの発表がありました。

それらに加えてとても多くのマネージドサービスの発表がされています。

私は、プロダクトマーケティング エバンジェリストとして外部でお話をさせていただく機会が多いのですが、予てより、AWSをより安価に、より効果的に、ご利用いただくためにはマネージドサービスの活用が不可欠です、というお話をさせていただいています。今回AWS re:Inventで多くのマネージドサービスが新たに発表され、お客様から、AWSは複雑になりそのキャッチアップが大変だ、というお話をいただいたこともありました。改めてマネージドサービスの重要性について費用面からまとめてみたいと思います。

ここでは、AWSの中で一番簡単なマネージドサービスであるAmazon S3を例にご紹介いたします。

(more…)

AWS、Apache MXNet の ディープラーニングエンジンのマイルストーンである 1.0 のリリースに対し新しいモデル提供機能の追加を含む貢献

AWS は Apache MXNet ディープラーニングエンジンのマイルストーンとなる 1.0 のリリースへの貢献と、MXNet 向けの新しいモデル提供機能の導入を発表しました。これらの新機能により、(1) ディープラーニングモデルのトレーニングとデプロイが簡素化され、(2) 最先端のパフォーマンス強化の実装が可能になり、また (3) ディープラーニングフレームワーク間の相互運用性が簡単になります。

このブログ記事では、本日導入された主な機能それぞれの開始方法を説明します。

シンプルで使用が容易

Apache MXNet 向けモデルサーバー: モデルサーバーは、わずか数行のコードを使用するだけで、ディープラーニングモデルを数秒でパッケージ化、実行、提供します。これにより API エンドポイント経由でインターネットを使用してアクセスすることができます。その後、アプリケーションからこのエンドポイントを呼び出して予測を行うことができます。また、モデルサーバーには 10 個の事前トレーニング済みモデルを備えた model zoo が含まれています。モデルを自分でトレーニングする必要はなく、簡単にデプロイできます。モデルサーバーによって、ウェブ、モバイル、IoT アプリケーション内への AI 機能のデプロイが簡素化されます。

Apache MXNet 向けモデルサーバーの使用を開始するには、以下のコマンドを使用してライブラリをインストールします。

pip install mxnet-model-server

モデルサーバーのライブラリには、SqueezeNet v1.1 オブジェクト分類モデルが含まれています。次のコマンドを使用して SqueezeNet モデルの提供を開始できます。

mxnet-model-server --models squeezenet=https://s3.amazonaws.com/model-server/models/squeezenet_v1.1/squeezenet_v1.1.model 

モデルサーバーの詳細とソースコード、リファレンスサンプル、チュートリアルの表示方法については、こちらを参照してください。

アドバンスドインデックス作成: 1.0 リリースには、アドバンスドインデックス作成機能が含まれています。これにより、Python NumPy ライブラリ内の ndarray 配列オブジェクトクラスの既存の知識を活用して、より直感的な方法でテンソル演算を実行できます。この機能によりより効率的な方法でインデックスにアクセスできるため、開発者の時間と手間を節約できます。以下は、MXNet の新しいアドバンスドインデックス作成機能の例です。

  • 整数のリストをインデックスとしてサポート:
    x = nd.array([[1, 2], [3, 4], [5, 6]], dtype = ‘int32’)
    print(x[[0, 1, 0]])
    [[1, 2] [3, 4]  [1, 0]] # the row index is [0, 1, 0] and print the corresponding row of matrix 
  • 正方行列から対角要素を取得:
    • アドバンスドインデックス作成機能を使用しない場合は 3 行のコードを作成する必要があります:
      a = [[0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15]]
      index = mx.nd.array([0, 1, 2, 3], dtype=’int32’)
      index = mx.nd.stack(index, index)
      diag = mx.nd.gather_nd(a, index) 
    • アドバンスドインデックス作成のサポートを使用すると、1 行のコードでジョブを実行できます:
      diag = a[[0, 1, 2, 3], [0, 1, 2, 3]] 

アドバンスドインデックス作成の詳細については、こちらをご覧ください。

高性能

1.0 リリースには、ディープラーニング分野におけるモデルトレーニングおよび推論の最適化に関する最新の研究成果に基づいた機能が実装されています。

グラデーション圧縮: 分散トレーニングでは、各マシンがモデルパラメータを更新し、それにより、単一モデルを集合的に構築するために、頻繁に他のマシンと通信する必要があります。そのためネットワークトラフィックが高くなり、しばしばトレーニング速度とパフォーマンスに悪影響を及ぼします。グラデーション圧縮により、各インスタンスで通信されるモデルの変更を圧縮することで、集束率または精度を失うことなく、最大 5 倍高速にモデルをトレーニングできます。グラデーション圧縮は、しきい値を下回るウェイトの更新の同期を遅延させる方法を使用します。VGGNet や AlexNet などのアーキテクチャは、通信と比較して低コンピューティングを使用しているため、トレーニング速度に目覚ましい改善を見せることができます。

次の例では、しきい値が 2 に設定されている場合に、2 ビットグラデーション圧縮がどのようにグラデーションを圧縮するかを示しています。緑の要素はしきい値に一致しているため、量子化された形式で 2 つのビット「11」と表されます。青色の要素の負の値はしきい値に一致しているため、別の 2 つのビット「10」で表されます。絶対値がしきい値未満の残りの値は、「00」で表されます。グラデーション圧縮では、通信されるグラデーションを、各グラデーション値に 2 ビットのみを使用して圧縮します。実際のグラデーションと展開されたグラデーションの差異は残余として保存され、次回のイテレーションで量子化の前に加算されます。

グラデーション圧縮はランタイム設定パラメータであり、次のように Gluon API を使用して有効にできます。グラデーション圧縮の詳細についてはこちらをご覧ください。

trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .1}, compression_params={'type’:'2bit', 'threshold':0.5})

NVIDIA Collective Communication Library (NCCL): NCCL は、NVIDIA GPU に対してパフォーマンスが最適化されたマルチ GPU およびマルチノードの集合的な通信プリミティブを実装しています。NCCL は、マルチ GPU 間の通信で高い帯域幅を達成するよう最適化された通信ルーチンを提供します。MXNet は、単一ノードマルチ GPU システムでの NCCL をサポートするため、トレーニング速度が約 20% 増加します。これには、ライブラリをインストールし、次のように kvstore のタイプのランタイム設定パラメータを渡す必要があります。

trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .1}, kvstore = ‘nccl’)

NCCL の詳細についてはこちらをご覧ください。

相互運用が容易

MXNet に、Caffe フレームワークで記述されたニューラルネットワークコードを MXNet コードに変換するためのツールが含まれました。MXNet のスケーラビリティとパフォーマンスをより簡単に活用できます。Caffe トランスレータはトレーニング/検証 prototxt およびソルバー prototxt を入力として受け取り、MXNet Python コードを出力として生成します。変換された Python コードは、MXNet シンボルおよびモジュール API を使用したネットワークの構築、LMDB ファイルからのデータの読み取り、トレーニングの実行、および MXNet モジュール API を使用したトレーニング済みモデルの保存を行います。MXNet 向け Caffe トランスレータの使用を開始するには、実効可能な JAR ファイルを Apache maven からダウンロードします。

train_val.prototxt および solver.prototxt を MXNet Python コードに変換するには、次のコマンドを実行します。

java -jar caffe-translator-<version>.jar --training-prototxt <train_val.prototxt_path> \
    --solver <solver.prototxt_path> \ --output-file <output_file_path>

変換されたコードを実行するには、MXNet インターフェイス搭載の Caffe または Caffe プラグイン搭載の MXNet のいずれかを使用する必要があります。変換された Python コードは単純に、他の Python コードと同様に次のように実行できます。

python translated_code.py

Caffe Translator の詳細についてはこちらをご覧ください。

MXNet の開始方法

Apache MXNet の使用を開始するには、以下のコマンドを使用して pip のインストールを実行します。

pip install mxnet==1.0.0

Gluon インターフェイスとディープラーニングの詳細については、この包括的な一連のチュートリアルを参照できます。これらのチュートリアルでは、ディープラーニングの概要から最先端のニュートラルネットワークモデルを実装する方法まで紹介しています。


今回のブログの投稿者について

Sukwon Kim は AWS Deep Learning のシニアプロダクトマネージャーです。 特にオープンソースの Apache MXNet エンジンに注目し、ディープラーニングエンジンを使いやすくする製品を担当しています。余暇にはハイキングや旅行を楽しんでいます。