検索
ニュース

Microsoft、.NET開発者向けMLフレームワークの最新版「ML.NET 3.0」を公開ディープラーニング機能を強化

Microsoftは、.NET開発者向けのオープンソースのクロスプラットフォーム機械学習(ML)フレームワークの最新版「ML.NET 3.0」を公開した。

Share
Tweet
LINE
Hatena

 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]
);
ML.NET 3.0における物体検出モデル構築、トレーニングおよび評価するための手順例

固有表現認識と質問応答への対応

 機械学習分野で注目されている質問応答(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));
ML.NET 3.0におけるQAやMERの学習例

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.

ページトップに戻る