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));
ML.NET 3.0では、AutoMLに次のような機能が追加されている。
ML.NET 3.0では、コミュニティーの貢献を受け、次のような改善も実施されている。
データ分析と機械学習プロセスの全ての段階で最適化されたアルゴリズムビルディングブロックを提供するIntel oneDAL (Intel oneAPI データ分析ライブラリ)を活用し、ML.NET環境における学習速度の向上を実現したとしている。
Tensor PrimitivesはSystem.Numerics.Tensors.TensorPrimitivesの略で、Tensor演算を導入した新たなAPIセットだ。Tensor Primitivesとの統合により、内部の処理が効率化され、高速に実行されるようになったとしている。
機械学習モデル構築作業の煩雑さを解消する「AutoML」とは――歴史、動向、利用のメリットを整理する
クロスプラットフォーム開発「.NET MAUI」のデスクトップアプリ開発に使える5つの機能とは
Microsoft、プログラミング言語「TypeScript 5.3」を公開Copyright © ITmedia, Inc. All Rights Reserved.