Author: AWS Japan Staff


10 月の AWS Black Belt オンラインセミナーのご案内

こんにちは。ソリューションアーキテクトの焼尾です。AWS Black Belt オンラインセミナー10月の配信についてご案内させて頂きます。10月はソリューションカット、サービスカット共に、実践的なネットワークや認証といった内容や、データレイクを支える新サービス AWS Glue の紹介があります。また、企業様の上層部向けの AWS 解説も行います。

10月の開催予定

サービスカット
10/4(水) 18:00-19:00 Amazon GameLift
10/11(水) 18:00-19:00 Amazon Kinesis
10/18(水) 18:00-19:00 AWS Glue
10/25(水) 18:00-19:00 AWS Key Management Service

ソリューションカット
10/3(火) 12:00-13:00 AWSへのネットワーク接続とAWS上のネットワーク内部設計
10/10(火) 12:00-13:00 AWSにおけるアプリ認証パターンのご紹介
10/24(火) 12:00-13:00 エグゼクティブ向けAWS紹介

お申し込みは、それぞれ上記のリンクより行って頂けます。キャンセルの際も連絡不要ですので是非お早めにご登録ください。Speaker、Staff 一同みなさまのご参加をお待ちしております。

Amazon Redshift の CA 証明書更新についてのおしらせ

2017/09/26 更新: sslMode 設定が require の場合も,CA 証明書更新を行なっていただく必要がある旨を追記しました

Amazon Redshift は現在 CA 証明書の更新作業を行なっており、新しい証明書は AWS Certificate Manager (ACM) が発行したものとなります。これに伴い、現在 Amazon Redshift をご利用中の多くのお客さまにつきまして、Amazon Redshift クライアントの CA 証明書更新作業をお願いすることとなりました。該当するお客様に対しては、すでに Action Required: Amazon Redshift – SSL certificate expiring on October 23rd 2017 という題名のメールが届いているかと思います。

今回の更新作業の対象となるお客様は、以下の条件のすべてに当てはまる方々です。

  • Amazon Redshift クラスターに対して SSL で接続しており、sslMode 設定で require,verify-ca または verify-full を指定されている方
  • GovCloud(米国)、中国(北京)、中国(寧夏)以外のリージョンで Amazon Redshift を利用されている方

上記に該当するお客さまにつきましては、こちらを参考に、CA 証明書の更新を行なってください。対応期限は 2017/10/23 となりますので、早めの対応をお願いいたします。

なお Amazon Redshift ODBC / JDBC ドライバーについては、今後リリース予定の ODBC ドライバー Ver. 1.3.7.1000 および JDBC ドライバー 1.2.8.1005 にて,新しいクライアント CA 証明書に対応する予定となっております.

不明点などがありましたら、AWS サポートチームへコミュニティフォーラムかサポートセンター経由でご連絡下さい。

 

 

大阪Cloud Road Showが開幕します。

いよいよ、AWS Cloud Roadshow 2017 powered by Intel®が始まります。

AWS Cloud Roadshow 2017 powered by Intel® は、広島、大阪、名古屋、福岡の 4 都市を巡る無料クラウドカンファレンスです。

明日第二弾大阪を開催いたします。

本イベントでは、各地域で活躍を拡げる著名企業様によるクラウド導入事例セッションや AWS クラウドの最新テクノロジートレンドをご紹介するテクニカルセッションなどを通して、AWS が提供する様々なサービスのベストプラクティスを知ることができます。

見どころのセッションをご紹介します。まずは、基調講演と導入事例トラックの2つです。

基調講演ではIoT GreengrassのServiceTeamよりSatyen Yadavが今後のロードマップについて発表をさせていただきます。

AWSのイベントは学習型イベントであることをかかげていますが、その中でもお客様から直接AWSを使った感想をお話いただくことを重視しています。そのセッションの中でも

2017/9/21 16:20 ~ 17:00 導入事例トラック
【パネルセッション】関西企業事例に学ぶ AWS で実現するデータベースマイグレーション」

は実際にAWSへデータベースをマイグレーションいただいたお客様にご登壇いただくパネルディスカッションとなっています。弊社西日本担当の柳生がモデレータを務めさせていただきます。

AWSでは多くのマイグレーション系のツールをご準備しています。その纏めのスライドを以下に転載しますので合わせて読んでみていただくとより理解が深ると思います。

なぜマイグレーション系のツールが必要となるのでしょうか。システムは立ち上げ当初はそのすべてが管理者により正しく管理され、全てが把握されています。しかし、時間の経過とともに、パッチが適応され、アプリケーションはバージョンアップを繰り返します。システムマイグレーションでは、まず最初のステップとしてシステムの全容の把握が必須となりますが、これがかなり大変な作業となります。AWSの各マイグレーション系のツールはこれらの作業をより簡便にするための機能を備えています。

例えばDMS(Database Migration Service)では、機械的に移設可能なデータベースのテーブルやスキーマなどを洗い出し、手作業が必要な部分を洗い出してくれます。また異なるデータベースエンジン間の移行をサポートすることにより、たとえば商用データベースからクラウド上のOSSベースのデータベースへの移設プロジェクトや同データベースエンジンにおける異なるバージョン間の移設プロジェクトをサポートします。

SMS(Server Migration Service)は2種類の使い方が可能となっています。メインのサーバ移行を行う場合と、AWS上にDRを構築する場合です。メインサーバの移設であれば、vCenter経由で仮想化されたサーバの移設が機械的に可能です。一方DR用途でマイグレーションを行う場合、日々変動するデータなどの差分移行が必要となります。従来のVM Import/Exportツールと異なり、差分移行をサポートしているのがSMSの大きな特徴です。

それらの使い勝手などお客様の声を是非直接聞いてみてください。

またサーバレスを中心としたお客様事例もあります。

そして最後はJAWS UG Nightがあります。今年は600名を超えるお申し込みをいただき、300名を超える規模で開催されます。秋の大運動会として、JAWS 初の大型ライブコーディング競技が開催される予定です。また、競技中に併設してAWSの最新アップデート纏めのセッションも予定されいます。

当日申し込みもできますので是非お越しください。

それではみなさんにお会いできることをAWSチーム一同おまちしております。

– プロダクトマーケティングエバンジェリスト 亀田 治伸

ディープラーニングネットワーク (GAN と Siamese) を組み合わせハイクオリティでリアルなイメージを生成

ディープラーニングはトレーニングに使用するデータの量と質に依存するため、企業は優れたイメージデータを得ようと多額の費用を投資をしています。通常、そうした企業はコストの掛かる人間による注釈を使ったり、製品や人物の写真を撮るなど、多大な作業を要しています。けれども、このアプローチはコストが掛かる上に拡張性もありません。コンピュータをトレーニングしてハイクオリティなイメージを生成すれば、コストを大幅に削減しビジネスの成長を促進することができます。

このブログ記事では、Amazon の私の同僚数人がまとめた「Semantically Decomposing the Latent Spaces of Generative Adversarial Networks」という学術論文で取り上げられているコンセプトを分かりやすく説明します。この論文は、Semantically Decomposed GANs (SD-GANs) の使用を可能にするため、Generative Adversarial Networks (GANs) と Siamese Networks (SNs) を実際に適用する場合について説明しています。

GANs と SNs は比較的高度なディープラーニングシンボルで、現実的な問題を解決するために各自または他のディープラーニングシンボルと組み合わせて使用することができます。こうしたシンボルを組み合わせると、AI アプリケーションは難しく複雑なビジネス上の問題をより多く解決できるようになります。たとえば、AI の主なチャレンジの 1 つは注釈やタグ付けしたデータの欠如です。ハイクオリティな注釈データには多大なコストが掛かるため、これを利用できるのは大規模で経済的に余裕のある企業に限られています。この論文で説明されているようなディープラーニングの方法を使うと、より多くの企業が質の高いデータを少ないサンプルから生成することが可能になります。

リアルなイメージを分析するために作成者が GANs や SNs そして SD-GANs をどのように使用し、同じ人物やオブジェクトのコントロールしたバリエーションで「偽」のイメージを生成する方法を説明します。パラメータやあなたが設定した「監視プロパティ」により、偽のイメージを別の視点から作成したものに見せたり、別の照明や、より良質な解像度を使用、もしくはそれに似たようなバリエーションを使用したかのように見せることができます。この論分で説明されているイメージ分析を使用すると、プロがフォトショップで加工したもの、または 3D モデルを使用して作成したかのように、実にリアルなイメージを作成することができます。

図 1: 論文で説明されている方法を使用して生成したサンプル各行は同じ顔のバリエーションを示しています。各列は同じ監視プロパティを使用しています。

Generative Adversarial Networks とは?

Generative Adversarial Networks (GANs) は、ニューラルネットワークの比較的新しいディープラーニングアーキテクチャです。これは 2014 年にカナダのモントリオール大学の Ian Goodfellow 氏と同僚達により開発されました。GAN は 2 つの異なるネットワークを敵対的にトレーニングするため、敵対的 (adversarial) と呼ばれています。ネットワークの 1 つが、実像を撮りできる限りの変更を加えることで、イメージ (またはテキストやスピーチなど他のサンプル) を生成します。そして、もう 1 つのネットワークは、そのイメージが「偽」か「本物」かを予測しようとします。G ネットワークという最初のネットワークは、より優れたイメージを生成することを学びます。D ネットワークという 2 つめのネットワークは偽のイメージと本物のイメージを見分けることを学びます。この判別力は徐々に改善されていきます。

(more…)

今すぐ利用可能 – 4TBメモリ搭載のEC2インスタンス

今年の初めに、最大16TBメモリ搭載のEC2インスタンスを提供する計画をお伝えしました。本日、4つのAWSリージョンで4TBのDDR4メモリを搭載した新しいx1e.32xlargeインスタンスが利用可能になったことを発表いたします。以前の記事で書いたように、これらのインスタンスは、SAP HANAなどのメモリ重視のインメモリアプリケーションのために設計されています。 既に多くのお客様が、既存のx1.32xlargeインスタンス上で本稼働SAPアプリケーションを実行しています。本日のリリースによって、これらのお客様は、より大きなデータセットを保管・処理できるようになり、非常に大規模な本番環境でも稼働できるようになりました。

x1e.32xlargeは、x1.32xlarge同様に、4ソケットのIntel Xeon E7 8880 v3 Haswellプロセッサ 2.3GHz (128vCPUs)で実行され、大きなL3キャッシュやメモリ帯域幅を持ち、CステートとPステート制御による最適なパフォーマンスを提供します。

ネットワーク面では、インスタンスごとに最大8つのElastic Network Interfaces(ENIs)をサポートし、Elastic Network Adapter(ENA)によって、EC2プレイスメントグループ内で起動したときに最大25Gbpsのネットワーク帯域幅を提供します。インスタンスはデフォルトでEBS最適化されており、EBSボリューム専用の14Gbpsの帯域幅があり、インスタンスあたり最大80,000IOPSをサポートします。インスタンスには、1,920GBのSSDボリュームのペアも含まれています。

【いくつかのメモ】
x1e.32xlargeに関して、いくつか覚えておくべき事項があります:

SAP認定 – x1e.32xlargeインスタンスは、SAP Business Suite on HANA(SoH)、SAP Business Warehouse on HANA(BWoH)、次世代ERPであるSAP S/4HANAや次世代データウェアハウスソリューションであるSAP BW/4HANAの本稼働HANA環境としてSAP社から認定およびサポートされる大規模なクラウドネイティブインスタンスです。もし、お客様が既にX1インスタンスでSAP HANAワークロードを実行されているのであれば、迅速かつ容易にスケールアップすることができます。SAP HANA on the AWS Cloud Quick Start Reference Deploymentは更新済みで、SAPとAWSのベストプラクティスに従って高い性能と信頼性を実現した構成の導入を支援します。SAP HANA Hardware DirectorySAP HANA Sizing Guidelinesも関連しています。

リザーブドインスタンス – リザーブドインスタンスのリージョン単位の柔軟性は、x1とx1eには適用されません。

【今すぐ利用可能】
x1e.32xlargeインスタンスは、米国東部(バージニア北部)、米国西部(オレゴン)、欧州(アイルランド)、そしてアジアパシフィック(東京)リージョンで、AWS Management ConsoleAWS Command Line Interface(CLI)AWS SDKs、あるいはAWS Marketplaceを通じて、オンデマンドまたはリザーブドインスタンスとしてご利用いただけます。

また、X1インスタンスのいくつかのアップグレードについてもお伝えしたいと思います:

EBS – 本日のリリースで、現行のx1.32xlargeインスタンスにおいても、EBS専用の最大14Gbpsの帯域幅とインスタンスあたり80,000IOPSをサポートしています。

ネットワーク – 今週前半、現行のx1.32xlargeインスタンスがプレイスメントグループ内で最大25Gbpsのネットワーク帯域幅をサポートしたことを発表しています。

— Jeff;

翻訳はPartner SA 河原が担当しました。原文はこちらです。

新機能 – DynamoDB VPCエンドポイントが出ました

今日(翻訳元記事2017年8月16日)からAmazon Virtual Private Cloud(VPC)Amazon DynamoDB用エンドポイントがすべてのAWSのリージョンでご利用いただけます。AWS Management ConsoleまたはAWS Command Line Interface(CLI  コマンドラインインターフェイス)を使用して、すぐにエンドポイントをプロビジョニングできます。DynamoDBのVPCエンドポイントには追加費用はかかりません。

多くのAWSをお使い頂いているお客様は、セキュリティまたは分離の理由からAmazon Virtual Private Cloud(VPC)内でアプリケーションを実行します。以前は、VPC内のEC2インスタンスがDynamoDBにアクセスできるようにするには、2つのオプションがありました。インターネットゲートウェイ(NATゲートウェイを使用するかインスタンスの公開IPを割り当てる)を使用するか、すべてのトラフィックをVPNまたはAWS Direct Connect経由でローカルインフラストラクチャにルーティングしてからDynamoDBに戻すことができます。これらのソリューションには両方ともセキュリティとスループットの関係があり、NACLまたはセキュリティグループを構成してDynamoDBだけへのアクセスを制限することは困難でした。下の画像は上記のパターンのアーキテクチャです。

エンドポイントの作成
DynamoDBのVPCエンドポイントを作成しましょう。DescribeVpcEndpointServices APIコールを使用して、指定したリージョンでエンドポイントがサポートされていることを確認できます。

aws ec2 describe-vpc-endpoint-services --region us-east-1
{
    "ServiceNames": [
        "com.amazonaws.us-east-1.dynamodb",
        "com.amazonaws.us-east-1.s3"
    ]
}

上記の結果により、これらのエンドポイントをサポートしていることを確認出来ました。私は自分のVPCの1つを指定して、CLIまたはコンソールからの操作で簡単にエンドポイントをプロビジョニングできます。コンソールの使い方はこれから説明します。

最初に、VPCコンソールに移動し、サイドバーの[Endpoint]を選択します。そこから「Create Endpoint」をクリックして、この便利なコンソールに遷移します。

エンドポイントのAWS Identity and Access Management (IAM) ポリシーセクションに気づくでしょう。これは、通常のIAMポリシーでDynamoDBがサポートする詳細なアクセス制御をすべてサポートし、IAMポリシー条件に基づいてアクセスを制限できます。

今の例ではこのVPC内のインスタンスはフルアクセスし出来るようにして、「次のステップ」をクリックします。

これは私のVPC内のルートテーブルのリストに、これらのルートテーブルのどれに私のエンドポイントを割り当てるかを尋ねています。いずれかを選択して[Create Endpoint]をクリックします。

コンソールの警告メッセージに注意してください。パブリックIPアドレスに基づいてDynamoDBにソース制限がある場合、DynamoDBにアクセスするインスタンスのソースIPはプライベートIPアドレスになります。

DynamoDBのVPCエンドポイントをVPCに追加した後のアーキテクチャは次のようになります。

これでおしまいです!とても簡単で無料で利用する事ができます。是非利用してみて下さい。詳細が必要な場合は、ここでドキュメントを読むことができます。

(SA 成田が翻訳しました。元記事はこちら

Apache MXNet と Apple Core ML を使用して iOS に Machine Learning を導入

Apple が Core MLWWDC 2017 でリリースしたことにより、iOS、macOS、watchOS、tvOS の開発者が Machine Learning とアプリを容易に統合できるようになりました。開発者は数行のコードでインテリジェントな新機能を取り入れることができます。Core ML により、モバイル開発者が Machine Learning を使いやすくなります。さらにラピッドプロトタイピングと別のセンサー (カメラ、GPS など) の使用も有効にし、今まで以上によりパワフルなアプリを構築することができます。

MXNet コミュニティのメンバーと Apple や Amazon ウェブ サービス (AWS) からの協力者により、MXNet を使用して構築した Machine Learning モデルを Core ML 形式に変換するツールが作成されました。このツールにより、開発者は Apple デバイス対象の Machine Learning を使用するアプリを構築しやすくなりました。この変換ツールを使うと、ディープラーニングを有効にしたアプリケーションで高速パイプラインを利用できます。Apple デバイスでの推測のランタイムを高速にするために MXNet を使用し、AWS クラウドで効率的な分散モデルトレーニングにスケーラブルから移動することができます。

このコンバーターツールのリリースをサポートするため、優れた iOS アプリを構築しました。イメージの場所を推定する LocationNet モデルを紹介した AWS AI ブログの記事「AWS EC2 で MXNet と Multimedia Commons データセットを使用してイメージの場所を推定する (Estimating the Location of Images Using MXNet and Multimedia Commons Dataset on AWS EC2)」に影響を受けました。

このブログ記事では、MXNet モデルを Core ML への変換や既存モデルの変換を行うための環境をセットアップする方法、Swift で作成したサンプル iOS アプリにインポートする方法について説明します。iOS アプリはモデルにイメージをフィードします。これはそのイメージが撮影された場所を推定し、インタラクティブなマップで表示します。パフォーマンスにおいては、iOS 11 ベータ版をインストールした実際の iOS デバイス (iPhone など) でアプリを実行することを推奨していますが、Xcode 9.0 ベータ版に搭載されている Simulator を使用することも可能です。

このブログ記事を書いている現在、Xcode 9、iOS 11、Core ML はまだベータ版の段階にあるため、Xcode と iOS をダウンロードするには Apple Developer Program のアカウントが必要になります。今年末に一般公開された後は、Mac の App Store や iOS デバイスのソフトウェアアップデートで取得することができます。

MXNet とコンバーターツールのインストール

ツールは macOS High Sierra 10.13 ベータ 8 でインストールされテスト済みです。Mac で Core ML モデルの推論を実行しない限り、macOS El Capitan (10.11) 以降のバージョンでコンバーターを実行することができます。

コンバーターツールを実行するには、Python 2.7 をインストールしている必要があります。

MXNet フレームワークと mxnet-to-coreml ツールをインストールするには次のコマンドを実行します。

pip install mxnet-to-coreml

MXNet モデルの変換

LocationNet モデルのトレーニングには、AWS Multimedia Commons データセットからのジオタグが付けられたイメージを使用する単一の p2.16xlarge Amazon EC2 インスタンスで MXNet が使用されています。これは MXNet Model Zoo で公的に共有されています。

他の MXNet モデルと同様に、LocationNet は 2 つのパートで構成されています。

  • モデル定義を含む JSON ファイル
  • パラメータを含むバイナリファイル

Amazon S3 に保存されている .json モデル定義.params モデルパラメータのファイルをダウンロードします。

そして、GitHub リポジトリからモデルのトレーニングで使用したジオグラフィックセルを含むクラスファイル、grids.txt をダウンロードする必要があります。これには Google の S2 Geometry Library を使用し、トレーニングデータでクラスを作成しました。このテキストファイルにある各ラインは S2 セルトークン、緯度、経度です (例: 8644b594 30.2835162512 -97.7271641272)。iOS アプリの Swift コードは S2 セルトークンの情報を排除し座標のみを使用します。

変換ツールの GitHub リポジトリで説明したように、モデルを変換します。

すべて同じディレクトリにダウンロードしたら、次のコマンドを実行します。

mxnet_coreml_converter.py --model-prefix='RN101-5k500' --epoch=12 --input-shape='{"data":"3,224,224"}' --mode=classifier --pre-processing-arguments='{"image_input_names":"data"}' --class-labels grids.txt --output-file="RN1015k500.mlmodel"

内部的には、モデルは最初に MXNet によりロードされ、メモリでシンボリックグラフ全体を再作成します。コンバーターはこのシンボリックグラフをウォークスルーし、各オペレーターを Core ML に相当するように変換します。コンバーターに提供済みの引数にはグラフを生成するために MXNet が使用しているものもあります。その他は入力の事前処理 (ニューラルネットワークに渡す前) や特定の方法でニューラルネットワークの出力を処理するために Core ML により使用されます。

コンバーターツールがモデルの複数のレイヤーを処理しているのを確認してから、ファイル名が生成されていることを SUCCESS で確認します。後のステージで結果として生成されるファイル RN1015k500.mlmodel を Xcode プロジェクトにインポートします。

(more…)

Apple Core ML と Keras が Apache MXNet をサポート

Apache MXNet バージョン 0.11 が利用可能になりました。このリリースでは MXNet がコミュニティ開発と Apache プロジェクトを生み出す上で大きな節目を迎えています。今回のリリースのコードは Apple、Samsung、Microsoft の開発者を含む協力者により実現されました。このプロジェクトには現在の時点で 400 人以上の協力者が参加しています。このプロジェクトのコードベースは完全に Apache への移行を完了し、インキュベーティングプロジェクトとして公式にリリースされた第一弾です。このリリースの重要ないくつかの機能については過去のブログでご紹介しました。このブログ記事ではハイライトを再びご説明します。

MXNet モデルを使用して iOS、macOS、watchOS、tvOS 対象のアプリで Machine Learning を構築

Apple の Core ML が WWDC 2017 でリリースされたことにより、開発者は独自のアプリに Machine Learning を簡単に統合できるようになり、いくつかのコードでユーザーにインテリジェントな新機能を提供することができます。すでに、拡張現実といった我々が環境を経験する方法において変化をもたらしています。高速に進化している AI 機能がさらに拡大していくに連れ、開発者は私達のエクスペリエンスを強化する新機能を利用可能にする新たな Machine Learning モデルにアクセスできるようになります。

Apple はアプリ開発者が最新技術のモデルを利用できるようにするため、Apache MXNet プロジェクトにコードを提供しています。MXNet は MXNet を使ってクラウドで Machine Learning モデルを構築しトレーニングを可能にする Core ML を開発者が利用できるようにしました。Xcode に直接インポートすることも可能になり、独自のアプリでインテリジェントな新機能を簡単に構築できます。様々なアプリケーションや独自で構築するモデルに、トレーニング済みモデルの MXNet Model Zoo から選択することができます。このリリースは MXNet モデルを Core ML 形式に変換するツール (プレビュー) を提供しています。Apple の Core ML 形式に MXNet モデルをインポートするにはコンバーターをインストールし、トレーニング済みモデルを変換するために Python コマンドを実行する必要があります。たった 1 つのシンプルなコマンドでコンバーターをインストールできます。

pip install mxnet-to-coreml

写真の位置座標の識別が可能な Machine Learning を使用するシンプルな iOS アプリケーションを構築する方法については、こちらのチュートリアルをご覧ください。手順とエンドツーエンドの例についてはこちらの GitHub リポジトリをご覧ください。

(more…)

Amazon Lex ボットのスキーマを Alexa Skills Kit にエクスポート

Alexa スキルの作成プロセスをシンプルにするため、Amazon Lex チャットボットのスキーマを Alexa Skills Kit にエクスポートできるようになりました。

Amazon Lex が Amazon Lex チャットボットの定義を Alexa Skills Kit (ASK) に追加できる JSON ファイルとしてエクスポートできるようになりました。ASK にボットのスキーマファイルを追加すると、Amazon Echo、Amazon Dot、Amazon Look、Amazon Tap、Amazon Echo Show、Alexa を有効にしたサードパーティ製のデバイスで使用する Alexa スキルを構築できます。JSON 設定ファイルには発話、スロット、プロンプト、スロットタイプを含む Amazon Lex チャットボットの構造が含まれています。エクスポート機能は Amazon Lex チャットボットで Alexa スキルの作成プロセスをシンプルにすることができます。

Alexa スキルを作成するには、次のステップを実行して ASK ポータルにある Amazon Lex ボットの定義ファイルを使用できます。手順については次をご覧ください。

Amazon Lex コンソールから

  1. ボットの作成、構築、発行が完了したら開発したボットリストを含むページに戻ります。
  2. ラジオボタンを使ってエクスポートしたいボットを選択します。ボットを選択するとページ上部の [Actions] タブが有効になります。
  3. [Actions] タブのドロップダウンメニューの項目から [Export] を選択し、モーダルダイアログに従い [Alexa Skills Kit] をプラットフォームとして選択しバージョンを選びます。
  4. [Create] をクリックします。ボットスキーマの JSON ファイルを含む Zip ファイルが生成されます。

これで、Amazon Alexa スキルで Amazon Lex ボットスキーマを使う準備ができました。

(more…)

Apache MXNetとApple Core MLを使った機械学習をiOSアプリケーションに組み込む

AppleのWWDC2017で発表されたCore MLを使えば、iOSやmacOS、watchOS、tvOSの開発者は、 自分のアプリケーションに機械学習モデルを簡単に統合することができるようになります。Core MLによって、開発者はほんの数行のコードを追加するだけで、インテリジェントな新しい機能をユーザに提供できるようになります。Core MLを使えば、モバイルアプリケーションの開発者が機械学習を簡単に利用出来るようになり、プロトタイプを素早く構築することが出来ますし、これまでのアプリよりもパワフルなアプリを開発するために、カメラやGPSなどの様々なセンサーを使用できるようにもなります。

MXNetコミュニティーのメンバー達(AppleやAWSの社員もcontributorとして活動しています)は、MXNetを使って作られた機械学習モデルをCore MLのフォーマットに変換するためのツールを作りました。このツールを使えば、 Appleのデバイス向けのアプリに機械学習を簡単に組み込むことが 出来ますし 、Deep Learningを組み込んだアプリケーションのための高速なパイプラインを手にすることになります。つまり、AWSクラウド上で スケーラブルかつ効率的に、MXNetを使用した分散モデルトレーニングを行なった結果を用いて,Apple デバイス上で高速な推論処理を行うことが可能となります。

この変換ツールのリリースをサポートするために、我々はcoolなiOSアプリケーションを構築することにしました。本アプリは、以前のAWS AI Blogの「AWS EC2上でのMXNetと Multimedia Commonsデータセットを用いた 画像の場所の推測」という投稿を参考にしています。この投稿では、LocationNetモデルを使って写真がどこで撮影されたのかを予測しています。

本記事では、MXNetのモデルからCore MLに変換するための環境の構築方法および、既存のモデルの変換方法 、変換したモデルをSwiftで開発したiOSアプリケーションにimportする方法について説明します。このアプリケーションは、写真の撮影場所を予測するモデルに写真を入力し、撮影場所をマップ上に表示します。実行環境としては、iOS 11 betaがインストールされたiPhoneなどの物理iOSデバイスをおすすめします。シミュレータを使う場合にはXCode 9.0 beta付属のシミュレータで試してみてください。

本記事の執筆時点では、Xcode9、iOS11、Core MLはまだbeta版のため、XcodeやiOSのダウンロードのためにはApple Developer Programアカウントが必要となります。2017年中にはすべてリリースされる予定なので、リリース後であれば、MacのApp StoreやiOSデバイスのSoftware UpdateからXcode9やiOS11を入手できるようになります。

MXNetと変換ツールのインストール

変換ツールはmacOS High Sierra 10.13 beta 8にインストールして動かしてみました。Core ML Modelを使った推論をせずに、変換ツールを動かすだけならmacOS El Capitan (10.11)以上であれば大丈夫です。

変換ツールを利用するにはPython2.7のインストールが必要です。

MXNet frameworkおよびmxnet-to-coreml toolをインストールするためには下記のコマンドを実行します。

pip install mxnet-to-coreml

MXNetモデルの変換

LocationNetモデルはp2.16xlargeのAmazon EC2インスタンス1台と、AWS Multimedia Commonsのデータセットの中のgeoタグの付いた画像を使ってトレーニングしています。これはMXNet Model Zooで一般に公開されています。

他のMXNetモデルと同様に、LocationNetも2個の要素を持っています。

  • モデル定義を含んだJSONファイル
  • パラメータを含んだバイナリファイル

まず、Amazon S3に格納されている .json model definition.params model parametersファイルをダウンロードしましょう。

加えて、GitHubリポジトリから、モデルのトレーニングに利用する位置情報を含んでいるgrids.txtファイルもダウンロードしましょう。このファイルはGoogleのS2 Geometry Libraryを用いたトレーニングデータから作られています。このテキストファイルの各行は、S2 Cell Token、緯度、軽度(例えば、8644b594 30.2835162512 -97.7271641272)の形式になっています。今回Swiftを使って作るiOSアプリケーションでは、S2 Cell Tokenの情報は利用せず、座標情報のみを利用します。

変換ツールのGitHubリポジトリで説明してあるように、モデルを変換してみましょう。

同じディレクトリにすべてのファイルをダウンロードした後、次のコマンドを実行します。

mxnet_coreml_converter.py --model-prefix='RN101-5k500' --epoch=12 --input-shape='{"data":"3,224,224"}' --mode=classifier --pre-processing-arguments='{"image_input_names":"data"}' --class-labels grids.txt --output-file="RN1015k500.mlmodel"

内部では、MXNetによってモデルが最初にロードされて、メモリ上に全体のsymbolic graphとして再形成されます。変換ツールはこのsymbolic graphの各オペレーターを、Core ML における等価な表現へと変換していきます.。変換ツールに与えたいくつかの引数はMXNetによってグラフを生成するために使われますが、その他の引数は特定の方法にて、Core MLの(ニューラルネットワークを通す前の)入力の前処理か、ニューラルネットワークの出力の処理かのどちらかに使われます。

変換ツールがモデルの多数のレイヤーを処理していることを確認できるでしょう。そして、SUCCESSという結果とともに、生成されたファイル名(この例ではRN1015k500.mlmodel)が確認できます。後の段階で、Xcodeプロジェクトにこのファイルをimportして利用します。

Xcodeがインストール済みであれば、このモデルファイルをダブルクリックすれば、このモデルファイルについての、サイズや名前、Swiftコード内で通常使用されるパラメータなどの情報を確認できます。

iOSアプリケーションのコードのダウンロードおよび設定

このサンプルiOSアプリケーションはmacOS Sierra 10.12.6のMac上でXcode 9 beta 6を使ってSwiftで開発されており、iOS 11 beta 8がインストールされたiPhone7にてテストされています。

我々はCore MLで画像を扱いやすくするために、Appleの新しいVision frameworkを利用することにしました。Vision frameworkは、 Core MLのモデルが要求するフォーマットおよびサイズに画像を自動で変換してくれます。このフレームワークはコンピュータ上で画像や映像を扱う際の課題に対して、一貫性のあるインターフェースおよび、各種機能(顔追跡や顔検出、ランドマークや文字検出、矩形検出、バーコード検出、オブジェクト追跡、画像登録)を提供します。

開始するために、次のリソースを使用しました。

では、アプリケーションをビルドしてみましょう。

GitHubリポジトリ(MXNet2CoreML_iOS_sample_app)からiOSのサンプルアプリケーションのソースコード をダウンロードします。

MXNet2CoreML.xcodeprojをXcodeで開きます。

下図のように、変換ツールで生成したファイル(RN1015k500.mlmodel)をXcodeプロジェクトのnavigatorにドラッグ&ドロップし、画面右下のTarget Membershipでチェックを入れます。

変換ツールをインストールせずに、iOSアプリケーションを試してみたい場合には、RN1015k500.mlmodelをアップロードしていますので、ダウンロードすれば、Xcodeプロジェクトのnavigatorにドラッグ&ドロップして利用可能です。

アプリケーションを実行してみましょう

前述したとおり、アプリケーションを実行する際には、iOS11(本記事の執筆時点ではβ版)をインストールした実機で実行することをおすすめしています。

Xcodeのシミュレータでも実行することが出来ますが、アプリケーションの実行速度やMAPの移動や拡大の際のアニメーションがイマイチな可能性があります。

次のスクリーンショットで示すように、iOSの実機でアプリケーションを実行するのであれば、Teamの設定をあなたのものに変更するのを忘れないでください。

前述したとおり、こちらの実行をするためにはApple Developer accountが必要となります。

iPhone上でアプリケーションをビルドして実行するためにplayを押下します。

アプリケーションがiPhoneにインストールされて、次の画面が確認できるはずです。

画面には3個のセクションがあります。

上部のセクションには世界のどこかで撮影された写真が表示されます。左右にスワイプすることでアプリケーションに組み込んである3枚の画像のうちの1枚が表示されます。これらの画像は人間が見れば比較的容易に場所を識別できます。しかし、 素晴らしいことに、このモデルはGPS情報が一切含まれていない画像データから非常に正確な位置情報を予測します!

中央のセクションでは、リアルタイムの推論結果を上位3位まで表示しています。実際には、モデルは何百という予測を出しますが、その中で上位3件のみを表示しています。

下部のセクションでは、モデルで予測した上位3位までの位置情報をインタラクティブなMAP上にPinで表示しています。拡大や移動などの操作も自由にできます。

スクリーンショット1:

スクリーンショット2:

まとめ

本記事では、AWS上でMXNetを使って洗練された機械学習モデルの構築とトレーンングが可能なこと、MXNetでトレーニングしたモデルをCore MLのフォーマットに変換ツールを使って変換可能なこと、そして、変換したモデルをXcodeに素早くimport可能なことを紹介しました。iOSやその他のAppleデバイス用のアプリで、新しく素晴らしい機能を試してみましょう。

次のステップ

自分のコンピュータに保存されている写真をこのアプリケーションで試してみたいのであれば、Xcodeプロジェクトのnavigatorから1.jpgを削除して、1.jpgにリネームした、あなたの写真をドラッグ&ドロップするだけで試すことができます。どうやってこの写真の予測をするのかはCore MLモデルについての部分で説明しました。

このサンプルアプリケーションに手を入れて、カメラ機能を実装することも出来ます。写真を撮影する機能を追加するか、カメラロールから読み出せる機能を追加することで、これから撮影する写真もしくは過去に撮影した写真に対してリアルタイムで位置の予測をすることが出来ます。

この記事からインスパイヤされて様々な活用方法を発見してもらえれば大変嬉しいです。 ご質問、ご意見、ご提案がありましたら、下記のコメント欄に投稿してください。

Have fun!

原文: Bring Machine Learning to iOS apps using Apache MXNet and Apple Core ML (翻訳: SA石井・志村)