大佬在线复盘:我在训练 DALL·E 时犯过的错

5e28a65a8999c2a768afd8f0f835dd1f.png

文 | jxyxiangyu

在写了一周的业务代码后,沏一杯绿茶,总算可以有时间看看鸽了一个月的素材了。

1c70bcd39d3e05b26dfb27454a9ab6e2.jpeg

好的,小伙伴们,废话不多说,今天我们将跟随 Boris Dayma 大佬,看看他在训练 DALLE-Mega 时遇到的一系列问题。

据这位老哥说,为了训练这个 3B 大小的模型,使用了一个 TPU v3 pod-256(=256 块 TPU v3)

18561f78dfe5f7235c63852355f56af7.png
▲dalle-mega-模型大小

在写惯了业务代码,用多了 0.1B 的 bert-base 的我们,今天也来瞧瞧这些神仙大模型的训练方式。

DALL·E

DALL·E 是 OpenAi 去年推出的图像生成模型,它可以根据一句文本(caption)生成现实世界中不存在的图像。

比如牛油果形状的扶手椅、穿着芭蕾舞短裙遛狗的萝卜等。

fefa4f848cadee1c6726b30da9ae1fb5.png
▲DALLE结果展示
0235426c23df25f8544aa7f068b9298c.jpeg
▲DALLE模型结构图

如上图所示,DALL·E 的训练过程可以分为两步:

  1. 为减小高分辨率图片()的计算量,将图片经过一个自编码模型 dVAE ,压缩得到 的图片,我们取 dVAE 的 encoder 的输出隐向量()作为压缩的图片 token;

  2. 将文本经过编码器编码后的文本 token 和图片 token 拼接,送入 transformer 进行自回归训练。

这里需要独自训练两个模型 dVAE 和 transformer 。

在推理阶段,需要向 transformer 输入一段文本 caption ,模型以滑动窗口的方式依次预测出下一个图片 token ,这里得到的图片 token 用 dVAE 的 decoder 解码回高分辨率的图片,最后用 CLIP 对得到的图片打分重排序。

更详细的过程解读可以参考 《DALL·E—从文本到图像,超现实主义的图像生成器》[1]、《如何评价DALL-E模型的实现?》[2]

DALL·E Mega 的训练之路

DALL·E Mega 是 Hugging Face 和谷歌云团队基于自己的理解实现的 DALL·E mini 的 Mega 版本,这一次,我们将跟随 Boris Dayma 的脚步,了解他在训练大模型时背后的故事。

和 DALL·E mini 相比,作者做了很多优化,使得 DALL·E Mega 在训练初期能够顺利一些,验证集的 loss 下降速度很快。

0226a8245ba3b53be57c790b4ff71f1a.png

当然,随着进一步的训练,验证集的 loss 会逐渐增大,这就意味着需要减小学习率了。如下图所示,可以看到作者还应用了 warm up

4f40e4b2fd1918406a94347a4592e0f7.png9885e9cddc5e559b23643a1933031859.png

由于效果不佳,作者接着尝试了增大梯度累积以及 dropout ,不过验证集的 loss 依旧没有减小。

a131c5776830e8ae76fed96ea537ebc4.pngace96fc5a01e591c43536dbec7d2deff.png

不过,令人感到意外的是,即便验证集的 loss 在增加,但预测结果却在不断变好?!对此,作者开始怀疑训练集和验证集的数据分布不一致。

279b51279a926945f485ae72786c2989.png

随后,作者决定从训练集中切分出一个子集作为验证集,而对于原本的验证集,作者将其作为训练数据一起用于模型的训练。

1091520ece316a182e41e226b9f31dd5.png4f3860191edd0479a4e7ee2210907658.jpeg

不过 loss 依旧在增加,后来,采用全精度训练以及更新 动量后,loss终于开始下降了!!

虽然,验证集的 loss 在不断下降,但不知道小伙伴们有没有注意到,所有的图片都是唯一的,只有在原本的训练集中存在相同的图片(但caption不同),而在作者将训练集的子集作为新的验证集后,训练结果变好会不会是因为训练时,模型只记住了图片?

efebfc769901e9228ce6cc9abf7a04dd.png

不过,这些都是后话了,训练已经接近尾声,重新训练太费时间精力(还有钱)了。Boris 小哥就没再仔细深挖这个问题了(好真实...)。

cfe2f1f00228a7d3a42ecc58ecabe352.png

现在模型已经上线到 Hugging Face 上,小伙伴们可以下载使用,对详细的训练过程感兴趣的也可以访问官网的训练日志:
https://wandb.ai/dalle-mini/dalle-mini/reports/DALL-E-Mega-Training-Journal--VmlldzoxODMxMDI2

总结

时隔一年, Boris Dayma 在原作的基础上,又推出了 DALL·E mini 的 Mega 版本,这一次, Boris Dayma 为我们复盘了他在训练 DALL·E mini Mega 时的心路历程以及一些失误。

诚然,我们中的大部分人都不会有机会训练如此庞大的模型,但能够跟随大神一起了解训练过程中遇到的问题以及解决方法,又何尝不是一种进步和学习呢?

f300a71ab4d4dc9c83e988a584428ccd.png

a5aedf51f8a3f3b3520ae33d8e395d7b.jpeg萌屋作者:jxyxiangyu

人工智障、bug制造者、平平无奇的独臂侠、在某厂工作的初级程序员,从事对话交互方向,坚持每天写一点bug,时常徘徊在人工智能统治未来和if-else才是真正的AI的虚拟和现实之间,希望有朝一日学术界的研究成果可以真正在工业界实现落地。

作品推荐

  1. 谁说发 paper 一定要追快打新?2021年,研究 word2vec 也能中顶会!

  2. 一训练就显存爆炸?Facebook 推出 8 比特优化器,两行代码拯救你的显存!

0a642b1549a4d115b6b1baf002211b50.jpeg后台回复关键词【入群

加入卖萌屋NLP、CV、搜广推与求职讨论群

3c4dfe4d66f3b6dfc1964e1950a0c7aa.png

[1] DALL·E—从文本到图像,超现实主义的图像生成器:https://zhuanlan.zhihu.com/p/394467135

[2] 如何评价DALL-E模型的实现?:https://www.zhihu.com/question/447757686

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Toast与Snackbar的那点事

背景 Toast是Android平台上的常用技术。从用户角度来看,Toast是用户与App交互最基本的提示控件;从开发者角度来看,Toast是开发过程中常用的调试手段之一。此外,Toast语法也非常简单,仅需一行代码。基于简单易用的优点&…

LintCode 1683. 杀怪兽(队列)

1. 题目 有 n 只怪兽和一个奥特曼,奥特曼和怪兽都有5个属性值。 当且仅当奥特曼的5个属性值都不小于怪兽时,奥特曼可以杀死怪兽。 当一个怪兽被杀掉时,这个怪兽的5个属性会增加到奥特曼身上。 请问奥特曼最多可以杀死多少怪兽? 样例 1: 输…

聊聊大火的多模态

多模态机器学习,英文全称 MultiModal Machine Learning (MMML),旨在通过机器学习的方法实现处理和理解多源模态信息的能力。每一种信息的来源或者形式,都可以称为一种模态。例如,人有触觉,听觉,视觉&#x…

2018开春大礼:750页电子书 + 33场技术沙龙资料 + 17场线上课程分享

2017年,美团成长为中国领先的生活服务电子商务平台,在吃喝玩乐住行等200多个品类,2800多个城区县,服务了亿万消费者、数百万商家,日订单数超过2200万,年度交易总额达到了3600亿。2017年10月,美团…

LintCode 1677. 石头(自定义优先队列)

1. 题目 给定数组 p 代表 n 个石头的位置和数组 d 代表这 n 块石头能够扔的距离。 从左(0位置)往右走。当你第 k 次碰到一个石头时, 如果 k 是奇数, 把这个石头往右扔; 如果 k 是偶数,跳过这个石头。 返回不再会碰到石头时&…

手机上也能训练BERT和ResNet了?!

源 | 机器之心研究者表示,他们将边缘训练看作一个优化问题,从而发现了在给定内存预算下实现最小能耗的最优调度。目前,智能手机和嵌入式平台等边缘设备上已经广泛部署深度学习模型来进行推理。其中,训练仍然主要是在具有 GPU 等高…

LintCode 125. 背包问题 II(DP)

1. 题目 有 n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小 数组 V 表示每个物品的价值. 问最多能装入背包的总价值是多大? 样例 1: 输入: m 10, A [2, 3, 5, 7], V [1, 5, 2, 4] 输出: 9 解释: 装入 A[1] 和 A[3] 可以得到最大价值, V[1] V[3] 9 样例…

大众点评App的短视频耗电量优化实战

前言 美团测试团队负责App的质量保证工作,日常除了App的功能测试以外,还会重点关注App的性能测试。现在大家对手机越来越依赖,而上面各App的耗电量,直接影响了手机的待机时间,是用户非常关心的一点。本文主要通过一个典…

解决CNN固有缺陷!通用 CNN 架构CCNN来了| ICML2022

文 | David W. Romero等源丨机器之心在 VGG、U-Net、TCN 网络中... CNN 虽然功能强大,但必须针对特定问题、数据类型、长度和分辨率进行定制,才能发挥其作用。我们不禁会问,可以设计出一个在所有这些网络中都运行良好的单一 CNN 吗&#xff1…

境外业务性能优化实践

本文根据第16期美团技术线上沙龙OnLine演讲内容整理而成。 前言 性能问题简介 应用性能是产品用户体验的基石,性能优化的终极目标是优化用户体验。当我们谈及性能,最直观能想到的一个词是“快”,Strangeloop在对众多的网站做性能分析之后得出…

LeetCode 第 21 场双周赛(779/1913,前40.7%)

文章目录1. 比赛结果2. 题目LeetCode 5336. 上升下降字符串 easyLeetCode 5337. 每个元音包含偶数次的最长子字符串 mediumLeetCode 5338. 二叉树中的最长交错路径 mediumLeetCode 5339. 二叉搜索子树的最大键值和 hard1. 比赛结果 只做出来了第1题,第3题有一个例子…

算法工程师的三观测试

文 | 小戏编 | 小轶如果我在谷歌输入“How to improve my machine learning models”,我会得到形形色色花样繁多的提升模型性能的方法。从调参到特征工程,从集成模型到数据增强,琳琅满目,不胜枚举。可是如果我在这个问题上加一点限…

领域驱动设计在互联网业务开发中的实践

至少30年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans将其定义为领域驱动设计(Domain-Driven Design,简称DDD)。在互联网开发“小步快跑,迭代试错”的大…

LeetCode 1377. T 秒后青蛙的位置(BFS)

1. 题目 给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下: 在一秒内,青蛙从它所在的当前顶点跳到另一个 未访问 过的顶点(如果它们直接相连)。青蛙无法跳回已经访问过的顶点。…

已删除

7.12更新:部分基金赎回的钱已经到账小金库了,今日从小金库提现时又提示银行卡已删除,不过这次可以点击重新绑定,重新绑定时会报错“绑定的卡与原卡一致”,流程没法走完。但这时候再退回去却发现“银行卡已删除”的提示没有了。于是…

即时配送的ETA问题之亿级样本特征构造实践

ETA(Estimated time of Arrival,预计送达时间)是外卖配送场景中最重要的变量之一(如图1)。 我们对ETA预估的准确度和合理度会对上亿外卖用户的订单体验造成深远影响,这关系到用户的后续行为和留存&#xff…

LeetCode 1376. 通知所有员工所需的时间(DFS)

1. 题目 公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从 0 到 n - 1。公司的总负责人通过 headID 进行标识。 在 manager 数组中,每个员工都有一个直属负责人,其中 manager[i] 是第 i 名员工的直属负责人。对于总负责人…

华为天才少年稚晖君做了一把模块化机械键盘,引起极客圈地震,网友:这才是真正的客制化...

作者 | 王玥、李梅,陈彩娴(编辑)来源 | AI科技评论他来了他来了,一人顶一个团队的稚晖君又一次带着一项硬核(虽然他强调是“软核”)黑科技来了!稚晖君,真名彭志辉,三次元…

iPhone X 刘海打理指北

iPhone X 刘海机于9月13日发布,给科技小春晚带来一波高潮。作为开发人员却多出来一份忧虑,iPhone X 怎么适配?我们 App 的脑袋会不会也长一刘海出来?Tabbar 会不会被圆角?先来看一下美团 App 的表现: 图 1.…

大厂们终于无法忍受“加一秒”了,微软谷歌Meta等公司提议废除闰秒

文 | 萧箫 发自 凹非寺源 | 量子位 , 公众号 QbitAI大厂们再也无法忍受闰秒带来的一堆bug了。现在,谷歌Meta微软亚马逊等一众科技巨头发起了一项倡议:废除闰秒!闰秒这玩意,说白了就是通过给“世界标准时间”加_(或减&a…