背景

私有化部署大模型,解决数据安全问题

全球知名的AI图像生成工具Midjourney自诞生之日起,就引来了无数用户的关注。但是它是收费的,最低月费用为10美元,可生成约200张图像;30美元则可生成约900张图像;60美元则可生成约1200张图像。但Stable Diffusion是一款开源且免费使用的模型,可以在本地部署。总的来说,要是你不是职业画家,Stable diffusion就够用了;要是你是职业画手,建议用Midjourney,因为他画出来的还是很精细的。所以本文基于开源的Fengshenbang-LM来实现一个文生图的平台。Fengshenbang-LM实现了Stable diffusion模型,而且中文识别很好,此外Midjourney的中文识别不好,这也是Fengshenbang-LM主打的

Fengshenbang-LM简介

Fengshenbang-LM(封神榜大模型)是IDEA研究院认知计算与自然语言研究中心主导的大模型开源体系,志在成为中文AIGC和认知智能的基础设施。从IDEA研究院的创院理事长是沈向洋,可以知道这个研究机构的实力。这个系列大模型包含有以下内容:

系列名称 需求 适用任务 参数规模 备注
姜子牙 通用 通用大模型 >70亿参数 通用大模型“姜子牙”系列,具备翻译,编程,文本分类,信息抽取,摘要,文案生成,常识问答和数学计算等能力
太乙 特定 多模态 8千万-10亿参数 应用于跨模态场景,包括文本图像生成,蛋白质结构预测, 语音-文本表示等
二郎神 通用 语言理解 9千万-39亿参数 处理理解任务,拥有开源时最大的中文bert模型,2021登顶FewCLUE和ZeroCLUE
闻仲 通用 语言生成 1亿-35亿参数 专注于生成任务,提供了多个不同参数量的生成模型,例如GPT2等
燃灯 通用 语言转换 7千万-50亿参数 处理各种从源文本转换到目标文本类型的任务,例如机器翻译,文本摘要等
余元 特定 领域 1亿-35亿参数 应用于领域,如医疗,金融,法律,编程等。拥有目前最大的开源GPT2医疗模型
-待定- 特定 探索 -未知- 我们希望与各技术公司和大学一起开发NLP相关的实验模型。目前已有:周文王

下面我们详细介绍下,如何部署推理模型。

Fengshenbang-LM部署与测试

我们使用的是windows系统,linux系统相对好部署。windows上有些python库的兼容性有些问题,我们会逐步给出具体的操作。

  1. 克隆项目,并安装依赖
git clone https://github.com/IDEA-CCNL/Fengshenbang-LM.git
cd Fengshenbang-LM
git submodule init
git submodule update
# submodule是我们用来管理数据集的fs_datasets,通过ssh的方式拉取,如果用户没有在机器上配置ssh-key的话可能会拉取失败。
# 如果拉取失败,需要到.gitmodules文件中把ssh地址改为https地址即可。
pip install --editable .
  1. 下载大模型
    首先从huggingface上克隆模型项目。
git clone https://huggingface.co/IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1

由于模型18G,需要Git LFS(Git Large File Storge,Git 大文件储存)来下载。下面介绍windows下的安装方式。
下载git-lfs windows客户端
安装完成后,通过cmd命令行运行如下命令。

cd Taiyi-Stable-Diffusion-1B-Chinese-v0.1
git lfs install
git lfs pull
  1. 生成图片
    我们一口气生成4张照片,提示词是:白雪公主形象,脸漂亮,白皙的皮肤,东方的面孔,金色头发,3D,4k壁纸,复杂
from diffusers import StableDiffusionPipeline

import torch

if torch.cuda.is_available():
    device = "cuda"
elif hasattr(torch.backends, "mps") and torch.backends.mps.is_available():
    device = "mps"
else:
    device = "cpu"

pipe = StableDiffusionPipeline.from_pretrained("D:/LanJing/Fengshenbang-LM/Taiyi-Stable-Diffusion-1B-Chinese-v0.1",local_files_only=True).to(device)

prompt = '白雪公主形象,脸漂亮,白皙的皮肤,东方的面孔,金色头发,3D,4k壁纸,复杂'
images = pipe(prompt,num_images_per_prompt=4, guidance_scale=7.5).images
a = 1
for image in images:
    image.save(str(a)+".png")
    a = a+1

白雪公主形象1
白雪公主形象2

上面是通过编程的方式调用了文生图的接口,传统的SD开源社区也提供了一个web ui来方便非编程人员使用。下面给出具体的安装与测试

Taiyi stable-diffusion-webui 部署

原有的stable-diffusion-webui只支持英文,封神榜团队做了修改,让模型支持了中文输入。感谢封神团队

1.下载代码

git clone https://github.com/IDEA-CCNL/stable-diffusion-webui.git
cd stable-diffusion-webui

2.运行并下载依赖

webui.bat --ckpt repositories/Taiyi-Stable-Diffusion-1B-Chinese-v0.1/Taiyi-Stable-Diffusion-1B-Chinese-v0.1.ckpt   --listen --port 12345

其中Taiyi-Stable-Diffusion-1B-Chinese-v0.1.ckpt在上面的下载大模型部分有介绍如何下载,然后把这个模型放在stable-diffusion-webui项目的repositories/Taiyi-Stable-Diffusion-1B-Chinese-v0.1下面

  1. 解决依赖问题

解决RuntimeError: Couldn’t install gfpgan

pip install git+https://github.com/TencentARC/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379 gfpgan

解决RuntimeError: Couldn’t install clip

pip install git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1 clip

解决RuntimeError: Couldn’t clone CodeFormer.

pip install git+https://github.com/sczhou/CodeFormer.git@5f07acebd7168ff8c02d74b19b8f0c2c01935b68 codeformer

解决ImportError: cannot import name ‘_compare_version’ from ‘torchmetrics.utilities.imports’ (D:\LanJing\stable-diffusion-webui\venv\lib\site-packages\torchmetrics\utilities\imports.py)

pip install torchmetrics==0.11.4

解决raise RuntimeError(“Cannot add middleware after an application has started”)

pip install fastapi==0.90.1

解决AttributeError: module ‘os’ has no attribute ‘statvfs’

修改 stable-diffusion-webui\modules\images.py第422行
max_length = os.statvfs(dir_name).f_namemax
改为 max_length = 255

Taiyi stable-diffusion-webui 测试

在这里插入图片描述

引用链接

  1. https://huggingface.co/docs/diffusers/v0.20.0/en/api/pipelines/stable_diffusion/text2img
  2. https://github.com/IDEA-CCNL/stable-diffusion-webui/blob/master/README.md
  3. https://github.com/IDEA-CCNL/Fengshenbang-LM
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐