diff --git a/.vsts-dotnet-ci.yml b/.vsts-dotnet-ci.yml index afd48073a9..35a412e937 100644 --- a/.vsts-dotnet-ci.yml +++ b/.vsts-dotnet-ci.yml @@ -144,7 +144,7 @@ jobs: _targetFramework: net8.0 innerLoop: true pool: - vmImage: macOS-15 + vmImage: macOS-15-arm64 helixQueue: osx.15.arm64.open - template: /build/ci/job-template.yml diff --git a/Directory.Build.targets b/Directory.Build.targets index e086787dc5..510eb2acfc 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -30,10 +30,12 @@ + - diff --git a/build/vsts-ci.yml b/build/vsts-ci.yml index 11f916e718..bc86e5fac8 100644 --- a/build/vsts-ci.yml +++ b/build/vsts-ci.yml @@ -31,6 +31,8 @@ variables: value: 1es-windows-2022 - name: MacImage value: macOS-15 +- name: MacArm64Image + value: macOS-15-arm64 - ${{ if and(notin(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.SourceBranch'], 'refs/heads/main')) }}: - name: enableSourceIndex value: true @@ -158,7 +160,7 @@ extends: ################################################################################ pool: name: Azure Pipelines - vmImage: $(MacImage) + vmImage: $(MacArm64Image) os: macOS templateContext: outputs: diff --git a/docs/building/unix-instructions.md b/docs/building/unix-instructions.md index cb9c48a75e..58bf9c0b7e 100644 --- a/docs/building/unix-instructions.md +++ b/docs/building/unix-instructions.md @@ -64,15 +64,11 @@ macOS 10.13 (High Sierra) or higher is needed to build dotnet/machinelearning. W On macOS a few components are needed which are not provided by a default developer setup: * cmake 3.10.3 -* libomp 7 +* libomp * gettext * All the requirements necessary to run .NET Core 3.1 applications. To view macOS prerequisites click [here](https://docs.microsoft.com/en-us/dotnet/core/install/macos?tabs=netcore31#dependencies). One way of obtaining CMake and other required libraries is via [Homebrew](https://brew.sh): ```sh -$ brew update && brew install cmake https://raw.githubusercontent.com/dotnet/machinelearning/main/build/libomp.rb gettext && brew link gettext --force && brew link libomp --force +$ brew update && brew install cmake libomp gettext && brew link gettext --force && brew link libomp --force ``` - -Please note that newer versions of Homebrew [don't allow installing directly from a URL](https://github.com/Homebrew/brew/issues/8791). If you run into this issue, you may need to download libomp.rb first and install it with the local file instead. - -Also, libomp version 7.0.0 doesn't have a cask for Big Sur. You can work around this by downloading the libomp.rb file and then calling `brew install libomp.rb --build-from-source --formula`. diff --git a/docs/project-docs/components-and-dependencies.md b/docs/project-docs/components-and-dependencies.md index ce6b175010..031f891fa6 100644 --- a/docs/project-docs/components-and-dependencies.md +++ b/docs/project-docs/components-and-dependencies.md @@ -24,7 +24,7 @@ ML.NET redistributes Intel MKL as Microsoft.ML.MKL.Redist in which is a minimize | `Microsoft.ML.FastTree` | `FastTreeRankingTrainer` | Optional native acceleration | Stable | Native library used on x86/x64; managed fallback | | `Microsoft.ML.ImageAnalytics` | `MLImage` (image exchange type) | `libSkiaSharp` | Stable | Wrapper over SkiaSharp / Google Skia; supported where dependency is supported | | `Microsoft.ML.LightGBM` | `LightGbm\*Trainer` | `LightGBM` | Stable | Wrapper over LightGBM; supported where dependency is supported | -| `Microsoft.ML.MKL.Components` | `SymbolicSgdLogisticRegressionBinaryTrainer` | Intel MKL | Stable | Only works where Intel MKL works | +| `Microsoft.ML.MKL.Components` | `SymbolicSgdLogisticRegressionBinaryTrainer` | Intel MKL (x86/x64); OpenMP runtime | Stable | Uses a built-in CBLAS implementation on ARM | | `Microsoft.ML.MKL.Redist` | Internal native Intel MKL | `libomp` | Stable | Not for direct reference; win-x86/x64 only | | `Microsoft.ML.OneDal` | Internal native Intel OneDal | Intel OneDAL | Preview | Not for direct reference; x64 only | | `Microsoft.ML.OnnxConverter` | Adds ONNX export support | `Microsoft.ML.OnnxRuntime` | Stable | Wrapper over ONNX Runtime; supports "bring your own" runtime | @@ -266,4 +266,3 @@ graph TD class AutoML,CodeGen,FastTree,LightGBM,Recommender,TimeSeries,TorchSharp,ImageAnalytics,DnnFeaturizerAlexNet,DnnFeaturizerResNet18,DnnFeaturizerResNet50,DnnFeaturizerResNet101,DnnFeaturizerModelRedist,Vision,OnnxConverter,OnnxTransformer,TensorFlow,MKLComponents,Ensemble,EntryPoints,Experimental,FairLearn,Parquet,DataAnalysis,GenAICore,GenAILLaMA,GenAIMistral,GenAIPhi,Tokenizers,TokenizersGpt2,TokenizersR50k,TokenizersP50k,TokenizersO200k,TokenizersCl100k,SampleUtils algorithm class CpuMath,MKLRedist,OneDal bundled ``` - diff --git a/docs/project-docs/platform-limitations.md b/docs/project-docs/platform-limitations.md index 28b9cc6e7d..b94dec95d7 100644 --- a/docs/project-docs/platform-limitations.md +++ b/docs/project-docs/platform-limitations.md @@ -8,9 +8,11 @@ While ML.NET is cross-platform, there are some limitations for specific platform | **Windows** | Yes | Yes | | **Linux** | Yes | Yes | | **macOS** | Yes | Yes | -| **ARM64** / **Apple M1** | Yes, with **limitations**.

The following are *not supported*:\**You can add support by compiling (no pre-compiled binaries provided).* | Yes, with **limitations**.

The following are *not supported*: | +| **ARM64** / **Apple M1** | Yes, with **limitations**.

The following are *not supported*:\**You can add support by compiling (no pre-compiled binaries provided).* | Yes, with **limitations**.

The following are *not supported*: | | **Blazor WASM** | Yes, with **limitations**.

The following are *not supported*: *Note: You must currently set the EnableMLUnsupportedPlatformTargetCheck flag to false to use ML.NET in Blazor.* | Yes, with **limitations**.

The following are *not supported*: