Хотите попробовать FLUX онлайн без лишних хлопот?
Вы можете запустить FLUX.1 Pro, Schnell и Dev на Anakin AI сейчас!



Flux Schnell — это мощная модель генерации изображений из текста, способная создавать качественные изображения на основе текстовых подсказок. В этом руководстве мы проведем вас через шаги, необходимые для настройки и запуска Flux Schnell локально на MacBook Pro с чипом M3 Max. Эта конфигурация позволяет эффективно генерировать изображения, используя до 40 ГБ ОЗУ, с временем генерации каждого изображения около 30 секунд.
Требования для запуска Flux.1 Pro на Mac локально
Прежде чем начать, убедитесь, что ваша система соответствует следующим требованиям:
- MacBook Pro с чипом M3 Max
- macOS (рекомендуется последняя версия)
- Не менее 40 ГБ доступной оперативной памяти
- Установлен Anaconda или Miniconda
- Подключение к Интернету для загрузки зависимостей
Пошаговое руководство по запуску Flux.1 Pro на Mac локально
Пошаговое руководство по запуску Flux.1 Pro на Mac локально
Шаг 1: Настройте окружение
Сначала создадим новое окружение Conda и активируем его:
conda create -n flux python=3.11
conda activate flux
Шаг 2: Установите зависимости
Теперь давайте установим необходимые пакеты:
pip install torch==2.3.1
pip install git+https://github.com/huggingface/diffusers.git
pip install transformers==4.43.3 sentencepiece==0.2.0 accelerate==0.33.0 protobuf==5.27.3
Шаг 3: Подготовьте Python-скрипт
Создайте новый файл Python с именем flux_schnell.py
и добавьте следующий код:
import torch
from diffusers import FluxPipeline
import diffusers# Изменить функцию rope, чтобы обработать устройство MPS
_flux_rope = diffusers.models.transformers.transformer_flux.rope
def new_flux_rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor:
assert dim % 2 == 0, "Размерность должна быть четной."
if pos.device.type == "mps":
return _flux_rope(pos.to("cpu"), dim, theta).to(device=pos.device)
else:
return _flux_rope(pos, dim, theta)
diffusers.models.transformers.transformer_flux.rope = new_flux_rope
# Загрузите модель Flux Schnell
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
revision='refs/pr/1',
torch_dtype=torch.bfloat16
).to("mps")
# Определить подсказку
prompt = "Кот, держащий табличку с надписью 'привет мир'"
# Генерировать изображение
out = pipe(
prompt=prompt,
guidance_scale=0.,
height=1024,
width=1024,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
# Сохранить сгенерированное изображение
out.save("flux_image.png")
Шаг 4: Запустите скрипт
Выполните Python-скрипт:
python flux_schnell.py
Это сгенерирует изображение на основе подсказки "Кот, держащий табличку с надписью 'привет мир'" и сохранит его как "flux_image.png" в той же директории.
Понимание кода
Давайте разберем ключевые компоненты скрипта:
Импорт зависимостей
import torch
from diffusers import FluxPipeline
import diffusers
Эти строки импортируют необходимые модули: PyTorch для операций с тензорами, FluxPipeline из библиотеки diffusers для использования модели Flux Schnell и модуль diffusers для дополнительных утилит.
Изменение функции rope
_flux_rope = diffusers.models.transformers.transformer_flux.rope
def new_flux_rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor:
assert dim % 2 == 0, "Размерность должна быть четной."
if pos.device.type == "mps":
return _flux_rope(pos.to("cpu"), dim, theta).to(device=pos.device)
else:
return _flux_rope(pos, dim, theta)diffusers.models.transformers.transformer_flux.rope = new_flux_rope
Этот раздел изменяет функцию rope (Rotary Position Embedding), чтобы обрабатывать устройство MPS (Metal Performance Shaders), используемое в чипах Apple Silicon. Это обеспечивает совместимость с чипом M3 Max, перемещая тензоры на CPU, когда это необходимо.
Загрузка модели
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
revision='refs/pr/1',
torch_dtype=torch.bfloat16
).to("mps")
Этот код загружает модель Flux Schnell из хранилища моделей Hugging Face. Он указывает версию модели, устанавливает тип данных на bfloat16 для повышения эффективности и перемещает модель на устройство MPS.
Генерация изображения
prompt = "Кот, держащий табличку с надписью 'привет мир'"out = pipe(
prompt=prompt,
guidance_scale=0.,
height=1024,
width=1024,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
Здесь мы определяем подсказку и используем загруженную модель для генерации изображения. Параметры контролируют различные аспекты процесса генерации:
guidance_scale
: Установите на 0 для некондиционного создания.height
иwidth
: Установите размеры выходного изображения на 1024x1024 пикселей.num_inference_steps
: Контролирует количество шагов денойзинга (4 в этом случае для более быстрой генерации).max_sequence_length
: Ограничивает максимальную длину входной последовательности.
Сохранение изображения
out.save("flux_image.png")
Наконец, эта строка сохраняет сгенерированное изображение в файле PNG с именем "flux_image.png" в текущей директории.
Оптимизация производительности
Чтобы максимально использовать ваш MacBook Pro с M3 Max и достичь времени генерации ~30 секунд при использовании до 40 ГБ ОЗУ, учитывайте следующие советы:
- Закройте ненужные приложения: Убедитесь, что другие ресурсоемкие приложения закрыты, чтобы освободить ОЗУ и ресурсы ЦП.
- Настройте размеры изображений: Если вам нужно более быстрое время генерации, вы можете уменьшить параметры
height
иwidth
. Напротив, вы можете увеличить их для более высокого качества за счет более длительного времени генерации. - Экспериментируйте с
num_inference_steps
: Увеличение этого значения может привести к более качественным изображениям, но увеличит время генерации. Уменьшение его ускорит процесс, но может снизить качество изображения. - Используйте точность bfloat16: Как уже реализовано в скрипте, использование типа данных
torch.bfloat16
помогает сократить использование памяти и потенциально увеличить скорость без значительных потерь в качестве. - Пакетная обработка: Если вам нужно генерировать несколько изображений, подумайте о реализации пакетной обработки для более эффективного использования GPU.
Устранение неполадок
Если вы столкнулись с какими-либо проблемами при запуске Flux Schnell на вашем MacBook Pro с M3 Max, попробуйте следующее:
- Обновите зависимости: Убедитесь, что все пакеты обновлены, особенно PyTorch и diffusers.
- Проверьте совместимость с CUDA: Хотя M3 Max использует MPS, могут возникнуть некоторые ошибки, связанные с CUDA. Убедитесь, что вы используете правильные версии PyTorch и связанных библиотек для вашей системы.
- Мониторинг использования ресурсов: Используйте Монитор активности, чтобы следить за использованием ОЗУ и ЦП. Если вы постоянно достигаете пределов, возможно, вам нужно будет настроить параметры модели или освободить больше системных ресурсов.
- Очистите кеш: Если вы столкнулись с ошибками, связанными с памятью, попробуйте очистить кеш PyTorch:
torch.cuda.empty_cache()
5. Перезапустите ядро: Если вы используете Jupyter-ноутбук или аналогичную среду, попробуйте перезапустить ядро, если вы столкнулись с постоянными ошибками.
Заключение
Запуск Flux Schnell локально на вашем MacBook Pro с M3 Max предлагает мощные возможности генерации изображений из текста. С настройкой, описанной в этом руководстве, вы можете создавать качественные изображения на основе текстовых описаний за 30 секунд, используя до 40 ГБ ОЗУ. Имейте в виду, что производительность может варьироваться в зависимости от вашей аппаратной части и сложности подсказок.
Не стесняйтесь экспериментировать с различными параметрами, чтобы достичь наилучшего баланса между скоростью и качеством изображения для ваших нужд. Поскольку модели ИИ и аппаратное обеспечение продолжают развиваться, еще более впечатляющие результаты на горизонте. Удачной генерации!