Microsoft、.NET開発者向けMLフレームワークの最新版「ML.NET 3.0」を公開:ディープラーニング機能を強化
Microsoftは、.NET開発者向けのオープンソースのクロスプラットフォーム機械学習(ML)フレームワークの最新版「ML.NET 3.0」を公開した。
Microsoftは2023年11月27日(米国時間)、.NET開発者向けのオープンソースのクロスプラットフォーム機械学習(ML)フレームワークの最新版「ML.NET 3.0」を発表した。
ML.NETは、AutoML(自動化された機械学習)を利用して、カスタムMLモデルを簡単に作成するための「Model Builder」(Visual Studio用のシンプルなUIツール)やCLI(コマンドラインインタフェース)を提供する。WindowsやLinux、macOSに対応している。
ML.NET 3.0の主な変更点は次の通り。
ディープラーニングの強化
物体検出機能の追加
画像内のエンティティを特定、分類できる物体検出機能を新たに追加した。物体検出機能は、.NET環境でPyTorchを利用できる「TorchSharp」ライブラリを利用し、トランスフォーマーベースのニューラルネットワークアーキテクチャに基づいて構築されている。
var chain = new EstimatorChain<ITransformer>(); var filteredPipeline = chain. Append( mlContext.Transforms.Text.TokenizeIntoWords(labelColumnName, separators: [',']), TransformerScope.Training ) .Append( mlContext.Transforms.Conversion.MapValueToKey(labelColumnName), TransformerScope.Training ) .Append( mlContext.Transforms.Text.TokenizeIntoWords(boundingBoxColumnName, separators: [',']), TransformerScope.Training ) .Append( mlContext.Transforms.Conversion.ConvertType(boundingBoxColumnName), TransformerScope.Training ) .Append(mlContext.Transforms.LoadImages("Image", imageFolder, "ImagePath")) .Append( mlContext.MulticlassClassification.Trainers.ObjectDetection( labelColumnName, predictedLabelColumnName, scoreColumnName, boundingBoxColumnName, predictedBoundingBoxColumnName, imageColumnName, maxEpoch ) ) .Append(mlContext.Transforms.Conversion.MapKeyToValue(predictedLabelColumnName)); var options = new ObjectDetectionTrainer.Options() { LabelColumnName = labelColumnName, BoundingBoxColumnName = boundingBoxColumnName, ScoreThreshold = .5, MaxEpoch = maxEpoch, LogEveryNStep = 1, }; var pipeline = mlContext.Transforms.Text.TokenizeIntoWords(labelColumnName, separators: [',']) .Append(mlContext.Transforms.Conversion.MapValueToKey(labelColumnName)) .Append(mlContext.Transforms.Text.TokenizeIntoWords(boundingBoxColumnName, separators: [','])) .Append(mlContext.Transforms.Conversion.ConvertType(boundingBoxColumnName)) .Append(mlContext.Transforms.LoadImages("Image", imageFolder, "ImagePath")) .Append(mlContext.MulticlassClassification.Trainers.ObjectDetection(options)) .Append(mlContext.Transforms.Conversion.MapKeyToValue(predictedLabelColumnName)); var model = pipeline.Fit(data); var idv = model.Transform(data); var metrics = ML.MulticlassClassification.EvaluateObjectDetection( idv, idv.Schema[2], idv.Schema[boundingBoxColumnName], idv.Schema[predictedLabelColumnName], idv.Schema[predictedBoundingBoxColumnName], idv.Schema[scoreColumnName] );
固有表現認識と質問応答への対応
機械学習分野で注目されている質問応答(QA)や固有表現抽出(NER)に対応した。TorchSharpと自然言語処理モデルの「RoBERTa」に基づくテキスト分類機能を活用しているという。
// QA trainer var chain = new EstimatorChain<ITransformer>(); var estimatorQA = chain.Append(mlContext.MulticlassClassification.Trainers.QuestionAnswer( contextColumnName, questionColumnName, trainingAnswerColumnName, answerIndexColumnName, predictedAnswerColumnName, scoreColumnName, topK, batchSize, maxEpochs, architecture, validationSet )); // NER trainer var estimatorNER = chain.Append(mlContext.Transforms.Conversion.MapValueToKey("Label", keyData)) .Append(mlContext.MulticlassClassification.Trainers.NameEntityRecognition( labelColumnName, outputColumnName, sentence1ColumnName, batchSize, maxEpochs, architecture, validationSet )) .Append(mlContext.Transforms.Conversion.MapKeyToValue(outputColumn));
AutoML機能の強化
ML.NET 3.0では、AutoMLに次のような機能が追加されている。
- AutoML SweeperでのQAや物体検出機能に対応
- サンプリングキー名を容易に設定できる「Sampling Key Column」を追加
- バイナリ分類をサポートする「AutoZero Tuner」を追加
- 最大モデル数を指定できるパラメーターの追加
- メモリ使用量やデータ量を確認できるリソース監視機能を追加
データフレームの改善
ML.NET 3.0では、コミュニティーの貢献を受け、次のような改善も実施されている。
- StringとVBufferカラムタイプのIDataView <-> DataFrame変換のサポート
- より大きなデータストレージの実現
- Apache Arrow Date64カラムデータの認識
- SQLデータベースからのデータロードの改善
- ADO.NETを使用してDataFrameとSQLデータベース間でデータをインポート/エクスポートする機能の実現
- データ読み込みシナリオの強化、演算性能の向上、NULL値処理の改善、長い名前のカラムに対するデバッガの改善
Intel oneDALを用いた高速化
データ分析と機械学習プロセスの全ての段階で最適化されたアルゴリズムビルディングブロックを提供するIntel oneDAL (Intel oneAPI データ分析ライブラリ)を活用し、ML.NET環境における学習速度の向上を実現したとしている。
Tensor Primitivesとの統合
Tensor PrimitivesはSystem.Numerics.Tensors.TensorPrimitivesの略で、Tensor演算を導入した新たなAPIセットだ。Tensor Primitivesとの統合により、内部の処理が効率化され、高速に実行されるようになったとしている。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 機械学習モデル構築作業の煩雑さを解消する「AutoML」とは――歴史、動向、利用のメリットを整理する
本連載では、AutoMLを実現するさまざまなOSSを解説します。第1回は、AutoMLの概要と、次回から紹介するさまざまなOSSを実行するための環境やデータについて解説します。 - クロスプラットフォーム開発「.NET MAUI」のデスクトップアプリ開発に使える5つの機能とは
Microsoftは、「.NET MAUI」で優れたデスクトップアプリケーションを作成するための主要機能として、「マルチウィンドウ」「トップレベルメニューバー」「コンテキストメニュー」「ツールチップ」「ポインタジェスチャ」を紹介した。 - Microsoft、プログラミング言語「TypeScript 5.3」を公開
Microsoftは、オープンソースのプログラミング言語の最新版「TypeScript 5.3」を公開した。