Spark 開発者の皆様へ: Azure Cognitive Services をご紹介

執筆者: Anand Raman (Group Product Manager, Azure AI)

このポストは、2019 年 4 月 24 日に投稿された Dear Spark developers: Welcome to Azure Cognitive Services の翻訳です。

 

Azure Cognitive Services on Spark

この記事は、Mark Hamilton、Sudarshan Raghunathan、Chris Hoder、MMLSpark が共同執筆しました。

Azure Cognitive Services のパワーを Apache Spark™ 上のビッグ データ ワークフローに組み込む

本日マイクロソフトは Spark + AI Summit 2019 で、テラバイト規模で Azure Cognitive Services を簡単に利用できるようにする SparkML エコシステムの新しいモデル セットを発表しました。開発者はコードを数行書くだけで、SparkML の既存の分散機械学習パイプラインに認識サービスを組み込むことができます。またこれにより、ディープ ネットワーク、勾配ブースティング ツリー、任意の SparkML モデルを使用して、複数のサービスを 1 つのチェーンまたは「パイプライン」にし、それらのハイブリッド モデルを柔軟性の高いサーバーレスの分散システムで活用することが可能になります。

Azure Cognitive Services は、画像認識、オブジェクト検出、音声認識、翻訳、テキスト読み上げといったインテリジェントな機能を、あらゆるシナリオのアプリケーションに簡単に追加できるサービスです。今日まで既に 100 万人以上の開発者が Cognitive Services を利用し、それぞれのアプリケーションで画期的なエクスペリエンスを生み出しています。

Azure Cognitive Services on Apache Spark™

Cognitive Services on Spark は、Apache Spark 分散コンピューティング エコシステムで Azure のインテリジェント サービスを大規模に連携できるようにするものです。Azure DatabricksAzure Batch を基盤とした Azure Distributed Data Engineering Toolkit (英語)SQL Server 内の Spark (英語)Azure Kubernetes Service 上の Spark クラスターなど、Spark 2.4 クラスターと互換性があります。PySpark、Scala、Java、R (ベータ) の慣用的なバインディングも提供されます。

Cognitive Services on Spark を使用すると、用途を広げてインテリジェントなモデルを直接 Apache Spark™ と SQL 計算に組み込み、継続的に改善することができます。ネットワーク周りの細かいレベルの作業から開発者を開放し、インテリジェントな分散アプリケーションの作成に専念できるようにすることを目的に作成されました。Cognitive Services のそれぞれの認識サービスによって SparkML が刷新されるため、既存の SparkML パイプラインに新たなサービスを追加できます。また、SparkML フレームワークに新しい API も導入されます。これにより、単一のスカラー、または分散 Spark DataFrame の列のいずれかによってモデルをパラメーター化できます。この API では、簡潔ながらも強力で滑らかなクエリ言語が提供されるため、整然とした、完全に分散されたパラメーター化が可能です。詳細については、私たちのセッション (英語) をご覧ください。

Azure Cognitive Services on Spark を使用するための 3 つの簡単なステップ

  1. Azure Cognitive Services アカウントを作成する
  2. MML Spark を Spark クラスターにインストールする (英語)
  3. サンプルのノートブックを試してみる (英語)

Cognitive Services コンテナーを使用した低レイテンシで高スループットのワークロード

Cognitive Services on Spark は、世界中のあらゆる地域のサービスと互換性がありますが、多くのシナリオでは、接続が悪い状況やまったく接続できない状況に対応したり、超低レイテンシを実現したりする必要があります。こうした問題に Cognitive Services on Spark で対処できるよう、先日、Cognitive Services のいくつかのサービスを Docker コンテナーとしてリリースしました。これらのコンテナーを利用すると、各種の認識サービスをローカルで、またはクラスターのワーカー ノードで直接実行し、超低レイテンシのワークロードを実現できます。認識サービスを組み込んだ Spark クラスターを簡単に作成できるように、Spark クラスターを人気のコンテナー オーケストレーション プラットフォームである Kubernetes に展開するための Helm チャート (英語) をご用意しました。コンテナーの URL に Cognitive Services on Spark を指定するだけで、すぐに利用できます。

Cognitive Services in Containers

HTTP on Spark を使用してあらゆる Web サービスを Apache Spark™ に追加

Http on Spark.

Cognitive Services は、エコシステム間でソフトウェアを共有するためにネットワークを活用している一例です。Web は HTTP(S) Web サービスの宝庫であり、それらは便利なツールを提供してくれたり、任意の言語のコードをアクセス可能にするための標準パターンとして機能したりします。マイクロソフトは、Spark 開発者が既存の Spark パイプライン内からこうした豊富なサービスを活用できるようにしたいと考えています。

それを実現するために、HTTP 通信プロトコル全体と Spark SQL を統合した HTTP on Spark をリリースします。これを使用すると、Spark ユーザーは自身のクラスターの並列ネットワーキング機能を利用して任意のローカル サービス、Docker サービス、Web サービスを統合できます。つまり HTTP on Spark は、あらゆるフレームワークを Spark エコシステムに統合するためのシンプルで理にかなった手段と言えます。

HTTP on Spark では、SQL 操作や、map、reduce、filter といった処理、Spark エコシステムのあらゆるツールを使用して、要求と応答を作成、操作できます。SparkML と組み合わせると、サービスをつなげて、Spark を分散マクロサービス オーケストレーターとして使用できます。HTTP on Spark は、失敗した要求に対する非同期の並列処理、バッチ処理、スロットル処理、指数バックオフをサポートしているため、アプリケーションの中核ロジックの開発に専念できます。

現実世界の事例

メトロポリタン美術館

Azure Search on Spark for The MET

マイクロソフトは、HTTP on Spark を活用してさまざまなプロジェクトやお客様を支援しています。最近のプロジェクト (英語) では、Spark 上で Computer Vision API と Azure Search を活用し、メトロポリタン美術館 (MET) の収蔵品を検索できるデータベースを作成しました。具体的には、まず MET のオープン アクセス カタログ (英語) の画像を取り込み、それと並行して Computer Vision API でそれらの画像に検索可能な説明文を付けました。Spark 上の CNTK と SparkML の Locality Sensitive Hashing (英語) 実装を使用し、それらの画像の特性を捉え、カスタムの逆画像検索エンジンを作成しました。このプロジェクトの詳細については、AI Lab (英語) または Github (英語) でご確認ください。

Architecture of Azure Search on Spark

Snow Leopard Trust

ユキヒョウ保護団体の Snow Leopard Trust (英語) と提携したプロジェクトでは、Cognitive Services on Spark を活用して、絶滅の危機に瀕しているユキヒョウの個体数を追跡、把握するお手伝いをしました。まず、Bing on Spark からユキヒョウの画像を取得し、分類用として完全にラベル付けされたトレーニング データセットを作成しました。次に、Spark で CNTK と TensorFlow を使用して詳細な分類システムをトレーニングしました。最後に、LIME on Spark (英語) を使用してモデルを解釈し、手動で境界ボックスを描画することなく、ヒョウの分類器をヒョウ検出器に改良しました。このプロジェクトの詳細については、こちらのブログ記事 (英語) をご覧ください。

Architecture of Snow Leopard classification

まとめ

ほんの数行のコードで、Azure Cognitive Services の機能を Apache Spark のビッグ データ ワークフローに組み込むことができます。Spark と組み合わせることでスループットを向上させ、Spark を実行しているあらゆる場所で Cognitive Services の機能を活用できます。Cognitive Services on Spark はコンテナーと完全に統合されているため、高いパフォーマンスを発揮でき、オンプレミスや接続状況の悪いシナリオにも対応します。Spark 上であらゆる Web サービスと連携できる一般的なフレームワークも提供されています。Azure Databricks を基盤とするオープン ソースの MMLSpark (英語) を使用して、ぜひ皆様のプロジェクトで Cognitive Services をご活用ください。

関連情報

Web サイト (英語)

GitHub (英語)

メール: mmlspark-support@microsoft.com