开源风暴吞噬AI界?从Stable Diffusion的爆火说起

news/2024/11/29 7:44:21/

8b442511564459af91fe2beac9e051a9.jpeg

近日,文本生成图像模型Stable Diffusion背后的公司Stability AI宣布获得了1.01亿美元超额融资,估值达10亿美元,这家基于开源社区的“草根”企业的风头一时间甚至盖过了业界顶级研究机构OpenAI。

本文作者认为,尽管开源项目存在商业模式、开源许可协议等方面的挑战,但通过良好开源社区的驱动,AI项目的技术发展、应用广度和创造空间都有了意想不到的发展,正如开源“吞噬”软件1.0,“开源AI”运动将在软件2.0时代不可阻挡。OneFlow社区对此进行了编译。

作者|swyx

翻译|胡燕君、贾川

文本转图像模型的发展周期历时数年:

  • 2020年7月:OpenAI发文介绍Image GPT模型,将语言模型应用到图像领域。

  • 2022年3月:AI图像生成平台Midjourney启动Beta版本测试。

  • 2022年4月:OpenAI宣布允许一定数量的用户对其AI图像生成工具DALL-E 2 进行“研究性试用”。

  • 2022年5月:Google以论文形式公布其文本-图像生成模型Imagen,Imagen由PyTorch实现。

  • 2022年7月:OpenAI 通过UI/API开放DALL-E 2进行公开测试,参与公测的用户须先进入等待名单。

  • 2022年7月:Midjourney通过Discord通讯平台发布消息表示即将进行公开测试。

  • 2022年8月:文本-图像生成模型Stable Diffusion发布,这是一款基于OpenRAIL-M许可的开源模型。

  • 2022年9月:OpenAI取消DALL-E 2的等待名单。

GPT-3从公布到被复制历时10个月:

  • 2020年5月:OpenAI以论文形式公开GPT-3,并在随后的6月发布了未公开的Beta版API。

  • 2020年7月:非营利开源研究组织EleutherAI成立,成为OpenAI的替代者。

  • 2020年9月:Microsoft获得GPT-3的独家授权。

  • 2021年1月:EleutherAI公布其800G数据集The Pile。

  • 2021年3月:EleutherAI公布了分别含13亿和27亿参数的两版开源GPT-Neo模型(GPT-Neo是对GPT-3的克隆版)。

  • 2021年11月:OpenAI取消GPT-3的等待名单,开发人员可以直接报名使用其API。

  • 2022年5月:Meta公布大型语言模型OPT-175B,供研究人员使用,还公布了模型日志和开源许可证明。

  • 2022年6月:俄罗斯互联网巨头Yandex公布了YaLM-100B,这是一个基于Apache-2许可的类GPT开源模型。

  • 2022年7月:HuggingFace公开了BLOOM-176B,一个基于RAIL许可证明的大型语言模型。

GPT-2从公布到被复制历时6个月:

  • 2019年2月,OpenAI宣布GPT-2诞生,为了避免模型遭到不良利用(如被用于制造虚假新闻等),当时决定不将模型完全开源;3月,OpenAI放弃“非营利机构”的定位,成立OpenAI LP(有限合伙公司),声称进入“有限营利”经营模式。

  • 8月,两名计算机硕士复制出GPT-2并将其对外公开,称为OpenGPT-2。

  • 11月,经过谨慎的分阶段逐步公布,OpenAI终于完全开源了含15亿参数的GPT-2模型。

上述时间线已经过高度精简,实际发展史还可追溯到2015年提出的扩散模型(Diffusion Model)、2017年提出的Transformer模型,以及更早之前对生成对抗网络(GANs)的研究。

有趣的是,2022年9月,OpenAI基于MIT许可公开了其Whisper语音转文本模型,并且不设置付费API。当然,语音转文本功能遭到不良利用的可能性较低,所以此类模型的开源风险也更低,但也有观点认为,OpenAI此次的开源决定是受到Stable Diffusion开源后爆红的影响。

1

Dreambooth:开源社区掌舵项目发展

一个先进的开源社区可以发挥魔法般的作用。专业的研究团队或资金充足的团队或许可以开发出很好的基础模型,但只有开源社区才能更好地将各种用例产品化,并且优化模型的实际落地使用。

最能体现这一点的例子是Dreambooth的发展。Dreambooth是一个文本转图像模型,支持经小样本学习(Few-Shot Learning)后生成精调图像,生成的图像既可保留主体的精细特征,又能为主体切换任意背景。

Dreambooth体现了文本转图像模型的理想优化方向,因为它不止需要用户下载模型直接运行,还需要用户根据样本图像进行精细训练,但原始端口需要的内存太大,大多数用户的训练设备都无法满足条件。

2022年9月,Corridor Digital的一则YouTube视频展示了Dreambooth的神奇功能,视频运用文本-图像生成模型根据视频创作者本人照片生成特效人物图像,很快爆火(视频:https://www.youtube.com/watch?v=W4Mcuh38wyM)

这是Dreambooth的发展历程:

65fd9973a3d99cc11ca0b5f4da1c5a0d.png

2022年8月26日,Dreambooth宣布诞生;12天后公布了开源端口;又过了25天后,训练Dreambooth的所需内存空间降低了79%;10月8日,Dreambooth已经能在8GB GPU上训练。

对Dreambooth的优化大多数由Xavier Xiao和Shivam Shrirao通过GitHub完成,意大利工程师Matteo Serva也提供了帮助。Xavier Xiao来自新加坡,博士主攻生成模型与优化,现就职于AWS AI;Shivam Shrirao,计算机视觉高级工程师,现居印度。这两位都并非Dreambooth原始团队的成员。

现在,容易优化的地方都已优化完毕,于是有人开始担心:继续优化下去的投入产出比会越来越低,但后来这种担心不攻自破。8月份时,Stable Diffusion可以在内存为5~10GB的GPU上运行——商用GPU的内存一般为6~12GB,苹果产品都有统一内存(Unified Memory)。到了9月,Stable Diffusion已能在iPhone XS上运行。

e80ef16648eab07e235337cae04cd0b2.png

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
(在手机上运行Stable Diffusion生成“白桌子上的菠萝”图片)

这应该是所有开源AI模型都想通过优化达到的目标。如果可以在小设备上运行,图像生成将不再受限于高昂的云计算费用和微薄的利润,可以得到更广泛的使用。

2

研究人员做不到,但开源能做到的

在目前的三大新兴文本转图像模型中,Stable Diffusion诞生得最晚,但由于拥有发展良好的开源社区,它的用户关注度和应用广度都超越Midjourney和DALL-E。

这启发我们,如果开源其他领域的AI模型(如音乐、生物、语言模型),将同样可以创造新机遇。

5934994ef35f479fbc7102b4d4573542.png

在技术水平上,开源社区可以带来以下几方面的改善:

  • 完善文档

    • Stable Diffusion原始版本的README文档对新手而言不太友好

    • 于是开源社区合作制作了:

      • 两个版本的指南:https://rentry.org/GUItard;https://keras.io/guides/keras_cv/generate_images_with_stable_diffusion/#wait-how-does-this-even-work

      • 博客文章

      • 推特帖

      • YouTube视频教程

      • Google Colabs教程

      • 网页注释和图解

  • 共享提示词

    • (注:提示词即向文本转图像模型输入的文本。)提示词工程(Prompt Engineering)是一门技术活,GPT-3语言模型公布三年以来,不少人总能通过改变提示词组织形式让模型产生令人惊奇的输出结果。这意味着,大型语言模型还存在很大的潜在探索空间,既然它能提供出乎意料的输出结果,那么它也有可能实现超乎我们想象的功能。

    • 每个文本转图像工具的用户社区都有约定俗成的共享提示词的方式,这样我们就可以构建提示词展览集,从而大幅减少提示词搜寻时间(从>30秒降低到<300毫秒,降低整整两个数量级!),并提升提示词工程的进步速率。

    • 这也有助于社区协力解决各种技术难题:例如,如何生成逼真的手部图片和为什么否定式提示词的效果更好(否定式提示词即在提示词中描述用户不希望生成什么。)

  • 创建新UI,提升模型可及性

    • Stable Diffusion是Python脚本,用户可以创建自己的UI来满足自己的需求,不必局限于Stability AI的Dreambooth(注:Stability AI是Stable Diffusion的研发公司)。

    • AUTOMATIC1111成为Stable Diffusion用户社区常用的网络UI,它具备多种功能,集结了社区成员发现的使用经验和技巧。

    • 机器学习社区倾向于使用Windows,因此开源社区想了各种方法让Stable Diffusion可以在M1 Mac乃至 iPhone上使用(如前文例子所述)。

    • Stable Diffusion的UI通常是独立的APP,但新的使用模式可以将Stable Diffusion植入Photoshop、Figma、GIMP甚至VR,让用户能更自由地将Stable Diffusion融入自己的工作流。

  • 通过扩展现有功能创造新用例

    • 我不清楚Inpainting和Outpainting功能的最初发明者是谁,DALL-E的官宣文章中有所提及,但直至出现开源UI后,这两个功能才变得非常普及。

    • 更多功能例如: 超高清outpainting、3D worlds。

    • 另一种成熟的创新方式是与其他工具/技术混合,例子包括:

      • “反向提示词工程”,即根据图像生成提示词 ( CLIP Interrogator就是一个这样的工具)。

      • 使用txt2mask增强Inpainting。

      • 各种后期处理步骤,如Real-ESRGAN, TECOGAN, GFPGAN, VQGAN, 以及利用automatic1111中的hires fix” 解决图像中的重叠问题等。

      • 创建GRPC 服务器,用于与Stability AI的通信。

      • 为向新模态扩展做准备,如txt2music和music2img。

  • 优化核心

    • 如前所述,开源社区成功将Stable Diffusion和Dreambooth的所需内存最小化。

    • 还将Stable Diffusion提速50%。

此外我还想说的是,人工智能和机器学习领域大多使用Python语言,对分布机制而言非常不安全。所以,在开源AI崛起的同时,我们也需要“安全的开源AI”。

3

开源AI的未来

这整个过程不禁让我们想起软件1.0是如何被开源“席卷”的。

  • 版本控制:从Bitkeeper到Git

  • 语言:从Java工具链到Python、JavaScript和Rust

  • IDE:从“有许多不错的IDE”到VS Code占据了>60%的市场份额

  • 数据库:从Oracle/IBM到Postgres/MySQL

Anders Hejlsberg是Turbo Pasca、TypeScript等五种编程语言的创建者。他曾说过如下著名言论 :在未来,编程语言如果不开源,就无法取得成功。如今,开发所需的工具栈越来越多,相信你也会发出同样的感叹。

因此,我们很容易联想到软件2.0、软件3.0可能也会被开源“吞噬”,但同时还有一些问题没有解决:

问题1:经济激励

对于有经济头脑的人来说,将基础模型进行开源发布有违他们的直觉。训练GPT-3的成本大约在460万美元到1200万美元之间,其中不包括人力成本和实验成本。即使是号称训练成本只有60万美元 (Stability AI的创始人Emad表示,实际成本要比这低得多) 的Stable Diffusion,也不可能在没有收回投资的情况下进行开源。

看看OpenAI通过API变现的过程,每个人都能够明白AI经济如何形成:

5704d76769b8b522719d63ca3f4db9b2.png

(模型研究与模型基础设施的价值/利润孰大孰小还有待商榷,上图暂且把它们设置为大约相等。)

Stability AI的既定目标是成为非营利性参与者,这就使它压低了拥有专有基础模型研究的经济价值,但同时这可以扩大AI的总TAM(Total Addressable Market,总可用市场):

95bbafdfdfa8dfc073eebaac2d90d6f8.png

这也体现了施振荣提出的行业价值分布微笑曲线模型。Ben Thompson也对此进行了广泛讨论。

还有一个悬而未决的问题是:Stability AI打算如何融资,9月获得的1亿美元的A轮融资为Stability AI赢得了喘息时间。但在Stability AI的盈利模式明晰之前,其生态系统都不会真正稳定下来。

对此,Emad回应:“我们的商业模式很简单,规模和服务都与普通的COSS(Commercial Open Source Software,商业开源软件)相似,只是在增加附加值方面会有一些曲折。”

问题 2:开源许可

根据开源铁杆粉丝的说法:我们对“license”这个词的理解有误。严格来说,一个项目只有拥有了一个由OSI批准的开源许可证,才能算是开源(OSI批准的开源许可证共有几十个)许多所谓的“开源”AI模型或衍生品都没有开源许可,例如,以下项目都忽略了许可证这个重要问题:

  • AUTOMATIC1111/stable-diffusion-webui#24

  • divamgupta/diffusionbee-stable-diffusion-ui#5

  • breadthe/sd-buddy#20

Stable Diffusion模型是以新的CreativeML Open RAIL-M许可证发布的,它规定了模型权重的使用规范(模型权重就是花费60万美元训练所获的核心成果),其中部分内容与OSI认证的许可证相同,但用例限制方面的内容则不相同。如果你曾经与法律部门和OSI的人打过交道就知道,这个许可很可能不被认可,而且由于没有法律先例可依,关于这个许可证的有效性众说纷纭。

Stability AI已经清楚表明可以将他们的产品用于商业目的,甚至公开支持Midjourney使用Stable Diffusion。但如果有一天,开源产品的使用风险比现在高出1000倍,法律细节的重要性就会显现。

HuggingFace的AI顾问Carlos Muñoz Ferrandis表示:“Meta发布了OPT175(大型语言模型)、BB3(聊天机器人)和 SEER(计算机视觉模型),其许可证类似于RAIL(包括用例限制)并且仅用于研究目的(根据不同的模型选择不同的许可)。

OpenAI的Whisper语音识别模型的模型、权重和代码都基于简单宽松的MIT许可证进行开源。 

Emad表示:“除了Stable Diffusion之外,Stability AI支持的所有模型都基于MIT许可发布,包括耗费了120万个A100小时训练出来的的OpenCLIP模型。”

问题 3:“开源”的到底是什么?

至此,本文都还没提到:“开放源代码”到底意味着什么。

在典型的软件1.0背景下,“开源”意味着代码库是开放的,但不一定公开了基础设施的设置细节,或者所积累的/代码操作的数据。换言之,开放代码并不代表开放基础设施细节或开放数据(在实践中,开源社区会希望开源主体披露一些关于如何自托管(self-host)的基本指南,但这也并非强制要求)。

随着软件2.0的发展,数据收集变得非常重要,甚至开始主导代码(代码则被“降级”为模型的骨架)。像ImageNet这样的开放数据集帮助培训了整整一代的ML工程师,它还促成了Kaggle比赛的兴起,以及ImageNet挑战赛本身(挑战赛中诞生的AlexNet和CNN将整个AI领域推向深度学习)。

此外,还出现了Numerai平台,它通过半同态加密,将真实的金融数据加密,数据科学家可以根据这些“表面无意义”的加密数据,训练出预测模型,用于金融投资——虽然不是严格意义上的开放,但也足够开放,可以让数据科学家在上面赚点外快。不过,惯常的做法依然是不公开模型权重,因为权重是训练得出的最有价值的东西。

随着软件3.0和Chinchilla模型所验证的缩放规律的出现(该规律揭示了模型性能与参数量、数据集大小和计算量之间的关系,可用于指导大型模型的训练),大型语言模型和基础模型就成了代表人类历史上对于单一大型语料库进行的一次大投资。

“开源AI”运动正通过以下方面推动技术的进步:

  • 开源数据集:例如,LAION-5B和The Pile。这些数据集已针对动漫图站Danbooru上的素材、日语、中文和俄语进行了修改。

  • 开源模型:通常以研究论文的形式发布——如果提供足够的细节,外部人员就可以复制出这个新模型,就像复制GPT3和Dreambooth一样。

  • 开源权重:这是由HuggingFace的BigScience项目(Bloom模型的发布者)发起的新运动,Stability AI的文本转图像模型以及OpenAI的Whisper模型也接过了开源权重的大旗(开源权重的经济性问题在前文的“问题1”中已做讨论)。

  • 开源接口:允许直接访问代码,使用户可以修改和编写他们自己的CLI、UI等等,而不像OpenAI的GPT3那样,只提供一个API来调用。

  • 开源提示词:用户(如Riley Goodside)和研究人员(如Aran Komatsuzaki)分享了提示词技术方面的突破,以解锁基础模型的潜在能力。

3f772bdfd957a3894c087828ecc8b31f.png

开源AI层级基本如此,确切顺序可能根据实际情况会有所不同。

4

开源人工智能研究所?

OSI设立之时可能没有考虑到“开源”AI所涉及的上述方方面面,而开源AI文化的基石之一是建立一个满足开源社区期望、具备规范和法律先例的可信标准。或许Hugging Face和Stability AI可以抓住机会填补这一空缺,又或许这样的标准已经诞生了,只是我还没有发现。

(本文经授权后由OneFlow编译发布,原文:https://lspace.swyx.io/p/open-source-ai?utm_source=twitter&sd=pf。译文转载请联系OneFlow获得授权。)

其他人都在看

  • 进击的PyTorch,和它背后的开源领袖

  • OneFlow的大模型分片保存和加载策略

  • TPU演进十年:Google的十大经验教训

  • Jeff Dean:机器学习在硬件设计中的潜力

  • 九大深度学习库;谷歌文字生成视频的两大利器

  • OneEmbedding:单卡训练TB级推荐模型不是梦

  • 大模型训练难?效率超群、易用的“李白”模型库来了

欢迎体验OneFlow v0.8.0:https://github.com/Oneflow-Inc/oneflow/icon-default.png?t=M85Bhttps://github.com/Oneflow-Inc/oneflow/


http://www.ppmy.cn/news/487270.html

相关文章

强大到离谱!硬核解读Stable Diffusion(完整版)

原文链接: 硬核解读Stable Diffusion(完整版) 2022年可谓是AIGC(AI Generated Content)元年,上半年有文生图大模型DALL-E2和Stable Diffusion,下半年有OpenAI的文本对话大模型ChatGPT问世,这让冷却的AI又沸腾起来了,因为AIGC能让更多的人真真切切感受到AI的力量。这篇…

强烈安利试试这个!效果爆炸的漫画变身AI,火到服务器几度挤爆

转自&#xff1a;量子位 “排队1241人&#xff0c;等待2600秒……” ——这届网友为了看一眼自己在动漫里的样子&#xff0c;可真是拼了&#xff01; “始作俑者”是一款可以把人像变动漫的生成器。 只需一张图片或一段视频&#xff0c;无论男女老少、明星素人都可以一睹自己的…

styleGAN环境搭建 、 动漫模型效果测试

&#x1f4d9; 声明&#xff1a; 本博文的主体内容借鉴该博文&#xff1a; https://blog.csdn.net/weixin_41943311/article/details/100539707 我主要做的工作是精简流程和测试记录&#xff0c;想了解更多内容可以关注 https://blog.csdn.net/weixin_41943311 博客主页下的一…

CSAPP - LinkLab实验(阶段1-5)

LinkLab实验&#xff08;阶段1-5&#xff09; 官网&#xff1a;http://csapp.cs.cmu.edu/3e/labs.html 实验内容 每个实验阶段&#xff08;共5个&#xff09;考察ELF文件组成与程序链接过程的不同方面知识 阶段1&#xff1a;全局变量 <-> 数据节 阶段2&#xff1a;强符…

npm安装失败;node_modules拷贝;

当前版本&#xff1a; node版本&#xff1a;12.16.3npm版本&#xff1a;6.14.4cnpm版本&#xff1a;7.1.0 npm装包失败&#xff1a; 解决办法1&#xff1a;使用cnpm淘宝镜像装包&#xff08;如果需要拷贝node_modules包&#xff0c;使用cnpm装的包会有拷贝不全丢包问题导致包…

【Java】统计字符个数

package day4; //字数统计 import java.util.Scanner;public class StringDemo3 {public static void main(String[] args) {Scanner scnew Scanner(System.in);System.out.println("请输入一个字符串");String line sc.nextLine();// 统计三种字符个数int b…

Java统计英文字母、空格、数字和其它字符的个数

Java统计英文字母、空格、数字和其它字符的个数 输入一行字符&#xff0c;分别统计出其中英文字母、空格、数字和其它字符的个数. 方法一&#xff1a; package test; import java.util.Scanner; public class Chuan {public static void main(String[] args) {Scanner scnew…

用Python统计字符串个数

1.题目 输入一行字符&#xff0c;分别统计出其中英文字母、空格、数字和其它字符的个数。 2.程序分析 利用while语句,条件为输入的字符不为’\n’. from pip._vendor.distlib.compat import raw_inputs raw_input(请输入字符串:\n) letters 0 space 0 digit 0 others …