Featured image for pytorch predstavlyaet openreg simulyator akseleratorov dlya testirovaniya apparatnogo obespecheniya

PyTorch представляет OpenReg — симулятор акселераторов для тестирования аппаратного обеспечения

Команда PyTorch анонсировала выпуск OpenReg — самодостаточного симулятора акселераторов, предназначенного для упрощения интеграции пользовательского аппаратного обеспечения с фреймворком. Новый инструмент использует механизм PrivateUse1 DispatchKey, ставший стандартом сообщества для подключения внешних устройств.

Архитектура и назначение

OpenReg позиционируется как минималистичная референсная реализация, а не полнофункциональный высокопроизводительный бэкенд. Его основная цель — служить эталоном для проверки механизмов интеграции новых аппаратных ускорителей в экосистему PyTorch.

Диаграмма архитектуры OpenReg - симулятора акселераторов PyTorch
Источник: pytorch.org

Архитектура OpenReg

Ключевые компоненты системы

Архитектура проекта включает три основных аспекта:

  • CPU-симулятор акселератора — позволяет разрабатывать, тестировать и отлаживать пользовательские операции PyTorch без доступа к реальному оборудованию
  • Интеграция с CI/CD — автоматизированное тестирование в рамках процессов непрерывной интеграции
  • Сопутствующая документация — подробные руководства по интеграции оборудования

Функциональные возможности

OpenReg предоставляет разработчикам комплексный набор инструментов для работы с пользовательскими акселераторами:

  • Регистрация операторов — поддержка как встроенных операторов PyTorch, так и пользовательских реализаций
  • Механизм fallback — обеспечивает непрерывную работу при недоступности зарегистрированных операторов
  • Поддержка runtime — управление событиями, потоками, устройствами и генерацией случайных чисел
  • Кросс-платформенность — работа на Linux, macOS и Windows
  • Автоматическая mixed precision — оптимизация вычислений с использованием разных типов данных
  • Автозагрузка — автоматическая инициализация при импорте torch

Установка и использование

Для работы с OpenReg требуется сборка из исходного кода, которая выполняется простой командой:

cd test/cpp_extensions/open_registration_extension/torch_openreg
python -m pip install --no-build-isolation -e . # для разработки
python -m pip install --no-build-isolation . # для установки

Использование симулятора максимально упрощено и аналогично работе с CUDA-устройствами:

import torch
if not torch.openreg.is_available():
 print("OpenReg backend is not available in this build.")
 exit()
print("OpenReg backend is available!")
device = torch.device("openreg")
x = torch.tensor([[1., 2.], [3., 4.]], device=device)
y = x + 2
print("Result y:n", y)
print(f"Device of y: {y.device}")
z = y.cpu()
print("Result z:n", z)
print(f"Device of z: {z.device}")

Появление OpenReg — логичный шаг в эволюции PyTorch как открытой платформы. Вместо того чтобы каждый производитель оборудования изобретал велосипед для интеграции, сообщество предлагает стандартизированный подход. Особенно ценно, что это не просто документация, а работающий код с тестами — именно так и должны выглядеть современные open-source проекты. Интересно, сколько времени пройдет до появления первых коммерческих реализаций на основе этого симулятора.

Перспективы развития

Разработчики PyTorch планируют дальнейшее развитие OpenReg с четкой дорожной картой улучшения возможностей в рамках экосистемы фреймворка. Это включает расширение функциональности для поддержки более сложных сценариев использования и оптимизацию процессов интеграции нового оборудования.

По материалам PyTorch Blog.

Похожие записи