Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Important
В настоящее время API среды выполнения машинного обучения Windows является экспериментальным и не поддерживается для использования в производственных средах. Приложения, тестирующие этот API, не должны публиковаться в Microsoft Store.
Important
В настоящее время API среды выполнения машинного обучения Windows доступен в C++ и Python; В настоящее время C# не поддерживается. Сообщите нам, хотите ли вы использовать эти API из C#, разместив проблему в репозитории GitHub машинного обучения Windows!
Windows ML Runtime API — это собственный локальный фреймворк вывода искусственного интеллекта C/C++, созданный специально для Windows. С помощью API среды выполнения машинного обучения Windows можно загрузить модель, выбрать целевую среду выполнения: ЦП, GPU или NPU (включая определенный адаптер DXCore или устройство D3D12), привязать тензоры к этой цели, объединить этапы модели и процессора в конвейер, скомпилировать конвейер и запустить его для создания выходных тензоров.
Необязательные API создания текста и распознавания речи объединяют эти же объекты среды выполнения в рабочие процессы более высокого уровня поверх модели, предоставляемой вашим приложением: см. статьи Создание текста с помощью собственной языковой модели с помощью Windows ML и Распознавание речи с помощью собственной модели Whisper с помощью Windows ML.
API среды выполнения в сравнении с ONNX Runtime
Если приложение предназначено только для Windows (и вы готовы использовать API, которые в настоящее время являются экспериментальными), используйте Runtime API. Он предоставляет явный контроль над выбором оборудования (включая определенный адаптер DXCore или устройство D3D12), резидентностью тензоров, размещением многоэтапного конвейера и компиляцией.
В противном случае, если приложение должно работать на других платформах или если у вас уже есть рабочий кроссплатформенный код сеанса ONNX Runtime, используйте API ONNX Runtime, включенные в Windows ML.
Основная модель объектов
| Концепция | Основной API-интерфейс | Description |
|---|---|---|
| Runtime | IWinMLRuntime |
Интерфейс, возвращаемый WinMLCreateRuntime, который загружает файлы модели, создает целевые объекты выполнения и создает построители конвейеров. |
| Модель | IWinMLModel |
Неизменяемый непрозрачный артефакт модели, загруженный из файла или буфера. Отражает объявленную схему через IWinMLModelSchema. |
| Цель выполнения | IWinMLExecutionTarget |
Маркер размещения CPU, GPU или NPU, используемый для создания этапов и создания тензоров. |
| Конструктор конвейеров | IWinMLPipelineBuilder |
Добавляет этапы модели и процессора, подключает их и создает подготовленный конвейер. |
| Pipeline | IWinMLPipeline |
Подготовленный, готовый к немедленному запуску граф, который выполняет привязанные тензоры и создает выходные тензоры. |
| Этап | IWinMLStage |
Шаг в конвейере, который имеет позиционные входные и выходные привязки и разрешённую целевую среду выполнения. |
| Тензор | IWinMLTensor |
Типизированные многомерные данные, привязанные к входным и выходным данным этапа. |
| Создание текста и распознавание речи | API Windows ML для генерации текста и распознавания речи | Рабочий процесс более высокого уровня, состоящий из объектов Runtime, принадлежащих вызывающей стороне, с типизированными сеансами, потоками и результатами. |
Выберите серверную часть и целевую среду выполнения
LoadModelFromFile выбирает бэкенд по расширению файла артефакта модели.
Приложение использует те же объекты среды выполнения — модель, целевой объект выполнения, построитель конвейеров, этапы, привязки и Run независимо от того, какая серверная часть загружает файл.
| Файл модели | Backend | Аппаратное ускорение |
|---|---|---|
.onnx, .ort |
Среда выполнения ONNX | Поставщики выполнения (EPs), которые Windows устанавливает и поддерживает в актуальном состоянии через каталог EP Windows ML |
.gguf |
llama.cpp | Модуль ЦП, локальный для приложения, а также дополнительный модуль CUDA для графических процессоров NVIDIA, который развертывается вместе с приложением. CPU и CUDA — единственные бэкенды llama.cpp, которые Windows ML проверяет в этом выпуске. |
Целевой объект выполнения представляет аппаратный класс — ЦП, GPU или NPU, созданный с помощью IWinMLRuntime. Повторно используйте целевой объект для создания этапов и создания тензоров: повторное использование одного целевого объекта выражает привязку к одному и тому же целевому объекту, а использование отдельных целевых объектов делает границы передачи между целевыми объектами явными. При запуске метода построителя конвейеров Build среда выполнения помещает каждый этап в бэкенд выполнения для соответствующей цели и гарантирует совместимость цели и бэкенда.
Для класса оборудования, не перечисляя устройства самостоятельно, вызовите CreateExecutionTarget с WINML_EXECUTION_TARGET_KIND и WINML_EXECUTION_TARGET_PREFERENCE, который ранжирует кандидатов этого класса, таких как интегрированный и дискретный GPU. Считайте ERROR_NOT_FOUND и ERROR_NOT_SUPPORTED одинаковыми и вернитесь к другому классу:
ComPtr<IWinMLExecutionTarget> target;
HRESULT hr = runtime->CreateExecutionTarget(
WINML_EXECUTION_TARGET_KIND_NPU,
WINML_EXECUTION_TARGET_PREFERENCE_EFFICIENCY,
target.GetAddressOf());
if (hr == HRESULT_FROM_WIN32(ERROR_NOT_FOUND) ||
hr == HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED))
{
THROW_IF_FAILED(runtime->CreateExecutionTarget(
WINML_EXECUTION_TARGET_KIND_GPU,
WINML_EXECUTION_TARGET_PREFERENCE_PERFORMANCE,
target.GetAddressOf()));
}
else
{
THROW_IF_FAILED(hr);
}
CreateCpuExecutionTarget эквивалентен запросу типа ЦП.
CreateExecutionTargetFromAdapter и CreateExecutionTargetFromD3D12 привязывают целевой объект к определенному адаптеру DXCore или устройству D3D12 вместо того, чтобы разрешить среде выполнения выбрать один. Для моделей ONNX, зависящих от установленного поставщика исполнения (EP), дополнительная поверхность совместимости ONNX Runtime позволяет закрепить уже зарегистрированного поставщика.
Каждый бэкенд по-разному разрешает эти цели. Например, бэкенд llama.cpp, используемый моделями .gguf, требует по крайней мере частичной разгрузки на GPU для соблюдения цели GPU и не поддерживает цели NPU или привязку к провайдеру. Полную матрицу разрешения целевых объектов для каждого бэкенда, а также пошаговое руководство по запуску модели GGUF см. в Windows ML Runtime API concepts.
Дальнейшие действия
- Настройка проекта C++ для API среды выполнения машинного обучения Windows
- Основные понятия API среды выполнения машинного обучения Windows
- Создавайте текст с помощью собственной языковой модели с помощью Windows ML
- Распознавайте речь с помощью собственной модели Whisper, используя Windows ML
- Запуск модели с помощью API среды выполнения Windows ML