Skip to content

Latest commit

 

History

History
231 lines (144 loc) · 9.76 KB

README_zh.md

File metadata and controls

231 lines (144 loc) · 9.76 KB

Docker Image CI

[ English | 中文 ]

简介

使用 FastAPI 构建的 Fooocus 的 API。

当前支持的 Fooocus 版本: 2.1.860

Fooocus

该部分出自 Fooocus 项目。

Fooocus 是一个图像生成软件 (基于 Gradio)。

Fooocus 是对于 Stable Diffusion 和 Midjourney 的重新思考以及设计:

  • 我们学习了 Stable Diffusion 的开源、免费、离线运行。

  • 我们学习了 Midjourney 的专注,不需要手动调整,专注于描述词以及图像。

Fooocus 包含了许多内部优化以及质量改进。 忘记那些复杂困难的技术参数,享受人机交互带来的想象力的突破以及探索新的思维

Fooocus-API

可能你已经尝试过使用 Gradio client 来调用 Fooocus,对我来说可真是不咋地

Fooocus API 使用 FastAPI 构建了一系列 REST API 来使用 Fooocus。现在,你可以用任何你喜欢的编程语言来调用 Fooocus 的强大能力。

此外,我们还提供了详细的 文档示例代码

开始

在 Replicate 上运行

现在你可以在 Replicate 上使用 Fooocus-API,在这儿: konieshadow/fooocus-api.

使用预先调整参数的:

我认为这是更简单的体验 Fooocus's 强大的方法

自托管

需要 Python >= 3.10,或者使用 conda、venv 创建一个新的环境

硬件需求来源于 Fooocus。 详细要求可以看这里

conda

按照下面的步骤启动一个 app:

conda env create -f environment.yaml
conda activate fooocus-api

然后,执行 python main.py 启动 app ,默认情况下会监听在 http://127.0.0.1:8888

如果是第一次运行,程序会自动处理完成剩余的环境配置、模型下载等工作,因此会等待一段时间。也可以预先配置好环境、下载模型,后面会提到。

venv

和使用 conda 差不多,创建虚拟环境,启动 app ,等待程序完成环境安装、模型下载

# windows
python -m venv venv
.\venv\Scripts\Activate
# linux
python -m venv venv
source venv/bin/activate

然后执行 python main.py

预下载及安装

如果想要手动配置环境以及放置模型,可以参考下面的步骤

在创建完 conda 或者 venv 环境之后,按照下面的步骤手动配置环境、下载模型

首先,安装 requirements: pip install -r requirements.txt

然后安装 pytorch+cuda: pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121 更多安装信息在这儿,

关于 pytorch 和 cuda 的版本,Fooocus API 使用的是 Fooocus 推荐的版本,目前是 pytorch2.1.0+cuda12.1。如果你是个"犟种"非要用其他版本,我测试过也是可以的,不过启动的时候记得加上 --skip-pip,否则程序会自动替换为推荐版本。

然后创建一个名为 repositories 的目录,将 https://github.com/lllyasviel/Fooocus 克隆到其中。注意必须使用 git clonedownload zip下载解压不包含Git信息,无法正常运行。如果你有一个已经安装完成的 Fooocus,查看这里

最后,把下载的模型放到这个目录 repositories\Fooocus\models

这里是一个启动必须下载的模型列表 (也可能不一样如果 启动参数 不同的话):

国内不好下的到 这儿下载, 提取码: D4Mk

已经有安装好的 Fooocus

如果你已经有一个安装好的且运行正常的 Fooocus, 推荐的方式是复用模型, 只需要将 Fooocus 根目录下的 config.txt 文件复制到 Fooocus API 的根目录即可。 查看 Customization 获取更多细节.

使用这种方法 Fooocus 和 Fooocus API 会同时存在,独立运行互不干扰。

除非你能确保已安装的 Fooocus 目录是一个 Git 仓库,否则不推荐直接将其复制到 repositories 目录。

使用Docker启动

开始之前,先安装 NVIDIA Container Toolkit,这是 Docker 可以使用 GPU 的前提。

运行

docker run -d --gpus=all \
    -e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
    -e NVIDIA_VISIBLE_DEVICES=all \
    -p 8888:8888 konieshadow/fooocus-api

一个更实用的例子:

mkdir ~/repositories
mkdir -p ~/.cache/pip

docker run -d --gpus=all \
    -e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
    -e NVIDIA_VISIBLE_DEVICES=all \
    -v ~/repositories:/app/repositories \
    -v ~/.cache/pip:/root/.cache/pip \
    -p 8888:8888 konieshadow/fooocus-api

这里把 repositoriespip cache 映射到了本地

你还可以添加 -e PIP_INDEX_URL={pypi-mirror-url} 选项来更换 pip 源

命令行参数

  • -h, --help 显示本帮助并退出
  • --port PORT 设置监听端口,默认:8888
  • --host HOST 设置监听地址,默认:127.0.0.1
  • --base-url BASE_URL 设置返回结果中的地址,默认是: http://host:port
  • --log-level LOG_LEVEL Uvicorn 中的日志等级,默认:info
  • --sync-repo SYNC_REPO 同步 Fooocus 仓库到本地,skip 用于在启动时跳过同步,only 只同步不启动程序
  • --skip-pip 跳过启动时的 pip 安装
  • --preload-pipeline 启动 http server 之前加载 pipeline
  • --queue-size QUEUE_SIZE 工作队列大小,默认是 100 ,超过队列的请求会返回失败
  • --queue-history QUEUE_HISTORY 保留的作业历史,默认 0 即无限制,超过会被删除,包括生成的图像
  • --webhook-url WEBHOOK_URL 通知生成结果的 webhook 地址,默认为 None
  • --persistent 持久化历史记录到SQLite数据库,默认关闭
  • --apikey APIKEY 设置 apikey 以启用安全api,默认值:无

从 v0.3.25 开始, Fooocus 的命令行选项也被支持,你可以在启动时加上 Fooocus 支持的选项

比如(需要更大的显存):

python main.py --all-in-fp16 --always-gpu

完成的 Fooocus 命令行选项可以在这儿找到。

更新日志

[24/01/31] v0.3.30 : 增加接口认证功能, 可以通过启动参数 --apikey APIKEY 来设置 apikey

[24/01/26] v0.3.30 : 优化任务执行底层逻辑。调整默认队列大小为100

[24/01/10] v0.3.29 : 支持将历史生成数据持久化到数据库,并且支持从数据库中读取历史数据

[24/01/09] v0.3.29 : Image Prompt Mixing requirements implemented, With this implementation, you can send image prompts, and perform inpainting or upscale with a single request.

[24/01/04] v0.3.29 : 合并了 Fooocus v2.1.860

[24/01/03] v0.3.28 : 增加 text-to-image-with-ip 接口

[23/12/29] v0.3.27 : 增加 describe 接口,现在你可以使用图像反推提示词了

[23/12/29] v0.3.27 : 增加查询历史 API。增加 webhook_url 对所有请求的支持

[23/12/28] v0.3.26 : 重大变更: 添加 webhook 选项以支持生成完毕后的事件通知。将 async 的任务 ID 由数字改为 UUID 来避免应用重启后造成的混乱

[23/12/22] v0.3.25 : 增加对 Fooocus 命令行选项的支持 重大变更: 移除disable-private-log 选项,你可以使用 Fooocus 原生的 --disable-image-log 来达到同样的效果

更早的日志可以在 release page 找到

Apis

你可以在这里找到所有的 API 细节

License

感谢 💜

感谢所有为改进 Fooocus API 做出贡献和努力的人。再次感谢 ✨ 社区万岁 ✨!