Как собрать Ideogram 4 на Swift и MLX: шесть часов на рендер и контроль памяти на M4 с 32 ГБ

IdeogramIdeogram AppleApple
Разработчик перенёс модель Ideogram 4 на локальный Swift/MLX-пайплайн без Python. На Mac mini M4 с 32 ГБ рендер 2048×2048 в режиме Quality (48 шагов) занял 6 часов, но приложение не падало благодаря поэтапной загрузке весов. Структурированный JSON-формат caption и умелое удаление отрицательных терминов из промпта помогли избежать коллажных артефактов.
Разработчик реализовал локальный пайплайн для генерации изображений на базе модели Ideogram 4 в среде Swift с использованием фреймворка MLX для машинного обучения и Metal для рендеринга. Пайплайн не требует запуска отдельного Python-процесса: все компоненты – токенизатор, Qwen3-VL-8B text encoder, conditional и unconditional трансформеры, VAE и декодер – загружаются в unified memory 32 ГБ только когда нужны, что позволяет обойтись без выгрузки на диск. Для теста производительности разработчик запустил рендер в трёх официальных пресетах на Mac mini M4: Turbo (12 шагов) занял 92:49, Default (20 шагов) – 156:31, Quality (48 шагов) – 384:55. Несмотря на длительное время, система не зависла и не упала. Отмечается, что VAE, чьи веса занимают всего 160 МБ на диске, при декодировании 2048×2048 создаёт пиковую нагрузку на память до 24,3 ГБ. Для управления памятью используется кэш MLX, проверка прогноза памяти до старта и мониторинг footprint между шагами. Структурированный caption в формате JSON с полями high_level_description, style_description и compositional_deconstruction (с элементами и их bbox) даёт более предсказуемые результаты, чем обычный текст – снижает количество ложных срабатываний safety filter. Разработчик предостерегает от включения в положительный caption слов, которые модель может интерпретировать как визуальные токены (например, «коллаж», «панели», «шахматная доска»), и рекомендует описывать фон и элементы отдельно, без повторений.
Сокращения
MLX = Machine Learning Extensions — расширения для машинного обучения
CFG = Classifier-Free Guidance — бесклассовое управление
VAE = Variational Autoencoder — вариационный автоэнкодер
GPU = Graphics Processing Unit — графический процессор
CPU = Central Processing Unit — центральный процессор
RAM = Random Access Memory — оперативная память
Источник: Habr — хаб ML — оригинал

Наши прошлые публикации по теме

Есть свежие новости