一般相対性osugi3yのブログ

14年勤めた企業をやめました。映画「時の行路」尾道市実行委員

マイクロソフトリサーチブログ〜シン・すべてがNになる〜

 

 

SynapseML: シンプル、多言語、超並列の機械学習ライブラリ

 

2021年11月17日発行

by Mark Hamilton , ソフトウェアエンジニア

https://www.microsoft.com/en-us/research/uploads/prod/2021/11/1400x788_Synapse_No_logo_still-scaled.jpg

 

www.microsoft.com

 本日、大規模スケーラブルな機械学習(ML)パイプラインの作成を簡素化するオープンソースライブラリ、SynapseML(旧MMLSpark)のリリースを発表しました。分散型MLパイプラインの構築は、熟練した開発者であっても困難な場合があります。異なるエコシステムのツールを組み合わせるには、かなりの「糊付け」コードが必要になることが多く、また、多くのフレームワークは数千台規模のエラスティッククラスターを念頭に置いて設計されていません。SynapseMLは、既存のMLフレームワークや新しいMicrosoftアルゴリズムを、Python、R、ScalaJavaで使用可能な単一のスケーラブルなAPIに統合することで、この課題を解決します。

 SynapseMLを使用することで、開発者は以下のようなドメインの課題を解決するためのスケーラブルでインテリジェントなシステムを構築することができます。

- アノマリー検出
- コンピュータビジョン
- ディープラーニング
- 形状・顔認識
- グラディエント・ブースト
- マイクロサービス・オーケストレーション

- モデルの解釈可能性
- 強化学習とパーソナライゼーション
- 探索・検索
- 音声処理
- テキストアナリティクス
- 翻訳

 統一されたAPIによる分散型MLの簡素化

 

 フォールトトレラントな分散プログラムの記述は複雑で、エラーが発生しやすいプロセスです。例えば、ディープネットワークの分散評価を考えてみましょう。まず最初に、ネットワークを圧迫することなく、数百台のワーカーマシンに数GBのモデルを送信する必要があります。そして、データリーダーは、すべてのデータが処理のためにキューに入れられ、GPUがフル稼働するように調整しなければなりません。また、新しいコンピュータがクラスターに参加したり離脱したりした場合には、新しいワーカーマシンがモデルのコピーを受け取る必要があり、データリーダーは新しいマシンと作業を共有したり、失われた作業を再計算したりするために適応する必要があります。最後に、リソースが適切に解放されているかどうか、進捗状況を確認する必要があります。

 確かにHorovodのようなフレームワークでもこれらを管理できますが、チームメイトがLightGBM、XGBoost、SparkMLなどの別のMLフレームワークと比較したい場合は、新しい環境とクラスタが必要になります。さらに、これらのトレーニングシステムはモデルを提供したりデプロイしたりするようには設計されていないため、推論やストリーミングのアーキテクチャが別途必要になります。

 

 SynapseMLは、様々なML学習フレームワークを、スケーラブルでデータや言語にとらわれない単一のAPIに統一し、バッチ、ストリーミング、サービングアプリケーションに対応することで、このような経験を簡素化します。このAPIは、開発者が、異なるMLエコシステムやデータベースの実装の詳細や特異性ではなく、データやタスクのハイレベルな構造に集中できるように設計されています。

 統一されたAPIは、現在使用されている多くのツール、フレームワークアルゴリズムを標準化し、分散型MLの利用を合理化します。これにより開発者は、ウェブ教師付き学習や検索エンジン作成など、複数のフレームワークを必要とするユースケースに対して、異種のMLフレームワークを迅速に合成することができます。また、シングルノード、マルチノード、弾力的にサイズ変更可能なコンピュータのクラスタ上でモデルの学習と評価ができるため、開発者はリソースを無駄にすることなく作業をスケールアップすることができます。

 APIは、複数のプログラミング言語に対応しているだけでなく、図1に示すように、さまざまなデータベース、ファイルシステムクラウドデータストアを抽象化し、データがどこにあっても実験を簡単に行えるようになっています。

A graphic illustrating that SynapseML unifies a variety of different ML frameworks (including LightGBM, Azure Cognitive Services, Deep Learning, reinforcement learning), scales (including single node, cluster, and serverless + elastic), paradigms (including batch, streaming, and serving), cloud data stores, and languages.

図1:シンプルなAPIは、様々なMLフレームワーク、スケール、計算パラダイム、データプロバイダー、言語を抽象化します。

Azure Synapse Analyticsの一般提供と企業向けサポートについて

 過去5年間にわたり、当社はSynapseMLライブラリの改善と安定化を図り、本番ワークロードに対応してきました。Azure Synapse Analyticsを利用している開発者は、SynapseMLがこのサービスでエンタープライズサポート付きで一般的に利用できるようになったことを喜んでいることでしょう。開発者は、Azure Cognitive Services、LightGBM、ONNX、およびその他の厳選されたSynapseML機能を使用して、大規模なMLパイプラインを構築できるようになりました。また、ビジュアルサーチエンジン予知保全パイプライン文書翻訳など、分散型MLシステムを素早くプロトタイプ化するためのテンプレートも含まれています。追加の詳細については、こちらのGA発表ガイドをご覧ください。

最先端の構築済みインテリジェントモデルでスタートする

 SynapseMLの多くのツールは、大規模なラベル付きトレーニングデータセットを必要としません。その代わりに、SynapseMLは、Azure Cognitive Servicesなどの事前に構築されたインテリジェントサービスのシンプルなAPIを提供し、ビジネスと研究の両方に関連する大規模なAIの課題を迅速に解決します。SynapseMLにより、開発者は45種類以上の最先端のMLサービスをシステムやデータベースに直接組み込むことができます。最新のリリースでは、図2に示すように、分散型フォーム認識会話のトランスクリプション、および翻訳のサポートが追加されています。これらのすぐに使えるアルゴリズムは、多種多様な文書を解析し、複数の話者の会話をリアルタイムに書き起こし、テキストを100以上の異なる言語に翻訳することができます。

 

 An animation that illustrates distributed form recognition and translation in SynapseML, which extracts multi-lingual insights from unstructured collections of documents. The steps include: 1) upload unstructured documents from storage, 2) apply distributed form recognition, 3) learn form ontologies, 4) apply distribution translation, and 5) visualize results.

図2:SynapseMLの分散型フォーム認識・翻訳機能により、構造化されていないドキュメント群から多言語の知見を抽出。詳細については、サンプルノートブックをご覧ください。

 Webサービスを大規模に利用することは、ネットワークの問題、スロットリング、クライアントがサーバーの応答を待つ間の大量のCPUダウンタイムなどにより、困難を伴います。SynapseMLとAzure Cognitive Servicesの統合を高速かつ効率的に行うために、Apache Sparkにいくつかの新しいツールを導入しました。特にSynapseMLは、一般的なスロットリングレスポンスを自動的に解析し、ジョブがバックエンドサービスを圧迫しないようにしています。また、信頼性の低いネットワーク接続や失敗した応答を処理するために、指数関数的なバックオフを使用しています。最後に、Sparkのワーカーマシンは、Sparkのプリミティブな新機能である非同期並列処理で忙しくなります。これにより、ワーカーマシンはサーバーからのレスポンスを待ちながらリクエストを送信することができ、スループットが10倍に向上します。表1は、これらの機能により、SynapseMLが多くのベースライン実装よりも大幅に優れたスループットを達成していることを示しています。このシステムのアーキテクチャについては、論文「Large-Scale Intelligent Microservices」で詳しく紹介しています。

https://www.microsoft.com/en-us/research/uploads/prod/2021/11/SynapseML_table1.png

 表1:コグニティブ・サービス・オーケストレーション手法のリクエスト/秒/ノードのスループット。SynapseMLは、他の関連システムに比べて、リクエスト/秒でのスループットが著しく高い。

ONNXとの幅広いエコシステムの互換性

 既存のコグニティブサービスでは解決できない課題に対して、SynapseMLは、Open Neural Network Exchange(ONNX)フレームワークとランタイムを通じて、開発者がさまざまなMLエコシステムのモデルを使用できるようにします。この統合により、開発者はわずか数行のコードで多種多様な古典的および深層学習モデルを大規模に実行することができます。ONNXとSparkの統合により、図3に示すように、ONNXモデルのワーカーノードへの配信、高スループットのための入力データのバッチ処理やバッファリング、ハードウェア・アクセラレータでの作業のスケジューリングなどが自動的に処理されます。

 ONNXをSparkに導入することで、開発者が深層学習モデルをスケールアップできるだけでなく、さまざまなMLエコシステムでの分散推論が可能になります。特に、ONNXMLToolsは、TensorFlow、scikit-learn、Core ML、LightGBM、XGBoost、H2O、PyTorchのモデルをONNXに変換し、SynapseMLを使った高速化・分散推論を可能にします。さらに、ONNX Model Hubを提供しており、120以上の最先端の事前学習済みモデルを、視覚、物体検出、顔分析、音声認識、スタイル変換などのドメインに簡単に展開することができます。

 An animation illustrating SynapseML’s integration between ONNX and Spark abstracts several key performance optimizations to allow model inference on terabytes of data. It automatically handles distributing ONNX models to worker nodes, batching and buffering input data for high throughput, and scheduling work on hardware accelerators.

図3: ONNXとSparkを統合したSynapseMLは、テラバイト級のデータに対するモデル推論を可能にするために、いくつかの重要なパフォーマンス最適化を抽象化しています。

Vowpal Wabbitで自分の強化学習者を育成する

 SynapseMLは、開発者が既存のモデルやサービスを利用するだけでなく、独自のモデルを構築してトレーニングすることも可能にします。今回のSynapseMLのリリースでは、Vowpal Wabbitフレームワークを使用したパーソナライズド・レコメンデーションとコンテクスト・バンディット強化学習の新しいアルゴリズムを導入しています。このVowpal Wabbitの統合により、1つのモデルのモデルトレーニングと予測を分散させたり、複数のモデルのトレーニングを並列化することができます。これは特に、ポリシー最適化やパーソナライゼーションシステムのハイパーパラメータを素早くチューニングするのに有効です。新規ユーザーは、このGitHubページでVowpal Wabbitを使い始めることができます。

SynapseMLによる責任あるAIシステムの構築

 モデルを構築した後、研究者やエンジニアは展開する前にその限界や動作を理解することが不可欠です。SynapseMLは、モデルが特定の予測を行う理由や、バイアスを排除するためのトレーニングデータセットの改善方法を明らかにする新しいツールを導入することで、開発者や研究者が責任あるAIシステムを構築できるよう支援します。具体的には、SynapseMLには、Shapley Additive Explanations(SHAP)とLocally Interpretable Model-Agostic Explanations(LIME)の分散実装が含まれており、視覚モデル、テキストモデル、表計算モデルの予測を説明することができます。例えば、図4は、訓練された視覚分類器を素早く解釈して、その予測の理由を理解する方法を示しています。通常、このようなオパキーボックス手法では、説明のために数千回のモデル評価が必要となり、大規模なデータセットのすべての予測を説明するには数日を要することもあります。SynapseMLは、開発者が数百台のマシンに計算を分散させることで、ユーザーが学習したモデルを理解するプロセスを劇的に高速化します。A diagram showing how SynapseML quickly interprets a trained visual classifier to understand why it made its predictions. SynapseML dramatically speeds the process of understanding a user’s trained model by allowing developers to distribute computation across hundreds of machines.

図4:SynapseMLの分散モデル説明ツールを用いて、学習した視覚的分類器の動作を説明している様子

 教師付きモデルの説明能力に加えて、SynapseMLは教師なしの責任あるAIのためのいくつかの新機能を導入しています。データセットの不均衡を理解するための新しいツールにより、研究者は人種や性別などのセンシティブなデータセットの特徴が過不足なく表現されているかどうかを検出し、モデルの公平性を向上させるための措置を取ることができます。さらに、SynapseMLの分散型アイソレーションフォレストは、ラベル付きのトレーニングデータを必要とせずに、データセットの外れ値や異常値を検出することができます」と述べています。マイクロソフトでは、これらの技術を積極的に活用し、LinkedInにおける不正行為の検出と防止に取り組んでいます。

 最後に、Azure Synapse Analyticsのユーザーは、Explainable Boosting Machinesの分散実装のプライベートプレビューを利用することができます。Explainable Boosting Machines( 説明可能なブーストマシン)は、勾配ブーストツリーのモデリング能力と線形加法モデルの解釈性を組み合わせたものです。これにより、データサイエンティストは、モデルの予測を理解する能力を犠牲にすることなく、高品質な非線形モデルを学習することができます」と述べています。

生産システムへの道のりをシンプルに

 当社は、生産可能なスケーラブルなMLシステムを構築する開発者やその他の人々が、SynapseMLによってプロセスが簡素化されることを期待しています。SynapseMLは、本ブログ記事で紹介したような様々なMLフレームワークを標準化することで、異なるMLエコシステムのピースを合成した新しいクラスのMLシステムを可能にしています。私たちの目標は、開発者が分散実装の詳細を気にする煩わしさから解放され、コードを変更することなく、様々なデータベース、クラスタ、言語に展開できるようにすることです。さらに、Azure Synapse AnalyticsでのSynapseMLの一般提供を発表したことで、開発者は本番システムのエンタープライズサポートに頼ることができるようになりました。

さらに詳しく

SynapseMLのウェブサイト

SynapseML GitHub

大規模なインテリジェント・マイクロサービス

Azure Synapse AnalyticsでのSynapseMLの使用

謝辞

 多くの素晴らしい貢献者がSynapseMLを積極的に開発しています。Serena Ruan 氏、Jason Wang 氏、Ilya Matiach 氏、Wenqing Xu 氏、Tom Finley 氏、Markus Weimer 氏、Nellie Gustafsson 氏、Jeff Zheng 氏、Kashyap Patel 氏、Ruixin Xu 氏、Martha Laguna 氏、Tomas Talius 氏、Jack Gerrits 氏、Markus Cozowicz 氏、Sudarshan Raghunathan 氏、Anand Raman 氏、Synapse チーム、Azure Cognitive Services チーム、そして MMLSpark と SynapseML に貢献してくださったすべての方々に感謝しています。

追記

 Linkedinに関しては個人情報流出・販売が過去にありましたからね。

osugi3y.hatenablog.com

 

 

 

 

f:id:osugi3y:20210703185311p:plain