• 从“AI玩具”到“创作工具”的云原生改造之路


    1ecc73d7019bd72e6e38ae7d5b8499ec.gif

    嘉宾 | 唐云峰   整理 | 黄文勤

    出品 | CSDN云原生

    2022年6月21日,在CSDN云原生系列在线峰会第10期“华为云HCDE专场暨分布式技术峰会”上,中韩未来革新加速器社长唐云峰分享了从“AI玩具”到“创作工具”的云原生改造之路,展示了AI艺术创作的新玩法。

    ef77617b96e9fe04153a4cc33d5e291d.png

    初探AI玩具

    近两年,AI所表现出来的艺术创作能力让人大为惊叹,通过AI绘制的主题画作甚至能够达到以假乱真的效果。下图便是我使用开源AI应用Disco Diffusion通过填写“油画、灯塔、海洋”等关键词直接运行实例所得到的一幅画。

    e8a06be7b6aca62b93fc8d772f8e7497.png

    Disco Diffusion并不是一项技术,而是应用的名称,它是基于MIT协议的开源Clip与Diffusion的实现的。简单来说,Diffusion对图像不断去噪,Clip模型负责对图像的文本描述,将自然语言变化成图像特征。

    AI图像生成技术不是来代替我们的,而是帮助我们铺开创作初期的创意。为什么这样讲呢?

    首先,过去在确定好绘画主题、场景及风格后,还需花大量时间构思、画线稿,然后才能确定下一步的方向。可这个过程并不是线性的而是大量并行的,并且存在全部推倒重来的风险。而AI应用可以在创作初期明确好主题、对象及风格后,一次性生成上百幅图像供创作者选取,大大节约创作时间。

    此外,已完成的作品同样可以在AI应用中做进一步延展。这与使用卷积神经网络或循环对抗生成网络做风格迁移不同,它将沿着我们想要创作的方向做延展。也就是说,AI创作工具的功能可以贯穿整个创作阶段,甚至可以加入互动的艺术玩法。

    然而,在实际的操作中仍然存在困境:虽然线上Notebook托管方提供免费GPU资源,但在随机抽取T4或K80的默认设置情况下,T4生成一幅画需要16分钟,K80需要90分钟,只有付费情况下才能抽到的V100生成一幅画也需要8分钟左右的时间。由此可见,若想得到数百张画像做参考,会消耗大量的时间、金钱成本。

    4bd62c251264f147488da8234085b5ac.png

    转型创作工具

    之所以称其为“AI玩具”,是因为它速度过慢、等待时间过长,并不适合作为创作工具。那理想的AI创作工具应该具有怎样的功能特点呢?有以下这些方面:

    • 在线部署;

    • 按量付费;

    • 随时可用;

    • 垫图绘画;

    • 并行创作;

    • 持续交付;

    • 弹性扩展。

    是否有方案可以将“AI玩具”转变为“创作工具”呢?经过和华为云的朋友们沟通,他们为我提供了方向:在华为云上搭建的弹性容器。

    弹性容器搭建好后会有GPU实例,GPU实例可以提供一个能够用于艺术创作的AI创作工具,于是我做了第一个版本的基于华为云的初期实现。

    4f08a3d01ce7d73aa4fc8b1c41a8c664.png

    因为这不是一个纯粹的工程化应用,需要充分考虑时间成本,故创建云容器实例,使用函数工作流对资源调度和生命周期进行管理。

    函数计算工作流以对象存储服务作为触发器,同时通过对象存储服务作为最后的事件终止。以下是算子的工作流程:

    • 上传图片到OBS指定存储桶,触发函数计算;

    • 函数计算调度从SWR托管的镜像创建CCI实例;

    • 在CCI实例中将上传图像作为“垫图”配合“描述文本”生成多个参数的并行GPU实例;

    • 进行绘制将生成完成的图像和视频存储到结果存储桶中。

    成果分享

    f5e1d2244edbb5410d08dcb5f1954470.png

    关键词:“湖光三色”,“亭台楼阁”,“一抹红”

    f17effeb6610a0a47f27bbe08028d951.png

    键词:“生如夏花之绚烂,死如秋叶之静美”

    03bb33222083f8171cec748b9d55d231.png

    关键词:“成都浮世绘”

    c231280aec47a74d10ab4d430e303b60.png

    关键词:“高山流水”

    5b925fde1eed42bf35ef40e97f5b48d4.png

    创作工具升级

    利用UCS保障业务弹性

    如果要将该创作工具做成商业服务的话,需要使用UCS来保障业务弹性,统一管理各平台的资源,自建的集群也可以加入到统一的管理页面中。同时各个集群的配置文件都需下载后上传至UCS中,这也是最重要的环节。

    ee565f7e3f47372873c9785ae48ae310.png

    本地资源GPU集群空闲时不消费云端算力

    集群注册完后并不能马上对集群进行调度和管理,需要在对应的集群中配置代理。以代理的形式进行多云的算力匹配和调度能够有效避免为非必要资源付费情况的出现,减少不必要的成本支出。

    总之,将多云的GPU资源统一管理时需要注意四个准备环节: 

    • 需要配置弹性公网IP;

    • 准备好kubeConfig文件;

    • 注册集群;

    • 配置集群代理。

    4f438c07dd176fd558bb0feba0b644b0.png

    镜像拉起时间的优化

    由于SWR服务对镜像大小的限制,会使镜像中的部分组件缺失,导致镜像拉起的时间过长。

    而如何优化镜像的拉起时间呢?可以根据以下步骤进行:

    • 选择针对PyTorch优化的最小镜像作为基础;

    • 保障运行环境和依赖在拉起后不再消耗时间;

    • 预训练模型和训练数据存储到OBS。

    cd6fb13c4620e2fb1e2de7821f3749c0.png

    af7d63dcd1e79c49af5839e59746fb9b.png

    总结

    使用云计算和AI进行工程化的实践,不是为了替代任何人,而是为了将人类从繁重的劳动中解放出来,让人在情感与创造力的传递过程当中自由飞翔。

  • 相关阅读:
    学生家乡网页设计作品静态HTML网页—— HTML+CSS+JavaScript制作辽宁沈阳家乡主题网页源码(11页)
    牛客网:NC55 最长公共前缀
    Windows10环境gradle安装与配置
    Clonable 接口 深拷贝与浅拷贝(超详细!!!代码附注释带图)
    Java超全能笔记爆火,分布式/开源框架/微服务/性能调优全有,拿走不谢哦!
    Java发送一封 HTML E-mail的学习笔记
    SQL注入——搜索型
    126. 单词接龙 II
    在PyCharm快速加载第三方模块的设置方法
    【每天学习一点新知识】跟咩咩一起学“宽字节注入”
  • 原文地址:https://blog.csdn.net/m0_46700908/article/details/125884199