Как собрать Ideogram 4 на Swift и MLX: шесть часов на рендер и контроль памяти на M4 с 32 ГБ
Ideogram
Apple
Разработчик перенёс модель 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 —
оригинал
