中山大学开源Diffusion模子不同代码框架,增长AIGC规模化运用
时间:2024-11-02 10:19:56 出处:探索阅读(143)
近些年来 ,中山增长基于散漫模子(Diffusion Models)的大学代码图像天生模子层出不穷,揭示出使人惊艳的开源框架天生下场。可是不同,现有相关钻研模子代码框架存在偏激碎片化的规模下场 ,缺少不同的化运框架系统,导致泛起「迁移难」、中山增长「门槛高」、大学代码「品质差」的开源框架代码实现难题 。
为此 ,不同中山大学人机物智能融会试验室(HCP Lab)构建了 HCP-Diffusion 框架,规模零星化地实现为了模子微调、化运特色化磨炼 、中山增长推理优化、大学代码图像编纂等基于 Diffusion 模子的开源框架相关算法,妄想如图 1 所示 。
图 1 HCP-Diffusion 框架妄想图,经由不同框架不同现有 diffusion 相关措施 ,提供多种模块化的磨炼与推理优化措施。
HCP-Diffusion 经由格式不同的配置装备部署文件调配各个组件以及算法,大幅后退了框架的锐敏性以及可扩展性 。开拓者像搭积木同样组合算法,而无需一再实今世码细节。
好比 ,基于 HCP-Diffusion,咱们可能经由重大地更正配置装备部署文件即可实现 LoRA,DreamArtist,ControlNet 等多种罕有算法的部署与组合 。这不光飞腾了立异的门槛 ,也使患上框架可能兼容种种定制化妄想。
HCP-Diffusion 代码工具 :https://github.com/7eu7d7/HCP-Diffusion
HCP-Diffusion 图形界面 :https://github.com/7eu7d7/HCP-Diffusion-webui
HCP-Diffusion :功能模块介绍
框架特色
HCP-Diffusion 经由将当初主流的 diffusion 磨炼算法框架模块化,实现为了框架的通用性 ,主要特色如下:
不同架构:搭建 Diffusion 系列模子不同代码框架
算子插件:反对于数据、磨炼、推理 、功能优化等算子算法 ,如 deepspeed, colossal-AI 以及 offload 等减速优化
一键配置装备部署:Diffusion 系列模子可经由高锐敏度地更正配置装备部署文件即可实现模子实现
一键磨炼 :提供 Web UI,一键磨炼、推理
数据模块
HCP-Diffusion 反对于界说多个并行数据集,每一个数据集可接管差距的图像尺寸与标注格式,每一次磨炼迭代会从每一个数据会集各抽取一个 batch 妨碍磨炼,如图 2 所示 。此外,每一个数据集可配置装备部署多种数据源,反对于 txt 、json 、yaml 等标注格式或者自界说标注格式 ,具备高度锐敏的数据预处置与加载机制 。
图 2 数据集妄想展现图数据集处置部份提供带自动聚类的 aspect ratio bucket,反对于处置图像尺寸各异的数据集。用户无需对于数据集尺寸做格外处置以及对于齐,框架会凭证宽高比或者分说率自动抉择最优的分组方式。该技术大幅飞腾数据处置的门槛 ,优化用户体验 ,使开拓者更专一于算法自己的立异。
而对于图像数据的预处置 ,框架也兼容 torch vision, albumentations 等多种图像处置库。用户可能凭证需要在配置装备部署文件中间接配置装备部署预处置方式,或者是在此根基上拓展自界说的图像处置措施。
HCP-Diffusion 在文本标注方面 ,妄想了锐敏且清晰的 prompt 模板尺度 ,可支端庄大多样的磨炼措施与数据标注。其对于运用上述配置装备部署文件 source 目录下的 word_names,概况可自界说下图大括号中的特殊字符对于应的嵌入词向量与种别形貌 ,以与 DreamBooth、DreamArtist 等模子兼容。
而且对于文本标注 ,也提供了按句擦除了 (TagDropout) 或者按句打乱 (TagShuffle) 等多种文本增强措施 ,可能削减图像与文本数据间的过拟分解绩,使天生的图像更多样化。
模子框架模块
HCP-Diffusion 经由将当初主流的 diffusion 磨炼算法框架模块化 ,实现为了框架的通用性 。详细而言 ,Image Encoder,Image Decoder 实现图像的编解码,Noise Generator 发生前向历程的噪声,Diffusion Model 实现份散历程,Condition Encoder 对于天生条件妨碍编码 ,Adapter 微调模子与卑劣使命对于齐,positive 与 negative 双通道代表正负条件对于图像的操作天生 。
如图 5 所示,HCP-Diffusion 在配置装备部署文件中经由浅易的组合 ,即可实现 LoRA 、ControlNet、DreamArtist 等多种主流磨炼算法 。同时反对于对于上述算法妨碍组合,好比 LoRA 以及 Textual Inversion 同时磨炼 ,为 LoRA 绑定专有触发词等。此外,经由插件模块 ,可能轻松自界说恣意插件,业已经兼容当初所有主流措施接入 。经由上述的模块化,HCP-Diffusion 实现为了对于恣意主流算法的框架搭建,飞腾了开拓门槛,增长了模子的协同立异 。
HCP-Diffusion 将 LoRA 、ControlNet 等种种 Adapter 类算法不同抽象为模子插件 ,经由界说一些通用的模子插件基类,可能将所有这种算法不同看待 ,飞腾用户运用老本以及开拓老本 ,将所有 Adapter 类算法不同 。
框架提供四种规范的插件,可能轻松反对于当初所有主流算法:
+ SinglePluginBlock: 单层插件,凭证该层输入修正输入 ,好比 lora 系列。反对于正则表白式 (re: 前缀) 界说插入层 , 不反对于 pre_hook: 前缀。
+ PluginBlock: 输入层以及输入层都惟独一个,好比界说残差衔接 。反对于正则表白式 (re: 前缀) 界说插入层, 输入输入层都反对于 pre_hook: 前缀。
+ MultiPluginBlock: 输入层以及输入层都可能有多个,好比 controlnet。不反对于正则表白式 (re: 前缀), 输入输入层都反对于 pre_hook: 前缀 。
+ WrapPluginBlock: 交流原有模子的某个层,将原有模子的层作为该类的一个工具