阿里云PAI-Diffusion功能再升级,全链路支持模型调优,平均推理速度提升75%以上

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 本⽂首先介绍如何体验PAI-Diffusion模型以及其在线部署、加速推理能力。其次,我们简单回顾了PAI-Diffusion模型的架构,之后详细介绍了在EasyNLP算法框架中对上述模型进行调优的全链路支持。

导读

随着Stable Diffusion模型在AI圈的爆火,AI生成内容(AI Generated Content,AIGC)的应用呈现出井喷式的增长趋势。其中,文图生成(Text-to-image Generation)任务是最流行的AIGC任务之一,旨在生成与给定文本对应的图像。在先前的工作中,阿里云机器学习PAI团队开源了PAI-Diffusion系列模型(看这里),包括一系列通用场景和特定场景的文图生成模型,例如古诗配图、二次元动漫、魔幻现实等。这些模型的Pipeline除了包括标准的Latent Diffusion Model,还集成了PAI团队先前提出的中文CLIP跨模态对齐模型(看这里),及图像超分模型,使得模型可以生成符合中文文本描述的、各种场景下的高清大图。由于在特定场景下,用户往往有对这些中文Diffusion模型调优(Fine-tune)的需求,而且在线上部署方面,由于Diffusion模型推理速度比较慢,而且需要耗费较多的硬件资源。在本次的工作中,我们在EasyNLP算法框架中,对先前提出的PAI-Diffusion模型功能进行升级,全链路支持模型调优。在模型推理方面,结合由PAI自主研发的编译优化工具 PAI-Blade,支持对PAI-Diffusion模型的端到端的导出和推理加速,在A10机器下做到了1s内的中文大图生成。

本⽂首先介绍如何体验PAI-Diffusion模型以及其在线部署、加速推理能力。其次,我们简单回顾了PAI-Diffusion模型的架构,之后详细介绍了在EasyNLP算法框架中对上述模型进行调优的全链路支持。

轻松体验PAI-Diffusion模型

首先让我们轻松体验PAI-Diffusion模型。

在线体验

PAI-Diffusion模型可以用于各种风格的艺术画的生成。这个模型的参数量仅10亿,使用一张P100 GPU显卡,就可以生成1024*1024的高清大图,示例如下。

image.png

image.png

image.png

image.png

image.png


我们在AI模型开源社区ModelScope的创空间上线了我们的一个PAI-Diffusion模型(体验链接),欢迎广大用户体验。

PAI-Diffusion模型架构回顾

我们简单回顾一下PAI-Diffusion模型的技术架构。简单的说,PAI-Diffusion模型是面向中文的、基于隐式扩散模型(Latent Diffusion Model, LDM)的文图生成模型。因为中英文在文化和表达上具有很大的差异性,产出的模型通常无法建模中文特有的现象。PAI-Diffusion模型由阿里云机器学习(PAI)团队发布并开源,除了可以用于通用文图生成场景,还具有一系列特定场景的定制化中文Diffusion模型,包括古诗配图、二次元动漫、魔幻现实等。PAI-Diffusion的模型Pipeline架构,包括中文CLIP模型、Diffusion模型、图像超分模型等:


具体地说,中文CLIP模型把中文文本输入转化成 Embedding 向量,我们采用EasyNLP中文CLIP跨模态对齐模型(看这里)的Text Transformer作为Text Encoder。我们把中文CLIP模型的输出作为LDM的输入,训练模型生成文本对应的图片。可选地,PAI-Diffusion模型链路中还集成了ESRGAN作为图像超分模型,提升图片的分辨率。

PAI-Diffusion模型加速推理技术

PAI-Blade 采用多种模型编译优化技术,可以对基于Tensorflow/Pytorch 训练的模型进行推理优化加速。

针对基于PAI-EasyNLP的 PAI-Diffusion模型 和社区的Stable-Diffusion模型的推理进行测速分析,针对推理的主要部分,引入了编译优化和flashattention的推理加速技术,成功将整个推理链路平均提速75%以上,具体加速比视推理步数略有不同,详细可以参考下表(测试推理机器 Nvidia-A10,输出图片分辨率 512x512):

pai-diffusion原版

pai-blade 加速后

加速比

采样步数

1.61s

0.97s

66%

20

3.02s

1.62s

86%

50

综上可以看到, 引入PAI自主研发的模型推理加速工具Blade 能大幅度提升DiffusionModel的推理速度,降低服务延迟,节省计算资源。

PAI-Diffusion模型的微调和微调后模型部署

在本次更新中,我们在PAI-EasyNLP算法框架对PAI-Diffusion模型的调优做了全面支持。我们介绍如何在PAI-Diffusion模型的训练流程,以及如何在PAI的产品中部署上述微调后的模型用于在线服务。

安装EasyNLP

用户可以直接参考链接的说明安装EasyNLP算法框架。

数据准备

首先准备训练数据与验证数据,为tsv文件。这⼀⽂件包含以制表符\t分隔的三列(idx, text, imgbase64),第一列是文本编号,第二列是文本,第三列是对应图片的base64编码。样例如下:

64b4109e34a0c3e7310588c00fc9e157  韩国可爱日系袜子女中筒袜春秋薄款纯棉学院风街头卡通兔子长袜潮  iVBORw0KGgoAAAAN...MAAAAASUVORK5CYII=

为了方便开发者,我们也提供了转换图片到base64编码的示例代码:

import base64
from io import BytesIO
from PIL import Image
img = Image.open(fn)
img_buffer = BytesIO()
img.save(img_buffer, format=img.format)
byte_data = img_buffer.getvalue()
base64_str = base64.b64encode(byte_data) # bytes

下列文件已经完成预处理,可用于测试:

# train
https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/painter_text2image/T2I_train.tsv
# valid
https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/painter_text2image/T2I_val.tsv
# test
https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/painter_text2image/T2I_test.tsv

模型微调

我们采用以下命令对PAI-Diffusion模型进行fine-tune:

easynlp \
    --mode=train \
    --worker_gpu=1 \
    --tables=T2I_train.tsv,T2I_val.tsv \
    --input_schema=idx:str:1,text:str:1,imgbase64:str:1 \
    --first_sequence=text \
    --second_sequence=imgbase64 \
    --checkpoint_dir=./finetuned_model \
    --learning_rate=4e-5 \
    --epoch_num=3 \
    --random_seed=42 \
    --logging_steps=100 \
    --save_checkpoint_steps=1000 \
    --sequence_length=288 \
    --micro_batch_size=16 \
    --app_name=latent_diffusion \
    --user_defined_parameters='
        pretrain_model_name_or_path=alibaba-pai/pai-diffusion-general-large-zh
    reset_model_state_flag=True
      ' 

训练完成后模型被保存到./finetune_model/。

模型离线推理

模型训练完毕后,我们可以将其用于图片的生成,示例如下:

easynlp \
      --mode=predict \
      --worker_gpu=1 \
      --tables=T2I_test.tsv \
      --input_schema=idx:str:1,text:str:1 \
      --output_schema=text \
      --outputs=./output.tsv \
      --first_sequence=text \
      --checkpoint_dir=./finetuned_model \
      --random_seed=42 \
      --logging_steps=100 \
      --save_checkpoint_steps=500 \
      --sequence_length=32 \
      --micro_batch_size=16 \
      --app_name=latent_diffusion \
      --user_defined_parameters='
          n_samples=2
      write_image=True
      image_prefix=./output/
      '

直接在线部署

用户可以使用PAI-EAS自定义服务部署方式,使用如下config部署我们已经打包好的相关processor进行服务部署即可。我们提供了一个测试模型以供体验模型的推理速度,部署在A10/T4/V100 GPU的config参考如下,您需要将resource字段替换成自己的资源组:

{
    "baseimage": "registry.cn-shanghai.aliyuncs.com/eas/eas-worker-amd64:0.6.8",
    "data_image": "registry.cn-shanghai.aliyuncs.com/pai-ai-test/eas-service:ch_ldm_v100",
    "metadata": {
        "cpu": 15,
        "gpu": 1,
        "instance": 1,
        "memory": 50000,
        "name": "ch_ldm_easynlp",
        "resource": "请替换成自己的资源组",
        "rpc": {
            "keepalive": 50000,
            "worker_threads": 5
        }
    },
    "model_path": "http://pai-vision-exp.oss-cn-zhangjiakou.aliyuncs.com/wzh-zhoulou/dl_eas_processor/ch_ldm/ch_ldm_blade_220206/eas_model_20230206_noblade.tar.gz",
    "processor_entry": "./app.py",
    "processor_path": "http://pai-vision-exp.oss-cn-zhangjiakou.aliyuncs.com/wzh-zhoulou/dl_eas_processor/ch_ldm/ch_ldm_blade_220206/eas_processor_20230206.tar.gz",
    "processor_type": "python",
    "name": "ch_ldm_easynlp"
} 

如果您需要体验Blade优化后的推理速度,可以在A10 GPU中进行部署,用户需要将上述model_path的值替换为http://pai-vision-exp.oss-cn-zhangjiakou.aliyuncs.com/wzh-zhoulou/dl_eas_processor/ch_ldm/ch_ldm_blade_220206/eas_model_20230206.tar.gz

当服务部署成功后,可以使用如下格式的request body进行测试:

{
    "text": "测试文本",
    "num_inference_steps": 20,
    "num_images": 1
}

在线服务返回示例如下:

{
    "text": "测试文本",
    "images_base64": ["...", "...", ...]
}

images_base64字段返回生成图像的base64编码,生成图像数量由request body中的参数指定。

微调后部署

用户也可以使用EasyNLP进行微调训练后部署,需要将如下训练后的ckpt 打包替换上面json中的model_path字段:

打包命令示例如下:

cd finetuned_model/
tar czf finetuned_model.tar.gz config.json pytorch_model.bin RRDB_ESRGAN_x4.pth vocab.txt

然后,采用前述config 将模型部署到PAI-EAS,建议使用的GPU型号为A10/T4/V100。

如果用户需要使用Blade 加速,支持使用A10/A100 GPU机器资源进行部署,请联系我们获取Blade相关教程。

未来展望

在这一期的工作中,我们对PAI-Diffusion模型的功能进行重大升级,在EasyNLP框架中(https://github.com/alibaba/EasyNLP)支持全链路模型的调优和在线部署,使得用户能一键实现模型的调优,并且在阿里云PAI平台上便捷部署在线服务。此外,阿里云机器学习PAI团队也在持续推进中文多模态模型的自研工作,欢迎用户持续关注我们,也欢迎加入我们的开源社区,共建中文NLP和多模态算法库!

Github地址:https://github.com/alibaba/EasyNLP

Reference

  1. Chengyu Wang, Minghui Qiu, Taolin Zhang, Tingting Liu, Lei Li, Jianing Wang, Ming Wang, Jun Huang, Wei Lin. EasyNLP: A Comprehensive and Easy-to-use Toolkit for Natural Language Processing. EMNLP 2022
  2. Robin Rombach, Andreas Blattmann, Dominik Lorenz, Patrick Esser, Björn Ommer. High-Resolution Image Synthesis with Latent Diffusion Models. CVPR 2022
  3. Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, Ilya Sutskever. Learning Transferable Visual Models From Natural Language Supervision. ICML 2021
  4. Dao T, Fu D Y, Ermon S, et al. Flashattention: Fast and memory-efficient exact attention with io-awareness. arXiv preprint arXiv:2205.14135, 2022

EasyNLP阿里灵杰回顾

EasyNLP是阿里云机器学习PAI 团队基于 PyTorch 开发的易用且丰富的中文NLP算法框架,支持常用的中文预训练模型和大模型落地技术,并且提供了从训练到部署的一站式 NLP 开发体验。EasyNLP 提供了简洁的接口供用户开发 NLP 模型,包括NLP应用 AppZoo 和预训练 ModelZoo,同时提供技术帮助用户高效的落地超大预训练模型到业务。由于跨模态理解需求的不断增加,EasyNLP也将支持各种跨模态模型,特别是中文领域的跨模态模型,推向开源社区,希望能够服务更多的 NLP 和多模态算法开发者和研究者,也希望和社区一起推动 NLP /多模态技术的发展和模型落地。


相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
1月前
|
机器学习/深度学习 测试技术
阿里云入选Gartner数据科学和机器学习平台挑战者象限
Gartner® 正式发布了《数据科学与机器学习平台魔力象限》报告(Magic Quadrant™ for Data Science and Machine Learning Platforms),阿里云成为唯一一家入选该报告的中国厂商,被评为“挑战者”(Challengers)。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
23天前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】阿里云人工智能平台 PAI 多篇论文入选 EMNLP2024
阿里云人工智能平台 PAI 的多篇论文在 EMNLP2024 上入选。论文成果是阿里云与华南理工大学金连文教授团队、复旦大学王鹏教授团队共同研发。EMNLP 是人工智能自然语言处理领域的顶级国际会议,聚焦于自然语言处理技术在各个应用场景的学术研究,尤其重视自然语言处理的实证研究。该会议曾推动了预训练语言模型、文本挖掘、对话系统、机器翻译等自然语言处理领域的核心创新,在学术和工业界都有巨大的影响力。此次入选标志着阿里云人工智能平台 PAI 在自然语言处理和多模态算法能力方面研究获得了学术界认可。
|
1月前
|
JSON 测试技术 API
阿里云PAI-Stable Diffusion开源代码浅析之(二)我的png info怎么有乱码
阿里云PAI-Stable Diffusion开源代码浅析之(二)我的png info怎么有乱码
|
3月前
|
机器学习/深度学习 人工智能 关系型数据库
【机器学习】Qwen2大模型原理、训练及推理部署实战
【机器学习】Qwen2大模型原理、训练及推理部署实战
672 0
【机器学习】Qwen2大模型原理、训练及推理部署实战
|
3月前
|
机器学习/深度学习 存储 人工智能
【ACL2024】阿里云人工智能平台PAI多篇论文入选ACL2024
近期,阿里云人工智能平台PAI的多篇论文在ACL2024上入选。论文成果是阿里云与阿里集团安全部、华南理工大学金连文教授团队、华东师范大学何晓丰教授团队共同研发。ACL(国际计算语言学年会)是人工智能自然语言处理领域的顶级国际会议,聚焦于自然语言处理技术在各个应用场景的学术研究。该会议曾推动了预训练语言模型、文本挖掘、对话系统、机器翻译等自然语言处理领域的核心创新,在学术和工业界都有巨大的影响力。此次入选标志着阿里云人工智能平台PAI在自然语言处理和多模态算法、算法框架能力方面研究获得了学术界认可。
|
3月前
|
开发者 算法 虚拟化
惊爆!Uno Platform 调试与性能分析终极攻略,从工具运用到代码优化,带你攻克开发难题成就完美应用
【8月更文挑战第31天】在 Uno Platform 中,调试可通过 Visual Studio 设置断点和逐步执行代码实现,同时浏览器开发者工具有助于 Web 版本调试。性能分析则利用 Visual Studio 的性能分析器检查 CPU 和内存使用情况,还可通过记录时间戳进行简单分析。优化性能涉及代码逻辑优化、资源管理和用户界面简化,综合利用平台提供的工具和技术,确保应用高效稳定运行。
84 0
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
全面解析TensorFlow Lite:从模型转换到Android应用集成,教你如何在移动设备上轻松部署轻量级机器学习模型,实现高效本地推理
【8月更文挑战第31天】本文通过技术综述介绍了如何使用TensorFlow Lite将机器学习模型部署至移动设备。从创建、训练模型开始,详细演示了模型向TensorFlow Lite格式的转换过程,并指导如何在Android应用中集成该模型以实现预测功能,突显了TensorFlow Lite在资源受限环境中的优势及灵活性。
263 0
|
3月前
|
机器学习/深度学习 存储 缓存
Java本地高性能缓存实践问题之阿里云机器学习团队开源社区的问题如何解决
Java本地高性能缓存实践问题之阿里云机器学习团队开源社区的问题如何解决
|
3月前
|
机器学习/深度学习 存储 缓存
模型遇见知识图谱问题之参与阿里云机器学习团队的开源社区的问题如何解决
模型遇见知识图谱问题之参与阿里云机器学习团队的开源社区的问题如何解决

热门文章

最新文章

相关产品

  • 人工智能平台 PAI
  • 下一篇
    无影云桌面