Nunchaku-flux-1-dev从零开始UbuntuSupervisorGradio完整部署步骤1. 引言为什么选择本地部署文生图模型如果你玩过AI绘画肯定体验过在线生成服务要么排队等半天要么生成次数有限制要么担心自己的创意提示词被平台拿去训练模型。更别提那些对中文支持不太友好的国外模型了想生成一个“古风少女江南水乡”的画面出来的可能是个穿和服的姑娘。今天要介绍的Nunchaku-flux-1-dev就是为解决这些问题而生的。它基于开源的FLUX.1 [dev]模型进行了深度优化专门针对中文场景和消费级硬件做了适配。简单来说它让你能在自己的电脑上用一张RTX 3090或4090显卡就能跑起来一个高质量的文生图服务而且对中文提示词的理解更到位。这篇文章我会手把手带你完成从零开始的完整部署。无论你是想自己玩AI绘画还是打算用它做电商素材、接点设计私活这套方案都能让你摆脱云端服务的各种限制。2. 部署前准备环境与资源检查在开始动手之前我们先看看需要准备些什么。别担心整个过程我会尽量讲得详细确保每一步你都能跟上。2.1 硬件要求首先是最关键的硬件部分。Nunchaku-flux-1-dev经过优化后对硬件的要求已经亲民了很多GPU至少需要NVIDIA RTX 309024GB显存或RTX 4090。这是最低要求了再低的显卡可能就跑不动了或者生成速度会慢到你怀疑人生。内存建议32GB以上。虽然模型运行主要吃显存但系统内存大一些整体体验会更流畅。存储需要准备大约50GB的可用空间。模型文件本身大概20GB再加上Python环境、依赖包等留足空间避免中途报错。如果你用的是云服务器选择GPU实例时记得看准显存大小。很多标注“GPU实例”的机器可能只给了8G或16G显存那是不够的。2.2 软件环境软件方面我们需要一个干净的Ubuntu系统。我推荐用Ubuntu 22.04 LTS这是目前最稳定的版本之一社区支持也最好。操作系统Ubuntu 22.04 LTS64位Python版本3.11。不要用太新的3.12也不要太旧的3.93.11是目前深度学习生态兼容性最好的版本。CUDA版本11.8。这是PyTorch 2.7.1官方推荐的CUDA版本兼容性最有保障。如果你已经有一台装好Ubuntu的机器可以直接跳到下一步。如果是全新安装建议选择最小化安装不要装图形界面节省资源。3. 基础环境搭建一步一个脚印好了假设你现在已经有一台装好Ubuntu 22.04的机器我们开始真正的部署工作。3.1 系统更新与基础工具安装首先更新系统并安装一些必要的工具# 更新系统包列表 sudo apt update sudo apt upgrade -y # 安装基础工具 sudo apt install -y wget curl git vim htop net-tools # 安装Python 3.11和相关开发工具 sudo apt install -y python3.11 python3.11-venv python3.11-dev python3-pip这里有个小技巧安装完成后可以设置一下Python 3.11为默认版本sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 13.2 CUDA和cuDNN安装接下来安装CUDA 11.8。虽然步骤看起来多但跟着做其实很简单# 下载CUDA 11.8的安装包 wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run # 给安装文件执行权限 chmod x cuda_11.8.0_520.61.05_linux.run # 运行安装程序 sudo ./cuda_11.8.0_520.61.05_linux.run安装过程中有几个地方需要注意接受许可协议按空格翻页然后输入accept取消勾选Driver因为我们已经有了NVIDIA驱动其他选项保持默认直接安装安装完成后需要配置环境变量。编辑你的~/.bashrc文件vim ~/.bashrc在文件末尾添加export PATH/usr/local/cuda-11.8/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH export CUDA_HOME/usr/local/cuda-11.8保存退出后让配置生效source ~/.bashrc验证安装是否成功nvcc --version如果看到类似Cuda compilation tools, release 11.8的输出说明CUDA安装成功了。3.3 创建Python虚拟环境为了避免包冲突我们为这个项目创建一个独立的Python环境# 创建项目目录 mkdir -p ~/nunchaku-flux-1-dev cd ~/nunchaku-flux-1-dev # 创建Python虚拟环境 python3.11 -m venv venv # 激活虚拟环境 source venv/bin/activate激活后你的命令行提示符前面应该会出现(venv)字样这表示你现在在这个虚拟环境里工作。4. 模型部署核心步骤详解环境准备好了现在开始部署模型本身。这是最核心的部分但别担心我会把每个步骤都解释清楚。4.1 安装PyTorch和依赖在虚拟环境中首先安装PyTorch。注意要安装和CUDA 11.8兼容的版本# 安装PyTorch 2.7.1对应CUDA 11.8 pip install torch2.7.1 torchvision0.22.1 torchaudio2.7.1 --index-url https://download.pytorch.org/whl/cu118 # 安装其他必要的包 pip install diffusers transformers accelerate gradio pillow safetensors这里解释一下这些包都是干什么的torchPyTorch深度学习框架基础中的基础diffusersHugging Face的扩散模型库专门用于文生图这类任务transformers也是Hugging Face的处理文本相关的模型accelerate加速推理的库能帮我们更好地利用GPUgradio用来创建Web界面的让我们有个图形化的操作页面pillowPython的图像处理库safetensors一种更安全的模型文件格式安装过程可能需要几分钟取决于你的网络速度。如果遇到下载慢的问题可以考虑换用国内的镜像源。4.2 下载和配置模型Nunchaku-flux-1-dev基于FLUX.1 [dev]模型我们需要先下载原始模型然后应用优化# 创建模型存储目录 mkdir -p ~/ai-models/AI-ModelScope cd ~/ai-models/AI-ModelScope # 下载FLUX.1-dev模型 # 注意这里需要你有Hugging Face的访问权限 # 如果下载慢可以考虑先下载到本地再上传 git lfs install git clone https://huggingface.co/black-forest-labs/FLUX.1-dev模型文件比较大大概20GB左右下载需要一些时间。你可以先去喝杯咖啡或者如果网络不好也可以找找有没有别人分享的国内镜像。下载完成后回到项目目录创建我们的推理脚本cd ~/nunchaku-flux-1-dev vim app.py在这个文件里输入以下内容import torch from diffusers import FluxPipeline import gradio as gr import os from datetime import datetime # 设置设备 device cuda if torch.cuda.is_available() else cpu print(f使用设备: {device}) # 加载模型 print(正在加载模型...) model_path /root/ai-models/AI-ModelScope/FLUX.1-dev pipe FluxPipeline.from_pretrained( model_path, torch_dtypetorch.float16, device_mapauto, variantfp16 ) # 启用CPU offload以节省显存 pipe.enable_sequential_cpu_offload() print(模型加载完成) def generate_image(prompt, width512, height512, num_inference_steps20, guidance_scale3.5, seed0): 生成图像的主函数 # 设置随机种子 if seed ! 0: generator torch.Generator(devicedevice).manual_seed(seed) else: generator None try: # 生成图像 image pipe( promptprompt, heightheight, widthwidth, num_inference_stepsnum_inference_steps, guidance_scaleguidance_scale, generatorgenerator, max_sequence_length256 ).images[0] # 保存图像 timestamp datetime.now().strftime(%Y%m%d_%H%M%S) output_path foutput_{timestamp}.png image.save(output_path) return image, f生成成功图像已保存为: {output_path} except Exception as e: return None, f生成失败: {str(e)} # 创建Gradio界面 with gr.Blocks(titleNunchaku FLUX.1-Dev WebUI) as demo: gr.Markdown(# Nunchaku FLUX.1-Dev 文生图) gr.Markdown(基于FLUX.1 [dev]模型优化的中文文生图工具) with gr.Row(): with gr.Column(scale1): prompt gr.Textbox( label提示词 (Prompt), placeholder请输入图像描述例如古风少女江南水乡水墨风格, lines3 ) with gr.Row(): width gr.Slider( label宽度, minimum256, maximum1024, value512, step64 ) height gr.Slider( label高度, minimum256, maximum1024, value512, step64 ) with gr.Row(): steps gr.Slider( label推理步数, minimum10, maximum50, value20, step1 ) guidance gr.Slider( label引导系数, minimum1.0, maximum10.0, value3.5, step0.1 ) seed gr.Number( label随机种子 (0表示随机), value0 ) generate_btn gr.Button( 生成图像, variantprimary) with gr.Column(scale1): output_image gr.Image(label生成的图像) output_text gr.Textbox(label输出信息) # 绑定生成函数 generate_btn.click( fngenerate_image, inputs[prompt, width, height, steps, guidance, seed], outputs[output_image, output_text] ) # 示例提示词 gr.Markdown(### 提示词示例) examples gr.Examples( examples[ [古风少女江南水乡水墨风格细雨蒙蒙小桥流水], [赛博朋克城市夜景霓虹灯未来感雨夜高楼大厦], [可爱猫咪抱着毛线球阳光下的窗台温馨氛围], [科幻飞船星际旅行星空背景细节丰富8K画质] ], inputsprompt, label点击使用示例提示词 ) # 启动服务 if __name__ __main__: demo.launch( server_name0.0.0.0, server_port7860, shareFalse )这个脚本做了几件事加载FLUX.1-dev模型并设置为float16精度以节省显存启用CPU offload技术让模型在CPU和GPU之间智能调度进一步降低显存需求创建了一个Gradio的Web界面让你可以通过浏览器操作添加了一些中文友好的示例提示词4.3 测试模型运行在正式部署为服务之前我们先手动测试一下# 确保在虚拟环境中 source venv/bin/activate # 运行测试 python app.py如果一切正常你会看到类似这样的输出使用设备: cuda 正在加载模型... 模型加载完成 Running on local URL: http://0.0.0.0:7860这时候打开浏览器访问http://你的服务器IP:7860应该能看到Web界面了。先别急着生成图片因为第一次运行需要加载模型可能会比较慢。等控制台显示“模型加载完成”后再在Web界面试着生成一张简单的图片比如输入“a cat”看看效果。5. 服务化管理用Supervisor保持稳定运行手动运行虽然能工作但不够稳定。我们需要一个守护进程来管理这个服务确保它一直运行即使出错了也能自动重启。这里我们用Supervisor。5.1 安装和配置Supervisor# 安装Supervisor sudo apt install -y supervisor # 创建我们的服务配置文件 sudo vim /etc/supervisor/conf.d/nunchaku-flux.conf在这个配置文件中添加以下内容[program:nunchaku-flux-1-dev] command/root/nunchaku-flux-1-dev/venv/bin/python /root/nunchaku-flux-1-dev/app.py directory/root/nunchaku-flux-1-dev userroot autostarttrue autorestarttrue startsecs10 startretries3 stdout_logfile/root/nunchaku-flux-1-dev/supervisor.log stdout_logfile_maxbytes10MB stdout_logfile_backups5 stderr_logfile/root/nunchaku-flux-1-dev/supervisor_error.log stderr_logfile_maxbytes10MB stderr_logfile_backups5 environmentPYTHONPATH/root/nunchaku-flux-1-dev,PATH/root/nunchaku-flux-1-dev/venv/bin:%(ENV_PATH)s配置解释command指定用什么命令启动服务这里用的是虚拟环境中的Pythondirectory服务的工作目录autostart和autorestart让服务自动启动和自动重启stdout_logfile和stderr_logfile日志文件位置方便排查问题5.2 启动和管理服务配置好后让Supervisor重新加载配置并启动服务# 重新加载Supervisor配置 sudo supervisorctl reread sudo supervisorctl update # 启动我们的服务 sudo supervisorctl start nunchaku-flux-1-dev # 查看服务状态 sudo supervisorctl status如果一切正常你会看到类似这样的输出nunchaku-flux-1-dev RUNNING pid 12345, uptime 0:01:305.3 常用管理命令记住这几个命令以后管理服务会经常用到# 查看服务状态 sudo supervisorctl status nunchaku-flux-1-dev # 重启服务修改代码后需要 sudo supervisorctl restart nunchaku-flux-1-dev # 停止服务 sudo supervisorctl stop nunchaku-flux-1-dev # 查看实时日志 tail -f /root/nunchaku-flux-1-dev/supervisor.log # 查看最近错误 tail -50 /root/nunchaku-flux-1-dev/supervisor_error.log6. 使用指南从新手到熟练服务跑起来了现在我们来聊聊怎么用好它。虽然界面看起来简单但有些技巧能让你的生成效果更好。6.1 界面功能详解打开http://你的服务器IP:7860你会看到这样的界面左边是输入区右边是输出区。输入区有几个重要的参数提示词Prompt这里输入你想要生成图像的描述。比如“古风少女江南水乡水墨风格”。描述越详细生成的结果通常越好。宽度和高度控制生成图片的尺寸。默认是512x512这是最稳定的尺寸。如果你显存够大比如24GB可以尝试768x768。但1024x1024很可能导致显存不足。推理步数控制生成过程的精细程度。步数越多细节越好但时间也越长。日常使用20-25步就足够了追求高质量可以开到30-40步。引导系数控制模型“听话”的程度。值越小创意空间越大值越大越严格遵循你的提示词。3.5-4.5是个不错的范围。随机种子0表示每次随机其他数字表示固定种子。如果你生成了一个不错的图想微调一下就记下种子号下次用同样的种子。6.2 中文提示词技巧Nunchaku-flux-1-dev对中文的支持比原版更好但有些技巧能让效果更上一层楼基础版直接描述古风少女江南水乡水墨风格进阶版加入细节古风少女身穿淡青色汉服站在江南水乡的石桥上背景是小桥流水和古建筑细雨蒙蒙水墨画风格8K高清细节丰富专业版使用权重和负面提示古风少女:1.2江南水乡:1.1水墨风格细雨蒙蒙小桥流水古建筑背景 负面提示现代建筑人物模糊色彩杂乱几个小技巧用括号()和冒号:可以调整关键词的权重(关键词:1.2)表示重要性提高20%把最重要的元素放在前面加入风格描述比如“水墨风格”、“油画风格”、“赛博朋克风格”指定画质比如“8K高清”、“细节丰富”、“专业摄影”6.3 参数组合建议不同的需求可以用不同的参数组合快速测试想看看大概效果步数15引导系数3.0尺寸512x512时间1-2分钟日常使用平衡质量和速度步数20-25引导系数3.5-4.0尺寸512x512或768x512时间2-4分钟高质量输出用于正式作品步数30-40引导系数4.0-5.0尺寸768x768如果显存够时间5-8分钟7. 常见问题与解决方案部署和使用过程中你可能会遇到一些问题。这里我整理了一些常见的情况和解决办法。7.1 显存不足CUDA out of memory这是最常见的问题。看到这个错误说明你的显存不够用了。解决办法降低分辨率从768x768降到512x512减少推理步数从30步降到20步重启服务有时候显存没有完全释放sudo supervisorctl restart nunchaku-flux-1-dev检查其他进程看看有没有其他程序占用了GPUnvidia-smi7.2 生成速度慢Nunchaku-flux-1-dev使用了CPU offload技术所以生成速度不会特别快。这是用显存换速度的权衡。正常速度参考512x51220步2-3分钟512x51230步3-5分钟768x76820步4-6分钟如果比这个慢很多可以检查CPU是否太老模型在CPU和GPU之间传输数据CPU性能也有影响内存是否足够建议32GB以上硬盘是不是太慢如果是机械硬盘换成SSD会有改善7.3 Web界面打不开如果无法访问http://IP:7860按这个顺序检查# 1. 检查服务是否运行 sudo supervisorctl status nunchaku-flux-1-dev # 2. 检查端口是否监听 netstat -tlnp | grep 7860 # 3. 检查防火墙 sudo ufw status # 如果防火墙开启需要放行7860端口 sudo ufw allow 7860 # 4. 查看日志找错误 tail -100 /root/nunchaku-flux-1-dev/supervisor_error.log7.4 生成的图片质量不好如果图片模糊、扭曲或者完全不是你想要的内容优化提示词更详细、更具体的描述差一个女孩好一个20岁的亚洲女孩长发微笑在樱花树下阳光透过树叶专业摄影8K高清调整参数增加推理步数到30-40调整引导系数到4.0-5.0尝试不同的随机种子使用负面提示在提示词后面加上不想要的内容正面古风少女江南水乡水墨风格 负面现代服装模糊畸形色彩杂乱7.5 如何批量生成Web界面一次只能生成一张图。如果想批量生成可以写个简单的脚本import requests import json import time # WebUI的地址 url http://localhost:7860/api/predict # 要生成的提示词列表 prompts [ 古风少女江南水乡水墨风格, 赛博朋克城市夜景霓虹灯, 可爱猫咪窗台阳光, 科幻飞船星空未来感 ] for i, prompt in enumerate(prompts): print(f生成第{i1}张: {prompt}) # 构造请求数据 data { data: [ prompt, # 提示词 512, # 宽度 512, # 高度 25, # 步数 3.5, # 引导系数 0 # 随机种子 ] } # 发送请求 response requests.post(url, jsondata) if response.status_code 200: result response.json() print(f生成成功) # 这里可以保存图片 # image_data result[data][0] # 保存逻辑... else: print(f生成失败: {response.text}) # 等待一下避免请求太快 time.sleep(5)8. 性能优化与进阶配置如果你想让服务运行得更稳定、更高效这里有一些进阶的优化建议。8.1 监控GPU状态创建一个简单的监控脚本定期检查GPU状态vim ~/gpu_monitor.sh内容如下#!/bin/bash echo GPU状态监控 echo 时间: $(date) echo # 显示GPU信息 nvidia-smi --query-gpuname,temperature.gpu,utilization.gpu,memory.total,memory.used,memory.free --formatcsv echo echo 服务状态 sudo supervisorctl status nunchaku-flux-1-dev echo echo 最近日志 tail -5 /root/nunchaku-flux-1-dev/supervisor.log给脚本执行权限并可以设置定时任务chmod x ~/gpu_monitor.sh # 每10分钟检查一次可选 (crontab -l 2/dev/null; echo */10 * * * * ~/gpu_monitor.sh ~/gpu_monitor.log) | crontab -8.2 自动清理旧图片生成的图片会越来越多可以设置自动清理vim ~/cleanup_images.sh内容#!/bin/bash # 保留最近7天的图片删除更早的 find /root/nunchaku-flux-1-dev -name output_*.png -mtime 7 -delete echo $(date): 清理了7天前的图片 ~/cleanup.log设置每天凌晨清理chmod x ~/cleanup_images.sh (crontab -l 2/dev/null; echo 0 2 * * * ~/cleanup_images.sh) | crontab -8.3 使用更快的VAEFLUX.1-dev默认的VAE可能不是最快的。你可以尝试替换成更快的VAE# 在app.py的模型加载部分可以这样修改 from diffusers import AutoencoderKL # 加载更快的VAE vae AutoencoderKL.from_pretrained( madebyollin/sdxl-vae-fp16-fix, torch_dtypetorch.float16 ) pipe FluxPipeline.from_pretrained( model_path, torch_dtypetorch.float16, device_mapauto, variantfp16, vaevae # 使用自定义VAE )这个VAE在保持质量的同时速度会快一些。8.4 启用xFormers加速如果你的PyTorch版本支持可以启用xFormers来进一步加速# 安装xFormers pip install xformers # 然后在代码中启用 pipe.enable_xformers_memory_efficient_attention()注意xFormers可能和某些硬件不兼容如果启用后出现问题可以注释掉这行代码。9. 实际应用场景部署好了优化完了现在来看看这个东西到底能用来做什么。不只是玩玩而已它真的能创造价值。9.1 个人创作与学习对于个人用户来说最直接的就是AI绘画创作。你可以练习提示词工程不用花钱买API次数随便试找到最适合的表达方式创作系列作品固定一个风格生成一系列相关图片学习AI绘画原理通过调整参数直观地看到每一步对结果的影响比如你可以做一个“二十四节气”系列每个节气生成一张符合意境的图片。因为本地部署没有次数限制你可以生成几十个版本选最好的那个。9.2 电商与设计素材如果你做电商或者接设计私活这个工具能帮你省不少钱商品主图不需要请摄影师拍每个角度的照片用AI生成各种场景下的商品图营销素材节日促销、活动海报的背景图概念设计给客户看初步设计概念快速出多个方案举个例子你卖汉服可以输入“古风少女穿着红色汉服在故宫雪景中”生成一组冬季宣传图。成本几乎为零效率却很高。9.3 内容创作与自媒体做自媒体、写文章、做视频都需要配图文章配图每篇文章生成一张独特的头图视频封面根据视频内容生成吸引眼球的封面社交内容小红书、抖音的配图保持风格统一关键是你可以训练出自己独特的“画风”。比如你的公众号一直是水墨风格那就用“水墨风格”作为基础提示词生成的所有图片都保持这个调性。9.4 教育与研究如果你是学生或研究人员论文插图生成技术示意图、概念图教学材料制作课件中的示意图算法可视化把抽象概念变成直观图片比如研究神经网络可以生成“神经网络结构图信息流动科技感蓝色调”这样的图片比用PPT画的专业多了。10. 总结与后续建议走到这里你已经完成了一个完整的本地文生图服务部署。从系统准备到模型部署从服务管理到实际应用我希望这个指南能帮你少走弯路。10.1 部署要点回顾让我们快速回顾一下关键步骤环境准备Ubuntu 22.04 CUDA 11.8 Python 3.11模型部署下载FLUX.1-dev创建推理脚本优化显存使用服务管理用Supervisor守护进程确保服务稳定运行使用技巧中文提示词优化参数调整批量处理性能优化监控GPU自动清理启用加速10.2 可能遇到的问题在实际使用中你可能还会遇到模型更新FLUX.1-dev可能会有新版本关注Hugging Face页面依赖冲突如果更新了某个Python包导致问题可以回退版本硬件升级如果换了显卡可能需要重新配置CUDA驱动记住所有日志都在/root/nunchaku-flux-1-dev/supervisor.log里遇到问题先看日志。10.3 下一步可以做什么如果你已经熟练使用基础功能可以尝试训练自己的LoRA用一些特定风格的图片训练一个专属的模型适配器集成到工作流把生成接口暴露给其他程序实现自动化多模型切换部署多个不同风格的模型根据需要切换开发插件为Gradio界面添加新功能比如历史记录、收藏夹等最重要的是多实践多尝试。AI绘画的“手感”需要积累什么样的提示词能出好效果什么样的参数组合适合什么场景这些经验都是在一次次尝试中积累的。现在你的本地文生图服务已经就绪。打开浏览器输入你的服务器IP和7860端口开始创作吧。记住唯一的限制就是你的想象力——而且现在连API调用次数这个限制都没有了。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。