知乎:https://zhuanlan.zhihu.com/p/661383234

1 封神框架简介

https://github.com/IDEA-CCNL/Fengshenbang-LM

FengShen可以应用在基于海量数据的预训练以及各种下游任务的finetune中。封神榜专注于NLP大模型开源,然而模型的增大带来不仅仅是训练的问题,在使用上也存在诸多不便。为了解决训练和使用的问题,FengShen参考了目前开源的优秀方案并且重新设计了Pipeline,用户可以根据自己的需求,从封神榜中选取丰富的预训练模型,同时利用FengShen快速微调下游任务。

2 太乙模型简介

太乙系列模型主要应用于跨模态场景,包括文本图像生成,蛋白质结构预测, 语音-文本表示等。2022年11月1日,封神榜开源了第一个中文版本的 stable diffusion 模型“太乙 Stable Diffusion”。

3 封神框架部署

使用个人电脑部署时,需要先安装好Anaconda

Conda 是一个独立的包管理系统和环境管理系统,可以用于安装软件包和创建虚拟环境。
Miniconda 是一个最小化的Conda安装程序,它只包含了Conda和Python解释器,用于自定义安装。
Anaconda 是一个基于Python的开源发行版,它包含了Conda、Python解释器和众多常用的科学计算、数据分析和机器学习库,旨在提供一个预装了丰富库的环境,使得用户可以方便地进行数据科学工作。
我这里选择的是AutoDL云平台来进行项目的部署

数据盘大小可根据自己数据集大小而定,建议选择一些可扩容的显卡,方便后续扩容

基础环境为RTX3090+ubuntu22.04+conda+cuda11.8+python3.10

image

1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建名为taiyi的环境,指定python版本3.10
conda create --name taiyi python=3.10
# 激活环境taiyi
conda activate taiyi
# 拉取封神框架
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 .

4 微调太乙模型

修改finetune.sh脚本的模型路径和数据集路径

1
vim Fengshenbang-LM/fengshen/examples/finetune_taiyi_stable_diffusion/finetune.sh

image

此处路径修改为AutoDL数据盘目录

image

运行finetun.sh,下载相关依赖模块,具体如下:

image
image
image

再次运行finetun.sh

image

训练完成后生成模型文件

image

5 太乙模型使用

打开jupyter notebook,输入以下示例命令行出图

1
2
3
4
5
6
7
from diffusers import StableDiffusionPipeline
# 修改为训练好的模型路径
pipe = StableDiffusionPipeline.from_pretrained("IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1").to("cuda")

prompt = '飞流直下三千尺,油画'
image = pipe(prompt, guidance_scale=7.5).images[0]
image.save("飞流.png")

以我的训练为例,即找到训练好的模型文件hf_out_0_2的路径,如下图所示

image