Category: General


Build a Voice Kit with Amazon Lex and a Raspberry Pi

この記事では、広範に利用可能なコンポーネントを利用して、Amazon Lex をどのようにカスタムハードウェアに組み込むかを紹介します。シンプルな音声ベースの AI キットを構築して、Amazon Lex に接続する方法を示します。Raspberry Pi および合計 60 ドル以下の市販のコンポーネントをいくつか使用します。このブログの終わりまでに、Amazon Lex PostContent API に統合された、インターネット接続されたハードウェアデバイスが使用できるようになります。音声制御ロボットおよび音声制御メトロノームなどの、幾つかのボットのデモも行います。

コンポーネント概要

Amazon Lex ハードウェアキットを構築するには、以下のコンポーネントが必要です。

  • Raspberry PI 3 Model BAmazon で 35 ドルから。
  • Kinobo – USB 2.0 ミニマイク、Amazon で 5 ドルから。
  • Adafruit I2S 3W ステレオスピーカーボンネットおよびスピーカー、adafruit で 12 ドルから。
  • (オプション) Qunqi クリアーケースボックスエンクロージャー、Amazon で 20 ドルから。

物理的な作成

Raspberry Pi

図 1. Raspberry PI Model B

このプロジェクトでは、Raspberry PI 3 Model B ストックを使用します。図 1 は、Raspberry Pi をクリアーケースボックスキットに設置したところです。クリアーケースボックスは Pi、デジタルオーディオコントローラー (DAC)、およびスピーカーを置くのにちょうどぴったりですが、必須ではありません。

(more…)

最近の AWS リリースと公開した内容について

過去にも触れましたが、AWS ブログチームは皆さんが膨大な情報に圧倒されることなく、できる限り多くの AWS リリースや公開した内容について把握して頂けるように努めています。バランスを上手く取るため、定期的に新しい情報を皆さんにお届けし、こちらのリストも片付けるようにしています。今日ご紹介するのは次の通りです。

  • S3 オブジェクトのクロスリージョンレプリケーションをモニタリング
  • スポットフリーインスタンスのタグ
  • 12 のサービスとの PCI DSS コンプライアンス
  • WorkDocs の HIPAA 利用資格
  • VPC サイズ変更
  • AppStream 2.0 グラフィックデザインインスタンス
  • ServiceNow の AMS コネクタアプリ
  • クラウド内の Regtech
  • 新しく改訂されたクイックスタート

では、早速始めましょう。

S3 オブジェクトのクロスリージョンレプリケーションをモニタリング
S3 クロスリージョンレプリケーションについては数年前に説明しました。その時には、ソースバケットでバージョニングを有効にし、指定するリージョンとバケットを選択するだけでした。手動でレプリケーションのステータスを確認したり、ソースとデスティネーションバケットのインベントリ (毎日または毎週) を作成することができます。

クロスリージョンレプリケーション監視 (略名: CRR Monitor) ソリューションは、リージョンに渡るオブジェクトのレプリケーションステータスを確認し、ほぼリアルタイムでメトリクスやエラー通知を提供します。

詳細については「CRR Monitor の導入ガイド (CRR Monitor Implementation Guide)」と「CRR Monitor を導入するための AWS CloudFormation テンプレート (AWS CloudFormation template to Deploy the CRR Monitor)」をご覧ください。

スポットインスタンスのタグ
Spot インスタンススポットフリート (スポットインスタンスのコレクション) は、コンピューティング容量を取っておくためのアクセスを提供します。先日、スポットリクエストの一部としてタグ入力 (キーと値のペア) を許可し、タグを EC2 インスタンスに適用してリクエストを満たせるようになりました。

詳細については「スポットフリート EC2 インスタンスのタグ付け (Tag Your Spot Fleet EC2 Instances)」をご覧ください。

12 のサービスとの PCI DSS コンプライアンス
AWS セキュリティブログで最初に公開しましたが、つい先日 PCI DSS コンプライアンスプログラムに12 件のサービスを追加し、対象サービスの合計数は 42 件になりました。詳細については「コンプライアンスリソース (Compliance Resources)」をご覧ください。

WorkDocs の HIPAA 利用資格
その他のコンプライアンスにおいては、WorkDocs が利用可能なすべての AWS リージョンで Amazon WorkDocs が HIPAA 利用資格と PCI DSS コンプライアンスをアーカイブしたこともお知らせしました。

VPC サイズ変更
この機能は、まとまったアドレスを追加することで既存の Virtual Private Cloud (VPC) を拡張できるようにします。これにより柔軟性が高まるので増加しても対応しやすくなるでしょう。VPC ごとに 4 セカンダリ/16 CIDR まで追加できます。削除し新しく追加することで、セカンダリ CIDR を編集することもできます。VPC を選択しメニューから [Edit CIDRs] を選びます。

次に希望通りに CIDR ブロックを追加または削除します。

詳細については「VPC とサブネット (VPCs and Subnets)」をご覧ください。

AppStream 2.0 グラフィックデザインインスタンス
AMD FirePro S7150x2 サーバー GPU を使用し AMD Multiuser GPU テクノロジーを備えた新しい Amazon AppStream 2.0 のグラフィックデザインインスタンスは、今まで以上にコスト効率良くグラフィックアプリケーションを実行したりストリームすることを可能にしています。インスタンスは 2-16 vCPU と 7.5 GB から 61 GB メモリで 4 つのサイズから利用することができます。

詳細については「ストリーミンググラフィックアプリケーション向けの新しく低コストなインスタンスタイプ、Amazon AppStream 2.0 グラフィックデザインについて (Introducing Amazon AppStream 2.0 Graphics Design, a New Lower Costs Instance Type for Streaming Graphics Applications)」をご覧ください。

ServiceNow の AMS コネクタアプリ
AWS マネージドサービス (AMS) はエンタープライズ向けのインフラストラクチャ操作管理を提供します。これはクラウド導入を加速するように設計されており、リクエスト変更、パッチ管理、セキュリティやバックアップなどよくある操作を自動化することができます。

新しい ServiceNow 用の AMS 統合アプリ は、カスタムデプロイや API 統合なしに ServiceNow から AMS を操作できます。

詳細については「クラウド管理をより簡単に: AWS マネージドサービスと ServiceNow の統合 (Cloud Management Made Easier: AWS Managed Services Now Integrates with ServiceNow)」をご覧ください。

クラウド内の Regtech
Regtech (このブログを書きながら学びました) は regulatory technology の略で、クラウドコンピューティング、分析、Machine Learning といった最新技術を使用して規制上の問題に取り組むことです。

APN コンサルティングパートナー Cognizant と協力し、TABB Group は先日、金融サービスにおける顧客に対し、なぜ規制やコンプライアンスが大きなチャレンジとなるのか、そして AWS がどのように役立つのか説明した思想的リーダーシップのドキュメントを公開しました。

新しく改訂されたクイックスタート
クイックスタートチームは新しいソリューションを次から次へと送り出し、既存のソリューションに向けて重要な更新を作成しています。概要は次をご覧ください。

Alfresco Content Services (v2) Atlassian Confluence Confluent Platform データレイク
Datastax Enterprise GitHub Enterprise Hashicorp Nomad HIPAA
Hybrid Data Lake with Wandisco Fusion IBM MQ IBM Spectrum Scale Informatica EIC
Magento (v2) Linux Bastion (v2) Modern Data Warehouse with Tableau MongoDB (v2)
NetApp ONTAP NGINX (v2) RD Gateway Red Hat Openshift
SAS グリッド SIOS Datakeeper StorReduce SQL サーバー (v2)

今回は以上です。

Jeff;

EC2 インスタンスと EBS ボリュームで 1 秒あたりによる請求が可能に

以前は処理能力へのアクセスが必要になるとサーバーを購入またはリースしなければなりませんでした。そのため、2006 年に EC2 をリリースした当時、インスタンスを 1 時間だけ使用し、使用した時間の分だけ支払えるようになったことは大きなニュースでした。この従量制モデルにより、お客様は様々なタイプのアプリケーションを開発したり実行するための新しい方法を考えるようになりました。

そして現在、AWS Lambda は短時間で大くの有用な作業を行えることを明らかに示しています。多くのお客様が、場合によっては数分という短時間で大量なインスタンスを活用できる EC2 インスタンスのアプリケーション構築を検討しています。

EC2 と EBS の秒単位による請求
10 月 2 日より、オンデマンド、リザーブド、スポット形式で起動した Linux インスタンスの使用は 1 秒単位で請求されるようになります。同様に、EBS ボリュームのプロビジョニング済みストレージも 1 秒単位で請求されるようになります。

また、1 秒単位による請求は Amazon EMRAWS Batch でも適用されます。

Amazon EMR – より素早く結果を得るために、当社のお客様は独自の EMR クラスターに容量を追加しています。クラスターにおける EC2 インスタンスの 1 秒単位による請求で、今まで以上にコスト効率良くノードを追加できるようになりました。

AWS Batch – お客様が実行するバッチの多くは 1 時間内に完了されています。AWS Batch はすでにスポットインスタンスを起動し終了しており、1 秒単位のバッチ処理はさらに経済的になるでしょう。

より高度な知識を備えているお客様は、ゲーム、テクノロジー、3D レンダリングフリートを管理している際に、最も有益なターゲットインスタンスを戦略的に選ぶことで EC2 から最大の価値を得られるようにするシステムを構築しています。秒単位の請求により、インスタンス管理におけるこうしたレイヤーを 1 つ取り除くことができ、すべてのお客様とワークロードにおいてコスト節約を実現できます。

これにより、多くのワークロードに掛かるコストの低下が見られると思いますが (価格の値下げについてはこちら)、この変更で最も大切なポイントは他にあります。つまり、この変更によりイノベーションを促進しコンピューティング関連の問題を新しい方法で見られるようになるのではないかと我々は考えています。継続的な統合のサポート改善にはどのように活用できますか?開発やテストといったワークロードの一時的な環境をプロビジョニングする方法を変えることはできますか?分析、バッチ処理、3D レンダリングにおいては?

クラウドコンピューティングのメリットの 1 つは、その伸縮性により必要に応じてリソースのプロビジョニングやプロビジョニング解除ができることです。使用量の請求を秒単位にすることで伸縮性を高めたりコスト節約が可能になるので、ユーザーはコンピューティングにおける継続的な向上を促進することができます。

主要事項
この変更は 10 月 2 日より、新たに起動またはすでに実行している Linux インスタンスを対象にすべての AWS リージョンで適用されます。各インスタンスには 1 分間の最低料金が課せられます。

現在、時間単位による請求が課せられている Microsoft Windows や Linux ディストリビューションを実行しているインスタンスには、秒単位による請求が適用されません。

リスト料金とスポットマーケット料金は、まだ時間単位の対象となっていますが、リザーブドインスタンスの使用量と同様に請求額は秒単位で換算されます (1 時間以内に複数のインスタンスを起動、使用、終了し、すべてのインスタンスでリザーブドインスタンスのメリットを利用することができます)。また、請求書には次のように 10 進数の形式で時間が表示されます。

リージョンごとの専用料金、EBS スナップショット、AWS Marketplace のサービスは、まだ時間単位で請求されています。

Jeff;

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 サポートチームへコミュニティフォーラムかサポートセンター経由でご連絡下さい。

 

 

ディープラーニングネットワーク (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…)

新機能 – 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 成田が翻訳しました。元記事はこちら

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…)

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石井・志村)

Windows 向けの新しい Amazon EC2 Elastic GPU

本日、Windows 向け Amazon EC2 Elastic GPU の一般提供を発表しました。Elastic GPU はアプリケーションのグラフィックパフォーマンスを高速化するために Amazon Elastic Compute Cloud (EC2) インスタンスにアタッチできる GPU リソースです。Elastic GPU は Medium (1GB)、Large (2GB)、XLarge (4GB)、2xlarge (8GB) のサイズで提供されています。G3 または G2 (OpenGL 3.3 アプリケーション向け) といった GPU インスタンスタイプを使用する代わりとして、低コストで利用できるサービスです。Elastic GPU は様々なインスタンスタイプと使用することができ、アプリケーションに適切なコンピューティング、メモリ、ストレージバランスを選べるように柔軟性を提供しています。そして今日から Elastic GPU を us-east-1 と us-east-2 でプロビジョンできるようになりました。

Elastic GPU は eg1.medium で 0.05 USD/時間からご提供しています。1 時間 5 セントです。Elastic GPU を t2.medium (0.065 USD/時間) にアタッチすると、GPU を使用したインスタンスに毎時間支払う金額は 12 セント以下となります。これまでは、もっとも低価格なグラフィカルワークステーション (G2/3 クラス) のコストは 0.76 USD/時間でした。つまり、特定のグラフィカルワークロードを実行するための価格を 80% 以上削減できることになります。

Elastic GPU はいつ使うのか?

Elastic GPU はグラフィックの高速化に必要な少量または断続的な GPU のパワーを必要とするアプリケーションや、OpenGL のサポートに最適です。Elastic GPU は OpenGL 3.3 API スタンダードもサポートし、展開済み API サポートも近日中にリリースする予定です。

Elastic GPU はインスタンスのハードウェアの一部ではありません。代わりに、Elastic GPU でインスタンスを起動した時に作成したサブネットにある Elastic GPU ネットワークインターフェイスを介してアタッチされます。次のイメージは Elastic GPU がどのようにアタッチされるか示しています。

Elastic GPU はアタッチしているネットワークなので、アプリケーションをサポートできる適切なネットワークの帯域幅でインスタンスをプロビジョンすることが大切です。また、インスタンスセキュリティグループがポート 2007 でトラフィックを許可していることを確認することも重要です。

OpenGL API を使用できるアプリケーションであれば、Elastic GPU を利用することができます。Blender、Google Earth、SIEMENS SolidEdge などはすべて Elastic GPU で実行できます。Kerbal Space Program も実行できます。

いつ、そしてどのように Elastic GPU を使用できるのか分かったところで、インスタンスを起動して 1 つ使ってみましょう。

Elastic GPU の使用

まず、EC2 コンソールにアクセスし [Launch Instance] をクリックします。次に [Microsoft Windows Server 2016 Base] といった Windows AMI を選択します。次にインスタンスタイプを選択します。次に [Elastic GPU] セクションを選択したことを確認し、eg1.medium (1GB) Elastic GPU を割り当てます。

[Advanced Details] セクションでユーザーデータもいくつか入れます。Elastic GPU ソフトウェアをダウンロードしインストールするために、PowerShell の簡単なスクリプトを書きます。


<powershell>
Start-Transcript -Path "C:\egpu_install.log" -Append
(new-object net.webclient).DownloadFile('http://ec2-elasticgpus.s3-website-us-east-1.amazonaws.com/latest', 'C:\egpu.msi')
Start-Process "msiexec.exe" -Wait -ArgumentList "/i C:\egpu.msi /qn /L*v C:\egpu_msi_install.log"
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Amazon\EC2ElasticGPUs\manager\", [EnvironmentVariableTarget]::Machine)
Restart-Computer -Force
</powershell>

このソフトウェアはすべての OpenGL API コールをアタッチした Elastic GPU に送ります。

次に、セキュリティグループで TCP ポート 2007 が VPC に公開されているか確認し、Elastic GPU がインスタンスに接続できるようにします。最後に [Launch] をクリックしてインスタンスと Elastic GPU がプロビジョンされるのを待ちます。インスタンスにアタッチできる別の SG を作成することが、これを実行する上で最適な方法です。

起動手順のアニメーションは下記をご覧ください。

また、次のような簡単なコールを使用して AWS CLI で起動することもできます。

$aws ec2 run-instances --elastic-gpu-specification Type=eg1.2xlarge \
--image-id ami-1a2b3c4d \
--subnet subnet-11223344 \
--instance-type r4.large \
--security-groups "default" "elasticgpu-sg"

そうすると、こちらの Elastic GPU のソフトウェアインストール手順を実行できます。

タスクバーで Elastic GPU のステータスをチェックすると、Elastic GPU が問題なく動作しアタッチされていることが分かります。

サービスに関するフィードバックがあれば、ぜひお知らせください。Elastic GPU でのエクスペリエンスをお知らせいただくには、GPU Status Box の左下端にある Feedback リンクをクリックしてください。

Elastic GPU の実演

これでインスタンスのプロビジョンと Elastic GPU のアタッチが完了しました。AWS の私のチームメイトが、素晴らしい 3D アプリケーションについて紹介するようにリクエストしていたのですが、Elastic GPU のことを最初に聞いた時に考えたのは Kerbal Space Program (KSP) のことだったので、ここで簡単にテストしてみようと思います。結局のところ、Jebediah Kerman をスペースで起動できないのなら、こうしたソフトウェアの意味は何なのでしょう?KSP をダウンロードし、 -force-opengl を起動パラメーターとして追加して、レンダリングに OpenGL を使用していることを確認します。下記で、私の中途半端なスペースシップの構築案を見ることができます。昔はもっと良いのを作れたのですが。劣化を伴うリモートデスクトッププロトコルを使用したネットワークにしては悪くないでしょう。

ロケット発射の写真をお見せしてもいいのですが、スケジュール外で起きた分解により地上から離陸しなかったのです。そういうことで、またいちからやり直しです。

当面は Amazon CloudWatch メトリクスをチェックし、その間にどれだけの GPU メモリを使用したか見ることができます。

パートナー、料金、ドキュメント

利用者の皆さんに優れたエクスペリエンスを提供していくため、ANSYS や Siemens といった 3D ソフトウェアパートナーは、Elastic GPU で OpenGL API を活用しようと、自社ソフトウェアの Elastic GPU の認定に現在取り組んでいます。パートナーシップの詳細についてはこちらをご覧ください。

Elastic GPU の料金についてはこちらをご覧ください。その他のドキュメントに関してはこちらをご覧ください。

さて、仮想ロケットを構築する用事がありますので今回はこの辺で失礼します。

Randall