Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Untuk panduan konseptual, lihat Menjalankan model ONNX dengan Windows ML).
Anda dapat menganggap API dalam paket Microsoft.WindowsAppSDK.ML NuGet sebagai superset dari dua set ini:
- API Windows ML. API ML Windows di namespace Microsoft.Windows.AI.MachineLearning , seperti kelas ExecutionProviderCatalog dan metodenya (yang merupakan API Runtime Windows). API ini didokumenkan dalam topik yang Anda baca sekarang.
- ONNX Runtime API. Implementasi Windows ML (dalam paket Microsoft.WindowsAppSDK.ML NuGet) API tertentu dari ONNX Runtime (ORT). Untuk dokumentasi, lihat dokumen ONNX Runtime API. Misalnya, struktur OrtCompileApi. Untuk contoh kode yang menggunakan API ini, dan tautan lainnya ke dokumentasi, lihat tutorial Menggunakan ML Windows untuk menjalankan model ResNet-50 .
Paket NuGet Microsoft.WindowsAppSDK.ML
Runtime Microsoft Windows ML menyediakan API untuk pembelajaran mesin dan operasi AI di aplikasi Windows. Paket Microsoft.WindowsAppSDK.ML NuGet menyediakan file runtime .winmd
Windows ML untuk digunakan dalam proyek C# dan C++.
Roda Pywinrt Python
Runtime Microsoft Windows ML memanfaatkan proyek pywinrt untuk menyediakan akses Python ke API Windows ML yang sama. Nama paketnya adalah winui3-Microsoft.Windows.AI.MachineLearning. Paket tambahan diperlukan untuk menggunakan Windows App SDK di python. Untuk detailnya, lihat topik Jalankan model ONNX dengan Windows ML .
API Windows ML
Kelas ExecutionProviderCatalog
Kelas ExecutionProviderCatalog menyediakan metode untuk menemukan, memperoleh, dan mendaftarkan penyedia eksekusi AI (EPs) untuk digunakan dengan ONNX Runtime. Ini menangani kompleksitas manajemen paket dan pemilihan perangkat keras.
Kelas ini adalah titik masuk bagi aplikasi Anda untuk mengakses akselerasi pembelajaran mesin yang dioptimalkan perangkat keras melalui runtime Windows ML.
// Get the default catalog
var catalog = Microsoft.Windows.AI.MachineLearning.ExecutionProviderCatalog.GetDefault();
// Ensure and register all compatible execution providers
await catalog.EnsureAndRegisterAllAsync();
// Use ONNX Runtime directly for inference (using Microsoft.ML.OnnxRuntime namespace)
Metode ExecutionProviderCatalog
Metode ExecutionProviderCatalog.GetDefault
Mengembalikan instans ExecutionProviderCatalog default yang menyediakan akses ke semua penyedia eksekusi pada sistem.
var catalog = Microsoft.Windows.AI.MachineLearning.ExecutionProviderCatalog.GetDefault();
Metode ExecutionProviderCatalog.FindAllProviders
Mengembalikan kumpulan semua penyedia eksekusi yang kompatibel dengan perangkat keras saat ini.
var catalog = Microsoft.Windows.AI.MachineLearning.ExecutionProviderCatalog.GetDefault();
var providers = catalog.FindAllProviders();
foreach (var provider in providers)
{
Console.WriteLine($"Found provider: {provider.Name}, Type: {provider.DeviceType}");
}
Metode ExecutionProviderCatalog.EnsureAndRegisterAllAsync
Memastikan semua penyedia eksekusi yang kompatibel siap dan mendaftarkannya dengan ONNX Runtime.
var catalog = Microsoft.Windows.AI.MachineLearning.ExecutionProviderCatalog.GetDefault();
try
{
// This will ensure providers are ready and register them with ONNX Runtime
await catalog.EnsureAndRegisterAllAsync();
Console.WriteLine("All execution providers are ready and registered");
}
catch (Exception ex)
{
Console.WriteLine($"Failed to prepare execution providers: {ex.Message}");
}
Metode RegisterAllAsync pada ExecutionProviderCatalog
Mendaftarkan semua penyedia eksekusi yang kompatibel dengan ONNX Runtime tanpa memastikan mereka siap. Ini hanya mendaftarkan penyedia yang sudah ada di komputer, menghindari waktu unduhan yang berpotensi lama yang mungkin diperlukan oleh EnsureAndRegisterAllAsync
.
var catalog = Microsoft.Windows.AI.MachineLearning.ExecutionProviderCatalog.GetDefault();
await catalog.RegisterAllAsync();
Kelas ExecutionProvider
Kelas ExecutionProvider mewakili akselerator perangkat keras tertentu yang dapat digunakan untuk inferensi pembelajaran mesin.
Metode ExecutionProvider
Metode ExecutionProvider.EnsureReadyAsync
Memastikan penyedia eksekusi siap digunakan dengan mengunduh dan menginstal komponen yang diperlukan.
var catalog = Microsoft.Windows.AI.MachineLearning.ExecutionProviderCatalog.GetDefault();
var providers = catalog.FindAllProviders();
foreach (var provider in providers)
{
await provider.EnsureReadyAsync();
Console.WriteLine($"Provider {provider.Name} is ready");
}
Metode ExecutionProvider.TryRegister
Mencoba mendaftarkan penyedia eksekusi dengan ONNX Runtime dan mengembalikan boolean yang menunjukkan keberhasilan.
var catalog = Microsoft.Windows.AI.MachineLearning.ExecutionProviderCatalog.GetDefault();
var providers = catalog.FindAllProviders();
foreach (var provider in providers)
{
await provider.EnsureReadyAsync();
bool registered = provider.TryRegister();
Console.WriteLine($"Provider {provider.Name} registration: {(registered ? "Success" : "Failed")}");
}
Properti PenyediaEksekusi
Nama | Tipe | Deskripsi |
---|---|---|
Nama | string | Mendapatkan nama penyedia eksekusi |
Jenis Perangkat | TipePerangkatPenyediaEksekusi | Mendapatkan jenis perangkat (CPU, GPU, NPU, dll.) |
IsReady | bool | Memeriksa apakah penyedia eksekusi siap digunakan |
LibraryPath | string | Mendapatkan jalur ke pustaka penyedia eksekusi |
Catatan implementasi
Runtime Windows ML terintegrasi dengan Windows App SDK dan bergantung pada mekanisme penyebaran dan bootstrapping dari Windows App SDK tersebut:
- Secara otomatis menemukan penyedia eksekusi yang kompatibel dengan perangkat keras saat ini
- Mengelola masa pakai dan pembaruan paket
- Menangani pendaftaran dan aktivasi paket
- Mendukung berbagai versi penyedia eksekusi
Framework-Dependent Penyebaran
Windows ML dikirimkan sebagai komponen yang bergantung pada kerangka kerja . Ini berarti aplikasi Anda harus:
- Referensikan paket Utama Windows App SDK NuGet dengan menambahkan referensi ke
Microsoft.WindowsAppSDK
(disarankan) - Atau, mereferensikan baik
Microsoft.WindowsAppSDK.ML
maupunMicrosoft.WindowsAppSDK.Runtime
Untuk informasi selengkapnya tentang penyebaran aplikasi Windows App SDK, lihat dokumentasi Paket dan sebarkan aplikasi Windows .
Menggunakan ONNX Runtime dengan Windows ML
Untuk aplikasi C++, setelah mendaftarkan penyedia eksekusi, gunakan ONNX Runtime C API secara langsung untuk membuat sesi dan menjalankan inferensi.
Untuk aplikasi C#, gunakan ONNX Runtime secara langsung untuk inferensi menggunakan Microsoft.ML.OnnxRuntime
namespace.
Untuk aplikasi Python, gunakan roda Runtime ONNX terpisah (onnxruntime
) untuk inferensi. Untuk rilis eksperimental, silakan gunakan onnxruntime-winml==1.22.0.post2
paket dari indeks https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Nightly/pypi/simple
.
Catatan Python
Menginisialisasi Windows App SDK
Semua panggilan Windows ML harus terjadi setelah Windows App SDK diinisialisasi. Ini dapat dilakukan dengan kode berikut:
from winui3.microsoft.windows.applicationmodel.dynamicdependency.bootstrap import (
InitializeOptions,
initialize
)
with initialize(options = InitializeOptions.ON_NO_MATCH_SHOW_UI):
# Your Windows ML code here
Pendaftaran terjadi di luar WinML
Runtime ONNX dirancang sedemikian rupa sehingga lingkungan Python dan lingkungan asli terpisah. Dan panggilan pendaftaran asli dalam proses yang sama tidak akan berfungsi untuk lingkungan Python. Dengan demikian, pendaftaran penyedia eksekusi harus dilakukan dengan Python API secara langsung.
Menggunakan pywinrt dalam proses lain
Karena beberapa keterbatasan dalam proyeksi Python pada WinRT, disarankan untuk mendapatkan informasi penyedia eksekusi dalam proses pekerja terpisah. Untuk contoh lengkapnya, lihat sampel Windows ML Python.