1. 项目概述
今天我要分享的是如何在本地运行Flux项目的GitHub源码。Flux是一个基于深度学习的开源项目,主要用于图像生成和处理任务。作为一个经常折腾各种AI项目的开发者,我发现很多人在运行这类开源项目时都会遇到各种环境配置和模型下载的问题。下面我就把完整的配置过程记录下来,希望能帮到有需要的朋友。
这个项目需要配置Python环境、安装依赖库、下载预训练模型,并对源码进行一些必要的修改。整个过程涉及conda环境管理、Git操作、模型下载和路径配置等环节。我会尽量详细地说明每个步骤的注意事项和可能遇到的问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备
2.1 克隆代码仓库
首先我们需要从GitHub克隆项目代码。如果你在国内,可能会遇到GitHub访问速度慢的问题。这里有两种解决方案:
- 使用学术加速(如果有的话):
bash复制source /etc/network_turbo
- 取消代理设置(如果之前设置过):
bash复制unset http_proxy && unset https_proxy
然后克隆仓库:
bash复制git clone https://github.com/black-forest-labs/flux.git
cd flux
提示:建议在Linux环境下运行这个项目,Windows可能会遇到一些依赖问题。如果必须在Windows上运行,可以考虑使用WSL2。
2.2 创建Python环境
我推荐使用conda来管理Python环境,这样可以避免与系统Python环境产生冲突:
bash复制conda create -n flux python=3.10
conda activate flux
安装项目依赖:
bash复制pip install -e ".[all]"
2.3 调整依赖版本
由于深度学习项目对库版本比较敏感,我们需要手动调整一些关键库的版本:
bash复制pip install torch==2.8.0 torchvision==0.23.0 transformers==4.45.2 diffusers=0.30.1
注意:这些版本是经过项目验证的稳定版本,随意升级可能会导致兼容性问题。特别是PyTorch版本,不同版本间的API变化可能会影响模型运行。
3. 模型下载与配置
3.1 使用hfd下载工具
这个项目需要下载多个预训练模型,文件都比较大。我推荐使用hfd这个下载工具,它支持断点续传,对国内用户也比较友好:
bash复制wget https://hf-mirror.com/hfd/hfd.sh
chmod a+x hfd.sh
export HF_ENDPOINT=https://hf-mirror.com
3.2 下载所需模型
项目需要下载以下模型:
- black-forest-labs/FLUX.1-dev
- google/t5-v1_1-xxl
- openai/clip-vit-large-patch14
- mistral-community/pixtral-12b
- Falconsai/nsfw_image_detection
下载命令示例:
bash复制./hfd.sh mistral-community/pixtral-12b \
--hf_username YOUR_HF_USERNAME \
--hf_token YOUR_HF_TOKEN \
--local-dir /your/model/path/
提示:1. 你需要替换YOUR_HF_USERNAME和YOUR_HF_TOKEN为你自己的HuggingFace账号信息
2. 模型下载路径建议选择有足够空间的目录,这些模型加起来可能有几十GB
3. 下载大模型时建议使用screen或tmux保持会话,避免网络中断导致下载失败
4. 源码修改
4.1 修改模型路径
下载完模型后,我们需要修改源码中的模型路径指向我们实际的存储位置。主要需要修改的文件是flux/src/flux/util.py:
python复制def load_t5(device: str | torch.device = "cuda", max_length: int = 512) -> HFEmbedder:
return HFEmbedder("/your/model/path/t5-v1_1-xxl", max_length=max_length, torch_dtype=torch.bfloat16).to(device)
def load_clip(device: str | torch.device = "cuda") -> HFEmbedder:
return HFEmbedder("/your/model/path/clip-vit-large-patch14", max_length=77, torch_dtype=torch.bfloat16).to(device)
def load_flow_model(name: str, device: str | torch.device = "cuda", verbose: bool = True) -> Flux:
config = configs[name]
ckpt_path = "/your/model/path/FLUX.1-dev/flux1-dev.safetensors"
def load_ae(name: str, device: str | torch.device = "cuda") -> AutoEncoder:
config = configs[name]
ckpt_path ="/your/model/path/FLUX.1-dev/ae.safetensors"
4.2 其他必要修改
还需要修改flux/src/flux/modules/conditioner.py文件中的CLIP模型路径检查:
python复制self.is_clip = version.startswith("/your/model/path/clip")
重要:所有路径修改必须保持一致,建议使用绝对路径。路径中的斜杠方向也要注意,Linux用正斜杠(/),Windows用反斜杠()。
5. 常见问题与解决方案
5.1 模型下载失败
问题现象:使用hfd下载时连接超时或速度很慢
解决方案:
- 检查HF_ENDPOINT是否设置为https://hf-mirror.com
- 尝试更换网络环境
- 分时段下载,凌晨时段通常速度较快
- 可以尝试手动下载模型文件,然后放到指定目录
5.2 依赖冲突
问题现象:运行时报错提示某些库版本不兼容
解决方案:
- 严格按照项目要求的版本安装依赖
- 可以创建一个全新的conda环境重新安装
- 使用
pip check命令检查依赖冲突
5.3 CUDA内存不足
问题现象:运行时报CUDA out of memory错误
解决方案:
- 检查GPU显存是否足够(这些模型需要至少12GB显存)
- 尝试减小batch size
- 可以尝试使用CPU模式(但速度会很慢)
5.4 路径相关问题
问题现象:运行时报错找不到模型文件
解决方案:
- 检查所有路径修改是否正确
- 确保路径有读取权限
- Windows用户注意路径中的反斜杠需要转义或使用原始字符串
6. 项目运行与测试
完成以上所有配置后,就可以尝试运行项目了。具体的运行命令取决于你想使用的功能,可以参考项目的README或示例代码。
这里提供一个简单的测试方法:
python复制from flux import Flux
# 初始化模型
model = Flux.load_pretrained("flux1-dev")
# 进行推理
# (具体代码根据项目功能而定)
提示:第一次运行时会进行一些初始化工作,可能需要较长时间。建议先使用小规模的输入进行测试,确保一切正常后再进行大规模运算。
7. 性能优化建议
如果你的硬件配置不是很高,可以考虑以下优化措施:
- 使用半精度:在模型加载时指定
torch_dtype=torch.float16可以减少显存占用 - 启用缓存:HuggingFace的transformers支持模型缓存,可以避免重复下载
- 内存映射:对于大模型,可以使用
device_map="auto"参数让库自动优化设备分布 - 梯度检查点:训练时可以启用梯度检查点来节省显存
8. 开发建议
如果你想基于这个项目进行二次开发,我有几点建议:
- 版本控制:建议使用git管理你的修改,方便回滚和合并上游更新
- 环境隔离:保持开发环境与项目环境的隔离,避免污染
- 逐步验证:每做一个修改都进行小规模测试,确保不会引入新问题
- 文档记录:详细记录你的修改内容和原因,方便后续维护
我在实际配置过程中发现,这个项目对硬件要求较高,建议至少准备16GB以上显存的GPU。如果显存不足,可以考虑使用模型并行或者减少输入尺寸。另外,下载所有模型可能需要100GB以上的磁盘空间,提前做好规划很重要。
