作者:曹庭锋、汪诚愚、吴梓恒、黄俊

布景

Stable Diffusion(SD)是一种流行的AI生成内容(AI Generated Content,AIGC)模型,能在文字输入的基础上生成各种风格多样的图画。在现在的AIGC方向,SD是开源社区最热门的模型。然而,SD可以生成高颜值的图画,非常依赖于用户提供的Prompt。假如没有好的Prompt,SD往往无法生成用户预期的图画,极大的影响用户的运用体会。在从前的工作中,阿里云机器学习PAI团队在AIGC方向做了很多探索,包括PAI-Diffusion中文模型的开源、根据Blade的推理优化等,并且推出一系列职业解决方案。为了提高SD系列模型的易用性、下降运用门槛、开释AI模型的创造潜力,咱们提出并练习完结面向SD主动Prompt美化器,使得用户只要输入一个极其简略的Prompt,就可以得到一系列通过言语模型优化过的、细节满满的Prompt,帮助您更简略地生成高颜值图画。鄙人文中,咱们具体介绍PAI主动Prompt生成模型的功能和背后的技能干货。

一键体会Prompt主动生成

在具体介绍PAI主动Prompt生成模型前,咱们首先给出体会Prompt生成作用。在以下的示例中,咱们分别比照了原始Prompt和咱们生成Prompt在Stable Diffusion v1.5底座模型上生成图画的作用。关于每个Prompt,咱们随机生成两张图片进行比照。

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

咱们也在ModelScope上构建了一个Demo以供用户体会(链接)。只要输入一个简略的Prompt,咱们的模型就可以扩写成一个细节描绘具体的Prompt,然后运用Stable Diffusion进行文图生成。

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

Prompt美化器背后的技能

在本节中,咱们具体介绍怎么练习一个优异的Prompt美化器。全体架构如下图所示:

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

底座模型

PAI-Prompt生成模型底座根据BLOOM(BigScience Language Open-science Open-access Multilingual),由BigScience练习并且开源。BLOOM具有Decoder-only模型架构,和GPT-3非常类似,最大具有1760亿参数。在咱们的模型练习时,咱们挑选了具有11亿参数的BLOOM模型进行继续练习,其原因在于它的参数量不大,当它用于线上部署时,推理速度较快,并且练习和推理本钱都相当可控,具有很高的实用价值。

无需数据标注的SFT

因为模型的练习需求高质量和低质量的Prompt对,这些数据一般很难直接去做标注。因而咱们运用如下方法主动话地搜集练习数据。

1.摘要生成:首先,咱们搜集开源的高质量Prompt数据集,作为言语模型生成的Target。在这种场景下,因为缺少低质量的Prompt,咱们可以运用ChatGPT等大模型生成Summary作为低质量的Prompt。以下是一个Summary的例子:

Instruction: Summarize this image description in 10 words or less and ignore words like archdaily, wallpaper, highly detailed, 8k, [r/earthporn]. Check English. Ignore modifiers 'by xxx', 'with xxx' or 'in xxx'. Ignore adjective.
Input: a beautiful very detailed illustration of abandoned urbex unfinished building city nature industrial architecture architecture building spaceport by caspar david friedrich, scumm bar meadow nature synthwave, archdaily, wallpaper, highly detailed, trending on artstation.
Output: of abandoned urban building in nature.
Input: portrait painting of a lost boy by cedric peyravernay and greg ruthkowski, in the style of dishonored concept art, concept design, trending on artstation \n
Output:

2.Prompt扩展:运用低质量的Prompt,运用ChatGPT生成更高质量的Prompt。以下是一个Prompt生成的例子:

Instruction: create a detailed and creative description of the 'input'. Your response should include specific details about the colors, textures, and overall composition of the painting, as well as any unique features or elements that make it stand out.
Please provide a clear and concise response that captures the essence of the painting while also encouraging creativity and originality in your description. You may consider describing the setting or environment depicted in the painting.
Input: Digital painting of a girl with candy hat.

3.图画标题生成:咱们搜集了高质量的图文对,对图画进行image captioning,生成更多可供练习模型的Prompt。

终究,得到的数据会进行美观值和一致性筛选,咱们保留质量较高的数据用于SFT。

面向SD的强化学习优化

RLHF(Reinforcement Learning from Human Feedback)对ChatGPT等大模型的作用提高有重要的作用。在咱们的运用中,咱们设计了面向Stable Diffusion的强化学习算法,优化Prompt生成模型。

关于Reward Model,咱们在得到图文对数据基础上,运用美学值评分模型来给图片打分,并运用一个言语模型来拟合对应Pprompt->美学值评分,将此作为咱们的打分模型。此外,咱们还采用最先进的强化学习算法PPO来进一步优化模型,奖励函数运用打分模型和一致性得分加权:

reward = a * score_model(prompt) + b * consistency_model(raw_prompt, prompt)

这样可以进一步加强咱们生成Prompt的美观性和图文一致性。在完结了上述三阶段练习以后,咱们的模型在小参数规模下(1.1B)的作用不亚于ChatGPT生成Prompt的作用,示例如下:

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

BeautifulPrompt:PAI推出自研Prompt美化器,赋能AIGC一键出美图

模型调用

假如想快速体会模型作用,可以拜访咱们在ModelScope社区的创空间页面链接。同时,咱们也在huggingface等开源社区上架了这一模型,运用接口如下:

from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained('alibaba-pai/pai-bloom-1b1-text2prompt-sd')
model = AutoModelForCausalLM.from_pretrained('alibaba-pai/pai-bloom-1b1-text2prompt-sd').eval().cuda()
raw_prompt = '1 girl'
input = f'Instruction: Give a simple description of the image to generate a drawing prompt.\nInput: {raw_prompt}\nOutput:'
input_ids = tokenizer.encode(input, return_tensors='pt').cuda()
outputs = model.generate(
    input_ids,
    max_length=384,
    do_sample=True,
    temperature=1.0,
    top_k=50,
    top_p=0.95,
    repetition_penalty=1.2,
    num_return_sequences=5)
prompts = tokenizer.batch_decode(outputs[:, input_ids.size(1):], skip_special_tokens=True)
prompts = [p.strip() for p in prompts]
print(prompts)

未来展望

在这一期的工作中,咱们提出并练习完结面向SD主动Prompt美化器,使得用户只要输入一个极其简略的Prompt,就可以得到一系列通过言语模型优化过的Prompt,帮助您更简略地生成高颜值图画。在未来,咱们计划增加这一类模型对各种类SD模型的适配,丰厚PAI-AIGC的算法和产品才能。

阿里灵杰回忆

  • 阿里灵杰:阿里云机器学习PAI开源中文NLP算法框架EasyNLP,助力NLP大模型落地
  • 阿里灵杰:预练习常识度量比赛夺冠!阿里云PAI发布常识预练习工具
  • 阿里灵杰:EasyNLP带你玩转CLIP图文检索
  • 阿里灵杰:EasyNLP中文文图生成模型带你秒变艺术
  • 阿里灵杰:EasyNLP集成K-BERT算法,借助常识图谱完成更优Finetune
  • 阿里灵杰:中文稀疏GPT大模型落地 — 通往低本钱&高性能多任务通用自然言语了解的要害里程碑
  • 阿里灵杰:EasyNLP玩转文本摘要(新闻标题)生成
  • 阿里灵杰:跨模态学习才能再晋级,EasyNLP电商文图检索作用刷新SOTA
  • 阿里灵杰:EasyNLP带你完成中英文机器阅读了解
  • 阿里灵杰:EasyNLP发布融合言语学和事实常识的中文预练习模型CKBERT
  • 阿里灵杰:当大火的文图生成模型遇见常识图谱,AI画像趋近于实在国际
  • 阿里灵杰:PAI-Diffusion模型来了!阿里云机器学习团队带您徜徉中文艺术海洋
  • 阿里灵杰:阿里云PAI-Diffusion功能再晋级,全链路支撑模型调优,平均推理速度提高75%以上
  • 阿里灵杰:EasyNLP集成K-Global Pointer算法,支撑中文信息抽取
  • 阿里灵杰:PAI-Diffusion中文模型全面晋级,海量高清艺术大图一键生成

免费收取 交互式建模PAI-DSW、模型练习PAI-DLC 5000CU*H核算资源包,以及价值500元模型在线服务 PAI-EAS 抵扣包。