Speeding up PyTorch inference on Apple devices with AI-generated Metal kernels
Итог : генератор Metal-ядер на базе LLM ускорил PyTorch-инференс на Apple-устройствах в среднем на 87 % (до 100× на отдельных модулях), не требуя ручной оптимизации.
Зачем AI-генерация ядер?
GPU-ядро = узкое место производительности.
Metal-ядра для Apple пишут редко и сложно; CUDA-оптимизации не переносятся.
Идея: frontier-модель сама пишет быстрый код под любую платформу.
Методика
Железо : Mac Studio (M4 Max).
Модели : Claude-4/Opus-4, GPT-4o/4.1/5, o3, DeepSeek-v3/R1.
Датасет : 215 модулей KernelBench (250 − 31 неподдерживаемых − 4 технических).
Базовая линия : PyTorch eager (torch.compile для Metal ещё не готов).
Цикл : до 5 попыток генерации → компиляция → проверка корректности → профилировка.
Простой агент
Получает PyTorch-код.
Генерирует Metal-ядро.
Проверяет бит-точность и компиляцию.
При ошибке возвращает лог модели на доработку.
Ключевые находки
87 % средний выигрыш (геом. среднее 1.87×).
Десятки случаев 10–100× : агент вырезал лишние вычисления, которых не заметил PyTorch.
Профилировка и CUDA-референс резко повышают качество кода.
Агент-роутер + специализированные «рабочие» модели эффективнее одиночного большого LLM.
Дальнейшие шаги
Автоматизировать подбор tile-size и pipeline-оптимизации.
Расширить на другие backend’и (Vulkan, WebGPU, DirectX).
Сравнивают «сырой» PyTorch-инференс (для прототипов) с моделью на кастомных Metal-ядрах, сгенерированными ИИ; заявленный 18×-ускорение вызывает сомнения.
Разработчики PyTorch просят полный zip архив ядер и скриптов бенчмарка, иначе результат невозможно проверить.
«Kernel» здесь — это GPU-функция (compute kernel), а не Linux-модуль; речь о параллельных вычислениях на ускорителе.
Эксперимент показывает, что GPT-5 умеет писать Metal-ядра для ~250 модулей из KernelBench, но часть ядер содержит ошибки корректности.
Сторонники считают, что такой подход ускорит переход от прототипа к продакшену без ручной оптимизации; скептики предлагают ждать открытого кода и сравнивать с tinygrad/JAX/Mojo.