Krea 2 на Swift и MLX: запускаем нейросеть на Mac без Python и облака

Пять неправильных токенов из 512 — и картинка, сгенерированная нейросетью, меняется на 99,32% пикселей. Именно такой баг обнаружил разработчик под псевдонимом Twisterminigen, когда переносил модель Krea 2 Turbo на нативный Swift-код с библиотекой MLX. Результат — приложение, которое работает полност

Krea 2 на Swift и MLX: запускаем нейросеть на Mac без Python и облака

Пять неправильных токенов из 512 — и картинка, сгенерированная нейросетью, меняется на 99,32% пикселей. Именно такой баг обнаружил разработчик под псевдонимом Twisterminigen, когда переносил модель Krea 2 Turbo на нативный Swift-код с библиотекой MLX. Результат — приложение, которое работает полностью на Mac, без Python и облачных вычислений. Этот проект открывает новые возможности для локальной генерации изображений на устройствах Apple, делая процесс быстрее и безопаснее.

Как запустили Krea 2 Turbo на Swift и MLX

Twisterminigen создал приложение для Krea 2 Turbo на Swift и MLX — фреймворке для машинного обучения на Apple Silicon. В проекте использовался Mac mini M4 с 32 ГБ объединённой памяти. Веса модели занимают 31,18 ГиБ, и они полностью помещаются в память компьютера, что позволяет выполнять inference локально. Архитектура приложения включает очередь задач, поддержку LoRA (Low-Rank Adaptation), Regional Prompts и Presets. Все рецепты генерации воспроизводимы — одинаковые промпты и seed дают одинаковый результат. Это важно для тестирования и отладки.

Почему это важно для разработчиков и пользователей Mac?

Для разработчиков, создающих нативные приложения для macOS с генерацией изображений, этот проект предлагает готовую архитектуру и пример реализации. Пользователи Mac получают возможность запускать Krea 2 Turbo локально, без интернета и задержек облачных сервисов. Для бизнеса это означает снижение затрат на облачные вычисления и повышение конфиденциальности данных. В контексте СНГ, где доступ к облачным сервисам может быть ограничен, локальное решение особенно актуально. Приложение не требует подключения к внешним API и работает полностью на устройстве пользователя.

Предыстория и контекст

Krea 2 Turbo — это модель генерации изображений, которая ранее была доступна только через облачные API или требовала Python-окружения. Перенос на Swift и MLX — попытка сделать её доступной для нативных приложений на macOS. MLX — библиотека от Apple, оптимизированная для чипов M-серии, позволяющая запускать нейросети без лишних зависимостей. Ранее аналогичные проекты часто требовали Python и фреймворков вроде PyTorch, что усложняло распространение и замедляло работу. Twisterminigen решил пойти другим путём: написать всё на Swift, используя MLX для тензорных операций. Это дало прирост производительности и упростило сборку.

Как обнаружили опасный баг с RoPE-позициями

В ходе разработки выяснилось, что пять токенов из 512 получали неправильные RoPE-позиции. RoPE (Rotary Position Embedding) — механизм, который добавляет информацию о позиции токена в последовательности. Если позиции указаны неверно, модель неправильно интерпретирует порядок слов и контекст. Старые тесты проходили успешно, и картинки выглядели нормально. Однако после исправления бага тот же промпт и seed изменили 99,32% пикселей. Это значит, что баг был скрытым и не проявлялся в типичных сценариях, но мог привести к непредсказуемым результатам при определённых условиях.

Технические подробности: как работает нативное приложение

Приложение использует MLX для всех вычислений. MLX поддерживает автоматическое дифференцирование, оптимизирован для MPS (Metal Performance Shaders) и позволяет эффективно использовать объединённую память Mac. Веса модели загружаются в память один раз, после чего генерация происходит без обращений к диску. Очередь задач позволяет обрабатывать несколько запросов последовательно, не блокируя интерфейс. LoRA даёт возможность дообучать модель на небольших наборах данных, а Regional Prompts — задавать разные промпты для разных частей изображения. Presets сохраняют конфигурации для быстрого повторения. Воспроизводимость рецептов достигается за счёт фиксированного seed и детерминированных алгоритмов MLX. Это критично для отладки и сравнения результатов.

Какие преимущества даёт локальный запуск нейросети на Mac?

Локальный запуск нейросети на Mac даёт несколько ключевых преимуществ. Во-первых, это полная конфиденциальность: данные не покидают устройство. Во-вторых, отсутствие задержек, связанных с передачей данных по сети. В-третьих, возможность работать без интернета. Для креативных профессионалов это означает, что они могут генерировать изображения в любом месте, не беспокоясь о подключении к облаку. Кроме того, использование нативного Swift-кода и MLX обеспечивает высокую производительность на чипах Apple Silicon, часто превосходящую облачные решения.

Что будет дальше

Twisterminigen планирует опубликовать код в открытом доступе, чтобы сообщество могло проверить и улучшить реализацию. В планах — добавить поддержку других моделей, оптимизировать скорость генерации и, возможно, портировать на iOS. Баг с RoPE-позициями уже исправлен, и теперь приложение выдаёт стабильные результаты. В долгосрочной перспективе такие проекты могут сделать локальный inference стандартом для креативных инструментов, снизив зависимость от облачных провайдеров.

Итог

Проект Twisterminigen показывает, что современные нейросети можно запускать нативно на Mac без Python и облака. Обнаруженный баг с RoPE-позициями напоминает, что даже небольшие ошибки в реализации могут кардинально менять результат. Воспроизводимость и локальность — ключевые преимущества такого подхода, которые делают его привлекательным для разработчиков и пользователей. Если вы хотите попробовать Krea 2 Turbo на своём Mac, следите за репозиторием проекта — скоро код станет доступен.