FLUX
由Black Forest Labs开发: https://blackforestlabs.ai
这个仓库包含了使用我们的Flux潜在校正流转换器进行文本到图像和图像到图像转换的最小推理代码。
推理合作伙伴
我们很高兴与Replicate和FAL合作。您可以使用他们的服务来运行我们的模型。 以下是相关链接。
Replicate:
- https://replicate.com/collections/flux
- https://replicate.com/black-forest-labs/flux-pro
- https://replicate.com/black-forest-labs/flux-dev
- https://replicate.com/black-forest-labs/flux-schnell
FAL:
- https://fal.ai/models/fal-ai/flux-pro
- https://fal.ai/models/fal-ai/flux/dev
- https://fal.ai/models/fal-ai/flux/schnell
本地安装
cd $HOME && git clone https://github.com/black-forest-labs/flux
cd $HOME/flux
python3.10 -m venv .venv
source .venv/bin/activate
pip install -e '.[all]'
模型
我们提供三种模型:
FLUX.1 [pro]
基础模型,通过API提供FLUX.1 [dev]
引导蒸馏变体FLUX.1 [schnell]
引导和步骤蒸馏变体
名称 | HuggingFace仓库 | 许可证 | md5校验和 |
---|---|---|---|
FLUX.1 [schnell] | https://huggingface.co/black-forest-labs/FLUX.1-schnell | apache-2.0 | a9e1e277b9b16add186f38e3f5a34044 |
FLUX.1 [dev] | https://huggingface.co/black-forest-labs/FLUX.1-dev | FLUX.1-dev非商业许可证 | a6bd8c16dfc23db6aee2f63a2eba78c0 |
FLUX.1 [pro] | 仅在我们的API中可用。 |
自动编码器的权重也在apache-2.0许可下发布,可以在上述两个HuggingFace仓库中找到。它们对两个模型都是相同的。
使用方法
当您启动其中一个演示时,权重将自动从HuggingFace下载。要下载FLUX.1 [dev]
,您需要登录,请参阅这里。
如果您已手动下载模型权重,可以通过环境变量指定下载路径:
export FLUX_SCHNELL=<flux_schnell_sft文件路径>
export FLUX_DEV=<flux_dev_sft文件路径>
export AE=<ae_sft文件路径>
对于交互式采样,运行
python -m flux --name <名称> --loop
或者要生成单个样本,运行
python -m flux --name <名称> \
--height <高度> --width <宽度> \
--prompt "<提示>"
我们还提供了一个支持文本到图像和图像到图像的streamlit演示。可以通过以下方式运行演示:
streamlit run demo_st.py
我们还提供了一个基于Gradio的演示,以获得交互式体验。要运行Gradio演示:
python demo_gr.py --name flux-schnell --device cuda
选项:
--name
:选择要使用的模型(选项:"flux-schnell","flux-dev")--device
:指定要使用的设备(默认:如果可用则为"cuda",否则为"cpu")--offload
:不使用时将模型卸载到CPU--share
:创建演示的公共链接
要使用dev模型运行演示并创建公共链接:
python demo_gr.py --name flux-dev --share
Diffusers集成
FLUX.1 [schnell]
和FLUX.1 [dev]
已与🧨 diffusers库集成。要使用diffusers,请安装它:
pip install git+https://github.com/huggingface/diffusers.git
然后您可以使用FluxPipeline
来运行模型
import torch
from diffusers import FluxPipeline
model_id = "black-forest-labs/FLUX.1-schnell" #您也可以使用`black-forest-labs/FLUX.1-dev`
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16)
pipe.enable_model_cpu_offload() #通过将模型卸载到CPU来节省一些VRAM。如果您有足够的GPU能力,可以删除此行
prompt = "一只猫拿着写有hello world的牌子"
seed = 42
image = pipe(
prompt,
output_type="pil",
num_inference_steps=4, #如果使用[dev],请使用更大的数字
generator=torch.Generator("cpu").manual_seed(seed)
).images[0]
image.save("flux-schnell.png")
要了解更多信息,请查看diffusers文档
API使用
我们的API提供对pro模型的访问。文档在这里: docs.bfl.ml。
在这个仓库中,我们还提供了一个简单的Python接口。要使用它,您 首先需要在api.bfl.ml上注册API,并 创建一个新的API密钥。
要使用API密钥,可以运行export BFL_API_KEY=<您的密钥>
或通过
api_key=<您的密钥>
参数提供。还需要按上述方式安装软件包。
从Python使用:
from flux.api import ImageRequest
# 这将直接创建一个API请求,但不会阻塞直到生成完成
request = ImageRequest("一个美丽的海滩")
# 或:request = ImageRequest("一个美丽的海滩", api_key="您的密钥")
# 以下任何一个都会阻塞直到生成完成
request.url
# -> https:<...>/sample.jpg
request.bytes
# -> b"..." 生成图像的字节
request.save("outputs/api.jpg")
# 将样本保存到本地存储
request.image
# -> 一个PIL图像
从命令行使用:
$ python -m flux.api --prompt="一个美丽的海滩" url
https:<...>/sample.jpg
# 生成并保存结果
$ python -m flux.api --prompt="一个美丽的海滩" save outputs/api
# 直接打开图像
$ python -m flux.api --prompt="一个美丽的海滩" image show