Microsoftは今月初め、.NETエコシステム用のオープンソースのマシンラーニング(ML)フレームワークであるML.NETの、最初のメジャーバージョンをリリースした。
元々はMicrosoft Researchによる研究活動の一環として開発されたML.NETでは、C#またはF#を使用してカスタムMLモデルを開発することができる。開発したモデルは、感情分析、詐欺やスパムの検出、商品や映画のレコメンデーション、画像の分類、その他のシナリオへの適用が可能だ。
ML.NETは、すでに以前のバージョンが、Microsoftのユーザによって使用されていた。しかしながら、新たなバージョンのフレームワークには、Visual Studio用のモデルビルダと、Automated Machine Learning(AutoML)と呼ばれるツールが含まれる。AutoMLは、MLに不慣れな開発者を対象とした機能で、MLモデルで使用するデータシナリオ(分類や回帰など)とMLアルゴリズムを、入力データに応じて自動的に決定する。モデルビルダはこの機能を補完するもので、Visual Studio環境内でMLモデルを作成するためのUIツール(Windowsのみ)を提供する。いずれのツールも現在、プレビュー版として利用することができる。
プログラム管理チームの一員であるPranav Rastogi氏に話を聞いた。
InfoQ: 今回のML.NETの最新リリースが、.NETのマシンラーニングコミュニティにとって重要なのはなぜでしょうか?
Pranav Rastogi: ML.NETの最新リリースは、MLを、開発者により親しみやすいものにします。.NET開発者はML.NETのAPIを使用して、感情分析、製品のレコメンデーション、顧客のセグメンテーションなど、さまざまなシナリオの開発が可能になります。しかしながら、開発者が直面する重要な課題のひとつが、MLの導入はやはり難しい、という点なのです。どのMLトレーナを使うのか、それをどうやってカスタマイズするのか、あるいはどのように最適化するのか、といったことを理解しなければなりません。今回のリリースで私たちが導入したのは、AutoMLを使用して、カスタムMLモデルを簡単に構築可能にする方法です。
MLを始めて使う開発者のために、さまざまなツールも開発しました。今回のリリースにはCLIベースのエクスペリエンスが含まれているので、コマンドラインにアクセスしてMLモデルを構築することができます。
Visual Studioユーザが自身のプロジェクトにMLモデルを追加できるように、GUIベースのエクスペリエンスも用意しています。この機能は、モデルビルダと呼ばれるツールを使用して実現されています。これによって開発者は、自身のファイルを直接接続して、独自のモデルを構築することが可能になります。プロジェクトを右クリックして、"マシンラーニングを追加"と言うだけで、シナリオが選択できるのです。データソースとしてはファイルまたはSQLサーバが使用可能で、AutoMLがシナリオに基づいて最適なモデルを選択します。さまざまなモデルと設定を試してみれば、トップ5モデルの要約と、最良モデルのレコメンデーションという形の結果が返ってくるはずです。
一連の作業の最終ステップは、ソリューションにコードを追加することです。開発者はこの種のツールについて、ある程度調べることはしますが、信頼を置くことはほとんどありません。処理の内容にマジックが多いからです。しかし、Model Builderを使用すれば、プロセスの最後には、モデルのトレーニングに使用されたコードそのものが手に入るので、必要に応じてコードをカスタマイズすることが可能です。始めはローカルで実行して、その後、モデルをもっと長時間訓練するためにクラウドを使うことができます。DevOpsツールとの統合も簡単です。Webアプリケーション、モバイルアプリケーション、デスクトップアプリケーションなど、さまざまな未開発の分野でモデルを運用して、独自のマシンラーニングモデルを構築することが可能になります。
InfoQ: TensorFlowなど、他のMLフレームワークと比較した場合はどうでしょう?
Rastogi: ML.NETの重要な価値提案のひとつとして、現在利用可能なMLライブラリとフレームワークのエコシステムの活用があります。ML.NETは、TensorFlowやONNX for .NETなど、一般的なフレームワークとの密接な統合が可能です。画像分類や物体認識といったシナリオで、これらのフレームワークを使って構築されたモデルを、簡単に取り込むことができるのです。さらに、インセプション(inception)や共振(resonate)など任意のモデルを、.NETアプリケーションで使用することも可能です。
InfoQ: Cognitive ServicesやAzure Machine Learningなど、他のMicrosoft製品と比較した場合、ML.NETはどのような位置付けになるのでしょう?
Rastogi: 利用者のスキルセットがどのようなものであるかによって違ってきます。データサイエンティストであれは、ノートブックベースの環境を使用して、自身で選択したフレームワークを使用するでしょう。Azure Machine Learningは、開発者やデータサイエンティストがノートブックで使用し、その後クラウドで効果的にトレーニングできるようなサービスを、ML開発に提供します。MLの使用を始めたばかりのユーザには、Cognitive Servicesが、使いやすいAPIと事前定義されたシナリオを提供します。ML.NETは、.NET開発者がカスタムMLモデルを構築するためのフレームワークです。
InfoQ: ML.NETの開発中、チームにとって最も大変だった作業について、いくつか紹介して頂けますか?
Rastogi: プロジェクトを進める上で最も大きな課題は、MLを開発者にとってより親しみやすい、身近なものにするための方法でした。MLは新しい概念で、多くのユーザにとって馴染みの薄いものですから、.NET開発者が親しみを持って、エコシステムに信頼を築く上でプラスになるためには、APIにどのような名前を付けるべきか、長い時間を掛けて検討しました。多くの顧客調査を行った結果、開発者に"バイナリ分類アルゴリズムを開発できるか"と聞いても、彼らはその意味をまったく理解できない、ということが分かったのです。そうではなく、シナリオファーストの観点から開発者にアプローチして、顧客レビューを分析するためのセンチメント分析を開発するように依頼すれば、それはMLで既知の問題なので、AとBという2つのカテゴリにデータを分類することで解決できるのです。そのため私たちは、フレームワークをアプローチが容易なものにすることに、多くの時間を費やしました。デフォルトのままで作業が可能ですから、ユーザによるカスタマイズは必要ありません。
フレームワークとして大規模なデータセット(テラバイト)を処理できることや、実運用アプリケーション内でパイプライン全体をデプロイ可能であることにも多くの時間を費やしました。こういったことは、開発者の生産性向上に大きく影響します。
InfoQ: AutoML機能は元々、Microsoft Researchによるプロジェクトでした。既存の研究とML.NETを統合して、プロダクトとして提供するプロセスは、どのようなものだったのでしょうか?
Rastogi: この開発は、Microsoft ResearchとMicrosoftのさまざまな製品チームが集まって、AutoMLを形にするという、大規模な共同作業でした。AutoMLは、カスタムMLモデルを容易に構築するためのエクスペリエンスを提供する、当社のテクノロジの重要な一部なのです。どのラーニングを使用するのか、ハイブリッドパラメータの設定はどうするのか、いくつのラーニングを、どの程度の期間試すべきなのか、特徴付けプロセスはどうするのか、といったことを考える必要はありません。そのために、Microsoftの多くのチームが集結して、この研究プロジェクトを市場に投入したのです。
InfoQ:.NET開発コミュニティとしては、今後、どのような新機能を期待できますか?
Rastogi: 現在取り組んでいるのは、Visual Studioでプレビュー機能をサポートすることです。ディープラーニング関連の機能の一部と、TensorFlowのとサポートについては、現在プレビュー中です。間もなく全体像が明らかになるでしょう。時系列に基づいたレコメンデーションのサポートによって、モデルビルダーストーリも改善されています。最新のロードマップを把握するための最もよい方法は、GitHubリポジトリをチェックすることです。
ML.NETは、Windows、Linux、macOSで使用することができる。モデルビルダはVisual Studioの拡張機能として提供されているため、WindowsリースではVisual Studio 2017 15.6以降が必要だ。macOSとLinuxに前提条件はないが、これらのプラットフォームでのML.NETモデルはCLIを用いて開発されている。 ML.NETについての詳細は、こちらで確認できる。