Flux 模型本地化部署指南:低显存设备运行方案
1. 背景与优势
在 AI 绘画领域,Flux 模型效果出色,但往往对显存要求较高。许多用户面临以下问题:
- 显卡显存不足(8GB 或 6GB),加载模型时报'CUDA out of memory';
- 手动配置路径、修改代码繁琐,环境搭建耗时;
- 担心云端服务隐私泄露或生成受限。
本方案提供一套开箱即用的本地 Web 服务,基于 DiffSynth 引擎和 Gradio 界面。通过 float8 量化技术降低 DiT 主干网络显存占用,支持在旧笔记本、远程服务器或 RTX 3060 等中低端设备上运行。
2. 快速部署
2.1 前提检查
确保满足以下条件:
- NVIDIA GPU(RTX 20 系及以上、A 系列或 Laptop 版),驱动正常(
nvidia-smi可显示); - Python 3.10 或更高版本。
2.2 安装依赖
打开终端执行以下命令:
pip install diffsynth -U gradio modelscope torch
提示:若使用 conda 环境,请先激活环境。如遇权限问题,可添加
--user参数。
核心依赖说明:
diffsynth:底层推理引擎,专为 Diffusion Transformer 优化;gradio:构建网页交互界面;modelscope:模型管理能力;torch:基础深度学习框架。
2.3 创建并运行服务脚本
新建文件 web_app.py,写入以下代码:
import torch
import gradio as gr
from modelscope import snapshot_download
from diffsynth import ModelManager, FluxImagePipeline
def init_models():
# 模型已预置,此步骤校验路径
snapshot_download(model_id="MAILAND/majicflus_v1", allow_file_pattern="majicflus_v134.safetensors", cache_dir="models")
snapshot_download(model_id="black-forest-labs/FLUX.1-dev", allow_file_pattern=["ae.safetensors", "text_encoder/model.safetensors", "text_encoder_2/*"], cache_dir="models")
model_manager = ModelManager(torch_dtype=torch.bfloat16)
model_manager.load_models(
[],
torch_dtype=torch.float8_e4m3fn,
device=
)
model_manager.load_models(
[
,
,
,
],
torch_dtype=torch.bfloat16,
device=
)
pipe = FluxImagePipeline.from_model_manager(model_manager, device=)
pipe.enable_cpu_offload()
pipe.dit.quantize()
pipe
pipe = init_models()
():
seed == -:
random
seed = random.randint(, )
image = pipe(prompt=prompt, seed=seed, num_inference_steps=(steps))
image
gr.Blocks(title=) demo:
gr.Markdown()
gr.Row():
gr.Column(scale=):
prompt_input = gr.Textbox(label=, placeholder=, lines=)
gr.Row():
seed_input = gr.Number(label=, value=, precision=)
steps_input = gr.Slider(label=, minimum=, maximum=, value=, step=)
btn = gr.Button(, variant=)
gr.Column(scale=):
output_image = gr.Image(label=)
btn.click(fn=generate_fn, inputs=[prompt_input, seed_input, steps_input], outputs=output_image)
__name__ == :
demo.launch(server_name=, server_port=)

