w~大模型~合集8
MIMIC-Diff-VQA 数据集包括 164,654 张图片,和 700,703 问题,含盖 7 种不同的具有临床意义的问题类型,包括异常,存在,方位,位置,级别,类型,和差异。前六种问题和传统 VQA 一致,针对于当前图片提问,只有差异类型问题是针对两张图片的问题。各个问题的比例数据和完整问题列表请分别见图 3 和见表格 1。图 3:MIMIC-Diff-VQA 问题类型的统计数据表 1:每
我自己的原文哦~ https://blog.51cto.com/whaosoft/12348714
#From r to Q∗
这就是OpenAI神秘的Q*?斯坦福:语言模型就是Q函数
近日,斯坦福大学一个团队的一项新研究似乎为这一研究方向的潜力提供了佐证,其声称现在已经取得非凡成就的「语言模型不是一个奖励函数,而是一个 Q 函数!」由此发散思维猜想一下,也许 OpenAI 秘密的 Q* 项目或许真的是造就 AGI 的正确方向(或之一)。
- 论文标题:From r to Q∗: Your Language Model is Secretly a Q-Function
- 论文地址:https://arxiv.org/pdf/2404.12358.pdf
在对齐大型语言模型(LLM)与人类意图方面,最常用的方法必然是根据人类反馈的强化学习(RLHF)。通过学习基于人类标注的比较的奖励函数,RLHF 能够捕获实践中难以描述的复杂目标。研究者们也在不断探索使用强化学习技术来开发训练和采样模型的新算法。尤其是直接对齐方案(比如直接偏好优化,即 DPO)凭借其简洁性收获了不少拥趸。
直接对齐方法的操作不是学习奖励函数然后使用强化学习,而是在上下文多臂赌博机设置(bandit setting)中使用奖励函数与策略之间的关系来同时优化这两者。类似的思想已经被用在了视觉 - 语言模型和图像生成模型中。
尽管有人说这样的直接对齐方法与使用 PPO 等策略梯度算法的经典 RLHF 方法一样,但它们之间还是存在根本性差异。
举个例子,经典 RLHF 方法是使用终点状态下的稀疏奖励来优化 token 层面的价值函数。另一方面,DPO 则仅在上下文多臂赌博机设置中执行操作,其是将整个响应当成单条臂处理。这是因为,虽然事实上 token 是一次性只生成一个,但研究强化学习的人都知道,密集型奖励是有益的。
尽管直接对齐算法颇引人注意,但目前人们还不清楚它们能否像经典强化学习算法那样用于序列。
为了搞清楚这一点,斯坦福这个团队近日开展了一项研究:在大型语言模型中 token 层面的 MDP 设置中,使用二元偏好反馈的常见形式推导了 DPO。
他们的研究表明,DPO 训练会隐含地学习到一个 token 层面的奖励函数,其中语言模型 logit 定义最优 Q 函数或预期的总未来奖励。然后,他们进一步表明 DPO 有能力在 token MDP 内灵活地建模任意可能的密集奖励函数。
这是什么意思呢?
简单来说,该团队表明可以将 LLM 表示成 Q 函数并且研究表明 DPO 可以将其与隐式的人类奖励对齐(根据贝尔曼方程),即在轨迹上的 DPO 损失。

并且他们证明这种表示可以拟合任何在轨迹上的反馈奖励,包括稀疏信号(如智能体应用)。
实验
他们也进行了实验,论证了三个可能对 AI 社区有用的实用见解。
第一,他们的研究表明尽管 DPO 是作为上下文多臂赌博机而派生出来的,但 DPO 模型的隐含奖励可在每个 token 层面上进行解释。
在实验中,他们以定性方式评估了 DPO 训练的模型是否能够根据轨迹反馈学习 credit assignment。有一个代表性示例是商讨工作就职的场景,图 1 给出了两个答案。

其中左边是正确的基础摘要,右边是经过修改的版本 —— 有更高层的职位和相应更高的工资。他们计算了这两个答案的每个 token 的 DPO 等价的奖励。图 1 中的每个 token 标注的颜色就正比于该奖励。
可以看到,模型能够成功识别对应于错误陈述的 token,同时其它 token 的值依然相差不大,这表明模型可以执行 credit assignment。
此外,还可以看到在第一个错误(250K 工资)的上下文中,模型依然为其余 token 分配了合理的值,并识别出了第二个错误(management position)。这也许表明模型具备「缝合(stitching)」能力,即根据离线数据进行组合泛化的能力。该团队表示,如果事实如此,那么这一发现将有助于强化学习和 RLHF 在 LLM 中的应用。
第二,研究表明对 DPO 模型进行似然搜索类似于现在很多研究中在解码期间搜索奖励函数。也就是说,他们证明在 token 层面的阐述方式下,经典的基于搜索的算法(比如 MCTS)等价于在 DPO 策略上的基于似然的搜索。他们的实验表明,一种简单的波束搜索能为基础 DPO 策略带来有意义的提升,见图 2。

第三,他们确定初始策略和参考分布的选择对于确定训练期间隐性奖励的轨迹非常重要。
从图 3 可以看出,当在 DPO 之前执行 SFT 时,被选取和被拒绝的响应的隐含奖励都会下降,但它们的差距会变大。

当然,该团队最后也表示,这些研究结果还需要更大规模的实验加以检验,他们也给出了一些值得探索的方向,包括使用 DPO 让 LLM 学会基于反馈学习推理、执行多轮对话、充当智能体、生成图像和视频等。
....
#xxx
....
#xxx
....
#xxx
....
#TinyMIM
微软亚研提出TinyMIM,用知识蒸馏改进小型ViT,它是第一个成功地使小模型受益于 MIM 预训练的模型。
掩码建模(MIM, MAE)被证明是非常有效的自监督训练方法。然而,如图 1 所示,MIM 对于更大的模型效果相对更好。当模型很小的时候(比如 ViT-T 5M 参数,这样的模型对于现实世界非常重要),MIM 甚至可能一定程度上降低模型的效果。比如用 MAE 训练的 ViT-L 比普通监督训练的模型在 ImageNet 上的分类效果提升 3.3%,但是用 MAE 训练的 ViT-T 比普通监督训练的模型在 ImageNet 上的分类效果降低了 0.6%。
在这篇工作中我们提出了 TinyMIM,其在保持 ViT 结构不变并且不修改结构引入其他归纳偏置(inductive bias)的基础上、用蒸馏的方法迁移大模型上的知识到小模型。
- 论文地址:https://arxiv.org/pdf/2301.01296.pdf
- 代码地址:https://github.com/OliverRensu/TinyMIM
我们系统性的研究了蒸馏目标、数据增强、正则化、辅助损失函数等对于蒸馏的影响。在严格的只用 ImageNet-1K 作为训练数据的情况下(包括 Teacher model 也只用 ImageNet-1K 训练)和 ViT-B 作为模型,我们的方法实现了当前最好的性能。如图所示:

把我们的方法(TinyMIM)和基于掩码重建的方法 MAE,以及监督式学习的方法从头开始训练的 DeiT 作比较。MAE 在模型比较大的时候有显著的性能提升,但是在模型比较小的时候提升幅度有限甚至会伤害模型的最终效果。我们的方法 TinyMIM 在不同模型的大小上都有大幅提升。
我们的贡献如下:
1. 蒸馏的目标(Distillation targets):1)蒸馏 token 之间的关系比单独蒸馏 class token 或者特征图(feature map)更有效;2)用中间层作为蒸馏的目标更有效。
2. 数据增强和模型正则化(Data and network regularization):1)用带掩码的图片效果更差;2)学生模型需要一点 drop path,但是 teacher 模型不需要。
3. 辅助损失函数(auxiliary losses):MIM 作为辅助损失函数没有意义。
4. 宏观蒸馏策略(Macro distillation strategy):我们发现序列化的蒸馏(ViT-B -> ViT-S -> ViT-T)效果最好。
方法

我们系统性的调研了蒸馏的目标,输入的图片,蒸馏目标模块。
影响蒸馏效果的因素
1)特征:
a. 中间 block 特征和输出特征

当 i=L 时,指的是 Transformer 输出层的特征。当 i< L 时,指的是 Transformer 中间层的特征。
b. 注意力(Attention)特征和前馈层(FFN)层特征

Transformer 每一个 block 有 Attention 层和 FFN 层,蒸馏不同的层会带来不同的影响。
c.QKV 特征

在 Attention 层内会有 Q,K,V 特征,这些特征用于计算注意力机制,我们也调研了直接蒸馏这些特征。
2)关系

Q,K,V 用于计算注意力图,这些特征之间的关系也可以作为知识蒸馏的目标。
3)输入:是否带掩码
传统的知识蒸馏是直接输入完整的图片。我们的方法为了探索蒸馏掩码建模模型,所以我们也探索了带掩码的图片是否适合作为知识蒸馏时候的输入。
知识蒸馏方法对比
1)Class Token 蒸馏:
最简单的方法就是类似 DeiT 直接蒸馏 MAE 预训练模型的 class token:

2)特征蒸馏:我们直接参考了 feature distillation [1] 作为对比

3)关系蒸馏:我们提出了也是本文默认的蒸馏策略

实验
主要实验结果
我们的方法在 ImageNet-1K 上预训练,而且教师模型也是在 ImageNet-1K 预训练。然后我们将我们预训练的模型在下游任务(分类、语义分割)上进行了微调。模型表现如图:

我们的方法显著超过之前基于 MAE 的方法,尤其是小模型。具体来讲,对于超小的模型 ViT-T,我们的方法实现了 75.8% 的分类准确性,相比 MAE 基线模型实现了 4.2 的提升。对于小模型 ViT-S,我们实现了 83.0% 的分类准确性,比之前最好的方法提升了 1.4。对于 Base 尺寸的模型,我们的方法分别超过 MAE 基线模型和以前最好的模型 CAE 4.1 和 2.0。
同时我们也测试了模型的鲁棒性,如图所示:

TinyMIM-B 对比 MAE-B,在 ImageNet-A 和 ImageNet-R 分别提升了 + 6.4 和 +4.6。
消融实验
1)蒸馏不同关系

同时蒸馏 QK,VV 关系而且在计算关系的时候有 Softmax 实现了最好的效果。2)不同的蒸馏策略

TinyMIM 这种蒸馏关系的方法实现了比 MAE 基线模型,class token 蒸馏,特征图蒸馏都更好的效果,在各种尺寸的模型上都是如此。3)蒸馏中间层

发现蒸馏第十八层实现了最好的效果。
结论
它是第一个成功地使小模型受益于掩码重建建模(MIM)预训练的模型。大佬们没有采用掩码重建作为任务,而是通过以知识蒸馏的方式训练小模型模拟大模型的关系来预训练小模型。TinyMIM 的成功可以归功于对可能影响 TinyMIM 预训练的各种因素的全面研究,包括蒸馏目标、蒸馏输入和中间层。通过大量的实验,大佬们得出结论,关系蒸馏优于特征蒸馏和类标记蒸馏等。凭借其简单性和强大的性能,我们希望我们的方法能够为未来的研究提供坚实的基础。
....
#Phi-3
微软发布Phi-3,性能超Llama-3,可手机端运行,数据已成为提升大模型能力的重点。
Llama-3 刚发布没多久,竞争对手就来了,而且是可以在手机上运行的小体量模型。
本周二,微软发布了自研小尺寸模型 Phi-3。
新模型有三个版本,其中 Phi-3 mini 是一个拥有 38 亿参数的语言模型,经过 3.3 万亿 token 的训练,其整体性能在学术基准和内部测试上成绩优异。
尽管 Phi-3 mini 被优化至可部署在手机上,但它的性能可以与 Mixtral 8x7B 和 GPT-3.5 等模型相媲美。微软表示,创新主要在于用于训练的数据集。
与此同时,Phi-3 与 Llama-2 使用相同的架构,方便开源社区在其基础上开发。
此前,微软的 Phi 系列模型曾经引发了人们的热议,去年 6 月,微软发布了《Textbooks Are All You Need》论文,用规模仅为 7B token 的「教科书质量」数据训练 1.3B 参数的模型 phi-1,实现了良好的性能。
去年 9 月,微软进一步探索这条道路,让 1.3B 参数的 Transformer 架构语言模型 Phi-1.5 显示出强大的编码能力。
去年底,微软提出的 Phi-2 具备了一定的常识能力,在 2.7B 的量级上多个基准测试成绩超过 Llama2 7B、Llama2 13B、Mistral 7B 等一众先进模型。
Phi-3 技术报告:https://arxiv.org/abs/2404.14219
刚刚提出的 phi-3-mini 是一个在 3.3 万亿个 token 上训练的 38 亿参数语言模型。实验测试表明,phi-3-mini 的整体性能可与 Mixtral 8x7B 和 GPT-3.5 等模型相媲美,例如 phi -3-mini 在 MMLU 上达到了 69%,在 MT-bench 上达到了 8.38。
微软之前对 phi 系列模型的研究表明,高质量的「小数据」能够让较小的模型具备良好的性能。phi-3-mini 在经过严格过滤的网络数据和合成数据(类似于 phi-2)上进行训练,并进一步调整了稳健性、安全性和聊天格式。
此外,研究团队还提供了针对 4.8T token 训练的 7B 和 14B 模型的初始参数扩展结果,称为 phi-3-small 和 phi-3-medium,两者都比 phi-3-mini 能力更强。

学术基准
在标准开源基准测试中,phi-3-mini 与 phi-2 、Mistral-7b-v0.1、Mixtral-8x7B、Gemma 7B 、Llama-3-instruct8B 和 GPT-3.5 的比较结果如下表所示,为了确保具有可比性,所有结果都是通过完全相同的 pipeline 得到的。

安全性
Phi-3-mini 是根据微软负责任人工智能原则开发的。保证大模型安全的总体方法包括训练后的安全调整、红队(red-teaming)测试、自动化测试和数十个 RAI 危害类别的评估。微软利用受 [BSA+ 24] 启发修改的有用和无害偏好数据集 [BJN+ 22、JLD+ 23] 和多个内部生成的数据集来解决安全性后训练(post-training)的 RAI 危害类别。微软一个独立的 red team 反复检查了 phi-3-mini,以进一步确定后训练过程中需要改进的领域。
根据 red team 的反馈,研究团队整理了额外的数据集从而完善后训练数据集。这一过程导致有害响应率显著降低,如图 3 所示。

下表显示了 phi-3-mini-4k 和 phi-3-mini-128k 与 phi-2、Mistral-7B-v0.1、Gemma 7B 的内部多轮对话 RAI 基准测试结果。该基准测试利用 GPT-4 模拟五个不同类别的多轮对话并评估模型响应。

缺陷
微软表示,就 LLM 能力而言,虽然 phi-3-mini 模型达到了与大型模型相似的语言理解和推理能力水平,但它在某些任务上仍然受到其规模的根本限制。例如,该模型根本没有能力存储太多「事实知识」,这可以从 TriviaQA 上的低评分中看出。不过,研究人员相信这些问题可以通过搜索引擎增强的方式来解决。

参考内容:https://news.ycombinator.com/item?id=40127806
....
#从Llama-1到Llama-3
Llama模型的发布不仅证明了开源模型在全球AI领域的重要性,也为AI的未来发展方向提供了新的视角和动力。通过持续的技术进步和社区驱动的创新,Llama有望继续推动全球AI技术的广泛应用和发展。
在AI领域,大模型的发展正以前所未有的速度推进技术的边界。
北京时间4月19日凌晨,Meta在官网上官宣了Llama-3,作为继Llama-1、Llama-2和Code-Llama之后的第三代模型,Llama-3在多个基准测试中实现了全面领先,性能优于业界同类最先进的模型。
纵观Llama系列模型,从版本1到3,展示了大规模预训练语言模型的演进及其在实际应用中的显著潜力。这些模型不仅在技术上不断刷新纪录,更在商业和学术界产生了深远的影响。因此,对Llama模型不同版本之间的系统对比,不仅可以揭示技术进步的具体细节,也能帮助我们理解这些高级模型如何解决现实世界的复杂问题。
1. Llama进化史
本节将对每个版本的Llama模型进行简要介绍,包括它们发布的时间和主要特点。
1.1 Llama-1 系列
Llama-1 [1]是Meta在2023年2月发布的大语言模型,是当时性能非常出色的开源模型之一,有7B、13B、30B和65B四个参数量版本。Llama-1各个参数量版本都在超过1T token的语料上进行了预训训练,其中,最大的65B参数的模型在2,048张A100 80G GPU上训练了近21天,并在大多数基准测试中超越了具有175B参数的GPT-3。
由于模型开源且性能优异,Llama迅速成为了开源社区中最受欢迎的大模型之一,以Llama为核心的生态圈也由此崛起。我们将在第6节对这一生态进行详细介绍。与此同时,众多研究者将其作为基座模型,进行了继续预训练或者微调,衍生出了众多变体模型(见下图),极大地推动了大模型领域的研究进展。

唯一美中不足的是,因为开源协议问题,Llama-1不可免费商用。
1.2 Llama-2 系列
时隔5个月,Meta在2023年7月发布了免费可商用版本 Llama-2 [2],有7B、13B、34B和70B四个参数量版本,除了34B模型外,其他均已开源。

相比于Llama-1,Llama-2将预训练的语料扩充到了 2T token,同时将模型的上下文长度从2,048翻倍到了4,096,并引入了分组查询注意力机制(grouped-query attention, GQA)等技术。
有了更强大的基座模型Llama-2,Meta通过进一步的有监督微调(Supervised Fine-Tuning, SFT)、基于人类反馈的强化学习(Reinforcement Learning with Human Feedback, RLHF)等技术对模型进行迭代优化,并发布了面向对话应用的微调系列模型 Llama-2 Chat。
通过“预训练-有监督微调-基于人类反馈的强化学习”这一训练流程,Llama-2 Chat不仅在众多基准测试中取得了更好的模型性能,同时在应用中也更加安全。
随后,得益于Llama-2的优异性能,Meta在2023年8月发布了专注于代码生成的Code-Llama,共有7B、13B、34B和70B四个参数量版本。

1.3 Llama-3
系列2024年4月,Meta正式发布了开源大模型 Llama 3,包括8B和70B两个参数量版本。除此之外,Meta还透露,400B的Llama-3还在训练中。

相比Llama-2,Llama-3支持8K长文本,并采用了一个编码效率更高的tokenizer,词表大小为128K。在预训练数据方面,Llama-3使用了超过15T token的语料,这比Llama 2的7倍还多。
Llama-3在性能上取得了巨大飞跃,并在相同规模的大模型中取得了最优异的性能。
另外,推理、代码生成和指令跟随等能力得到了极大的改进,使Llama 3更加可控。
2. 模型架构
本节将详细描述Llama的模型架构,包括神经网络的大小、层数、注意力机制等。
目前,主流的大语言模型都采用了Transformer[3]架构,它是一个基于多层自注意力(Self-attention)的神经网络模型。
原始的Transformer由编码器(Encoder)和解码器(Decoder)两个部分构成,同时,这两个部分也可以独立使用。
例如基于编码器的BERT [4]模型和基于解码器的GPT [5]模型。
Llama模型与GPT类似,也是采用了基于解码器的架构。在原始Transformer解码器的基础上,Llama进行了如下改动:
- 为了增强训练稳定性,采用前置的RMSNorm [6]作为层归一化方法。
- 为了提高模型性能,采用SwiGLU [7]作为激活函数。
- 为了更好地建模长序列数据,采用RoPE [8]作为位置编码。
- 为了平衡效率和性能,部分模型采用了分组查询注意力机制(Grouped-Query Attention, GQA)[9]。
具体来说,首先将输入的token序列通过词嵌入(word embedding)矩阵转化为词向量序列。然后,词向量序列作为隐藏层状态依次通过𝐿个解码器层,并在最后使用RMSNorm进行归一化。归一化后的隐藏层状态将作为最后的输出。
在每个解码器层中,输入的隐藏层状态首先通过RMSNorm归一化然后被送入注意力模块。注意力模块的输出将和归一化前的隐藏层状态进行残差连接。之后,新的隐藏层状态进行RMSNorm归一化,然后被送入前馈网络层。类似地,前馈网络层的输出同样进行残差连接,作为解码器层的输出。
每个版本的Llama由于其隐藏层的大小、层数的不同,均有不同的变体。接下来,我们将展开看下每个版本的不同变体。
2.1 Llama-1 系列
Llama-1 模型架构,详见MODEL_CARD:
https://github.com/meta-llama/llama/blob/main/MODEL_CARD.md

为了更好地编码数据,Llama-1使用BPE [10]算法进行分词,具体由sentencepiece进行实现。值得注意的是,Llama-1将所有数字分解为单独的数字,并对未知的UTF-8字符回退到字节进行分解。词表大小为32k。
2.2 Llama-2 系列
Llama-2 模型架构,详见MODEL_CARD(同上)

Llama-2使用了和Llama-1相同的模型架构以及tokenizer。与Llama-1不同的是,Llama-2将上下文长长度扩展到了4k,并且34B和70B参数量版本使用了GQA。
2.3 Llama-3 系列
Llama-3 模型架构,详见MODEL_CARD:
https://github.com/meta-llama/llama3/blob/main/MODEL_CARD.md

与Llama 2相比,Llama-3将tokenizer由sentencepiece换成了tiktoken,这与GPT4 保持一致。同时,词表大小由32k扩展到了128k。另外,为了提高模型效率,Llama-3 8B和70B都采用了GQA。同时上下文长度也扩展到了8k。
3. 训练数据
本节将对每个版本的训练数据进行简要介绍,包括数据来源、规模和处理方式。
3.1 Llama-1 系列
Llama-1使用了海量无标注数据进行自监督学习,这些预训练数据由多个来源混合而成,且都是公开的数据。各个来源的数据量和采样比例见下表。

- 英语CommonCrawl:Llama-1预处理了2017年至2020年间的五个CommonCrawl数据集。该过程在行级别去重,使用fastText线性分类器进行语言识别以去除非英语页面,并使用n-gram语言模型过滤低质量内容。此外,Llama-1训练了一个线性模型来分类维基百科中用作参考的页面和随机采样的页面,并丢弃了未被分类为参考的页面。
- C4:在探索性实验中,Llama-1观察到使用多样化的预处理CommonCrawl数据集可以提升性能。因此,Llama-1的数据中包括了公开可获得的C4数据集。C4的预处理也包括去重和语言识别步骤:与CCNet的主要区别在于质量过滤,主要依赖于标点符号的存在或网页中的单词和句子数量等启发式规则。
- Github:Llama-1使用Google BigQuery上可公开获取的GitHub数据集。Llama-1仅保留在Apache、BSD和MIT许可下分发的项目。此外,Llama-1还使用基于行长度或字母数字字符比例的启发式规则过滤低质量文件,并用正则表达式移除如页眉等样板内容。最后,Llama-1在文件级别对结果数据集进行去重,匹配精确相同的内容。
- 维基百科:Llama-1添加了2022年6月至8月期间的维基百科数据,涵盖使用拉丁或西里尔文字的20种语言。Llama-1处理数据以移除超链接、评论和其他格式化的样板内容。
- Gutenberg和Books3:Llama-1在训练数据集中包括了两个书籍语料库:Gutenberg项目(包含公共领域的书籍)和ThePile的Books3部分,一个公开可获得的用于训练大型语言模型的数据集。Llama-1在书籍级别进行去重,移除超过90%内容重合的书籍。
- ArXiv :Llama-1处理ArXiv的Latex文件,以增加科学数据到Llama-1的数据集。Llama-1移除了第一节之前的所有内容以及参考文献部分。Llama-1还移除了.tex文件中的注释,并内联扩展了用户编写的定义和宏,以增强论文间的一致性。
- Stack Exchange:Llama-1包括了Stack Exchange的数据转储,这是一个涵盖从计算机科学到化学等多种领域的高质量问题和答案的网站。Llama-1保留了28个最大网站的数据,移除了文本中的HTML标签,并根据得分将答案排序(从最高到最低)。
经过上述处理,Llama-1的整个训练数据集包含大约1.4T token。对于Llama-1的大部分训练数据,每个token在训练期间只使用一次,但维基百科和Books的数据进行了大约两个epoch的训练。
3.2 Llama-2
Llama-2 预训练使用了来自公开可用源的 2T个数据token(未详细指出具体的开源数据)。Llama-2-Chat 还在为此项目创建的27,540个提示-响应对上进行了额外的微调,其表现优于更大但质量较低的第三方数据集。为了实现AI对齐,使用了包含1,418,091个Meta示例和七个较小数据集的组合的人类反馈强化学习(RLHF)。在Meta示例中,平均对话深度为3.9,Anthropic Helpful 和 Anthropic Harmless集合为3.0,包括OpenAI Summarize、StackExchange等在内的其他五个集合的平均对话深度为1.0。微调数据包括公开可用的指令数据集以及超过一百万个新的人类标注示例。
在预训练过程中,Llama-2对数据的安全性进行了全面考量。通过对预训练数据进行分析,Llama-2能够增加透明度,并发现潜在的问题根源,如潜在的偏见。Llama-2采取了一系列措施,包括遵循 Meta 公司的隐私和法律审查流程,排除已知含有大量个人信息的网站的数据。此外,Llama-2未对数据集进行额外的过滤,以使模型在各种任务中更广泛可用,同时避免过度清洗可能导致的意外人口统计消除。对于语言的代表性和毒性的分析,Llama-2使用了相应的工具和数据集,以了解预训练数据的特征,为模型的安全调整提供指导。这一过程确保了我们的模型在安全性方面得到了充分的考虑,并促使我们在部署模型之前进行了重要的安全调整。
Llama 2的预训练主要集中在英语数据上,尽管实验观察表明模型在其他语言方面已有一定的熟练度,但由于非英语语言的预训练数据量有限,其熟练度受到限制(如下图所示)。因此,该模型在非英语语言中的性能仍然脆弱,应谨慎使用(说明多语言能力差:有可能是词表较小导致)。

预训练数据截至到2022年9月,但某些调整数据较新,直到2023年7月。
在Llama2发布的技术报告中有说明:
我们将继续努力微调模型,以提高在其他语言环境下的适用性,并在未来发布更新版本,以解决这一问题。
当前Llama-3 不但扩充了词表大小而且增加了多语言的训练语料。从而完成了在Llama2在技术报告的承诺,而且在当前公布出来的多语言任务中获得了大幅度提升的性能。
3.3 Llama-3 系列
为了更好训练Llama-3,研究人员精心设计了预训练语料库,这些不仅关注数量,还特别强调了质量。LLAMA-3其训练数据量大幅增加,从LLAMA-2的2T Tokens扩展到了15T Tokens,增长了约8倍。其中,代码数据扩充了4倍,显著提升了模型在代码能力和逻辑推理能力方面的表现。
LLAMA-3提供了三种规模的模型版本:小型模型具有8B参数,其性能略优于Mistral 7B和Gemma 7B;中型模型则拥有70B参数,其性能介于ChatGPT 3.5和GPT 4之间;大型模型规模达到400B,目前仍在训练中,旨在成为一个多模态、多语言版本的模型,预期性能应与GPT 4或GPT 4V相当。
值得注意的是,LLAMA-3并没有采用MOE(Mixture of Experts)结构,这种结构主要用于降低训练和推理成本,但在性能上通常无法与同规模的密集型(Dense)模型相比。随着模型规模的扩大,如何降低推理成本将成为一个需要关注的问题。
此外,LLAMA-3的训练数据包括了大量的代码token和超过5%的非英语token,来源于30多种语言。这不仅使得模型在处理英语内容时更加高效,也显著提升了其多语言处理能力,这表明LLAMA-3在全球多语言环境中的适应性和应用潜力。
为确保数据质量,Meta开发了一系列数据过滤pipeline,包括启发式过滤器、NSFW过滤器、语义重复数据删除技术及用于预测数据质量的文本分类器。这些工具的有效性得益于先前版本Llama的表现,特别是在识别高质量数据方面。
此外,Meta通过大量实验评估了在最终预训练数据集中混合不同来源数据的最佳策略,确保Llama-3能在多种场景下展现卓越性能,如日常琐事、STEM 领域、编程和历史知识等。
4. 训练方法
本节将对每个版本的训练方法进行简要介绍,包括预训练、有监督微调和基于人类反馈的强化学习。
4.1 Llama-1系列
Llama-1模型是一个基础的自监督学习模型,它没有经过任何形式的特定任务微调。自监督学习是一种机器学习技术,其中模型通过分析大量未标记的数据来预测其输入数据的某些部分。这种方法允许模型在没有人类标注的数据的情况下自动学习数据的内在结构和复杂性。Llama-1在公布的技术报告中详细描述了使用AdamW优化器的机器学习模型的具体训练配置。AdamW是对Adam优化器的改进,可以更有效地处理权重衰减,从而提高训练的稳定性。β1和β2参数的选择影响训练过程的收敛行为和稳定性。Llama-1描述的余弦学习率调度是一种有效的技术,用于在训练期间调整学习率,通过逐渐减少学习率,在某些情况下可以导致更好的收敛。实施0.1的权重衰减和1.0的梯度裁剪是预防过拟合和确保数值稳定性的标准做法。使用预热步骤是一种策略性方法,旨在训练过程初期稳定训练动态。根据模型大小调整学习率和批量大小是一种优化资源分配和效率的实用方法,有可能提高模型性能。
Llama-1也展示了一系列针对大规模语言模型训练进行的优化措施。通过使用xformers库[12]中的causal multi-head attention(通过不存储注意力权重和不计算由于语言建模任务的因果性质而被屏蔽的key/query.分数来实现的)的高效实现,减少了内存占用和计算时间,显示了在处理大量数据时对效率的关注。此外,采用手动实现反向传播函数代替依赖自动微分系统,以及利用检查点技术保存计算成本高的激活,都是提高训练速度和减少资源消耗的有效策略。通过模型和序列并行性以及优化GPU之间的通信,进一步提升了训练过程的效率。这些优化措施特别适合于训练参数庞大的模型,如650亿参数的模型,能显著减少训练时间,提高整体的运算效率。整体上,这些优化技术体现了在高性能计算领域对资源管理和效率优化的深入考量,对于推动大规模语言模型的发展具有重要意义。
4.2 Llama-2系列
Llama-2模型是在Llama-1的基础上进一步发展的,而Llama-2-Chat模型则是基于Llama-2进行微调的版本。这两个模型保持了固定的4k上下文长度,这与OpenAI的GPT-4在微调过程中可能增加的上下文长度不同。
在Llama-2和Llama-2-Chat的微调中,采用了自回归损失函数,这是一种在生成模型中常见的方法,模型预测下一个token时会考虑到之前的所有token。在训练过程中,用户输入提示的token损失被清零,这意味着模型被训练以忽略这些特定的token,从而更专注于生成回复。
Llama-2-Chat的训练过程如下图所示。整个过程起始于利用公开数据对Llama-2进行预训练。在此之后,通过有监督微调创建了Llama-2-Chat的初始版本。随后,使用基于人类反馈的强化学习(RLHF)方法来迭代地改进模型,具体包括拒绝采样(Rejection Sampling)和近端策略优化(Proximal Policy Optimization, PPO)。在RLHF阶段,人类偏好数据也在并行迭代,以保持奖励模型的更新。

4.3 Llama-3系列
与Llama-2类似,Llama-3系列也有两个模型——预训练模型Llama-3和微调后的模型Llama-3-Instruct。
在预训练阶段,为了有效地利用预训练数据,Llama-3投入了大量精力来扩大预训练。具体而言,通过为下游基准测试制定一系列扩展法则(scaling laws),使得在训练之前就能预测出模型在关键任务上的性能,进而选择最佳的数据组合。
在这一过程中,Llama-3对扩展法则有了一些新的观察。例如,根据DeepMind 团队提出的Chinchilla [11]扩展法则,8B模型的最优训练数据量约为200B token,但实验发现,即使训练了两个数量级的数据后,模型性能仍在继续提高。在多达15T token上进行训练后,8B和70B参数的模型都继续以对数线性的方式提升性能。
为了训练最大的Llama-3模型,Meta结合了三种并行策略:数据并行、模型并行和流水并行。当同时在16K GPU上进行训练时,最高效的策略实现了每个GPU超过400 TFLOPS的计算利用率。最后,模型在两个定制的24K GPU集群上进行了训练。
为了最大限度地延长GPU的正常运行时间,Meta开发了一个先进的新训练堆栈,可以自动检测、处理和维护错误。另外还大大提高了硬件可靠性和无声数据损坏的检测机制,并开发了新的可扩展存储系统,减少了检查点和回滚的开销。这些改进使总的有效训练时间超过95%。综合起来,这些改进使Llama-3的训练效率比Llama-2提高了约三倍。
在微调阶段,Meta对模型的微调方法进行了重大创新,结合了有监督微调(Supervised Fine-Tuning, SFT)、拒绝采样、近似策略优化(Proximal Policy Optimization, PPO)和直接策略优化(Direct Policy Optimization, DPO)。这种综合方法优化了模型在执行复杂的推理和编码任务时的表现。特别是通过偏好排序的训练,Llama-3在处理复杂的逻辑推理问题时能更准确地选择最合适的答案,这对于提高AI在实际应用中的可用性和可靠性至关重要。
5. 效果对比
本节将对比不同版本在众多基准测试中的效果差异。
5.1 Llama-2 vs Llama-1
Meta官方数据显示,Llama-2在众多基准测试中都优于Llama-1和其他开源语言模型。

5.2 Llama-3 vs Llama-2
Meta官方数据显示,在各自参数规模上,Llama-3 8B和70B版本都取得了不错的成绩。8B模型在众多基准测试中均胜过Gemma 7B和Mistral 7B Instruct,而70B模型超越了闭源模型Claude 3 Sonnet,对比谷歌的Gemini Pro 1.5性能也是相当。

同时,在Llama-3的开发过程中,Meta还开发了一个包含1800个提示的高质量人类评估集。评测结果显示,Llama 3不仅大幅超越Llama 2,也战胜了Claude 3 Sonnet、Mistral Medium和GPT-3.5这些知名模型。

Llama-3之所以能够取得如此出色的成绩,离不开它预训练模型的优异性能。在众多基准测试中,8B模型超越了Mistral 7B和Gemma 7B,70B模型则战胜了Gemini Pro 1.0和Mixtral 8x22B。

另外,Meta表示,最大的Llama-3仍在训练中,其参数超过400B,并在多项基准测试中取得了出色的成绩。一旦完成训练,Meta将发表一篇详细的研究论文。

值得注意的是,根据英伟达科学家Jim Fan的整理,Llama3 400B基本逼近Claude-3-Opus和GPT-4-turbo,这将意味着开源社区即将迎来GPT-4级大模型。

6. 社区影响
本节将简要介绍Llama模型对开源社区的影响。
6.1 开放源代码模型的力量
自Meta发布Llama模型以来,它对全球AI社区产生了深远的影响。作为一个开源的大语言模型(LLM),Llama不仅提供了一个强大的技术基础,还推动了全球范围内对AI技术的广泛采用和创新。
Llama模型的开源策略被视为LLM时代的“安卓”,这意味着它提供了一个模块化和可自定义的平台,使研究人员和开发者能够根据自己的需要调整和优化模型。这种开放性极大地降低了进入门槛,使得从小型创业公司到大型企业都能够利用这一技术。四月十九日的Llama 3的发布,一日的下载量已经突破了1.14k,两个8B的模型位列trending第一。

6.2 对全球AI研发的影响
在OpenAI转向更封闭的商业模式后,Llama的发布为全球进行AI项目研发的团队和个人提供了一种可靠的选择。这种开源模型确保了用户不必完全依赖单一的商业API,从而增加了企业的运营安全感和自由度,尤其是在数据安全和成本控制方面。
6.3 技术进步和社区创新
技术上,Llama模型已经展示了与GPT相媲美的性能,这证明了开源社区在推动前沿技术方面的能力。此外,社区通过对模型的不断优化和调整,在不同的垂直领域中开发出适用的解决方案,类似于Stable Diffusion和Midjourney等社区驱动的大模型。
6.4 生态系统和多样性
Llama的应用已经扩展到多种平台和设备,包括移动和边缘设备。这种多样化的应用不仅推动了技术的普及,也加速了新应用的创新。例如,云平台如AWS和Google Cloud的积极参与,证明了Llama模型的广泛适用性和强大功能。
6.5 Llama社区的未来展望
随着Llama模型的持续发展和优化,Meta强调了对多模态AI、安全性和责任以及社区支持的持续关注。这些方向不仅符合当前AI发展的趋势,也为Llama社区的未来提供了明确的路线图。
7. 总结
总之,Llama模型的发布不仅证明了开源模型在全球AI领域的重要性,也为AI的未来发展方向提供了新的视角和动力。通过持续的技术进步和社区驱动的创新,Llama有望继续推动全球AI技术的广泛应用和发展。
....
#多智能体协作是新关键,软件开发等任务将更高效
起了众多讨论。其中,吴恩达谈到基于 GPT-3.5 构建的智能体工作流在应用中表现比 GPT-4 要好。这表明,将目光局限于大模型不一定可取,智能体或许会比其所用的基础模型更加优秀。
在软件开发领域,这些智能体展示了其独特的能力,能够高效协作,处理编程中的复杂问题,甚至进行代码自动生成。最新的技术动态显示,AI 智能通在软件开发中显示出巨大的潜力。还记得 Devin 吗?号称世界第一个 AI 软件工程师的它出场就惊艳到了我们,一个智能体就能带给我们如此体验,如果是多个智能体合作,是不是能够直接把体验值直接拉满呢?
想象一下,一个由多个智能体组成的团队,每一个成员都擅长于特定的任务,如代码审查、错误检测或新功能实现。这些智能体可以互补彼此的能力,共同推进软件项目的进度。这岂不是解放了码农的双手,再也不怕腱鞘炎了。
吴恩达撰新文一篇带我们深入这一领域,探索智能体系统的最新动态。文章中提及的 AutoGen 和 LangGraph 等工具,正是在这一大背景下应运而生。这些工具旨在帮助开发者更容易地部署和管理 AI 智能体,从而充分发挥其潜力。凭借它们的力量,即使是没有深厚编程背景的人也能够利用 AI 智能体来优化和自动化软件开发流程。以下是机器之心不改变原义的整理与翻译。
原文链接:https://www.deeplearning.ai/the-batch/issue-245/
多智能体协作是我在最近几封信中描述的四种关键 AI 智能体设计模式中的最后一种。对于像编写软件这样的复杂任务,多智能体方法会将任务分解成由不同角色(如软件工程师、产品经理、设计师、QA 工程师等)执行的子任务,并让不同的智能体完成不同的子任务。
不同的智能体可以通过提示一个 LLM(或多个 LLM)执行不同的任务来构建。例如,要建立一个软件工程师智能体,我们可以提示 LLM:「你是编写清晰、高效代码的专家。请编写代码来执行任务......」。
尽管我们多次调用同一个大型语言模型(LLM),但我们采用多智能体的编程抽象方法,这看似违反直觉,但却有几个理由支持:
- 它有效!许多团队使用这种方法取得了良好的效果,没有什么比结果更有说服力的了。此外,消融研究(例如在 AutoGen 论文中)表明,多智能体的表现优于单一智能体。
- 虽然现今的一些 LLM 能接受非常长的输入上下文(例如,Gemini 1.5 Pro 可以接受 100 万个 token),但它们真正理解长而复杂输入的能力是参差不齐的。采用智能体工作流,让 LLM 一次专注于一件事,可以获得更好的表现。
- 最重要的是,多智能体设计模式为开发者提供了一个框架,用以将复杂任务分解成子任务。当在单个 CPU 上运行代码时,我们经常将程序分解成不同的进程或线程。这种抽象有助于我们将任务分解成更易于编码的子任务。使用多智能体角色进行思考同样是一个有用的抽象。

在许多公司中,管理者通常会决定招聘哪些角色,然后如何将复杂项目 —— 如编写一大块软件或准备研究报告 —— 分解为更小的任务分配给具有不同专长的员工。使用多个智能体的做法与此类似。每个智能体实施自己的工作流程,拥有自己的记忆(这本身是智能体技术中一个迅速发展的领域:一个智能体如何记住足够多的过去互动以在未来的任务中表现得更好),并可能请求其他智能体的帮助。智能体还可以进行规划和使用工具。这会产生了大量的 LLM 调用和智能体间的信息传递,可能形成非常复杂的工作流程。
虽然管理人员困难,但这是我们非常熟悉的,它为我们如何「雇佣」和分配任务给我们的 AI 智能体提供了一个心理框架。幸运的是,管理不善 AI 智能体的损害远低于管理不善人类!
像 AutoGen、Crew AI 和 LangGraph 这样的新兴框架为解决问题提供了丰富的多智能体解决方案。如果你对玩乐趣十足的多智能体系统感兴趣,不妨看看 ChatDev,这是一个运行虚拟软件公司的智能体集合的开源实现。你可以查看他们的 GitHub repo,也许克隆 repo 并亲自运行系统。虽然它可能不总是产生你想要的结果,但你可能会对它的表现感到惊讶。
就像规划这一设计模式一样,我发现多智能体协作的输出质量很难预测,特别是当允许智能体自由交互并为它们提供多种工具时。更成熟的反思和工具使用模式更为可靠。希望你能享受这些智能体设计模式的乐趣,并且它们能为你带来惊人的结果!如果你有兴趣了解更多,可以阅读以下文章:
- 论文标题:Communicative Agents for Software Development
- 论文链接:https://arxiv.org/pdf/2307.07924.pdf
- 论文标题:AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation
- 论文链接:https://arxiv.org/pdf/2308.08155.pdf
- 论文标题:METAGPT: META PROGRAMMING FOR A MULTI-AGENT COLLABORATIVE FRAMEWORK
- 论文链接:https://arxiv.org/pdf/2308.00352.pdf
更多详细内容,请阅读原文。
看了本篇文章,网友们大受启发,不过也有网友提出,多智能体系统在执行相同或类似任务时表现出的稳定性和可预测性还有待考量。你觉得多智能体协作的益弊何在呢?
....
#MIMIC-Diff-VQA
大模型想打开应用前景,要从数据集入手。
胸部 X 光片图像作为临床诊断最常用的手段之一,是计算机与医学结合的一个重要领域。其丰富的视觉和病例报告文本信息促进了 vision-language 在医学领域发展。医学 VQA 是其中的一个重要方向,近年来比较著名的 ImageCLEF-VQA-Med,和 VQA-RAD 数据集包含了许多了胸部 X 光片问答对。
然而,尽管 X 胸片检查报告中包含大量临床信息,现有医学 VQA 任务的问题种类和数量有限,在临床方面的贡献也相对有限。例如,ImageCLEF-VQA-Med 对于胸部 X 光片模态只有两种问题,“这张图片里是否有异常?”,以及 “这张图片里最主要的异常是什么?”,VQA-RAD 的问题种类虽然更丰富,但是却只含有 315 张图片。
在今年的 KDD2023 上,来自德州大学阿灵顿分校,NIH 以及日本理化学研究所,东京大学,国立癌症研究中心的研究人员和放射科医生,联合设计了一个服务临床诊断的大型 VQA 数据集,MIMIC-Diff-VQA。
论文地址:https://arxiv.org/abs/2307.11986
该数据基于放射科胸片报告,设计了种类更加丰富,内容更加准确的具有逻辑递进的问答对,涵盖 7 种不同的问题类型。

图 1:临床的诊断过程,医生通过比较病程前后图像的差异做出判断
该研究同时提出了一个全新任务,图像对比 VQA (difference VQA):给定两张图片,回答关于这两张图片差异性的问题。在医学领域,这个任务直接反映了放射科医生的需求。在临床实践中,如图 1 所示,医生经常需要对比回看病人之前的医学影像,评估病灶变化情况并以评价诊疗过程。因此 Difference VQA 提出的问题包括” 这张图片与过去的图片相比有什么变化?”, “疾病的严重程度是否有减轻?”
本次公布的数据集包含 16 万张图片和 70 万问题,这大大刷新了此前的医学 VQA 数据集的大小记录。基于该数据集,本文同时也提供了一个利用 GNN 的 VQA 方法作为 basline。为了解决临床放射科图片中病人姿态差异的问题,该研究使用 Faster R-CNN 提取器官的特征作为图的节点,通过整合隐含关系、空间关系和语义关系三种图网络关系来融合了医学专家的知识。其中空间关系是指各个器官之间的位置关系,语义关系包括解剖学和疾病关系知识图,隐含关系通过全连接关系作为前两者的补充。这些节点间的关系被嵌入到图网络的边中,并通过 ReGAT (Relation-aware graph attention network) 用于对最终图特征进行计算。研究团队希望这个数据集能够促进医学领域视觉问答技术的发展,特别是为如 GPT-4 等 LLM 真正服务于临床提供基准,真正成为支持临床决策和患者教育有用的工具。
目前医学 Vision Language 发展现状
医学 Vision Language 领域对现有医疗数据库进行了很多探索来训练深度学习模型。这些数据库包括,MIMIC-CXR, NIH14 和 CheXpert 等。在这些工作通常分为三类:疾病标签的直接分类 (图 2 (b)),医学报告生成 (图 2 (c)) 以及视觉问答任务 (图 2 (d))。疾病标签分类任务首先通过简单的 rule-based 工具,例如 NegBio 和 CheXpert,从报告内容中提取生成预先定义的标签, 随后对正样本和负样本进行分类。报告生成领域的方法繁多,诸如对比学习,Attention 模型,Encoder-Decoder 模型等,核心工作都是将图片信息转化为文字来拟合原始的报告。尽管这些任务取得了很多进展,但从具体临床应用角度来看仍存在局限性。
例如在疾病标签分类中 (图 2 (b)) 中,自然语言处理(NLP)规则经常处理不好不确定性和否定项,导致提取的标签出了不准确。同时,简单的标签只提供了单一的异常信息,无法反映临床疾病的多样性。报告生成系统 (图 2 (c)) 通过挖掘图像中的隐含信息避免这个问题,但是它不能结合临床情况回答医生关注的特定问题。例如图 2 (a) 中,原始放射学报告中排除了多种常见或是医生较为关注的疾病,但是人工报告生成器很难猜测放射科医师想要排除哪些疾病。
相比之下,视觉问答(VQA)任务 (图 2 (c)) 更加可行,因为它可以回答医生或病人所关注的特定问题,比如在之前提到的例子中,问题可以设定为 “图像中是否有气胸 ",而答案无疑是" 没有 "。然而,现有的 VQA 数据集 ImageCLEF-VQA-Med 仅仅包含少量通用问题,比如" 图像有什么问题吗?这张图像的主要异常是什么?",缺乏多样性。这样的问题不仅将 VQA 问题降级为分类问题,而且对临床提供的帮助信息也有限。虽然 VQA-RAD 涵盖 11 种问题类型的问题更加多样,但该数据集仅含有 315 张图像,无法充分发挥出需要大量数据投喂的深度学习模型的性能。为了填补医学 Vision Language 领域的这个空缺,该研究充分结合放射科医生的实践,提出了这项图像对比 VQA(difference VQA)任务,并且基于此任务构建了一个大型的 MIMIC-Diff-VQA 数据集。

图 2:目前医学 Vision Language 各种方法的对比
数据集介绍
MIMIC-Diff-VQA 数据集包括 164,654 张图片,和 700,703 问题,含盖 7 种不同的具有临床意义的问题类型,包括异常,存在,方位,位置,级别,类型,和差异。前六种问题和传统 VQA 一致,针对于当前图片提问,只有差异类型问题是针对两张图片的问题。各个问题的比例数据和完整问题列表请分别见图 3 和见表格 1。

图 3:MIMIC-Diff-VQA 问题类型的统计数据

表 1:每种问题类型的问题示例
数据集构建
依托于 MIMIC-CXR 提供的海量的胸部 X 光片图像和文本报告,从 377110 张图片和 227835 个放射学报告中,该研究在放射科医生的指导下构建了 MIMIC-Diff-VQA 数据集。
构造 MIMIC-Diff-VQA 数据集的第一步是提取一个 KeyInfo dataset。这个 KeyInfo dataset 包含每个放射学报告中的关键信息,比如报告中出现的肯定的异常对象,及其对应的异常名称、级别、类型、位置,以及否定出现的对象名。提取过程的第一步是根据医生的意见选取出最常用的异常关键词,和其对应的属性关键词(级别、类型、位置),之后再设定相应的规则对这些关键信息进行提取,同时保留其” 肯定 / 否定 “信息。
为了保证数据集构建的质量,该研究主要遵循 “提取 - 检查 - 修改” 的步骤,首先通过正则表达式设定的规则对数据库报告中的关键信息进行提取,然后利用手动和自动的方法对提取结果进行检查,接下来对出现问题的地方进行修改使提取结果更加准确。其中,检查时使用的自动方法包括:使用 ScispaCy 提取报告中的 entity 名称,考虑 Part-of-Speech 在句子中的作用,交叉验证 MIMIC-CXR-JPG 数据集中的 label 提取结果。综合这些自动化方法和手动验证筛选,通过 “提取 - 检查 - 修改” 的步骤,该研究最终完成了 KeyInfo dataset 的构建。
在完成 KeyInfo dataset 的构建之后,该研究便可以在其基础上设计每一个病人的单次或多次访问对应的问题和答案,最终构成了 MIMIC-Diff-VQA 数据集。
质量保证
为了进一步保证生成数据集的质量,该研究使用三个人工验证者随机对总计 1700 个考题和答案进行了人工验证,如表 2 所示,最终的平均正确率达到了 97.4%。

表 2:人工验证数据集结果
Baseline 模型介绍
同时,在提出的数据集基础上,该研究针对胸部 X 光片和 Difference VQA 任务设计了一个图网络模型。如图 4 所示,考虑拍摄胸部 X 光片的过程中,到同一个病人在不同时间点可能由于身体姿态的不同,拍摄的图像可能伴随着大尺度的位移和改变。

图 4:该研究提出方法的模型结构
因此,gai通过对输入的图片进行解剖学结构定位,并提取对应检测对象的特征作为图网络的节点,以排除病人身体姿态对特征的影响。图网络中的每一个节点是一个解剖学结构位置的特征与问题特征的结合。为了充分挖掘图像中可能包含的病变信息,该研究通过不同的预训练模型为每一个解剖学结构提取一个纯解剖学结构特征和一个疾病特征。
在 “多关系图网络模块” 中,该研究进行了三种不同的图网络关系来计算最终的图网络特征,包括:隐含关系,空间关系,语义关系。对于隐含关系,使用简单的全连接以让模型在潜在关系中发掘有价值的信息。对于空间关系,研究团队考虑了节点之间 11 种不同的空间关系作为边,并用 ReGAT (Relation-aware Graph Attention Network) 进行计算。对于语义关系,该研究引入了两种知识图谱,即,共现知识图谱(Co-occurrence Knowledge graph),和解剖学知识图谱(Anatomical Knowledge graph)。前者考虑不同疾病之间共同出现的概率关系,后者考虑疾病与解剖学之间的关系。
由于该研究在第一步提取了对应的解剖学结构特征和疾病特征,于是便可以将他们嵌入到这两种知识图谱当中。与空间关系的图网络计算类似,该研究考虑了三种语义关系:共现关系,解剖学关系,无关系,来作为图网络的边,每一种关系用一个数字标签来进行表征,并使用 ReGAT 进行运算。
最终,三种关系图网络计算后的节点特征进行全局平均池化,得到最终图像对应的图特征。将两张图片的图特征相减便可得到差异图特征。对这些特征通过注意力机制得到对应的特征向量,然后将两张图片的特征向量和相减后得到的差异特征向量输入最终的 LSTM 答案生成器,便可得到最终的答案。
该研究将模型与领域内最先进的方法做对比,包括 MMQ (Multiple Meta-model Quantifying), MCCFormers ( Multi-Change Captioning transformers), 和 IDCPCL (Image Difference Captioning with Pre-training and Contrastive Learning)。其中 MMQ 是传统医学 VQA 模型,MCCFormers 和 IDCPCL 是差异描述(Difference Captioning)模型。由于 MMQ 无法处理多张图像,该研究仅在除了 Difference 类问题以外的其他六种问题上将它与所提模型作对比。对于 MCCFormers 和 IDCPCL,由于他们不是 VQA 模型并且必须同时输入两张图片,因此该研究仅在 Difference 类问题上与他们进行对比。对比结果如表 3 和表 4 所示,该模型在 Difference VQA 上显示出了更优越的性能。

表 3:该研究提出的方法与 MMQ 在 non-difference 类问题上的准确率对比

表 4:几种方法与差异描述方法在 Difference 类问题上的对比
总结与讨论
该研究提出了一个医学 Difference VQA 问题,并收集了一个大规模的 MIMIC-Diff-VQA 数据集,以此希望能对推动学界相关技术的发展,同时为医学界提供有力的支持,包括提供临床决策辅助和患者教育工具等方面。同时,该研究设计了一个专家知识感知的多关系图网络模型来解决这个问题,为学界提供了一个基准模型作为参照。与当前在相关领域最先进的方法的比较表明,该研究所提方法取得了显著改进。
然而,该研究的数据集和方法仍存在一定的局限性,比如数据集没有考虑对于特殊情况下同一个病灶出现在多于两处的情况,以及同义词的合并也有进一步的提升空间。
此外,所提模型也会产生一些错误,包括:1、对同一异常的不同呈现方面的混淆,例如肺不张和肺浸润被互相误认。2、相同类型异常的不同名称,例如心影增大被错误分类为心脏肥大。3、用于提取图像特征的预训练模型(Faster-RCNN)可能提供不准确的特征,并导致错误的预测,例如错误地将肺浸润识别为胸膜积液。
....
#大模型训练の坑
大模型不太会 就给自己看看哦 浅谈谈对大模型训练的一些看法。
在没有完全复现chatgpt之前,这些东西都是包大人根据公开资料和实践经验收敛出来的判断,仅供参考,所有的论断都有可能被新技术推翻。
1.冷启动可能是一个很重要的东西。
大模型的训练过程就是一步一步从全网数据得到的语言模型逐渐逼近接近人的语言习惯。
pretraining是给SFT冷启动,SFT是给RL冷启动。
在每一个独立环节里,冷启动的也是需要的,比如LLama2里面提到了一个SFT的bootstrap的方法,RL中的迭代式和拒绝采样的方法。
pretraining让大模型具有基本的知识储备和语言模型的泛化,这样给SFT一个很好的初始化,降低SFT阶段的数据消耗,让他初步对齐人的习惯。
SFT更像是给RL阶段的采样一个冷启动的能力,防止采样到的东西超出了RM的判别能力圈,让他尽量的接近RM限定的好的和坏的的范围之内。
但是SFT的数据构造成本是很高的,比如国内有扒gpt数据,想去通过SFT蒸馏gpt的能力,这个思路挺符合直觉,如果没有很好的人力物力的话,也不失为一种方法。
SFT相比RL训练过程,其达到的泛化能力上限是比较差的,因为数据总有尽头,高质量的数据更是难上加难,直接的训练更像是方向上的指引,SFT阶段的冷启动可能也是必要的。
最后在RL阶段,把无限的数据生成交给采样的过程,把判别好坏的过程交给RM。这个过程中,LLM和RM的能力需要同步匹配进化,防止LLM太强之后,RM丧失判断力, 这就是我们看到的llama2迭代式更新。
RM的水很深
RL的过程大家的目的性很明确,像经典的PPO的思路就很符合直觉,解决的问题关键就是RL用在LLM的稳定性上的问题。
稳定性算是有一些明确的技术导向的东西,比如学习过程中加入“正常的参考”,防止学习的过程太激进等,让他尽量保持较好LLM的能力,而不是单纯拟合高分。
但在RM这里,却有很多深坑,有一种叫做reward hacking的现象, 经常出现。
LLM的策略空间太开放了,不像RL打游戏,只有上上下下AABB几个键的组合。
LLM的词表下选哪个词,词组成什么序列,都是一个策略。
开放的决策对于模拟打分环境来说难度太大了,对RM的泛化程度有极其高的要求。
假设一个场景,如果你的LLM有badcase,你想把所有已知的badcase在RM中设置为差,随便标点数据的正常的话设置为好。
然后把判别badcase的rm用来做强化学习,妄图消灭所有的badcase,这个很符合直觉的思路有巨大的坑。
你会发现你的RL最终学习到的是一种未知的高分模式,在你badcase之外又找到了另外一种badcase当成了高分。
就像蚂蚁在白纸上走路,四周都是大坑,只有一小块地安全,他随机游走,你不停地在他经过的不好的方向上打X。
结果发现不好的方向无穷尽,根本打不完。
最终大概率你的模型学习到了输出一堆没什么用的东西,但是RM分数很高。
这就是reward hacking。
如果你不在本质上提升RM全知全能的打分能力,仅仅靠加大KL散度惩罚,value裁剪等方式,都是缓解问题的发生而不是根本解决。
最后一头包。。
这个在LLama2的论文的过程中有所体现,meta团队很重注保持RM的能力,当发现RM丧失判断力的时候,及时更新迭代它。
防止让RL鼓励出一些奇奇怪怪的东西。
RM的能力除了体现在泛化性,也体现在区分度上,所以我们看到了meta把人脸里面的margin搬过来了。。
效率与效果的权衡
除了硬件和流水线上的优化,样本的构造,learning的过程中有很多这样的优化点。
比如之前提到的多轮对话的构造trick大模型微调样本构造的trick,这就是能极大提高学习效率的方法,我们在LLama2中也看到了同样思路的操作。
不过llama做的更离谱和激进一些,把不同session也搞到一起了。通过的special token让模区分开,这个细节要确认下。
这里认为有一种特殊的结束符分割了不同的session,普通结束符号类似分割轮次。
除了在数据构造上,learning的过程中,也有一些效率和效果的权衡,像DPO这种方法,可以省掉PPO采样的时间。
DPO在对齐的时候,把RM和采样的压力,转化为标注数据的压力。
这样的方法也可以提高训练效率,不过在对齐阶段,追求数据的绝对的量似乎太困难了,大家基本都用了相对数据比较少的质量高数据,通过已有LLM的基础得到的RM来训练。
DPO这种方法似乎走了反方向,需要你你充足够多的钱,标足够多的数据,效果能否达到PPO的天花板有待考证。
效率和效果永远是个权衡,LLama2在最后一个阶段就选取了牺牲效率获取质量,使用了拒绝采样的方法,防止 RL过程中学习到一些未知的惊喜。
这个多次采样选一个基本把资源的消耗提升了采样次数的倍数。
整体看起来,越靠近pipelin的后面,越要关注质量,当然越靠近后面的实际上在整体中的资源耗费是比较小的,所以可以相对牺牲一些效率。
这样看起来DPO就不是很科学了,反而拒绝采样是一个相对合理的解法。
大模型评估很关键,水很深。
这个前面写过大模型评测,也太难了吧,和大模型训练太难了!里面总结过一些原因,其中关键的观点就是评估做不好的话,会影响实验效率,实验效率可以折算成单位时间的算力消耗,
可以推导出评估做不好 = 费钱费时。
所以你做实验慢了,相当于比别人少了GPU,足够触目惊心吧。
openai不仅仅卡多,还有实验效率倍增的buff,相当于 卡 * 效率倍数。
至今也没有一个公开的特别靠谱的自动化评估方
下游微调的水很深。
这个前面写过大模型评测,也太难了吧,和大模型训练太难了!里面总结过一些原因,其中关键的观点就是评估做不好的话,会影响实验效率,实验效率可以折算成单位时间的算力消耗,
可以推导出评估做不好 = 费钱费时。
所以你做实验慢了,相当于比别人少了GPU,足够触目惊心吧。
openai不仅仅卡多,还有实验效率倍增的buff,相当于 卡 * 效率倍数。
至今也没有一个公开的特别靠谱的自动化评估方
大家都想着的是我通过标一些领域数据,然后在领域数据上进行SFT和对齐,使它用于领域额外的能力。
这里我们分两种情况,如果你把他当成一个场景单一模型的话,当成bert T5这么用的话还好。
如果你想着让他保持原有大模型的能力,再嵌入一些额外的知识,这里难度是非常大的。
实践发现你就会完全不是那么回事,基本上就是捡了芝麻丢了西瓜,除非你你只在乎捡芝麻这一件事。
试过就发现要只用领域数据非常容易过拟合到领域数据上,对OOD的处理会表现的非常差。
如果想保持原有的能力的话,对各个环节的数据配比要求会很高,最好是在原来规模程度的数据上,增加额外的场景数据,重新走部分流程。
但是困难的是,原有数据保持分布的采样,你拿到的模型是个黑盒,别人并没有给你原始的数据分布,更何况海涉及到了惊细的清洗。
所以最终的领域大模型,也几乎只是一个丧失了通用能力,基础能力的领域生成模型。
至于你想让他在某一个方向加深能力,并且保持原有的能力不下降,整体要付出的成本不下于重新塑造一个通用大模型。
....
#SmartMoE
PACMAN 实验室探索大模型分布式训练系统再出新成果。
2023 年 7 月,清华大学计算机系 PACMAN 实验室发布稀疏大模型训练系统 SmartMoE,支持用户一键实现 MoE 模型分布式训练,通过自动搜索复杂并行策略,达到开源 MoE 训练系统领先性能。同时,PACMAN 实验室在国际顶级系统会议 USENIX ATC’23 发表长文,作者包括博士生翟明书、何家傲等,通讯作者为翟季冬教授。PACMAN 实验室在机器学习系统领域持续深入研究,SmartMoE 是继 FastMoE, FasterMoE 和 “八卦炉” 后在大模型分布式训练系统上的又一次探索。欲了解更多相关成果可查看翟季冬教授首页:https://pacman.cs.tsinghua.edu.cn/~zjd
Mixture-of-Experts (MoE) 是一种模型稀疏化技术,因其高效扩展大模型参数量的特性而备受研究者关注。为了提高 MoE 模型的易用性、优化 MoE 模型训练性能,PACMAN 实验室在 MoE 大模型训练系统上进行了系统深入的研究。2021 年初,开源发布了 FastMoE 系统,它是第一个基于 PyTorch 的 MoE 分布式训练系统开源实现,在业界产生了较大的影响力。进一步,为了解决专家并行的稀疏、动态计算模式带来的严重性能问题,FasterMoE 系统地分析、优化了专家并行策略。FasterMoE 中设计的「影子专家」技术显著缓解了负载不均问题、通信 - 计算协同调度算法有效隐藏了 all-to-all 通信的高延迟。FasterMoE 成果发表在 PPoPP’22 国际会议。
- 论文地址:https://www.usenix.org/system/files/atc23-zhai.pdf
- 项目地址:https://github.com/zms1999/SmartMoE
MoE 模型遇到的难题
不同于稠密模型直接通过增大模型尺寸实现扩展,如图一所示,MoE 技术通过将一个小模型转变为多个稀疏激活的小模型实现参数扩展。由于各个专家在训练时稀疏激活,MoE 模型得以在不增加每轮迭代计算量的前提下增加模型参数量;从而有望在相同训练时间内获得更强的模型能力。

图一:通过 MoE 技术扩展模型规模为了实现 MoE 大模型的分布式训练,业界提出了专家并行(Expert Parallelism)技术。如图二所示,各个专家被分布式地存储在不同节点上,在训练过程中通过 all-to-all 通信将训练数据发送至对应专家所在节点。专家并行相较于数据并行(Data Parallelism)有更小的内存开销,因为专家参数无冗余存储。可以认为专家并行是一种针对 MoE 结构的模型并行(Model Parallelism)。

图二:专家并行示意图
然而,使用朴素的专家并行技术训练 MoE 模型有严重的性能问题,其根因是 MoE 模型的稀疏激活模式。它会导致节点间产生大量不规则 all-to-all 通信增加延迟、计算量负载不均造成硬件利用率低。如图三所示的真实模型训练过程中的专家选择分布,可以观察到专家间显著的负载不均现象,且分布随训练进行动态变化。

图三:真实训练中的专家选择分布
随着学界对各并行策略的深入研究,使用各并行策略的复杂组合(称为混合并行)进行大模型训练成为必要模式。混合并行的策略调优过程十分复杂,为了提高可用性,学界提出了自动并行算法自动搜索、调优混合并行策略。然而,现有混合并行、自动并行系统无法高效处理 MoE 大模型,他们缺少对 MoE 模型训练稀疏激活、计算负载不均且动态变化的特征的针对性设计。
SmartMoE 带来解决方案
为了实现 MoE 模型的高效训练,SmartMoE 系统对 MoE 模型的分布式训练策略进行了全面的支持。对于常用的四种并行策略(数据并行、流水线并行、模型并行和专家并行),SmartMoE 系统做出了全面的支持,允许用户对它们任意组合;在论文投稿时(2023 年 1 月),尚未有其他系统能做到这一点(如图四所示)。
为了处理 MoE 的动态计算负载,SmartMoE 独特设计了专家放置(Expert Placement)策略,在经典并行策略组合的基础上,实现了动态负载均衡。如图五所示,MoE 模型不同的计算负载(workload)会造成不同专家的过载;使用不同的专家放置顺序,能在特定负载下实现节点间负载均衡。

图四:开源分布式系统对各并行策略的支持情况对比

图五:不同 MoE 训练负载需要不同专家放置策略
为了提高 MoE 模型复杂混合并行策略的易用性,SmartMoE 设计了一套轻量级且有效的两阶段自动并行算法。现有自动并行系统只能在训练开始前进行策略搜索,无法根据负载情况动态调整策略。简单的将现有自动并行搜索算法在训练过程中周期性使用亦不可行,因为训练过程中的并行策略搜索和调整对延迟要求很高,现有算法的开销过大。
SmartMoE 独创性地将自动并行搜索过程分为两阶段:
- 训练开始前,使用经典算法搜索,获得一个较小的候选策略集合
- 训练过程中,根据当前负载,在候选策略集合中动态调整,由于候选策略集合大小有限,此过程的开销可以得到控制。
最终,SmartMoE 实现了轻量级且有效的自动并行,达到了业界领先的性能。
在性能测试中,SmartMoE 在不同模型结构、集群环境和规模下均有优异的表现。例如,在 GPT-MoE 模型的训练性能测试中,相较于 FasterMoE,SmartMoE 有最高 1.88x 的加速比。值得注意的,在对每一轮迭代的性能观察中发现,动态的并行策略调整是必要的,且需要使用合适的调整频率,如图六所示。更多实验细节请参考论文原文。

图六:MoE 模型在不同迭代的运行时间。”dyn.X” 表示每 X 轮进行一次策略调整。

图七:SmartMoE 在 GPT-MoE 模型端到端训练中的性能提升
结语
SmartMoE 现已开源,开发者维护活跃,且仍在持续优化迭代,助力 MoE 大模型的发展。这是 PACMAN 实验室继 FastMoE,[PPoPP’22] FasterMoE,[PPoPP’22] BaGuaLu 后在大模型分布式训练系统上的又一次探索。
....
#XVERSE-13B
性能超越Llama2-13B,可免费商用,姚星创业公司开源百亿参数通用大模型
高性能、可商用,国产大模型又有开源新动向。
8 月 7 日,百亿参数高性能通用大模型「XVERSE-13B」宣布开源。
- Hugging Face:https://huggingface.co/xverse/XVERSE-13B
- Github:https://github.com/xverse-ai/XVERSE-13B
而 XVERSE-13B 的打造者,正是前腾讯公司副总裁姚星老师于2021年初创立的AI 与元宇宙技术服务公司元象 XVERSE。
在离职创业之前,姚星主导创建了腾讯首个人工智能实验室 AI Lab(2016 年)和首个机器人实验室 Robotics X (2018 年),曾推进腾讯在机器学习、计算机视觉、语音到自然语言处理等前沿 AI 技术的研究与应用,主导推出多个有行业影响力的应用与产品,包括国家围棋队 AI 陪练「绝艺」、王者荣耀 AI「绝悟」、中国首款临床用智能显微镜、AI 驱动的新药发现平台「云深智药」及腾讯智慧种植方案 iGrow 等。
打造最强性能的开源大模型
XVERSE-13B 是目前同尺寸中效果最好的多语言大模型,可免费商用。它具备了高性能、全开源、可商用等诸多优势,能大大降低高校和企业部署使用大模型的成本,不仅实现了国产可替代,也是中文应用更好的选择。
在多项权威的标准中文和英文测评中,性能超越了 Llama-2-13B、Baichuan-13B 等国内外开源大模型(见下图一)。

图一:经过多项权威测评,XVERSE-13B 是目前同尺寸中效果最好的多语言大模型。
作为一个通用大模型,XVERSE-13B 可提供文本生成、自动化写作、数据分析、知识问答、多语言翻译、个性化交互、人物角色扮演、专业小助手等多方面的生成服务,在医疗、文旅、金融和娱乐等多个行业具有广阔应用前景。
据了解,元象近期还将发布大模型 Chat 版,开箱即用,持续优化开发者体验。
训练语料对大模型效果至关重要。XVERSE-13B 构建了一个高达 1.4 万亿高质量、多样化 tokens 的训练数据集,同时优化采样策略和数据组织方式,让模型支持中、英、俄、西等 40 多种语言,并且多语言任务处理的性能与效果俱佳。
XVERSE-13B 支持 8192 的上下文窗口,是同尺寸模型中最长的,从而能出色应对复杂场景,比如更长的多轮对话、知识问答与摘要等,应用范围更广泛。
模型使用标准 Transformer 网络结构,从零开始训练,还自主研发多项关键技术,包括高效算子、显存优化、并行调度策略、数据 - 计算 - 通信重叠、平台和框架协同等,让训练效率更高,模型稳定性强,在千卡集群上的峰值算力利用率可达到 58.5%,位居业界前列。
多个权威中文测评中表现优异,超越 Baichuan-13B
为验证模型各项能力,XVERSE-13B 通过 C-Eval、AGIEval 和 GAOKAO-Bench 等三个最具影响力的中文测评基准的综合评估(图二),表现优异,超越了同参数规模主流模型,如 Baichuan-13B、Llama-2-13B、Ziya-LLaMA-13B 等。

图二:在多个权威中文测评中,XVERSE-13B 表现超越了同参数规模的主流模型。在中文 C-Eval 的测评中(图三),XVERSE-13B 综合评分达到了 54.7 分,超越了同参数规模的主流模型。C-EVAL 测评基准由上海交通大学、清华大学以及爱丁堡大学联合创建,是面向中文语言模型的综合考试测试集,覆盖了 52 个来自不同行业领域的学科。

图三:C-Eval 中文测评结果。
在 AGIEval 测评里,XVERSE-13B 综合评分达到 41.4 分,超越了同参数规模主流模型(图二)。AGIEval 测评基准由微软研究院发起,旨在全面评估基础模型在人类认知和问题解决相关任务上的能力,包含了中国的高考、司法考试,以及美国的 SAT、LSAT、GRE 和 GMAT 等 20 个公开且严谨的官方入学和职业资格考试。
在 GAOKAO-Bench 测评中,XVERSE-13B 综合评分达到了 53.9 分,显著领先于同参数规模的主流模型(图二)。GAOKAO-Bench 测评基准是复旦大学研究团队创建的测评框架,以中国高考题目作为数据集,用于测评大模型在中文语言理解和逻辑推理能力方面的表现。
英文测评表现领先 Llama-2-13B
XVERSE-13B 的英文表现同样出色,在英文最权威评测 MMLU 中,其综合评分高达 55.1 分,几乎在所有维度超越了同参数规模的主流模型(图四),包括 Llama-2-13B、Baichuan-13B 等。

图四:MMLU 英文测评结果。
MMLU 由加州大学伯克利分校等知名高校共同打造,集合了科学、工程、数学、人文、社会科学等领域的 57 个科目,主要目标是对模型的英文跨学科专业能力进行深入测评。其内容广泛,从初级水平一直涵盖到高级专业水平。
需要强调的是,测评只反映了大模型底座的核心能力,元象将持续迭代优化,全面提升模型能力。
免费可商用 哈工大率先使用助力研究
秉持开源精神,XVERSE-13B 代码采用 Apache-2.0 协议,向学术研究完全开源,企业只需简单登记,即可免费商用。
哈尔滨工业大学(下称「哈工大」)作为我国最早从事自然语言处理研究的顶级科研团队,已经率先使用 XVERSE-13B 大模型推进相关研究工作。哈工大计算机科学与技术学院张伟男教授表示,「开源是互联网时代主流模式,不仅能贡献社区,推动技术持续创新,还能利用协同解决算法透明性、稳定性、公众信任度等共性问题。」
元象 XVERSE 创始人姚星表示:「真实世界的感知智能(3D),与真实世界的认知智能(AI),是探索通用人工智能(AGI)的必由之路,也是元象持续探索 3D 与 AI 前沿技术的动力。XVERSE-13B 是我们在国产技术自立自强上迈出的一小步,而开源开放将激发大模型生态活力,让 AI 的未来发展迈出一大步,为实体经济、数字经济的发展注入强劲动力。我们期待与众多企业与开发者携手,开创大模型商用新纪元。」
....
#llama.cpp
在一些大模型的推理任务上,瓶颈不是算力 FLOPS。
最近在开源社区,很多人都在探索大模型的优化方法。有一个叫 llama.cpp 的项目用原始 C++ 重写了 LLaMa 的推理代码,效果极好,获得了人们的广泛关注。
通过一些优化和量化权重,它能让我们在各种以前无法想象的硬件上本地运行 LLaMa 模型。其中:
- 在谷歌 Pixel5 手机上,它能以 1 token/s 的速度运行 7B 参数模型。
- 在 M2 芯片的 Macbook Pro 上,使用 7B 参数模型的速度约为 16 token/s
- 我们甚至于可以在 4GB RAM 的树莓派上运行 7B 模型,尽管速度只有 0.1 token/s
GitHub 链接:https://github.com/ggerganov/llama.cpp
我们知道,除了通用化能力,大模型落地的关键在于推理性能的优化,然而如今这个优化程度超出了我们的预料。llama.cpp 至今在 GitHub 上已经收获了 3.8 万个 Star,几乎和 LLaMa 模型本身一样多。以至于到了 6 月份,llama.cpp 的作者 Georgi Gerganov 干脆开始创业,宣布创立一家新公司 ggml.ai,旨在用纯 C 语言框架降低大模型运行成本。
很多人看到这里都会发问:这怎么可能?大语言模型不是需要英伟达 H100 之类的 GPU 才能跑的吗?为了解决这个疑惑,最近有人深入研究了围绕大模型推理的数学,并试图进行解答。
让我们从「为什么 AI 训练都需要用 GPU?」开始,GPU 对深度学习有两个主要好处:
- 它们具有很大的内存带宽(如 A100:1935 GB/s,RTX 4090:1008 GB/s)
- 它们具有很大的算力(A100:FP16 有 312 TFLOPS,RTX 4090:FP16 有 82.6 TFLOPS)
内存带宽之所以重要,是因为它关系到数据从 HBM 内存(即 RAM)移动到片上内存需要花费的时间。在实际使用 GPU 进行数学计算时,我们需要将相关矩阵移至片上内存,该内存相当小(A100 上为 40MB,而 RAM 为 40-80GB)。内存带宽比计算性能小约 2 个数量级 —— 这稍后会很重要,因为内存带宽往往是推理的瓶颈。
从计算机体系结构的角度而言,我们需要把不同速度和容量的 memory 分出层级,以追求效率和成本之间的平衡。需要频繁访问的数据放在速度最快,但又容量最小的寄存器和 L1 cache 里,访问量最少的数据放在最慢最大的内存条里。
这在 LLaMa 推理任务上意味着什么?让我们从一些推理数学计算开始。我们可以使用 Kipply 的文章(https://kipp.ly/transformer-param-count/)对 LLM 的推理性能进行一些粗略的计算。
首先有关模型尺寸:
- Q、K 和 V 权重矩阵的形状都是 [ d_model, d_head],每层有 n_heads;注意力输出矩阵具有相同的形状,总共 4 * [ d_model, n_heads * d_head]。按照惯例,GPT 风格的网络具有 d_head * n_heads = d_model。
- MLP 有两个权重矩阵,形状为 [d_model, 4 * d_model] 和 [4 * d_model,d_model]
- 嵌入矩阵的大小为 [d_vocab, d_model]。
这为我们提供了一个方便的类 GPT 模型参数数量方程:

除了将 KV 缓存存储在内存中之外,我们还需要将权重本身存储在内存中;这需要 n_bytes * P 字节。

这是量化的主要优点之一。通过使用较低的精度,我们可以从根本上减少存储模型所需的内存量。请注意,在 int4 精度下,所有这些模型都适合英伟达的 A100(也是目前数据中心里常见的 GPU)上的内存,并且除了最大的模型之外,所有这些模型都适合高端消费级 GPU(如 RTX 3090/4090,具有 24GB RAM)。
现在,当谈到实际运行推理时,每个 token 大约需要 2P FLOPS,因为我们正在使用总共 P 个参数进行一系列矩阵乘法,与之相乘的矩阵尺寸是 (m, n) 向量 ( n,),成本为 200 mn。
完成所有数学计算后,让我们计算一下使用 LLaMa 运行推理的要求。sampling 的主要要求是:
- 除了所有参数之外,还将 KV 缓存保留在内存中。
- 将 HBM 中的所有权重读入片上存储。因为我们是自回归采样,所以我们必须对采样的每个 token 重复此操作。
- 进行实际的矩阵乘法来计算我们网络的输出。
延迟是计算延迟或内存延迟的最大值,因为在所有现代张量编程库中将参数读取到片上内存中都是异步发生的。因此,我们写道:

其中 B 是 batch size。由于内存带宽约为 1.935e12,需要的 FLOPS 量约为 3.12e14,所以只要 batch size 小于 161,模型就会受到内存限制。
当 batch size 为 1,即在计算机上仅生成单个预测流时,这是相同的等式,就像在大多数硬件(如英伟达的 GPU)上一样,当你降低精度时,会出现线性加速:使用 fp16 代替 fp32 时,FLOPS 会翻倍,转到 int 8,FLOPS 会再增加一倍,用 int4 时再次加倍。
由于 llama.cpp 使用目前深度学习推理中较为激进的 int4 格式,因此 KV 缓存的 RAM 需求减少到 1.33GB,模型参数的 VRAM 减少到 16.25GB。这看起来很不错
由于内存带宽几乎总是远小于 FLOPS 数,因此内存带宽是瓶颈所在。
请注意,FLOPS/token 的数量与所需的内存带宽相同,因为我们必须 1) 将所有参数加载到片上内存中,然后 2) 使用这些参数来计算结果。这些都是同时发生的,因为所有现代张量编程框架都能够异步处理「加载到内存」位,因此所需的总时间是 max(compute time, memory time)。
在英伟达 A100 上运行 LLaMa

在 A100 (80GB PCIe) 上,内存带宽为 1935GB/s。int4 计算量为 1248 TOPS。因此,该模型较严重地受到内存的限制。我们预计 65B 模型的速度约为 30 token/s,7B 模型的速度约为 277 token/s。
在 MacBook 上运行 LLaMa
接下来是正片了,苹果 MacBook 上常见的 M1 芯片,其 GPU 的带宽为 68.25 GB/s,而 M1 GPU 可执行高达 5.5 TFLOPS 的 fp16 计算。因此,我们预计使用 int4 的 65B 模型采样的上限为大约 1 token/s,使用 7B 模型的采样上限为 10 token/s。
由于 M2 Pro 芯片具有 200 GB/s 的带宽,而 M2 Max 具有 400 GB/s 的带宽,因此我们应该期待它们在这里可以获得巨大的性能提升,使用 65B 版模型时 M2 Max 可以达到 6 token/s。这对于笔记本电脑来说已经很不错了。
在树莓派 4 上运行 LLaMa
Raspberry Pi 4 具有 13.5 GFLOPS 的计算能力和约 4GB/s 的内存带宽。鉴于此,如果 7B 模型受内存限制,我们预计会看到大约 2 token/s 的推理速度。然而我们目前看到的是约 0.1 token/s,有理由怀疑这实际上是因为算力受限导致的。这个尝试是在不知道硬件性能的条件下进行的 —— 我们无法找到有关 Raspberry Pi 低精度运算规格的足够信息来确定这一点。
总结
内存带宽几乎是与 transformer 采样相关的最大限制因素。任何降低这些模型内存需求的方法都会使它们更容易提供服务 —— 比如量化!这是蒸馏(或者只是长时间训练较小的模型)非常重要的另一个原因。
OpenAI 科学家 Andrej Karpathy 对于这个观察进行了进一步解释。
他表示:除了并行推理和训练之外,提示编码即使在 batch_size = 1 时也是可并行的,因为提示标记可以由 LLM 并行编码,而不是一一串行解码。随着提示越来越长,MacBook 的推理性能就会越落后于 A100。
但另一方面,苹果的 M2 芯片看起来在大模型的推理任务上展示了强大的实力。「因此,M2 Ultra 是当今体量最小、最漂亮、开箱即用、最简单、最强大的个人 LLM 节点。」
陈天奇也对这种观点表示赞同。
当然这一切并不是免费的午餐。从本质上讲,使用低精度会损失一些准确性,并且可能会出现一些奇怪的答案,让大模型的回应偏离轨道或产生幻觉。不过随着模型参数越多,质量损失就越低。因此,对于非常大的模型体量,差异或许可以忽略不计。此外,这只是推理成本。训练就完全是另一回事了。
通过对于各种性能参数的权衡,或许我们很快就会真正拥有更加「智能」的设备。
参考内容:
https://finbarrtimbers.substack.com/p/how-is-llamacpp-possible
https://news.ycombinator.com/item?id=37140013
https://twitter.com/karpathy/status/1691571869051445433
....
#BuboGPT
字节大模型,BuboGPT来了。 这肯定是大佬的啊 搬来的
支持文本、图像、音频三种模态,做到细粒度的多模态联合理解。
答哪指哪,什么讲了什么没讲,一目了然:

除了有“慧眼”,还有“聪耳”。人类都注意不到的细节BuboGPT能听到:

前方高能!
三模态联合理解,文字描述+图像定位+声音定位,一键搞定,准确判断声音来源:
别着急,还没完!
即使音频和图像之间没有直接关系,也可以合理描述两者之间的可能关系,看图辨音讲故事也可以:
这么一看,BuboGPT干点活,够“细”的。
研究人员表示:
MiniGPT-4,LLaVA和X-LLM等最近爆火的多模态大模型未对输入的特定部分进行基础性连接,只构建了粗粒度的映射。
而BuboGPT利用文本与其它模态之间丰富的信息且明确的对应关系,可以提供对视觉对象及给定模态的细粒度理解。
因此,当BuboGPT对图像进行描述时,能够指出图中对象的具体位置。
BuboGPT:首次将视觉连接引入LLM
除了上面作者分享在YouTube的示例,研究团队在论文中也展示了BuboGPT玩出的各种花样。
活久见青蛙弹琴!这样的图BuboGPT也能准确描述吗?
一起康康回答得怎么样:
不仅能够准确描述青蛙的姿势,还知道手摸的是班卓琴?
问它图片都有哪些有趣的地方,它也能把图片背景里的东西都概括上。
BuboGPT“眼力+听力+表达力测试”,研究人员是这样玩的,大家伙儿先来听这段音频。
再来看看BuboGPT的描述怎么样:
图片上的人的性别、声音来源、图片中发生的事情,BuboGPT都能准确理解。
效果这么好,是因为字节这次用了将视觉定位引入LLM的方法。
具体方法我们接着往下看。
BuboGPT的架构是通过学习一个共享的语义空间,并进一步探索不同视觉对象和不同模态之间的细粒度关系,从而实现多模态理解。
为探索不同视觉对象和多种模态之间的细粒度关系,研究人员首先基于SAM构建了一个现成的视觉定位pipeline。
这个pipeline由标记模块(Tagging Module)、定位模块(Grounding Module)和实体匹配模块(Entity-matching Module)三个模块组成。

流程大概是这样婶儿的:
首先,标记模块是一个预训练模型,可以生成与输入图像相关的多个文本标签。
基于SAM的定位模块进一步定位图像上与每个文本标签相关的语义掩模或边界框。
然后,实体匹配模块利用LLM的推理能力从标签和图像描述中检索匹配的实体。
研究人员就是通过这种方式,使用语言作为桥梁将视觉对象与其它模态连接起来。
为了让三种模态任意组合输入都能有不错的效果,研究人员采用了类似于Mini-GTP4的两阶段走训练方案:
单模态预训练和多模态指令调整。

具体而言,BuboGPT使用了ImageBind作为音频编码器,BLIP-2作为视觉编码器,以及Vicuna作为预训练LLM。
在单模态预训练阶段,在大量的模态-文本配对数据上训练相应的模态Q-Former和线性投影层。
对于视觉感知,研究人员仅对图像标题生成部分进行投影层的训练,并且保持来自BLIP2的Q-Former固定。
对于音频理解,他们同时训练了Q-Former和音频标题生成部分。
在这两种设置下都不使用任何提示(prompt),模型仅接收相应的图像或音频作为输入,并预测相应的标题(caption)。
多模态指令调整阶段,构建了一个高质量的多模态指令数据集对线性投影层进行微调,包括:
- 图像-文本:使用MiniGPT-4和LLaVa中的两个数据集进行视觉指令调优。
- 音频-文本:基于Clotho数据集构建了一系列表达性和描述性数据。
- 音频-图像-文本:基于VGGSS数据集构建了<音频,图像,文本>三模态指导调优数据对,并进一步引入负样本来增强模型。
值得注意的是,通过引入负样本“图像-音频对”进行语义匹配,BuboGPT可以更好地对齐,多模态联合理解能力更强。
目前BuboGPT代码、数据集已开源,demo也已发布啦,我们赶紧上手体验了一把。
demo浅玩体验
BuboGPT demo页面功能区一目了然,操作起来也非常简单,右侧可以上传图片或者音频,左侧是BuboGPT的回答窗口以及用户提问窗口:
上传好照片后,直接点击下方第一个按钮来上传拆分图片:
就拿一张长城照片来说,BuboGPT拆成了这个样子,识别出了山、旅游胜地以及城墙:
当我们让它描述一下这幅图时,它的回答也比较具体,基本准确:
可以看到拆分框上的内容也有了变化,与回答的文本内容相对应。
再来一张图片,并带有一段音频,BuboGPT也正确匹配了声音来源:
当然,它也会出现识别不成功,表述错误的情况,比如说下面这张图中并没有人,音频也只是钟声,但它的描述和图片似乎并不搭边。
[1]https://bubo-gpt.github.io/
[2]https://huggingface.co/spaces/magicr/BuboGPT(demo)
....
#FlashAttenion-V3
Flash-Decoding借鉴了FlashAttention的优点,将并行化维度扩展到keys/values序列长度。这种方法几乎不收序列长度影响,可以充分利用GPU,即使在batch size较小时,也可以极大提高了encoding速度。
最新FlashDecoding++
Flash Attention V1和V2的作者又推出了Flash Decoding(https//crfm.stanford.edu/2023/10/12/flashdecoding.html),真是太强了!
Flash-Decoding借鉴了FlashAttention的优点,将并行化维度扩展到keys/values序列长度。这种方法几乎不收序列长度影响(这对LLM模型能力很重要),可以充分利用GPU,即使在batch size较小时(inference特点),也可以极大提高了encoding速度。
Motivation
最近,像ChatGPT或Llama这样的LLM模型受到了空前的关注。然而,它们的运行成本却非常高昂。虽然单次回复的成本约为0.01美元(例如在AWS 8块A100上运行几秒钟),但是当扩展到数十亿用户的多次交互时,成本会迅速上升。而且一些场景的成本更高,例如代码自动补全,因为只要用户输入一个新字符就会执行。由于LLM应用非常广泛且还在迅速增长,即使稍微提升其运行效率也会产生巨大的收益。
LLM inference(或称为decoding)是一个迭代的过程:预测的tokens是逐个生成的。如果生成的句子有N个单词,那么模型需要进行N次forward。一个常用的优化技巧是KV Cache,该方法缓存了之前forward的一些中间结果,节约了大部分运算(如MatMul),但是attention操作是个例外。随着输出tokens长度增加,attention操作的复杂度也极具上升。
然而我们希望LLM能处理长上下文。增加了上下文长度,LLM可以输出更长的文档、跟踪更长的对话,甚至在编写代码之前处理整个代码库。例如,2022年大多数LLM的上下文长度最多为2k(如GPT-3),但现在LLM上下文长度可以扩展到32k(Llama-2-32k),甚至最近达到了100k(CodeLlama)。在这种情况下,attention操作在推理过程中占据了相当大的时间比例。此外,当batch size增加时,即使在相对较小的上下文中,attention操作也可能成为瓶颈。这是因为该操作需要对内存的访问会随着batch size增加而增加,而模型中其他操作只和模型大小相关。
因此,本文提出了Flash-Decoding,可以推理过程中显著加速attention操作(例如长序列生成速度提高8倍)。其主要思想是最大化并行加载keys和values的效率,通过重新缩放组合得到正确结果。
Multi-head attention for decoding

然而,上述优化不适合直接应用于推理过程。因为在训练过程中,FlashAttention对batch size和query length进行了并行化加速。而在推理过程中,query length通常为1,这意味着如果batch size小于GPU上的SM数量(例如A100上有108个SMs),那么整个计算过程只使用了GPU的一小部分!特别是当上下文较长时,通常会减小batch size来适应GPU内存。例如batch size = 1时,FlashAttention对GPU利用率小于1%!
下面展示了FlashAttention的计算示意图,该示例将keys和values分为了2个block:

FlashAttention示意图
对应的计算公式:

FlashAttention示意图对应的计算公式

flashattention计算过程
A faster attention for decoding: Flash-Decoding
上面提到FlashAttention对batch size和query length进行了并行化加速,Flash-Decoding在此基础上增加了一个新的并行化维度:keys/values的序列长度。即使batch size很小,但只要上下文足够长,它就可以充分利用GPU。与FlashAttention类似,Flash-Decoding几乎不用额外存储大量数据到全局内存中,从而减少了内存开销。

flashdecoding计算过程
Flash Decoding主要包含以下三个步骤(可以结合上图来看):
- 将keys和values分成较小的block
- 使用FlashAttention并行计算query与每个block的注意力(这是和FlashAttention最大的区别)。对于每个block的每行(因为一行是一个特征维度),Flash Decoding会额外记录attention values的log-sum-exp(标量值,用于第3步进行rescale)
- 对所有output blocks进行reduction得到最终的output,需要用log-sum-exp值来重新调整每个块的贡献
实际应用中,第1步中的数据分块不涉及GPU操作(因为不需要在物理上分开),只需要对第2步和第3步执行单独的kernels。虽然最终的reduction操作会引入一些额外的计算,但在总体上,Flash-Decoding通过增加并行化的方式取得了更高的效率。
Benchmarks on CodeLlama 34B
作者对CodeLLaMa-34b的decoding throughput进行了基准测试。该模型与Llama 2具有相同的架构。作者在各种序列长度(从512到64k)上测试了decoding速度,并比较了多种attention计算方法:
- PyTorch:使用纯PyTorch primitives运行注意力计算(不使用FlashAttention)。
- FlashAttention v2(v2.2之前的版本)。
- FasterTransformer:使用FasterTransformer attention kernel
- Flash-Decoding
- 将从内存中读取整个模型和KV Cache所需的时间作为上限

Untitled
从上图可以看出,Flash-Decoding在处理非常大的序列时速度可以提高8倍,并且比其他方法具有更好的可扩展性。所有方法在处理small prompts时表现相似,但随着序列长度从512增加到64k,其他方法的性能都变差了,而Flash-Decoding对序列长度的增加并不敏感(下图也是很好的证明)

micro-benchmark on A100
Using Flash-Decoding
作者还通了Flash-Decoding使用方式:
- 基于FlashAttention package(https//github.com/Dao-AILab/flash-attention/tree/main) ,从版本2.2开始。
- xFormers(https//github.com/facebookresearch/xformers),在版本0.0.22中提供了
xformers.ops.memory_efficient_attention 模块
作者也提供了LLaMa v2/CodeLLaMa的repo1(https//github.com/Dao-AILab/flash-attention/tree/main/examples/inference)和xFormers repo2(https//github.com/facebookresearch/xformers)。此外,作者还提供了一个针对LLaMa v1/v2的最小示例(https//github.com/facebookresearch/xformers/tree/main/examples/llama_inference)。
总结
Flash-Decoding对LLM在GPU上inference进行了显著加速(尤其是batch size较小时),并且在处理长序列时具有更好的可扩展性。
....
#LLaVA-1.5
正面硬刚GPT-4V!浙大校友开源多模态大模型LLaVA-1.5,130亿参数8个A100一天训完,GPT-4V风头正盛,LLaVA-1.5就来踢馆了!它不仅在11个基准测试上都实现了SOTA,而且13B模型的训练,只用8个A100就可以在1天内完成。
9月底,OpenAI宣布ChatGPT多模态能力解禁。多模态GPT-4V的神奇能力让众人惊呼:这就是GPT-4.5吧?
这才没过多久,GPT-4V的开源竞争对手——LLaVA-1.5,就已经来了!
4月,来自威斯康星大学麦迪逊分校、微软研究院以及哥伦比亚大学的研究人员开源了一款全新的端到端多模态大模型LLaVA。
而现在,升级后的LLaVA-1.5,不仅在11个基准测试上实现了SOTA,甚至还可以直接对打GPT-4V。

研究人员通过使用带有MLP映射的CLIP-ViT-L-336px,并添加具有简单响应格式提示的、面向学术任务的VQA数据,大幅提升了LLaVA-1.5的性能。
结果显示,架构更加简单的LLaVA-1.5只需要120万公开数据,即可超越用了14.5亿训练数据的Qwen-VL和1.3亿数据的HuggingFace IDEFICS(一个类似Flamingo的80B模型)。
其中,13B模型的训练,只需要8个A100就可以在1天内完成。

LLaVA-1.5硬杠GPT-4V
号称能和GPT-4V对打,那LLaVA-1.5的实力究竟如何?
我们来让GPT-4V、LLaVA和LLaVA-1.5来pk一下。

项目地址:https://llava-vl.github.io/
提问:「如果有事实性错误,请指出来。如果没有,请告诉我,沙漠中正在发生什么?」

GPT-4V的回答有点蠢:「对不起,我回答不了这个问题,因为并没有上下文显示您提到的那片沙漠。」
而LLaVA则将错就错地回答:「在图中,城市和海滩组成了城市天际线,人们正在享受日落。这个海滩场景居然在沙漠中,还挺不寻常的。」
唯一的满分选手LLaVA-1.5给出了完美答案:「图中根本没有沙漠,有的是棕榈树海滩、城市天际线和一大片水域。」
另外,LLaVA-1.5还可以从图中提取信息,按照要求的格式进行回答,比如以JSON格式输出。

可以看到,LLaVA-1.5基本完成了任务,和GPT-4V相比还有一些瑕疵。
同样地,给LLaVA-1.5一张满是水果蔬菜的图片,它也能像GPT-4V一样,把图片转化JSON。

可视化分析和智能数据转换,就是这么简单!
下面这道题,可就没那么容易了——这幅图是什么意思?

原来,这是一张根据诺兰《盗梦空间》绘制的简化草图,为了提高难度,角色名字被改成了假名。
LLaVA-1.5可没有被难倒,它自信满满地作答:「这是一张关于电影《盗梦空间》的图。它显示了梦境世界中的不同层次,每一层次用一条线表示。图写在一张纸上,纸放在一个台面上。」

吃货们有福了!看到一张让人垂涎欲滴的照片,特别想吃到嘴里,怎么办?
直接发给LLaVA-1.5,它火速就给你生成一份菜谱。

而且,LLaVA-1.5不用「越狱」就可以识别出验证码。

它还能检测出,图中是哪种硬币。

尤为令人印象深刻的是,LLaVA-1.5还能告诉你图中的汪星人是什么品种。

有网友用Bing生成了一张在阳光明媚的夏季海滩上穿着冬季外套的男人的图片,并请LLaVA 1.5指出图中有哪些问题。
它的慧眼十分犀利——
这是一张经过处理或PS的照片,照片中一名男子穿着夹克,站在海滩上。该男子敞开外套,阳光照在他身上。
这张图片的问题在于,它并非真实的海滩场景。该男子实际上并没有站在沙滩上,阳光也没有照在他身上。
这张图是p出来的,营造出了一种海滩场景的假象,但它并没有真实地再现这个场景。

不过,在根据设计编写前端代码方面,LLaVA-1.5的能力就要弱一些了。

从结果来看,它的产出确实还比较简陋……

8个A100,一天就训完
LLaVA模型的架构,是将一个预训练的视觉编码器(CLIP ViT-L/14)与一个大规模语言模型(Vicuna)连接在一起。

这两个模型通过一个简单的映射矩阵连接,这个矩阵负责将视觉和语言特征对齐或转换,以便在一个统一的空间内对它们进行操作。
在多模态指令跟随数据集上,LLaVA表现出色,跟GPT-4相比,分数达到了85.1%。在Science QA上,LLaVA的准确率刷新了纪录,达到92.53%。
这次,研究人员基于LLaVA框架,建立了更强大、更有实用性的基线。
论文地址:https://browse.arxiv.org/pdf/2310.03744.pdf
MLP跨模态连接器和合并学术任务相关数据(如VQA),给LLaVA带来了更强的多模态理解能力。
与InstructBLIP或Qwen-VL在数亿甚至数十几亿的图像文本配对数据上训练的、专门设计的视觉重新采样器相比,LLaVA用的是最简单的LMM架构设计,只需要在600K个图像-文本对上,训练一个简单的完全连接映射层即可。
最终的模型在8个A100上,1天内就能训完,并且在各种基准测试中都取得了SOTA。

此外,Qwen-VL在训练时包含了内部数据,但LLaVA需要的,仅仅是公开数据。
毫无疑问,这些经过改进、易于重现的基线能,会为开源LMM的未来提供很有价值的参考。
性能大幅提升,刷新11项SOTA
作为一款开源视觉指令微调模型,LLaVA在视觉推理能力方面的表现十分出色——在基于现实生活的视觉指令跟随任务的基准测试中,LLaVA甚至超过了最新的模型。
不过,在通常需要简短答案(如单词)的学术基准测试中,LLaVA的表现却不尽如人意。其原因在于,LLaVA没有在大规模数据上进行预训练。
模型缩放
首先,研究人员提高了输入图像的分辨率,使LLM能够清晰地「看到」图像的细节,并添加了GQA数据集,作为额外的视觉知识源。并且,还加入ShareGPT数据,将LLM放大到13B。
MM-Vet的结果显示,当LLM扩展到13B时,改进最为显著,这也表明了,基础LLM在视觉对话方面的能力非常重要。
经过所有改进后的最终模型,被称为LLaVA-1.5,它的性能令人印象深刻,大大超过了原始LLaVA。

针对数据、模型和分辨率的缩放结果
与SOTA比较
随后,研究人员在一系列学术VQA基准和专为指令跟随LMM提出的基准上对LLaVA-1.5进行了测试。
结果表明,LLaVA-1.5不仅可以使用更少的预训练和指令微调数据,而且还可以利用最简单的架构、学术计算和公共数据集来实现最佳的性能——在12个基准中的11个上取得了SOTA。
此外,研究还发现,在提高LMM能力方面,视觉指令微调比预训练发挥着更重要的作用。
而这也让我们重新思考视觉采样器的优势,以及额外的大规模预训练在多模态指令跟随能力方面的必要性。

在12个基准上与SOTA方法进行比较
响应格式提示
研究人员发现,此前的InstructBLIP等方法无法在短格式和长格式的VQA之间取得平衡,主要原因在于——
首先,与回答格式有关的提示含糊不清。
例如,「Q:{问题} A: {答案}」并没有明确指出理想的输出格式,即使是自然的视觉对话,也可能导致LLM过度拟合到短格式的答案上。
第二,没有对LLM进行微调。
比如,InstructBLIP只对Qformer进行了指令微调。虽然可以由此利用Qformer的视觉输出token来控制LLM输出的长度,但Qformer与LLaMA等LLM相比容量相对有限,因此可能无法正确地做到这一点。
为了解决这个问题,研究人员建议在VQA问题的末尾,添加一个可以明确输出格式的提示,进而让模型生成简短回答。比如:「用一个单词或短语回答问题」。
当LLM使用这种提示进行微调时,LLaVA能够根据用户的指示正确微调输出格式,并且不需要使用ChatGPT对VQA数据进行额外处理。
结果显示,仅在训练中加入VQAv2,LLaVA在MME上的性能就显著提高(1323.8 vs 502.8),比InstructBLIP高出了111分!

面向学术任务的数据
研究人员进一步增加了面向学术任务的VQA数据集,用于VQA、OCR和区域级感知,从不同方面提高模型的能力。
他们首先包含了InstructBLIP使用的四个额外数据集:开放知识VQA。
其中,A-OKVQA被转换成多选题的形式,并使用特定的回答格式提示——直接用给定选项中的字母作答。
仅使用了InstructBLIP所用数据集的一个子集,LLaVA就已经在表1中的三项任务中全部超越了InstructBLIP,这表明,LLaVA的设计非常有效。
此外,研究人员还发现,通过进一步添加区域级VQA数据集,可以提高模型定位细颗粒度视觉细节的能力。
Zero-shot格式指令泛化
虽然LLaVA-1.5只用了有限的格式指令进行训练,但它可以泛化到其他格式指令。
比如,VizWiz要求模型在所提供的内容不足以回答问题时,输出「无法回答」,而LLaVA的回答格式提示就能有效地指示模型这样做(无法回答的问题占11.1%→67.8%)。

Zero-shot多语言能力
与此同时,LLaVA-1.5也没有针对多语言指令进行微调。但由于ShareGPT中包含有大量的相关数据,因此它依然能够实现多种语言的多模态指令跟随。
研究人员在MMBenchCN上定量评估了模型对中文的泛化能力,其中MMBench的问题被转换为中文。
值得注意的是,LLaVA-1.5比Qwen-VL-Chat的准确率高出7.3%(63.6% vs 56.7%)。其中,Qwen在中文多模态指令上进行了微调,而LLaVA-1.5没有。
计算成本
对于LLaVA-1.5,研究人员使用了与LCS-558K相同的预训练数据集,并保持与LLaVA大致相同的指令微调训练迭代次数和批大小。
由于图像输入分辨率提高到336px,LLaVA-1.5的训练时间是LLaVA的2倍:使用8个A100进行6小时的预训练和20小时的视觉指令微调。
局限性
尽管LLaVA-1.5取得了非常不错的成绩,但必须承认的是,它还存在一些局限性。
首先,LLaVA使用了完整的图像patch,这可能会延长每次训练迭代的时间。
其次,LLaVA-1.5还不能处理多幅图像,原因是缺乏此类指令跟随数据,以及上下文长度的限制。
第三,尽管LLaVA-1.5能熟练地遵循复杂指令,但其解决问题的能力在某些领域仍会受到限制,这可以通过更强大的语言模型和高质量、有针对性的视觉指令微调数据来改善。
最后,LLaVA-1.5难免会产生幻觉和错误信息,因此在关键应用(如医疗)中应谨慎使用。
参考资料:
https://arxiv.org/abs/2310.03744
https://llava-vl.github.io/
....
#DISC-MedLLM
随着远程医疗的兴起,在线问诊、咨询越发成为患者寻求便捷高效的医疗支持的首选项。近来大语言模型(LLM)展示出强大的自然语言交互能力,为健康医疗助手走进人们的生活带来了希望。
医疗健康咨询场景通常较为复杂,个人助手需要有丰富的医学知识,具备通过多个轮次对话了解病人意图,并给出专业、详实回复的能力。通用语言模型在面对医疗健康咨询时,往往因为缺乏医疗知识,出现避而不谈或者答非所问的情况;同时,倾向于针对当前轮次问题完成咨询,缺少令人满意的多轮追问能力。除此之外,当前高质量的中文医学数据集也十分难得,这为训练强大的医疗领域语言模型构成了挑战。
复旦大学数据智能与社会计算实验室(FudanDISC)发布中文医疗健康个人助手 ——DISC-MedLLM。在单轮问答和多轮对话的医疗健康咨询评测中,模型的表现相比现有医学对话大模型展现出明显优势。课题组同时公开了包含 47 万高质量的监督微调(SFT)数据集 ——DISC-Med-SFT,模型参数和技术报告也一并开源。
- 主页地址:https://med.fudan-disc.com
- Github 地址:https://github.com/FudanDISC/DISC-MedLLM
- 技术报告:https://arxiv.org/abs/2308.14346
1、样例展示

图 1:对话示例患者感到身体不适时,可以向模型问诊,描述自身症状,模型会给出可能的病因、推荐的治疗方案等作为参考,在信息缺乏时会主动追问症状的详细描述。

图 2:问诊场景下的对话用户还可以基于自身健康状况,向模型提出需求明确的咨询问题,模型会给予详尽有助的答复,并在信息缺乏时主动追问,以增强回复的针对性和准确性。

图 3:基于自身健康状况咨询的对话用户还可以询问与自身无关的医学知识,此时模型会尽可能专业地作答,使用户全面准确地理解。

图 4:与自身无关的医学知识询问对话
2、DISC-MedLLM 介绍
DISC-MedLLM 是基于我们构建的高质量数据集 DISC-Med-SFT 在通用领域中文大模型 Baichuan-13B 上训练得到的医疗大模型。值得注意的是,我们的训练数据和训练方法可以被适配到任何基座大模型之上。
DISC-MedLLM 具有三个关键特点:
- 可靠丰富的专业知识。我们以医学知识图谱作为信息源,通过采样三元组,并使用通用大模型的语言能力进行对话样本的构造。
- 多轮对话的问询能力。我们以真实咨询对话纪录作为信息源,使用大模型进行对话重建,构建过程中要求模型完全对齐对话中的医学信息。
- 对齐人类偏好的回复。病人希望在咨询的过程中获得更丰富的支撑信息和背景知识,但人类医生的回答往往简练;我们通过人工筛选,构建高质量的小规模指令样本,对齐病人的需求。
模型的优势和数据构造框架如图 5 所示。我们从真实咨询场景中计算得到病人的真实分布,以此指导数据集的样本构造,基于医学知识图谱和真实咨询数据,我们使用大模型在回路和人在回路两种思路,进行数据集的构造。

图 5:DISC-Med-SFT 的构造
3、方法:数据集 DISC-Med-SFT 的构造
在模型训练的过程中,我们向 DISC-Med-SFT 补充了通用领域的数据集和来自现有语料的数据样本,形成了 DISC-Med-SFT-ext,详细信息呈现在表 1 中。

表 1:DISC-Med-SFT-ext 数据内容介绍
重构 AI 医患对话
数据集。分别从两个公共数据集 MedDialog 和 cMedQA2 中随机选择 40 万个和 2 万个样本,作为 SFT 数据集构建的源样本。
重构。为了将真实世界医生回答调整为所需的高质量的统一格式的回答,我们利用 GPT-3.5 来完成这个数据集的重构过程。提示词(Prompts)要求改写遵循以下几个原则:
- 去除口头表达,提取统一表达方式,纠正医生语言使用中的不一致之处。
- 坚持原始医生回答中的关键信息,并提供适当的解释以更加全面、合乎逻辑。
- 重写或删除 AI 医生不应该发出的回复,例如要求患者预约。
图 6 展示了一个重构的示例。调整后医生的回答与 AI 医疗助手的身份一致,既坚持原始医生提供的关键信息,又为患者提供更丰富全面的帮助。

图 6:对话重新改写的例子
知识图谱问答对
医学知识图谱包含大量经过良好组织的医学专业知识,基于它可以生成噪声更低的 QA 训练样本。我们在 CMeKG 的基础上,根据疾病节点的科室信息在知识图谱中进行采样,利用适当设计的 GPT-3.5 模型 Prompts,总共生成了超过 5 万个多样化的医学场景对话样本。
行为偏好数据集
在训练的最终阶段,为了进一步提高模型的性能,我们使用更符合人类行为偏好数据集进行次级监督微调。从 MedDialog 和 cMedQA2 两个数据集中人工挑选了约 2000 个高质量、多样化的样本,在交给 GPT-4 改写几个示例并人工修订后,我们使用小样本的方法将其提供给 GPT-3.5,生成高质量的行为偏好数据集。
其他
通用数据。为了丰富训练集的多样性,减轻模型在 SFT 训练阶段出现基础能力降级的风险,我们从两个通用的监督微调数据集 moss-sft-003 和 alpaca gpt4 data zh 随机选择了若干样本。
MedMCQA。为增强模型的问答能力,我们选择英文医学领域的多项选择题数据集 MedMCQA,使用 GPT-3.5 对多项选择题中的问题和正确答案进行了优化,生成专业的中文医学问答样本约 8000 个。
4、实验
训练。如下图所示,DISC-MedLLM 的训练过程分为两个 SFT 阶段。

图 7:两阶段训练过程
评测。在两个场景中评测医学 LLMs 的性能,即单轮 QA 和多轮对话。
- 单轮 QA 评测:为了评估模型在医学知识方面的准确性,我们从中国国家医疗执业医师资格考试(NMLEC)和全国硕士研究生入学考试(NEEP)西医 306 专业抽取了 1500 + 个单选题,评测模型在单轮 QA 中的表现。
- 多轮对话评测:为了系统性评估模型的对话能力,我们从三个公共数据集 —— 中文医疗基准评测(CMB-Clin)、中文医疗对话数据集(CMD)和中文医疗意图数据集(CMID)中随机选择样本并由 GPT-3.5 扮演患者与模型对话,提出了四个评测指标 —— 主动性、准确性、有用性和语言质量,由 GPT-4 打分。
评测结果
比较模型。将我们的模型与三个通用 LLM 和两个中文医学对话 LLM 进行比较。包括 OpenAI 的 GPT-3.5, GPT-4, Baichuan-13B-Chat; BianQue-2 和 HuatuoGPT-13B。
单轮 QA 结果。单项选择题评测的总体结果显示在表 2 中。GPT-3.5 展现出明显的领先优势。DISC-MedLLM 在小样本设置下取得第二名,在零样本设置中落后于 Baichuan-13B-Chat,排名第三。值得注意的是,我们的表现优于采用强化学习设置训练的 HuatuoGPT (13B)。

表 2:单项选择题评测结果多轮对话结果。在 CMB-Clin 评估中,DISC-MedLLM 获得了最高的综合得分,HuatuoGPT 紧随其后。我们的模型在积极性标准中得分最高,凸显了我们偏向医学行为模式的训练方法的有效性。结果如表 3 所示。

表 3:CMB-clin 结果在 CMD 样本中,如图 8 所示,GPT-4 获得了最高分,其次是 GPT-3.5。医学领域的模型 DISC-MedLLM 和 HuatuoGPT 的整体表现分数相同,在不同科室中表现各有出色之处。

图 8:CMD 结果CMID 的情况与 CMD 类似,如图 9 所示,GPT-4 和 GPT-3.5 保持领先。除 GPT 系列外,DISC-MedLLM 表现最佳。在病症、治疗方案和药物等三个意图中,它的表现优于 HuatuoGPT。

图 9:CMID 结果
各模型在 CMB-Clin 和 CMD/CMID 之间表现不一致的情况可能是由于这三个数据集之间的数据分布不同造成的。CMD 和 CMID 包含更多明确的问题样本,患者在描述症状时可能已经获得了诊断并表达明确的需求,甚至患者的疑问和需求可能与个人健康状况无关。在多个方面表现出色的通用型模型 GPT-3.5 和 GPT-4 更擅长处理这种情况。
5、总结
DISC-Med-SFT 数据集利用现实世界对话和通用领域 LLM 的优势和能力,对三个方面进行了针对性强化:领域知识、医学对话技能和与人类偏好;高质量的数据集训练了出色的医疗大模型 DISC-MedLLM,在医学交互方面取得了显著的改进,表现出很高的可用性,显示出巨大的应用潜力。
该领域的研究将为降低在线医疗成本、推广医疗资源以及实现平衡带来更多前景和可能性。DISC-MedLLM 将为更多人带来便捷而个性化的医疗服务,为大健康事业发挥力量。
....
#LaVIN
本文提出了一种新颖且经济实惠的解决方案,用于有效地将 LLMs 适应到 VL(视觉语言)任务中,称为 MMA。MMA 不使用大型神经网络来连接图像编码器和 LLM,而是采用轻量级模块,即适配器,来弥合 LLMs 和 VL 任务之间的差距,同时也实现了图像模型和语言模型的联合优化。同时,MMA 还配备了一种路由算法,可以帮助 LLM 在不损害其自然语言理解能力的情况下,在单模态和多模态指令之间实现自动切换。训练时间减少71.4%,存储成本节省99.9%,厦大指令调优新方案MMA让羊驼模型实现多模态
最近几个月,ChatGPT 等一系列大型语言模型(LLM)相继出现,随之而来的是算力紧缺日益严重。虽然人人都想打造专属于自己的大模型,但是能负担得起上亿参数模型训练的机构却寥寥无几。
在快速发展的人工智能领域,以高效和有效的方式使用大型语言模型正变得越来越重要。
此前,Meta 开源了羊驼(LLaMA)系列模型,之后在此基础上,研究者纷纷二创推出自己的羊驼模型。近日,来自厦门大学的研究者提出了一种新颖且有效的视觉 - 语言指令调优解决方案:MMA(Mixture-of-Modality Adaptation),并将其应用于 LLaMA 系列模型上,得到 LaVIN 模型。LaVIN 只有 3~5M 的训练参数, 仅需 1.4 小时即可在 ScienceQA 数据集上进行微调。
下面我们来看看论文的具体内容。
近年来,大型语言模型(LLM)不断推动着自然语言理解的上限,其参数规模和预训练数据规模也在不断增加。指令调优(instruction tuning)技术的引入使得 LLM 能够进行类似人类的对话交流,完成各种自然语言处理(NLP)任务,从而使人工智能逐渐接近通用人工智能,如 GPT-3.5 。
AI 发展的下一个里程碑式进展通常被认为是将这些 LLM 扩展到多模态,例如视觉 - 语言(VL)学习,这样一来 LLM 可以适用于更多真实世界场景,而这一目标 GPT-4 已经实现了,其采用大规模的视觉 - 语言语料库来直接训练多模态 GPT。
然而,GPT-4 的训练机制非常昂贵,近期的研究方向仍然致力于高效的 LLM VL 多模态适应。如图 1 所示,现有的 LLM 多模态解决方案大致分为两个类别,即专家系统和模块化训练。
在专家系统解决方案中,LLM 通常充当管理者的角色,解释不同的自然语言指令,然后调用相应的视觉模型来处理输入图像,例如图像字幕生成、视觉问答或文本到图像生成。这种解决方案的优点在于它不需要重新训练 LLM,并且可以充分利用现有的视觉模型。然而,LLM 和各种视觉模型在计算和参数方面仍然存在显著冗余,导致内存占用过大。同时,LLM 和视觉模型的联合优化仍然是一个具有挑战性的问题。
在这种情况下,对 LLM 的模块化训练引起了越来越多的关注。如图 1 为模块化训练范式,这时需要 LLM 部署一个额外的「neck branch」来连接视觉编码器,然后在对大量的图像 - 文本对进行跨模态对齐的预训练。之后,通过视觉 - 语言指令对「neck branch」和 LLM 进行联合微调。
尽管这种方法有效,但所需的视觉 - 语言预训练对于 LLM 的快速适应仍然代价高昂。比如,BLIP2 的预训练需要耗费超过 100 个 GPU 小时来处理 1.29 亿个图像 - 文本对。又比如,LLaVA-13B 在视觉 - 语言指令调优期间需要微调整个 LLM,从而导致训练时间和中间存储开销显著增加。

本文提出了一种新颖且有效的视觉 - 语言指令调优解决方案,称为混合模态适应 (Mixture-of-Modality Adaptation,MMA)。与现有的模块化训练方案不同,MMA 是一种端到端的优化机制。通过使用轻量级适配器(adapter)连接图像编码器和 LLM,MMA 可以通过少量参数联合优化整个多模态 LLM。与现有解决方案相比,MMA 节省了数千倍的存储开销。
- 论文地址:https://arxiv.org/pdf/2305.15023.pdf
- 项目地址:https://github.com/luogen1996/LaVIN
为了在纯文本指令和图像文本指令之间快速切换,MMA 为插入的适配器配备了路由方案,可以为不同模态的输入动态选择合适的适配路径,从而很好地保留 LLM 的 NLP 能力。为了验证 MMA,该研究将其应用于 Meta 最近提出的 LLaMA 系列模型上,并将二者结合之后的大型视觉 - 语言指令模型称为 LaVIN。在 MMA 的帮助下,LaVIN 可以在 VL 任务上实现低成本且快速的适应,而无需额外的大规模预训练。
为了验证 LaVIN 的性能,该研究首先在 ScienceQA 数据集上进行了定量实验。实验结果表明,LaVIN 可实现与先进多模态 LLM(例如 LLaVA )相当的性能,同时减少高达 71.4% 的训练时间和 99.9% 的存储成本。特别地,使用 8 个 A100 GPU 在 ScienceQA 上微调 LaVIN 仅需 1.4 小时,并且仅需更新 3.8M 参数。
此外,该研究还通过调整 52k 纯文本指令和 152k 文本 - 图像对,将 LaVIN 扩展为多模态聊天机器人。定性实验表明,LaVIN 可以准确地执行各种人类指令(例如编码、解数学题等等),同时产生比现有多模态聊天机器人更好的视觉 - 语言理解。
方法
MMA 架构如图 2 所示,其包括两个新设计,即 Mixture-of-Modality Adapter (MM-Adapter)和 Mixture-of-Modality Training (MMT)。具体而言,MM-Adapter 通过轻量级适配器将 LLM 扩展为具有多模态的能力,同时还能实现单模态和多模态指令之间的自动切换。之后,通过 MMT 对整个多模态 LLM 进行联合优化,该优化过程在训练时间和存储方面都更加高效。

接下来我们从理论角度介绍 MMA 的两个新设计。
MM-Adapter
首先,该研究引入了一个模态 token 来表示输入模态,其定义为:

根据公式 2 和 3,MM-Adapter 可以根据输入指令的模态选择最佳的适应路径。更重要的是,MM-Adapter 过程只引入了一小部分额外参数,因此仍然是高效的。同时,MM-Adapter 还可以作为单模态适配器来改善适应能力,因此该研究还将其应用于图像编码器。
MMT
基于 MM-Adapter,MMT 的目标是冻结大型图像编码器和 LLM,只微调嵌入的适配器。在这种情况下,整个多模态 LLM 可以以端到端的方式进行联合优化。具体而言,端到端的优化目标可以通过以下方式进行建模:

在此训练方案中,优化的参数数量仍然保持在非常小的规模,例如 3∼5M,这大大减少了训练时间和存储成本。与现有的模块化训练范式相比,MMA 不需要额外的视觉 - 语言预训练,并且可以端到端地优化整个模型,进一步提高了训练效率。
实验
在实验方面,该研究首先在 ScienceQA 数据集上将 LaVIN 与现有 SOTA 方法进行了比较,结果如下表 1 所示。与其他方法相比,LaVIN 在性能和训练效率之间实现了更好的权衡。

然后,该研究将 LaVIN 与不含 VL 预训练的现有方法进行了实验比较,结果如下表 3 所示。在 MMA 的帮助下,LaVIN 明显优于其他方法。这表明 MMA 在 VL 适应方面的高效性。

此外,该研究还进行了消融实验,结果如下表 2 所示。实验结果表明,通过图像编码器和 LLM 的联合优化,LaVIN 的性能从 86.32 进一步提升到了 87.34,这说明联合优化对于多模态 LLM 是非常重要的。在混合模态训练(mixture-of-modality training,MMT)的帮助下,LaVIN 已经超越了现有的参数高效方法(LLaMA-Adapter)。

下图 4 是该研究将 LaVIN 对于纯文本和文本 - 图像指令输入的相应路由权重可视化的结果。我们可以发现 MM-Adapter 有效地将不同模态的推理解耦到两组适配器中。

表 4 比较了 LaVIN、LLaVA 和 BLIP2 训练支出:

图 5 比较了 LaVIN 与现有方法在单模态和多模态的指令跟随任务上的表现,例如数学、编码和图像字幕。与 LLaVA 和 LLaMA-Adapter 相比,LaVIN 在多个任务上实现了整体更好的回答。

图 6 比较了 LaVIN 与现有的多模态 LLM 在多轮对话中的表现,并使用 GPT-4 评估它们回答的质量。结果表明,LaVIN 得分最高,这说明了 LaVIN 在多模态对话方面具有更优秀的能力。

....
#CLIP2
还是CLIP ,借助CLIP完成场景文字检测 , 一种新方法,称为 TCM,专注于将 CLIP 模型直接用于文本检测,无需预训练过程。
原文链接:https://arxiv.org/pdf/2302.14338.pdf
代码链接:https://github.com/wenwenyu/TCM
场景文字检测(Scene text detection)旨在从自然图像中定位每个文本实例的边界框或多边形,因为它具有广泛的实际应用场景,如办公自动化、即时翻译、自动驾驶和在线教育。随着全监督深度学习技术的快速发展,场景文本检测取得了显着进步。尽管监督方法在文本检测领域取得了显着进步,但它们需要广泛而精细的注释,例如字符级、单词级和文本行级边界框,尤其是用于任意形状场景文本的多边形框。所以,研究少量标记数据下的文本检测方法非常重要,即少样本训练市非常有意义的。
最近,通过利用预训练的视觉和语言知识,大规模对比语言-图像预训练的CLIP模型在各种视觉任务中展示了非常强大的能力。而作为语言和视觉模态信息的桥梁,很自然而然地会开始思考,能不能借助CLIP完成 Scene text detection呢?
与一般的目标检测相比,自然图像中的场景文本通常同时呈现视觉和丰富的字符信息,这与CLIP模型有着天然的联系。因此,如何充分利用来自视觉、语义和文本知识的跨模态信息来提高文本检测模型的性能在最近的研究中受到越来越多的关注。例如,受 CLIP 启发,Song等人采用细粒度的跨模态交互来对齐单模态embedding,以便通过精心设计的预训练任务学习更好的representation。Xue提出了一种弱监督预训练方法来联合学习和对齐视觉和部分文本信息,以学习用于场景文本检测的有效视觉文本表示。与之前的方法相比,本文提出了一种新方法,称为TCM。这个方法的重点是将CLIP模型直接用于文本检测而不需要预训练过程。但是如下图所示,他们都是two-stage的,显然不够直接和高效,也无法进行迁移泛化。


可以看到,之前的两种方法都需要完成两个部分,即对text或者image的encoder进行先预训练,然后进行fine-tuning。但是由于CLIP强大的zeo-shot和few-shot能力,我们其实已经拥有了一个超级强大的text encoder,所以fine-tuning就显得不那么重要,而直接进行text embedding和visual embedding的matching显然是一种更加高效和直接的方法。与其他基于视觉语言模型的预训练方法相比,TCM具有以下优点:
它可以应用于改进现有的场景文本检测器。它便于现有方法进行少样本训练,例如使用10%的标记数据,新方法在4个基准测试中平均提高了22%的F-measure。
通过将CLIP模型转换为现有的场景文本检测方法,进一步实现了有前途的领域自适应能力。

本文的framework其实很直接,来看具体是怎么完成的。
CLIP的回顾
首先回顾一下CLIP,CLIP收集了 4 亿个图文对用于模型预训练,很好地展示了学习可迁移知识和开放式视觉概念的潜力。CLIP模型是天生的文多模态模型,可以有效抽象图像和文本之间的latent space空间。可以发现模型可以比较好地完成文字内容的匹配。

给定一批图像-文本对,对于每个图像,CLIP 最大化与匹配文本的余弦相似度,同时最小化与所有其他不匹配文本的余弦相似度。对于每个文本,也就是对比学习的思路。然而,要利用此类模型中的相关信息,有两个先决条件:
🔹 有效地从 CLIP 请求先验知识的适当方法。
🔹原始模型只能衡量整合图像与单个词或句子之间的相似度。对于场景文本检测,每张图像通常有很多文本实例,都需要等价地完成ecall。来看作者是如何完成的。
把CLIP变成Text Detector

为了将 CLIP 模型转变为场景文本检测器,我们提出了 TCM,如图上图 所示。TCM 是一个可插入的模块,可以直接应用于增强现有的场景文本检测器。它分别从 CLIP 模型的图像编码器和文本编码器中提取图像和文本embedding。然后方法通过视觉提示学习设计跨模态交互机制从 CLIP 的图像编码器中恢复局部特征,可以捕获细粒度信息以响应粗文本区域,用于后续文本实例和语言之间的匹配。为了更好地引导预训练知识,引入了一个语言提示生成器来为每个图像生成条件提示,并设计了一个视觉提示生成器来学习图像提示,以适应文本检测任务的冻结剪辑文本编码器。TCM只需稍作修改即可直接适用于更广泛的文本检测方法。
🔹Image Encoder:使用了预训练的ResNet50作为图像编码器。ResNet50是一种卷积神经网络来编码图像,图像编码器输出image encoder。
🔹Text Encoder:使用了CLIP的预训练文本编码器作为文本编码器。该文本编码器将输入的K个类别提示嵌入到连续向量空间R^C中,生成文本嵌入作为文本编码器的输出,其中。具体来说,K设置为1,因为在文本检测任务中只有一个文本类别。
🔹Language Prompt Generator:用于自适应地从文本特征向视觉特征传播细粒度语义信息。具体来说,使用Transformer中的交叉注意力机制来建模图像embedding(Q)和文本embedding(K,V)之间的交互作用。然后学习视觉的prompts,将信息从图像级别传输到文本实例级别。
🔹Visual Prompt Generator: 同样的机制,而其主要作用是传播细粒度的视觉语义信息,以便更准确地匹配文本实例并生成精确的分割得分图。
给定的输出text和image的encoder,方法对文本感知局部图像执行文本实例语言匹配对齐对两个embedding进行 sigmoid 激活以获得二进制分数图。再进行matching:

P也就是输出的score map,最后联合det的loss进行优化。
实 验
实验结果表明,该方法可以显著提高现有文本检测器的性能,并具有较强的few-shot训练能力和泛化能力。此外,与先前的预训练方法相比,该方法在性能上具有竞争力。最后,作者还对所提出的设计进行了敏感性分析。因此,该文提出的TCM方法是一种有效且具有潜力的文本检测框架。

可以发现相较于其他无论是回归还是分割的模型,都具有明显的优势,让我们提会到了CLIP这种预训练模型巨大的潜力。

few-shot的能力更加能体现出相应的优势,我认为这是受益于CLIP强大的泛化性。

进行domain之间的切换,也具有较强的能力
结 论
本文提出了一种基于TCM方法的文本检测框架,该方法可以直接从CLIP模型中挖掘先前的知识,无需预训练过程。实验结果表明,该方法可以显著提高现有文本检测器的性能,并具有较强的few-shot训练能力和泛化能力。此外,与先前的预训练方法相比,该方法在性能上具有竞争力。因此,该文提出的TCM方法是一种有效且具有潜力的文本检测框架。
....
#SoM~
全新视觉提示方法 SoM(Set-of-Mark),让 OpenAI 多模态大模型 GPT-4V 在视觉内容理解方面有了质的提升。在视觉提示中加入「标记」,微软等让GPT-4V看的更准、分的更细
最近一段时间,我们见证了大型语言模型(LLM)的显著进步。特别是,生成式预训练 Transformer 或 GPT 的发布引领了业界和学术界的多项突破。自 GPT-4 发布以来,大型多模态模型 (LMM) 引起了研究界越来越多的兴趣,许多工作致力于构建多模态 GPT-4。
近日,GPT-4V (ision) 由于出色的多模态感知和推理能力得到了大家格外的关注。然而,尽管 GPT-4V 具有前所未有的视觉语言理解能力,但其细粒度 visual grounding(输入是图片和对应的物体描述,输出是描述物体的 box)能力相对较弱,或者尚未发挥出来。
举例来说,当用户询问下图中「放置在右边笔记本电脑的左边是什么物体?」GPT-4V 给出了马克杯这个错误的答案。当用户接着询问,「想找一个靠窗的座位,我可以坐在哪里?」GPT-4V 同样回答不正确。

在意识到上述问题后,来自微软、香港科技大学等机构的研究者提出了一种新的视觉 prompt 方法 Set-of-Mark(SoM),来解决 GPT-4V 在细粒度视觉任务上的问题。
- 论文地址:https://arxiv.org/pdf/2310.11441.pdf
- 论文主页:https://som-gpt4v.github.io/
如图 1(右)所示,SoM 采用交互式分割模型(例如 SAM)将图像划分为不同粒度级别的区域,并在这些区域上添加一组标记(mark),例如字母数字、掩码(mask)、框(box)。使用添加标记的图像作为输入,以解决上述问题。
我们先来看下效果,左为 GPT-4V,右为 GPT-4V+SoM,很明显后者分类更细致、准确。

下图示例依然如此,GPT-4V+SoM 效果更明显。

此外,对于这项研究,有人问道:「SoM 是手动(人工输入)还是自动的?」
论文一作 Jianwei Yang 表示,SoM 是自动或半自动的。他们编译了很多自己构建自己的分割工具,比如 SEEM、Semantic-SAM 和 SAM,用来帮助用户自动为图像分割区域。同时用户也可以自己选择区域。
用于视觉的 SoM prompt
使用 SoM prompt GPT-4V 的独特优点是它可以产生文本之外的输出。由于每个标记都与掩码表征的图像区域特定关联,因此可以追溯文本输出中任何提到的标记的掩码。

生成成对文本和掩码的能力使 SoM 能够 prompt GPT-4V 来生成视觉关联的文本,更重要的是支持各种细粒度视觉任务,这对普通的 GPT-4V 模型来说是一个挑战。
通过简单的 prompt 工程,SoM 可以让 GPT-4V 广泛地用于多种视觉任务,例如:
- 开放词汇图像分割:该研究要求 GPT-4V 详尽地给出所有标记区域的类别以及从预定池中选择的类别。
- 参考分割:给定一个参考表达式,GPT-4V 的任务是从图像分区工具箱生成的候选区域中选择最匹配的区域。
- 短语关联(Phrase Grounding):与参考分割略有不同,短语关联使用由多个名词短语组成的完整句子。该研究要求 GPT-4V 为所有标记的短语分配相应的区域。
- 视频对象分割:以两个图像作为输入。第一个图像是查询图像,其中包含第二个图像中需要识别的一些对象。鉴于 GPT-4V 支持多个图像作为输入,因此 SoM 也可以应用于视频中跨帧的关联视觉对象。
实验及结果
研究者使用「分而治之」(divide-and-conquer)的策略来运行实验和评估。对于每个实例,他们使用新的聊天窗口,这样一来,评估期间就不会出现上下文泄露了。
具体来讲,研究者从每个数据集中选择了小规模的验证数据子集。对于数据集中的每个图像,他们在使用图像分割工具箱提取的区域上覆盖了一组标记。同时基于具体的任务,研究者利用不同的分割工具来提出区域。
下表 1 列出了每个任务的设置细节。

研究者将其方法与以下模型进行比较:
- 预测坐标的 GPT-4V 基线模型
- SOTA 专用模型
- 开源 LMM
定量结果
详细的实验结果如下表 2 所示。

首先是图像分割任务。研究者将 GPT-4V + SoM 与 COCO Panoptic 分割数据集上的强大分割模型 MaskDINO、ADE20K Panoptic 分割数据集上的模型 OpenSeeD 进行了比较。
结果显示,GPT-4V + SoM 的零样本性能接近微调后的 MaskDINO,并大幅优于 OpenSeeD。GPT-4V 在 COCO 和 ADE20K 上的相似性能表现出其对广泛视觉和语义域任务的强大泛化能力。
然后是参考(referrring)任务,研究者评估了 RefCOCOg 数据集上的模型 RES 和 REC。他们使用 MaskDINO 来提出掩码,并在图像上覆盖上掩码和数字。同时使用 mIoU 作为评估指标,并与 SOTA 专用模型 PolyFormer 和 SEEM 进行比较。
结果显示,GPT-4V+SoM 击败了 Grounding DINO、Polyformer 等专用模型以及 Shikra、LLaVA-1.5、MiniGPT-v2 和 Ferret 等最近的开源 LMM。
接着是 Flickr30K 上的短语关联任务,研究者使用 Grounding DINO 为每个图像生成框建议。GPT-4V+SoM 实现了比 GLIPv2 和 Grounding DINO 更强的零样本性能。
最后研究者在 DAVIS2017 数据集上评估了视频分割任务。GPT-4V+SoM 实现了优于其他专用视觉模型的最佳追踪性能(78.8 J&F)。
消融研究
研究者探讨了标记类型如何影响 Flickr30k 数据集上短语关联任务的最终性能,并比较了两种类型的标记。第一种是数字和掩码,第二种是数字、掩码和框。
结果如下表 3 所示,添加额外的框可以显著提升性能。

此外研究者探究了当生成带有真值注释的标记时,GPT-4V 如何表现。他们选择在 RefCOCOg 验证集中用真值掩码替换预测到的分割掩码。这意味着 GPT-4V 只需要从注释短语区域选择一个即可。如预期一样,参考分割的性能可以得到进一步提升,尤其是当分割模型有一些缺失的区域。
结果如下表 4 所示,在 SoM 中使用真值掩码可以将 RefCOCOg 上的性能提升 14.5%(mIoU)。

....
#ChiPFormer
在仅使用2块 GPU 的情况下,在预训练好的模型上仅花费约18分钟便完成布局任务
《GPT4读ChiPFormer后作》
离线之强化学习,芯片布局策略新。
决策Transformer为基, 未见芯片尽迁移。
在线学习曾宠辱,GraphPlace、DeepPR、MaskPlace并立。
ChiPFormer崛起兮,布局时效悉优良。
样本效率显卓越,布局质量倍攀高。


秒画根据GPT4的诗创作的绘画作品
动画视频 (b 站):https://www.bilibili.com/video/BV1bV411K7ai/
动画视频 (YouTube):https://youtu.be/9-EQmDjRLHQ
相关论文:
- ChiPFormer: Transferable Chip Placement via Offline Decision Transformer, ICML 2023, https://arxiv.org/abs/2306.14744
- MaskPlace: Fast Chip Placement via Reinforced Visual Representation Learning, NeurIPS 2022,https://arxiv.org/abs/2211.13382
芯片数据:
https://drive.google.com/drive/folders/1F7075SvjccYk97i2UWhahN_9krBvDCmr
海报和 Virtual Chat:https://icml.cc/virtual/2023/poster/25027
项目地址:https://sites.google.com/view/chipformer
芯片设计这门艺术,在现代科技的世界里,显得愈发重要。布局,这一环节,关乎着芯片中的电路模块如何摆放,决定着它们的速度与能耗。随着芯片规模的不断壮大,布局问题也成为了一道难解之谜。
人们在寻求解决之道,而在ICML 2023所提出的ChiPFormer,给了一份答卷。这一方法,首次采用了离线强化学习,与Decision Transformer模型相结合,是芯片布局的新契机。ChiPFormer从人类专家们的布局作品中汲取智慧,学习到了可迁移的布局策略。这一策略,能在未曾谋面的芯片设计中,短短几分钟内完成布局。
回顾过往,我们所使用在线强化学习方法,如GraphPlace、DeepPR、MaskPlace等,虽为芯片布局领域作出了贡献,但与ChiPFormer相比,时间和样本效率上仍相差甚远。ChiPFormer的出现,为芯片布局领域带来了一丝曙光,也为未来的相关研究奠定了基础。ChiPFormer布局示例如下。



第一阶段:Macro布局 第二阶段:Cell局宏 第三阶段:Macro+Cell混合局宏
芯片布局问题,不同企业有不同评价指标,多达十数种。一般容易理解的评价指标有三种:线长,拥塞和覆盖。
线长是指连接模块之间的导线长度越短越好,根据电路理论,信号的延时和导线长度的平方成正比。

拥塞是指模块之间的拥挤程度,模块不能摆放过于密闭,否则会在布线阶段导致信息的传输受阻。

覆盖是指芯片制造规定任何两个模块之间相互不能有重叠。

近年来,芯片布局领域涌现出许多采用强化学习方法的研究。譬如谷歌在21年发表于《自然》杂志的《基于图的快速芯片设计》(A Graph Placement Methodology for Fast Chip Design),该研究提出的强化学习算法使得芯片布局的成果已能超越人类专家的眼界。
然而,目前这一系列的研究大多依赖在线强化学习方法,通常需要耗费漫长的时间来训练模型,以不断尝试和优化布局。以谷歌的这篇论文为例,它需在16块V100 GPUs上进行48小时的预训练以及6小时的微调。而近期的研究如MaskPlace (NeurIPS’22),同样需要在一块GPU上花费3小时以上的时间进行训练。此外,这些方法在处理未曾见过的芯片电路时,迁移能力欠佳,往往需要重新训练模型来适应新的芯片设计。
本篇论文所提出的 ChiPFormer,能在仅使用2块 GPU 的情况下,在预训练好的模型上仅花费约18分钟便完成布局任务。这一成果无疑为芯片布局领域揭示了新的可能性。

本文将芯片布局建模为一个离线强化学习问题,并提出了ChiPFormer模型。首次采用离线强化学习进行快速的可迁移布局策略学习。收集了包含12个芯片电路的多任务离线布局数据,并发布以促进相关研究。ChiPFormer是迄今为止第一个用于芯片布局的Transformer模型。它通过设定多任务机制可以学习到可迁移的策略,多任务即为不同芯片的布局任务。
创新
ChiPFormer 包含两个阶段:宏模块布局和混合模块布局(包含宏模块和标准单元模块)。
在宏单元布局阶段,ChiPFormer 在多任务离线数据上进行预训练,从而学习通用的布局策略。然后可以直接用于已见过的芯片的布局任务,或者用少量在线交互来微调迁移到未见过的芯片。
ChiPFormer 使用 Transformer 结构, 输入包括状态 token、动作 token 和电路 token。电路 token 通过图神经网络编码电路拓扑结构, 弥补状态和动作 token 中对结构信息的忽略。使得相似芯片可以使用相似的布局策略。

在混合尺寸布局阶段,ChiPFormer 的宏单元布局结果被用作初始布局,然后使用优化方法完成标准单元的布局。
结果
在32个公共和真实工业芯片电路测试集上,ChiPFormer可以将布局时间缩短10~30倍,同时相比其它方法提升布局质量。例如在12个未见过的芯片上,平均布局时间只需18分钟,相比GraphPlace方法缩短了97%的时间且最大可以使得线长缩短65%。对于混合尺寸的芯片布局,相比其他方法,同样可以达到最佳的布局结果。
以下是宏模块芯片布局的实验结果:

以下是混合尺寸芯片布局的实验结果:

芯片布局效率的实验结果:

以下是 ChiPFormer 方法和 baseline 方法的可视化结果:

展望
ChiPFormer 可用于快速高质量的芯片布局, 并设计了混合尺寸布局流程。可以从现有布局数据中进行预训练, 显著提升时间和样本效率。也可以取得强大的 Zero-Shot 迁移能力,在没有见过的新芯片上快速微调。在多个芯片设计任务中都优于当前最先进的方法。
....
更多推荐


所有评论(0)