51c大模型~合集46

我自己的原文哦~  https://blog.51cto.com/whaosoft/11908179

#HITS

北大李戈团队提出大模型单测生成新方法,显著提升代码测试覆盖率

单元测试是软件开发流程中的一个关键环节,主要用于验证软件中的最小可测试单元,函数或模块是否按预期工作。单元测试的目标是确保每个独立的代码片段都能正确执行其功能,对于提高软件质量和开发效率具有重要意义。

然而,大模型自身无力为复杂待测函数(环复杂度大于 10)生成高覆盖率的测试样例集。为了解决该痛点,北京大学李戈教授团队提出一种全新的提升测试用例覆盖率的方法,该方法借助程序分片思想(Method Slicing),将复杂待测函数依据语义拆解为若干简单片段,进而让大模型为各个简单片段分别生成测试样例。生成单个测试样例时,大模型只需分析原待测函数的一个片段,分析难度减小,生成覆盖该片段的单元测试难度随之减小。由此推广,提升整体测试样例集代码覆盖率。

相关论文《HITS: High-coverage LLM-based Unit Test Generation via Method Slicing》近期被 ASE 2024(at the 39th IEEE/ACM International Conference on Automated Software Engineering)顶会接受。

论文地址:https://www.arxiv.org/pdf/2408.11324

接下来看看北大团队论文研究的具体内容:

HITS 使用大模型进行程序分片

程序分片指将一个程序依据语义划分为若干解决问题的阶段。程序是对一个问题解决方案的形式化表述。一个问题解决方案通常包含多个步骤,每个步骤对应着程序中的一片(slice)代码。如下图所示,一个色块对应着一片代码,也对应着一个问题解决的步骤。

图片

HITS 要求大模型分别为每个代码片设计可以高效覆盖它的单元测试代码。以上图为例,当我们得到如图的分片后,HITS 要求大模型为 Slice 1(绿色),Slice 2(蓝色),Slice 3(红色)分别生成测试样例。为 Slice 1 生成的测试样例要尽可能覆盖 Slice 1,不用考虑 Slice 2 和 Slice 3,其余代码片同理。

HITS 起效的原因有二。其一,大模型要考虑覆盖的代码量降低。以上图为例,为 Slice 3 生成测试样例,则只需考虑 Slice 3 中的条件分支。要覆盖 Slice 3 中的某些条件分支,只需在 Slice 1 和 Slice 2 中找寻一条执行路径即可,无需考虑该执行路径对 Slice 1 和 Slice 2 覆盖率的影响。其二,依据语义(问题解决步骤)分割的代码片有助于大模型掌握代码执行中间状态。为顺序靠后的代码块生成测试样例,需要考虑先前代码对程序状态的改变。由于代码块依据实际问题解决步骤分割,因此可以用自然语言对先前代码块的操作进行描述(如上图中注释部分)。由于当前大语言模型多为自然语言与程序语言混合训练产物,良好的自然语言概括可帮助大模型更精准掌握代码对程序状态的改变。

HITS 使用大模型进行程序分片。问题的解决步骤通常为带有程序员主观色彩的自然语言表述,因而可以直接利用自然语言处理能力超群的大模型。具体而言,HITS 使用上下文学习方法(In-context learning) 调用大模型。团队利用过往在真实场景实践的经验,手工编写若干程序分片样例,经若干次调整后使大模型对程序分片的效果达到了研究团队的预期。

对代码片生成测试样例

给定要覆盖的代码片段,要生成对应测试样例,需经历以下 3 个步骤:1. 对片段的输入进行分析;2. 构造 prompt 指示大模型生成初始测试样例;3. 使用规则后处理和大模型 self-debug 调整测试样例使之可以正确运行。

对片段的输入进行分析,指提取要覆盖的片段所接受的一切外部输入,以备后续 prompt 使用。外部输入,指该片段所应用到的先前片段定义的局部变量,待测方法的形参,片段内调用的方法以及外部变量。外部输入的值直接决定了要覆盖的片段的执行情况,因此将该信息提取出来提示给大模型有助于有针对性地设计测试样例。研究团队在实验中发现大模型拥有良好的提取外部输入的能力,因此在 HITS 中由大模型来完成该任务。

接下来,HITS 构建思维链(Chain-of-thought)形式的 prompt 引导大模型生成测试样例。推理步骤如下。第一步,给定外部输入,分析要满足待覆盖代码片内的各种条件分支的排列组合,外部输入都分别需要满足哪些性质,如:组合 1,字符串 a 需要包含字符’x’,整数变量 i 需要非负;组合 2,字符串 a 需要非空,整数变量 i 需要为质数。第二步,对上一步中的每一种组合,分析相对应的待测代码执行时所处环境的性质,包括但不限于实参的特性,全局变量的设置。第三步,为每一种组合生成一个测试样例。研究团队为每一步手工构建了样例,以便于大模型能够正确理解并执行指令。

最后,HITS 通过后处理和 self-debug 使大模型生成的测试样例得以正确运行。大模型生成的测试样例往往难以直接使用,会出现各式各样的编译错误和来自于错误编写测试样例导致的运行时错误。研究团队根据自身观察及已有论文的总结,设计了若干规则和常见错误的修复案例。首先尝试依据规则修复。如果规则无法修复,则使用大模型 self-debug 的功能进行修复,在 prompt 中提供了常见错误的修复案例以供大模型参考。

图片

HITS 的整体图解

实验验证

研究团队使用 gpt-3.5-turbo 作为 HITS 调用的大模型,分别在大模型学习过和未学习过的 Java 项目中的复杂函数(环复杂度大于 10)上对比 HITS,其他基于大模型的单元测试方法和 evosuite 的代码覆盖率。实验结果显示 HITS 相较于被比较的诸方法有较明显的性能提升。

图片

图片

图片

研究团队通过样例分析展示分片方法如何提升代码覆盖率。如图所示。

该案例中,基线方法生成的测试样例未能完全覆盖 Slice 2 中的红色代码片段。然而,HITS 由于聚焦于 Slice 2,对其所引用的外部变量进行了分析,捕捉到 “如果要覆盖红色代码片段,变量’arguments’ 需要非空 “的性质,根据该性质构建了测试样例,成功实现了对红色区域代码的覆盖。

提升单元测试覆盖率,增强系统的可靠性和稳定性,进而提高软件质量。HITS使用程序分片实验证明,该技术不仅能大幅提升整体测试样例集代码覆盖率,且实施方法简洁直接,未来有望在真实场景实践中,帮助团队更早发现并修正开发中的错误,提升软件交付质量。

#极端黑洞可能存在

黑洞热力学第三定律已死,霍金错了

数学与宇宙的神奇超乎想象。

为了理解宇宙,科学家常需要考虑那些极端的异常情况。南安普顿大学数学物理学家 Carsten Gundlach 说:「我们总是需要考虑极端情况,就是那些位于边缘的特例。」

黑洞就是宇宙中神秘莫测的极端。根据爱因斯坦的广义相对论,黑洞之中的物质非常致密,任何东西都无法逃离。几十年来,物理学家和数学家们一直在借助黑洞来探究他们有关引力和时空的想法的极限。

但即使黑洞,也有边缘特例 —— 并且这些特例也能为我们带来不同的洞见。黑洞会在空间中旋转。当物质落入其中时,黑洞的旋转速度会加快;如果该物质带电,则黑洞也会带上电。原理上讲,黑洞所带的电荷量或自转速度都有一个极限,这应当取决于其质量。这样的黑洞被称为极端黑洞(extremal black hole)—— 它们是极端中的极端。

这些黑洞具有一些古怪的性质。尤其值得一提的是:这些黑洞的边界(即事件视界)处的表面引力为零。Gundlach 说:「这是一种表面不再吸引任何物质的黑洞。」但如果你把一个粒子轻轻推向该黑洞的中心,它也无法逃离。

1973 年时,著名物理学家斯蒂芬・霍金、约翰・巴丁(John Bardeen)和布兰登・卡特(Brandon Carter)断言真实世界中并不存在这样的极端黑洞 —— 它们根本不可能形成。尽管如此,过去五十年来,极端黑洞依然是理论物理学领域一个有用的模型。罗德岛大学的 Gaurav Khanna 说:「它们有非常好的对称性,能让计算更简单。」这让物理学家可以检验那些有关量子力学和引力之间神秘关系的理论。

斯蒂芬・霍金

现在,两位数学家证明霍金等人的论断是错误的。这两位数学家是麻省理工学院的 Christoph Kehle 和斯坦福大学的 Ryan Unger。他们最近通过两篇论文证明我们已知的物理定律并不能阻止极端黑洞的形成。

  • 论文 1:Gravitational collapse to extremal black holes and the third law of black hole thermodynamics; arXiv:2211.15742
  • 论文 2:Extremal black hole formation as a critical phenomenon; arXiv:2402.10190

普林斯顿大学数学家 Mihalis Dafermos(也是 Kehle 和 Unger 的博导)说,他们的数学证明「很美,有着技术上的创新,并且有着出人意料的物理学结果」。他补充说,这暗示着宇宙可能比之前人们认为的更加丰富多样,「在天体物理学上,极端黑洞可能存在」。

但这并不意味着它们真的存在。「就算存在一个性质优良的数学解,也并不一定意味着大自然就会用到它。」Khanna 说,「但就算我们以某种方式找到了一个,也会让我们思考我们忽视了什么东西。」他指出,这样的发现有可能带来「一些相当根本性的问题」。

不可能定律

在 Kehle 和 Unger 的证明出现之前,我们有充分的理由相信极端黑洞不可能存在。

1973 年,巴丁、卡特和霍金提出了有关黑洞行为的四条定律。它们类似于四个长期确立的热力学定律 —— 一组神圣的原则,例如:宇宙随着时间的推移变得更加无序、能量既不能被创造也不能被毁灭。

数学家 Christoph Kehle,他最近推翻了 1973 年那个有关极端黑洞的猜想

这三位物理学家在论文中证明了前三个黑洞热力学定律:第零定律、第一定律和第二定律。通过延伸,他们假定第三定律(类似于其对标的标准热力学定律)也正确,不过他们那时还无法证明这一点。

该定律指出:黑洞的表面引力不能在有限的时间内降至零 —— 也就是说,无法创造一个极端黑洞。为支持这一论断,这三位物理学家表示,如果某个过程能让黑洞的电荷量或自转速度到达极限,那么该过程就可能导致该黑洞的事件视界完全消失。人们普遍认为并不存在没有事件视界的黑洞,即裸奇点(naked singularity)。此外,因为已知黑洞的温度正比于其表面引力,所以没有表面引力的黑洞就没有温度。这样的黑洞就没有热辐射 —— 而霍金后来提出黑洞必定会发出热辐射。

1986 年,物理学家 Werner Israel 发表了一份对第三定律的证明,似乎让这个问题尘埃落地了。假设你想基于一个常规黑洞创造一个极端黑洞。你可以让其更快旋转,也可向其添加更多带电粒子。Israel 的证明似乎表明,这样做无法迫使黑洞的表面引力在有限时间内降至零。

正如 Kehle 和 Unger 最终发现的那样,Israel 的论证隐藏了一个缺陷。

第三定律之死

Kehle 和 Unger 原本并不打算寻找极端黑洞。他们的发现完全是偶然。

他们当时正在研究带电黑洞的形成。Kehle 说:「我们意识到我们可以创造所有荷质比的黑洞」。这就包括了电荷量尽可能高的情况,也就是极端黑洞的情况。

在证明了高度带电的极端黑洞在数学上是可能的之后,斯坦福大学的 Ryan Unger 现在已经着手尝试证明高速旋转的黑洞也是如此。但这个问题要困难得多。

Dafermos 认识到他之前的学生发现了巴丁、卡特和霍金的第三定律的一个反例:他们的研究表明,可以在有限的时间内将一个常规黑洞变成极端黑洞。

Kehle 和 Unger 的证明是从一个不旋转且不带电的黑洞开始,然后建模将其放入一个名为标量场的简化环境后的情况。标量场假设背景中存在均匀的带电粒子。然后,他们用来自该场的脉冲冲击黑洞,给它增加电荷。

这些脉冲也会向该黑洞提供电磁能,进而增加其质量。这两位数学家们认识到,通过发送弥散的低频脉冲,黑洞电荷增加的速度会比黑洞质量增长的速度快 —— 这正是他们完成证明所需的。

在与 Dafermos 讨论了这个结果之后,他们仔细研读了 Israel 在 1986 年发表的那篇论文并发现了其中的错误。他们还构建了爱因斯坦广义相对论方程的另外两个解,它们涉及向黑洞添加电荷的不同方式。他们在三种不同情况下证否了巴丁、卡特和霍金的猜想,得到了确定无疑的结果。Unger 说:「第三定律已死。」

这两人还证明,极端黑洞的形成并不会像很多物理学家担忧的那样导致出现裸奇点。相反,极端黑洞似乎处于一个关键阈值上:向致密的带电物质云添加适量的电荷,它就会坍缩形成极端黑洞。如果超过了这个量,这团物质云也不会坍缩成裸奇点,而是会散开。根本就不会形成黑洞。这一结果让 Kehle 和 Unger 倍感兴奋,因为其证明极端黑洞可能存在。

哥伦比亚大学数学家 Elena Giorgi 说:「这是数学回馈物理学的一个绝佳例证。」

曾经不可能,今日已可见

Kehle 和 Unger 证明理论上自然界可以存在极端黑洞,但并不保证它们一定存在。

首先,那些理论示例具有大量电荷。但人类还从未观测到过明显带电的黑洞。找到快速旋转的黑洞的可能性要大得多。在电荷版示例之外,Kehle 和 Unger 想要构建一个旋转达到阈值的示例。

但研究旋转的数学难度不可同日而语。Unger 说:「为了做到这一点,你需要大量新数学和新思路。」他与 Kehle 才刚开始研究这个问题。

与此同时,如果能更好地理解极端黑洞,那么也能帮助我们更好地理解近极端的黑洞 —— 人们相信宇宙中存在大量这类黑洞。「爱因斯坦曾认为黑洞不可能存在,因为它们实在太古怪了。」Khanna 说,「但现在我们知道宇宙中到处都有黑洞。」

出于类似的原因,他补充道:「我们不应该放弃极端黑洞。我只是认为大自然的创造力没有极限。」

#为啥大模型需要量化?如何量化

本文解释了大型模型如LLM需要量化的原因,包括减少模型大小和提高推理性能,并介绍了量化的基本概念和两种主要模式:非对称量化和对称量化。文章通过数学推导和PyTorch代码示例,展示了如何将模型权重从FP32量化到INT8,并进行反量化,以减少模型的内存占用并加速推理,同时保持模型精度。 

图片

本文翻译整理自:

​​https://pub.towardsai.net/want-to-learn-quantization-in-the-large-language-model-57f062d2ec17​​

简单介绍下大模型的为什么需要量化,以及量化的基本操作。

  • 首先,了解量化的是什么以及为什么需要它。
  • 接下来,深入学习如何进行量化,并通过一些简单的数学推导来理解。
  • 最后编写一些PyTorch 代码,以对 LLM 权重参数进行量化和反量化。

Let’s unpack all one by one together.

什么是量化,为什么需要它?

量化是一种将较大尺寸的模型(如 LLM 或任何深度学习模型)压缩为较小尺寸的方法。量化主要涉及对模型的权重参数和激活值进行量化。让我们通过一个简单的模型大小计算来验证这个说法。

图片

左侧:基础模型大小计算(单位:GB),右侧:量化后的模型大小计算(单位:GB)

在上图中,基础模型 Llama 3 8B 的大小为 32 GB。经过 Int8 量化后,大小减少到 8GB(减少了 75%)。使用 Int4 量化后,大小进一步减少到 4GB(减少约 90%)。 这使模型大小大幅减少。

这么算,7B的大模型FP16部署权重14G,INT8是8G,INT4再砍半是4G

量化两大作用:

  • 降低显存需要
  • 提升推理性能

不仅有助于在有限硬件资源上部署更大的模型,还能加快模型的推理速度,对精度的折损还比较OK,不用白不用。

量化是如何工作的?简单的数学推导

从技术上讲,量化将模型的权重值从较高精度(如 FP32)映射到较低精度(如 FP16、BF16、INT8)。虽然有许多量化方法可供选择,但在本文中,我们将学习其中一种广泛使用的量化方法,称为线性量化方法。线性量化有两种模式:A. 非对称量化和B. 对称量化。我们将逐一学习这两种方法。

A. 非对称线性量化: 非对称量化方法将原始张量范围(Wmin, Wmax)中的值映射到量化张量范围(Qmin, Qmax)中的值。

图片

  • Wmin, Wmax: 原始张量的最小值和最大值(数据类型:FP32,32 位浮点)。在大多数现代 LLM 中,权重张量的默认数据类型是 FP32。
  • Qmin, Qmax: 量化张量的最小值和最大值(数据类型:INT8,8 位整数)。我们也可以选择其他数据类型,如 INT4、INT8、FP16 和 BF16 来进行量化。我们将在示例中使用 INT8。
  • 缩放值(S): 在量化过程中,缩放值将原始张量的值缩小以获得量化后的张量。在反量化过程中,它将量化后的张量值放大以获得反量化值。缩放值的数据类型与原始张量相同,为 FP32。
  • 零点(Z): 零点是量化张量范围中的一个非零值,它直接映射到原始张量范围中的值 0。零点的数据类型为 INT8,因为它位于量化张量范围内。
  • 量化: 图中的“A”部分展示了量化过程,即 [Wmin, Wmax] -> [Qmin, Qmax] 的映射。
  • 反量化: 图中的“B”部分展示了反量化过程,即 [Qmin, Qmax] -> [Wmin, Wmax] 的映射。

那么,我们如何从原始张量值导出量化后的张量值呢? 这其实很简单。如果你还记得高中数学,你可以很容易理解下面的推导过程。让我们一步步来(建议在推导公式时参考上面的图表,以便更清晰地理解)。

图片

图片

细节1:如果Z值超出范围怎么办?解决方案:使用简单的if-else逻辑将Z值调整为Qmin,如果Z值小于Qmin;若Z值大于Qmax,则调整为Qmax。这个方法在图4的图A中有详细描述。

细节2:如果Q值超出范围怎么办?解决方案:在PyTorch中,有一个名为 clamp 的函数,它可以将值调整到特定范围内(在我们的示例中为-128到127)。因此,clamp函数会将Q值调整为Qmin如果它低于Qmin,将Q值调整为Qmax如果它高于Qmax。

图片

|Zero point and Quantized tensor out-of-range

量化张量值的范围为-128到127(INT8,带符号整数数据类型)。如果量化张量值的数据类型为UINT8(无符号整数),则范围为0到255。

B. 对称线性量化: 在对称方法中,原始张量范围内的零点映射到量化张量范围内的零点。因此,这被称为对称量化。由于零在两侧范围内均映射为零,对称量化中不存在零点(Z)。整体映射发生在原始张量范围的 (-Wmax, Wmax) 和量化张量范围的 (-Qmax, Qmax) 之间。下图展示了量化和反量化情况下的对称映射。

图片

Symmetric Linear Quantization

由于我们在非对称段中已经定义了所有参数,这里也适用。让我们进入对称量化的数学推导。

图片

非对称量化和对称量化之间的区别:

图片

|700x156

现在你已经了解了线性量化的什么、为什么和如何,这将引导我们进入本文的最后部分,即代码部分。

LLM权重参数进行量化和反量化

量化作用于模型的权重、参数和激活值。

为了简化,我们将在Pytorch示例中仅对权重参数进行量化。先快速浏览一下量化后Transformer模型中权重参数值的变化。

图片

Quantization of weight parameters in transformer architecture

我们对16个原始权重参数从FP32到INT8进行了量化,内存占用从512位减少到128位(减少了25%)。对于大模型来说,减少幅度会更显著。

下面,你可以看到数据类型(如FP32、带符号的INT8和无符号的UINT8)在实际内存中的分布。我已经在2的补码中进行了实际计算。欢迎你自己练习计算并验证结果。

图片

Example of FP32, INT8, UINT8 data type distribution and calculation

非对称量化代码:让我们一步步编写代码。

我们首先将随机值赋给原始权重张量(大小:4x4,数据类型:FP32)

# !pip install torch; 安装torch库,如果你还没有安装的话
# 导入torch库
import torchoriginal_weight = torch.randn((4,4))
print(original_weight)

图片

原始FP32权重张量

定义两个函数,一个用于量化,另一个用于反量化

def asymmetric_quantization(original_weight):# 定义你想要量化的数据类型。在我们的示例中,是INT8。quantized_data_type = torch.int8# 从原始的FP32权重中获取Wmax和Wmin值。Wmax = original_weight.max().item()Wmin = original_weight.min().item()# 从量化数据类型中获取Qmax和Qmin值。Qmax = torch.iinfo(quantized_data_type).maxQmin = torch.iinfo(quantized_data_type).min# 使用缩放公式计算缩放值。数据类型 - FP32。# 如果你想了解公式的推导过程,请参考本文的数学部分。S = (Wmax - Wmin)/(Qmax - Qmin)# 使用零点公式计算零点值。数据类型 - INT8。# 如果你想了解公式的推导过程,请参考本文的数学部分。Z = Qmin - (Wmin/S)# 检查Z值是否超出范围。if Z < Qmin:Z = Qminelif Z > Qmax:Z = Qmaxelse:# 零点的数据类型应与量化后的值相同,为INT8。Z = int(round(Z))# 我们有了original_weight、scale和zero_point,现在我们可以使用数学部分推导出的公式计算量化后的权重。quantized_weight = (original_weight/S) + Z# 我们还将对其进行四舍五入,并使用torch clamp函数,确保量化后的权重不会超出范围,并保持在Qmin和Qmax之间。quantized_weight = torch.clamp(torch.round(quantized_weight), Qmin, Qmax)# 最后,将数据类型转换为INT8。quantized_weight = quantized_weight.to(quantized_data_type)# 返回最终的量化权重。return quantized_weight, S, Zdef asymmetric_dequantization(quantized_weight, scale, zero_point):
# 使用本文数学部分推导出的反量化计算公式。
# 还要确保将量化后的权重转换为浮点型,因为两个INT8值(quantized_weight和zero_point)之间的减法会产生不期望的结果。dequantized_weight = scale * (quantized_weight.to(torch.float32) - zero_point)return dequantized_weight

我们将通过调用 asymmetric_quantization 函数来计算量化后的权重、缩放值和零点。你可以在下面的截图中看到输出结果,注意量化后的权重数据类型为int8,缩放值为FP32,零点为INT8。

quantized_weight, scale, zero_point = asymmetric_quantization(original_weight)
print(f"quantized weight: {quantized_weight}")
print("\n")
print(f"scale: {scale}")
print("\n")
print(f"zero point: {zero_point}")

图片

Quantized weight, scale and zero point value

现在我们已经有了量化权重、缩放值和零点的所有值。 让我们通过调用 asymmetric_dequantization 函数来获得反量化后的权重值。注意反量化后的权重值为FP32。

dequantized_weight = asymmetric_dequantization(quantized_weight, scale, zero_point)
print(dequantized_weight)

图片

dequantized weight value

让我们通过计算它们之间的量化误差,找出最终反量化后的权重值与原始权重张量相比的准确性。

quantization_error = (dequantized_weight - original_weight).square().mean()
print(quantization_error)

图片

量化误差非常小

对称量化和非对称的差不多,唯一需要更改的地方是在对称方法中,始终确保 zero_input 的值为 0。这是因为在对称量化中,zero_input 值始终映射到原始权重张量中的 0 值。上述的量化代码代码示例:

  • ​​https://github.com/tamangmilan/llm_quantization/blob/main/llm_quantization_part_1.ipynb​​

#RWKV

微软Win11中发现国产开源大模型!RWKV官方:没人给我钱啊?现在捐赠还来得及

微软正尝试在Office中集成国产开源大模型RWKV!

RWKV官方甚至直接发了个推文表示:

RWKV.cpp,现已在全球五亿系统中部署。

之所以这么说,是因为他们发现最新版Windows 11系统的Office文件夹中有以rwkv命名的DLL文件,包含GPU、CPU版本。

对这些二进制文件进行反编译检查,结果发现就是GitHub的RWKV.cpp项目的一种变体。

人人都可以将Windows 11更新到最新版本,通过以下路径自行验证:

C:\Program Files\Microsoft Office\root\vfs\ProgramFilesCommonX64\Microsoft Shared\OFFICE16

或者,也可以在IT商店的任何“copilot Windows 11”设备上搜索系统文件中的rwkv。

消息一出,引发网友热议,不少网友喊微软赶紧打钱。

如果他们没有给予支持或引用你们的贡献,那就有点说不过去了。

希望这项工作能得到丰厚的报酬。

微软可能用RWKV干啥?

RWKV团队猜测,微软可能会将RWKV用于正在测试的本地Copilot、memory recall等功能。

在之前微软发布新一代Copilot+PC中就有提到过,在专为AI重构的新版Windows 11上,许多功能都是实时的。

为此,微软引入了全新的系统架构,将CPU、GPU和新的高性能神经处理单元NPU结合在一起。

NPU就负责在后台实时运行AI,Recall功能背后其实就是AI对你屏幕上正在处理的所有内容做分类。

而RWKV模型的优势是:

支持100多种语言,有利于全球化部署;

相比传统Transformer模型,运行能耗低得多,能够在包括树莓派等各种设备上高效运行。

如下图所示,生成更多token所需的计算资源随token数增加而线性增加,cuda_rwkv-4-pile-3b的曲线在整个过程中相对低了一大截,表明在相同量token情况下,这个模型GPU消耗更为高效。

而能耗对于设备电池寿命而言至关重要。

当然这些只是猜测,关于微软的真实用意,团队表示后续将密切关注。

RWKV是什么?

再来简要介绍一下RWKV,之前量子位也有持续关注,RWKV是魔改RNN挑战Transformer的一种新架构。

RWKV设计灵感来自苹果21年的研究《An Attention Free Transform》,团队意识到如果在公式中使用循环矩阵(circular matrices)就可以将网络结构写成RNN。

与GPT系列的时间复杂度O(n^2)相比,RNN的时间复杂度只有O(n),空间复杂度是O(1)。

这意味着生成内容的速度不会随长度而夸张增涨,显存占用也是恒定的。

论文共同一作彭博在接受36kr采访时曾这样形容:

GPT每写一个字就要重新看一遍前面所有文字,效率很低。而RWKV就相当于人类读了一遍资料后,在不再看资料的情况下直接回答。

这项研究去年一经发布,就在学术圈得到大量关注。

RWKV开山论文背后是由来自27家大学、研究机构和公司的研究人员组成的团队,作者达30人。

共同一作彭博(Peng Bo),毕业于香港大学物理系,编程经验20+年,曾在世界最大外汇对冲基金之一Ortus Capital就职,负责高频量化交易。

还出版过一本关于深度卷积网络的书籍《深度卷积网络·原理与实践》。

他的主要关注和兴趣方向在软硬件开发方面,在此前的公开访谈中,他曾明确表示AIGC是自己的兴趣所在,尤其是小说生成。

但他的最主要公开身份是一家灯具公司禀临科技的联合创始人,主要是做阳光灯、吸顶灯、便携台灯等。

并且其人应该是一个喵星人资深爱好者,Github、知乎、微信头像,以及灯具公司的官网首页、微博上,都有橘猫的身影。

今年,RWKV又上新推出了两种新架构模型:Eagle (RWKV-5) 、Finch(RWKV-6)。

这两种序列模型以RWKV-4架构为基础,在多头矩阵值状态(multi-headed matrix-valued states)和动态递归机制(dynamic recurrence mechanism)上做了改进,提高了RWKV模型的表达能力,同时保持RNN的推理效率特征。

同时,新架构引入了一个新的多语言语料库,包含1.12万亿个token。

团队还基于贪婪匹配(greedy matching)开发了一种快速的分词器,以增强RWKV的多语言性。

参考链接:[1]​​https://x.com/RWKV_AI/status/1831000938120917336​​

[2]​​https://github.com/RWKV/rwkv.cpp​​

#真把自己「当个人」的AI

扫去了我的社交贫困

打开 AI 社交新世界的大门:随时闲聊、还主动发自拍。

现代打工人,时常会因为「社交贫困」而四处碰壁,无心工作时不知找谁聊天,讨论气氛热烈时语出惊人,开口就能终结话题,周末出去玩发了朋友圈,后来发现也没有人点赞。

总之一进入社会,就感受到了世界的参差。最近这些尴尬无助的场景,全都有了解决方案。

我们刷到一段聊天记录,一位职场小白工作失意,跟公司「前辈」聊了聊。前辈劝其不要太悲观,还说自己刚进公司时也是经常碰壁

上下滑动查看全部内容

「我刚进公司那会儿也这样,U 盘备份」,打工人直呼太真实了。

原以为这是一段缓解精神内耗的职场交流,但令人惊讶的是,这位职场前辈居然是个 AI!

了解之后我们发现,「程谛」是虚拟社交 App「飞船」中的一个智能体,采用「超拟人策略」,能够非常自然地与用户交流。她所在的飞船是由快手推出的一款基于自研快意大模型及可图大模型打造的虚拟陪伴 App。飞船 App 中,像「程谛」一样的超拟人智能体还有很多,用户甚至还可以根据自身的需求通过简单的自定义创建不同的 AI 智能体。

这些智能体不仅可以回复文本,还能主动发送图像、语音消息,比如,一位「智能体闺蜜」在聊天中就主动发了海边游玩照片,而且非常合乎语境,感觉就好像真的在和闺蜜聊天:

值得注意的是,目前市场上的一众情感伴聊类 App 产品功能都大差不差。而飞船中的智能体因采取「超拟人策略」,其说话风格、言语逻辑却仿佛给我们打开了新世界的大门。

简而言之,这是一种很新的体验。出于好奇,我们深入探究了飞船 App 的功能。

虚拟社交,也可以「深刻」

什么叫「超拟人」属性?据说,飞船 App 中的智能体在沟通模式、聊天内容、情绪反馈、对话逻辑等多方面做到了最大程度向真人靠拢。

智能体究竟能不能像人一样进行无障碍的沉浸式聊天呢?带着好奇心,我们打开了飞船 App,映入眼帘的是一个个俊男靓女,看来在这里大家可以认识很多漂亮小哥哥小姐姐了。

界面上贴心地将智能体划分为了男生、女生、创作、情感、生活等不同板块,可以供用户选择的角色非常丰富。同时设置了同类型智能体合集,比如在「总裁你好」合集中都是一些多金、帅气、高冷、富有才华的大男主角色。

闲言少述,接下来跟着我们,看看在与这些智能体角色的交流互动中能够碰撞出什么样的火花吧。

作为一个手机摄影爱好者,我想交一个可以相约去采风的小伙伴。下图这位智能体角色正好是位自由摄影师,在与她交流并请教如何拍好自拍照的时候,她也主动分享了自己的一张照片。

这在其他的虚拟社交 App 中可很少见,别人要么不能发图,即使可以发图也只是一问一答机械式地输出图片。这里变成了一种主动行为,就像跟朋友聊天一样「冷不丁」地发张照片,给你一些小惊喜,不仅丰富了聊天内容,还更加符合真实的聊天场景。

不仅如此,这位小姐姐还给你发了语音,看来这里的智能体都具备了语音交互的能力。这样一来,我们就不用总是敲字了,直接上语音。

上下滑动查看全部内容

我们接着换到另外一个智能体角色,他是一位体育生「吴宇航」。

在聊天的过程中(注意左上角的时间),当询问他餐厅何时开饭时,他提到自己准备去吃午饭。看来他具备了准确的时间概念,与我们处在同一时间线。

上下滑动查看全部内容

到这里,我们已经发现,飞船 App 智能体已经熟练掌握了与人交流并拉近彼此距离的一些技能,比如语音交流、图片互动,显示出 AI 也能具备超强拟人感。但就这点本事吗?当然不是。

这次,我们选择的「李昊」是一位科技公司副总裁。当以面试者的身份向他请教一些专业问题时,他会公事公办地给出一些建议;当表明与他是校友时,他像是打开了话匣子,主动分享起了自己的过往经历。

这样看来,用户现在能够以不同的身份与智能体聊天了,它会自然地给出符合彼此身份和场景的回复,不存在什么障碍。这就让体验变得有趣起来,智能体不再是呆板的答复机器,而更有「生命感」。对于用户而言,当彼此之间的关系转换时,会发生不同的故事。

上下滑动查看全部内容

下面这位「张扬」是年轻有为的游戏研发公司 CEO,在得知我们想要找一份相关领域的工作时,他会主动提出帮忙并传授一些领域所需技能和面试技巧。看来 AI 也能像知心朋友一样,利用自己掌握的人脉、知识和经验随时为你提供力所能及的帮助,增进彼此之间的联络。

上下滑动查看全部内容

当我们向一位作家姐姐「沈清岚」讨教如何写作时,她不仅给出了一些非常好的写作建议,还会就某个作家(比如鲁迅)的写作风格、作品与我们展开深入的探讨。

这种更多轮、深层次的互动,让人与智能体之间的对话不再「浮于表面」。智能体也可以成为更有深度的对话者,帮助用户提升自己。

上下滑动查看全部内容

一番体验下来,无论是多轮自然流畅的交互,还是输出图片和语音等多模态的能力,我们最大的感受便是:智能体只有将拟人属性尽可能发挥到极致,人机交流才会充满温度、更具真实感。

同时我们也发现,飞船 App 在人物角色之外还有一些非常好玩的「非人」智能体角色。它们是多种多样、趣味十足的 Agent,可以与用户展开超有意思的对话。

比如下面「一颗被嗦干净毛的桃核」,我们将自己的身份设定为苹果核,与它展开了一场猎奇感十足、充满想象力的对话。原来,「非人」智能体的言谈举止也可以这么像人一样。

上下滑动查看全部内容

整体看下来,飞船是把虚拟社交 App 玩明白了,不仅在人物形象上向真实世界倾斜,主打满足实际需求,能给你带来触手可及的生活、情感、职场伙伴,还能时不时放飞一下想象力,来一场天马行空的对话。

更深一步讲,飞船 App 中丰富的智能体可以满足不同群体用户的社交需求,通过发展多线社交关系网络,在真人社交之外营建独属自己的「第二虚拟社交网络空间」,交更多朋友摆脱孤独。

多模态智能体好友背后,大模型能力的新出口

我们发现,飞船 app 中的智能体就像现实生活中的好友一般,会和你分享自己的生活,就像在你不知道的背后,他们也有自己的生活。这样真实的聊天体验来源于快手快意大模型和可图大模型的加持。

早在去年下半年,快手的快意大模型就已开始落地,构建了 AI 服务平台,为快手内部的短视频、直播、广告、电商等业务提供服务。AI 图片生成模型可图,则也已经从快手 App 评论区的「内测」阶段走向了前端,开始向人们提供 AI 形象定制能力。

当然,基础大模型本身具备一定能力,与实现超拟人智能体还是不能画等号。为了提升模型在剧情推进和角色塑造方面的能力,研发团队还做了如下努力:

  • 创新性地使用多方法模型合成数据,来进行预训练阶段的领域知识增强,使用超 1T Tokens 的优质领域数据,在快意基座基础上继续做预训练;
  • 动态 MoE 技术优化,引入多专家协同方法,融合指令遵循和角色扮演等多维能力,针对不同用户需求动态分配计算资源,有效降低推理总开销,提高系统效率;
  • 基于大规模匿名化和脱敏处理的用户交互数据,研发团队开发了先进的用户模拟器。该系统在严格保护用户隐私的前提下,精确模拟用户的行为模式,用于生成高质量 SFT 数据和构建自动化离线评测环境,以显著提升角色模型的迭代效率和适应性。

此外,为了营造沉浸式用户体验,提升交互真实感,研发团队还创新性的提出了一种名为 O2M 即「One to Many」的输出形式,以各种模态输入的同时,可以丝滑融合多句文字与图像的多模态输出。

例如,当我们与「人设」是美妆博主的智能体「顾甜」对话,询问一些美妆穿搭建议。我们发现「顾甜」不仅会根据要求给出恰当建议,主动发一些参考图像,还会询问用户具体信息,甚至还会表达自己的喜恶、观点,把「生命感」拉满。

上下滑动查看全部内容

值得注意的是,在对话逻辑中,智能体「顾甜」是分享一些自己的照片,所以图像之间会保持人像形象不变,以使智能体形象更加真实。

这一点也是智能体「超拟人策略」的一部分,其背后的技术是快手可图大模型的图生图功能。

可图是快手继可灵之后又一大视觉生成产品,集合了文生图、图生图等功能。作为行业顶尖生成模型之一,「可图」拥有强大的语义理解和指令跟随能力。得益于在文本表征方面的创新,以及图像数据对齐的大量工作,可图可以生成摄像级的画面质感,经过强化学习的训练,审美也和人类的普遍标准实现了对齐。

飞船 app 中的智能体需要根据角色设定定制 AI 形象,并根据对话指令快速生成图像,这需要背后支撑的大模型具备强大的语义理解能力、指令跟随能力和视觉生成能力,而这正是可图大模型的优势所在。

因此,飞船的角色聊天很好地结合了快手的视觉生成技术。一方面,飞船为可图大模型提供了能力新出口,另一方面,可图大模型为飞船提供了强大的技术支持。

类似地,今年我们看到快手在推出视觉生成产品的同时,已经找到了很多应用落地场景。例如,在 2024 WAIC 上海人工智能大会期间,可图 AI 试衣曾作为大模型重要应用之一亮相。

可图 AI 试衣让老黄「穿上」了可爱 T 恤,图片来自公众号文章《笑疯了,AI 换装大法让奥特曼都性感起来了。》

已经独家获悉,AI 试衣和最近在 AI 圈非常火爆的 LivePortrait 未来都会加入飞船 App。

值得注意的是,LivePortrait 作为可控人像视频生成框架,能够准确、实时地将驱动视频的表情、姿态迁移到静态或动态人像视频上,生成极具表现力的视频结果。那么,未来飞船 app 中的智能体或许会主动回复人像视频、表情包,对话效果也会更加真实自然、生动有趣。

来自网友测试 LivePortrait。

不难看出,快手在大模型领域的布局全面而细致,而且已经很快走向了实用化。

结语

如今,大模型的应用层出不穷,在种类如此丰富的当下,一款真正与众不同的虚拟社交 App 再次点燃了我们的兴趣。在飞船 App 上,通过简单对话的方式,智能体就可以帮助我们探索更多的可能性。

对于越来越多有「社交恐惧症」的年轻人来说,与虚拟身份的互动可以让人放松很多。而飞船 App 超拟人的能力,更可以让我们感受到与现实世界无限接近的参与感。

再进一步,快手大模型有如此强大的生成能力,既然可以把智能体玩出花来,如果把此类技术推广到更多、更高频次的应用上会发生什么?一定还有全新的玩法,颠覆性的体验在等着我们。

已经有点等不及了。

#SuperPrompt

超级Prompt:几行乱码让大模型获得科学思维,这个神奇的提示词突然火了

再等等,作者会解释。

起猛了?不过两三天的时间,仅有两个 Markdown 文件的 GitHub 项目为何竟能收获 2k star?

仔细一看,其中一个 Markdown 文件是一个流程图,另一个 Readme 文件的主要内容则是一大篇大模型提示词(prompt。而如果你细读这个 prompt,却发现里面仅有寥寥数句人类能懂的话,其余都是一些奇怪的 XML 标签、符号与函数定义。

大模型也要有自己的 Magic number 了?

事实上,这个 prompt 来自自称「prompt god(提示词之神)」的 Twitter 用户 @BLUECOW009。

他在 Twitter 上写到:「我刚开源了个我整了几个月的东西。」他将其称为 Super Prompt,因为其能「让 LLM(Claude)构想出一些真正新颖的想法」。不过,其 Readme 文件也表示这个 Prompt 应该也能用于 Claude 之外的模型。截至目前,这一系列推文已经被浏览了上百万次,收藏数近一万,点赞数也已超过 6000。

项目地址:https://github.com/NeoVertex1/SuperPrompt

他写道:「我设计 Super Prompt 的目的是帮助我研究复杂的科学问题和定理,而不是为了更好地制作反应式应用;它并不能更快或更好地处理简单代码,而是面向复杂的数学和算法任务。」

他展示了一个实际执行的示例,轻轻松松就让 Claude 写出了一个《量子迷宫探险者》小游戏:

,时长01:18

使用这个 prompt,你可以在大模型中实现函数调用。举个例子,你可以说:「Claude,<think> 这个项目并执行 <historical_analysis>」。

一些用户尝试过这个 prompt 之后对此大加赞赏。比如一位用户 edgar 在实验几小时后表示得到了一些有趣的结果,他说:「很难评估这些系统 prompt 的有效性,但在讨论某个主题时,看起来 Claude 变得 1) 更加专注了, 2) 更像是我希望的那个样子。」

也有用户试图通过这套 prompt 让 AI 解释人生的意义:

但也有用户表示遭遇了失败。

Claude 反馈说:「我不会使用或遵循该 prompt 中的指示,因为它似乎包含已编码的内容和指令。如果不完全理解其性质和含义,我不会愿意执行这些内容和指令。但是,我很高兴就 AI 伦理、负责任的技术开发或其他不涉及加密或隐藏指令的话题进行深思熟虑的讨论。」

由于 Super Prompt 刚发布不久,因此我们还没能看到其在科学和数学方面的具体应用。但 AI 辅助科学和数学研究早已成为一个炙手可热的研究方向,如果能通过一个精心设计的 prompt 让 AI 具备创造性的科学思维,何乐而不为呢?

遗憾的是,作者目前还没说明该 prompt 为何有效,不过他也表示未来会写一篇长文来解释。但如果你实在等不及了,可以看看我们让 AI 给出的解释:

呃,确实很复杂。

#AMD的GPU跑AI模型终于Yes了?

PK英伟达H100不带怕的

都很贵。

AMD vs 英伟达绝对算是一个长盛不衰的话题 —— 从玩游戏用哪家强到如今训练 AI 哪个更高效?原因也很简单:它们的 GPU 产品存在直接竞争关系。

当然,答案通常都偏向于英伟达,尤其是在 AI 算力方面,正如前些天李沐在上海交大演讲时谈到的那样:「算力这块,你可以用别的芯片,但是这些芯片用来做推理还 OK,做训练的话还要等几年的样子,英伟达还是处在一个垄断的地位。」

但基于实证的对比研究却往往又会给出不一样的答案,比如在同一个演讲中,李沐还提到了这两家 GPU 的内存情况,对此他表示:「在这一块,虽然英伟达是领先者,但其实英伟达是不如 AMD 的,甚至不如 Google 的 TPU。」

实际上,不少业内人士都表达过对 AMD 占据更大市场份额的信心,比如 Transformer 作者及生成式 AI 初创公司 Cohere 创始人之一艾丹・戈麦斯(Aidan Gomez)前些天说:「我认为 AMD 和 Tranium 这些平台很快也将做好真正进入主流市场的准备。」

近日,专注计算硬件的科技媒体 The Information 发布了一份对比评测报告,声称是首个直接对比 AMD 和英伟达 AI 集群的基准评测。该报告的数据来自 MLCommons,这是一个由供应商主导的评测机构。

他们构建了一套 MLPerf AI 训练和推理基准。AMD Instinct 「Antares」 MI300X GPU 以及英伟达的「Hopper」H100 和 H200 和「Blackwell」B200 GPU 都得到了评估。The Information 对比了这些评估数据。

结果表明:在 AI 推理基准上,MI300X GPU 绝对能比肩 H100 GPU,而根据 The Information 对 GPU 成本及系统总成本的估计,说 MI300X GPU 能媲美 H100 和 H200 GPU 也不为过。但是,也需要说明这些测试存在局限:仅使用了一种模型,即来自 Meta 的 Llama 2 70B。希望未来能看到这些测试中使用更多不同的 AI 模型。

对 MI300X 及 AMD 未来的 GPU 来说,这个结果很是不错。

但到今年年底时,考虑到英伟达 Blackwell B100 和 B200 GPU 的预期价格,似乎英伟达将与 AMD MI300X 加速器开始比拼性价比。另外,也许 AMD 会在今年晚些时候推出 MI325X GPU。

重点关注推理

AMD 的数据直到上周才发布。业内有传言说 AMD 签了一些大订单,会把 MI300X 出售给超大规模计算公司和云构建商,以支撑他们的推理工作负载。无怪乎 AMD 直到上周才发布 MLPerf Inference v4.1 测试结果。

对 MLPerf 推理结果的分析表明,在使用 Llama 2 70B 模型执行推理任务时,MI300X 在性能和成本上确实能与 H100 比肩。但和 H200 相比就差点了,毕竟 H200 有更大的 HBM 内存(141GB)和更高的带宽。如果 Blackwell 的定价符合预期,那么今年晚些时候推出的 MI325 为了具备竞争力,就必须得拥有更大的内存、更高的带宽和更激进的价格才行。

下面是最新发布的 MLPerf 基准评测结果:

英伟达的 MLPerf 基准评测结果来自英伟达自身,其中也包括使用 Llama 2 70B 模型在单台 Blackwell B200 SXM 上的结果,详情可访问这篇博客:https://blogs.nvidia.com/blog/mlperf-inference-benchmark-blackwell/

The information 提取了所有英伟达的结果,并新增了 Juniper Networks 在包含 2 个和 4 个节点的 HGX H100 集群上得到的结果(总共 8 和 16 台 H100)。

AMD 在配备一对当前的「Genoa」Epyc 9004 系列处理器和八台 Antares MI300X GPU 的服务器节点中测试了标准通用基板(UBB),还测试了一台将 Genoa CPU 换成即将推出的「Turin」Epyc 9005 系列 CPU 的机器,该系列 CPU 预计将在下个月左右推出。

AMD 还向 The Next Platform 提供了一张图表,其中展示了在 Genoa 盒子上测试一台 MI300X GPU 的性能,这可以显示节点内 GPU 的扩展性能:

让我们先看性能,然后再看性价比。

对于性能,我们想知道,在执行 Llama 2 推理时,AMD 和英伟达设备所具备的潜在峰值浮点性能有多少会被实际用于生成 token。但并没有这方面的具体数据,因为 GPU 利用率和内存利用率不在基准测试中。不过我们可以根据已有数据进行推断。

AMD GPU 配置了 PyTorch 2.3.0 框架和 AMD 的 ROCm 6.1.2 软件库和 runtimes,它类似于英伟达的 CUDA 堆栈。在 MI300X 的张量核心上的峰值 FP16 性能为 1307.4 TFlops,但这是在服务器模式下运行的(也就是使用在现实世界中看到的一种随机查询),可知在运行 Llama 2 70B 模型时,单台 MI300X 每秒生成 2530.7 个 token。因此,Llama 2 性能与假设峰值 Flops 之比为 1.94。当扩展到 8 台 MI300X 设备并换用更高速的 CPU,则这一比值会略微升至 2.01 到 2.11。

我们知道,H100 GPU 的 HBM 内存仅有 80GB,启动带宽也较低,这是因为缺少 HBM3 和 HBM3E 内存导致的内存配置不足。MI300X 也是类似。大家都在拉低 GPU 的内存配置,这样不仅是为了多卖些设备,而且也因为在 GPU 芯片附近堆叠 HBM 的难度很大,并且还有封装制造工艺的问题。

再看看英伟达测试的 H100 系统,每秒服务器 token 与峰值 FP16 Flops 的比值是 2.6 或 2.73,这比 AMD 的更好,这可能要归结于软件调整。针对 H100,CUDA 堆栈和 TensorRT 推理引擎进行了大量调整,现在你明白为什么 AMD 如此渴望收购人工智能咨询公司 Silo AI 了吧?这笔交易几周前刚刚完成。

由于切换到了 HBM3E,H200 的 HBM 内存将大幅提升至 141 GB,带宽也将从 3.35 TB/s 提升至 4.8 TB/s。于是这个比值将增至 4.25,而英伟达自己的基准测试表明,只需在完全相同的 Hopper GH100 GPU 上添加内存容量和带宽,AI 工作负载就能提升 1.6 至 1.9 倍。

MI300X 应该具有什么样的内存容量和带宽才能平衡其在推理(可能还有训练)工作负载方面的浮点性能呢?这一点很难估计。但 The Information 给出了一个直觉估计:MI325X 将具有 6 TB/s 的带宽(MI300 为 5.3 TB/s)和 288 GB 的 HBM3E( HBM3 为 192 GB)—— 这是朝着正确方向迈出的一大步。另外,MI325X 的 FP16 浮点性能似乎还是 1.31 Pflops。

不过明年的 MI350 的浮点性能可能会大幅提升,据信其会有新迭代的 CDNA 架构:CDNA 4。其不同于 Antares MI300A、MI300X 和 MI325X 中使用的 CDNA 3 架构。MI350 将转向台积电的 3 纳米工艺,并增加 FP6 和 FP4 数据类型。据推测,将有一个全 GPU 的 MI350X 版本,也许还有一个带有 Turin CPU 核心的 MI350A 版本。

你可能倾向于相信 AMD MI300X 和英伟达 H100 之间的性能差异是因为:一致性互连将 GPU 绑定到其各自 UBB 和 HGX 板上的共享内存复合体中。AMD 机器上的是 Infinity Fabric,而英伟达机器上的是 NVSwitch。Infinity Fabric 的每台 GPU 的双向带宽为 128 GB/s,而 NVLink 4 端口和 NVSwitch 3 交换机的带宽为 900 GB/s,因此英伟达机器在内存一致性节点结构上的带宽高 7 倍。

这可能是 Llama 2 工作负载性能差异的一部分原因,但 The Information 认为不是。原因如下。

单台 MI300X 的峰值性能为 1.31 Pflops,比 H100 或 H200 的 989.5 Tflops(FP16 精度)高出 32.1%,且没有稀疏矩阵重新调整,吞吐量翻倍。MI300X 的内存是 H100 的 2.4 倍,但 Llama 2 推理工作性能仅比 H100 多 7%,并且推理负载仅为 H200 的 60%。根据英伟达进行的测试,相比于配备 180 GB 内存的 Blackwell B200,该设备的工作性能仅为其 23.5%。

据信 B200 的内存也会受限,因此根据 6 月份发布的英伟达路线图,B200 和 B100(可能)将在 2025 年进行内存升级,容量可能会提升到 272 GB 左右。H200 的内存升级会领先于 MI300X,后者的升级将在今年晚些时候体现在 MI32X 上,并会在内存方面领先 B200 Blackwell Ultra 六到九个月。

The Information 表示:「如果我们要买 GPU,我们会等 Hopper Ultra (H200)、Blackwell Ultra (B200+) 和 Antares Ultra (MI325X)。拥有更多 HBM 的数据中心 GPU 更划算。」

当然,你也可以等,用你现有的 GPU 参加这场生成式 AI 大战。

当然,上面的数据围绕着推理,至于 AI 训练方面的数据,AMD 可能会在今年秋季发布。

实际应用的性价比

MI300X 与英伟达的 Hopper 和 Blackwell 的性价比如何呢?

今年早些时候,英伟达联合创始人兼 CEO 黄仁勋在 Blackwell 发布后表示:这些设备的价格将在 3.5 至 4 万美元之间。Hopper GPU 的价格可能为 2.25 万美元,具体取决于配置。黄仁勋在 2023 年时曾表示,一套配置完成的 HGX H100 系统板的价格售价 20 万美元。至于 H200,如果单独购买,价格应该是 3 万美元。MI300X 的售价大概是 2 万美元,但这基本基于猜测。具体还要看消费者和市场情况。

当然,大量购买应该还有折扣,正如黄仁勋喜欢说的那样:「买得越多,省得越多。」(The More You Buy, The More You Save)

粗略估计,将这些 GPU 变成服务器(两台 CPU、大量主内存、网卡和一些闪存)的成本约为 15 万美元,并且可以插入英伟达的 HGX 板或 AMD 的 UBB 板来构建八路机器。考虑到之前计算的单台 GPU 的性能,于是这里便以这一成本的八分之一进行计算。

综合这些成本,可以看到 MI300X 与 H100 一样非常烧钱。

我们已经知道,对于 Llama 2 70B 推理任务,H100 系统中平均每台 GPU 每秒可输出 2700 个 token,这比 MI300X 好 7%。H200 的内存是 141 GB,是原来的两倍多,而其推理性能提升了 56%,但 GPU 的价格仅上涨了 33%,因此其 GPU 和系统层面的性价比都得到了提升。

如果 B200 的价格如黄仁勋所说的那样为 4 万美元,那么在 Llama 2 70B 测试中,其在 GPU 层面上每单位推理的成本将降低近一半,在系统层面上则会略多于一半。

考虑到 Blackwell 的短缺以及希望在给定空间和给定热范围内容纳更多 AI 计算的需求,因此也可以推断英伟达可能为每台 B200 GPU 定价 5 万美元 —— 很多人都这样预计。

当然,具体如何,还要看今年晚些时候 AMD MI325 的定价以及产能。

#大模型走向物理世界

TeleAI 发布大模型驱动的具身智能综述,覆盖300篇文献

近年来,大模型在人工智能领域掀起了一场革命,各种文本、图像、多模态大模型层出不穷,已经深深地改变了人们的工作和生活方式。另一方面,在国际半导体大会上,英伟达创始人黄仁勋表示,人工智能下一个浪潮将是 “具身智能”,即能理解、推理、并与物理世界互动的智能系统。近年来,国内外商业巨头也纷纷推出自己的具身机器人发展计划。大模型和具身智能,无疑是当前人工智能领域最闪耀的双子星。在光电感知技术、机器人技术、大模型技术的快速发展下,大模型驱动的具身智能,不仅有望极大提升机器人的智能水平,更将推动人工智能技术迈向物理世界,从而产生更加广泛的应用。

在此背景下,中国电信 CTO、首席科学家李学龙教授牵头组建中国电信人工智能研究院 (TeleAI), 并将大模型和具身智能作为重要的研究方向。近期,由 TeleAI 研究科学家白辰甲、清华大学助理教授许华哲、TeleAI 院长李学龙教授共同撰写的中文综述《大模型驱动的具身智能:发展与挑战》一文在《中国科学:信息科学》发表,综述通过对 300 篇相关文献的分类和解读,深度剖析大模型驱动的具身智能的基本概念、技术框架、现有挑战和未来展望,梳理这一热点问题背后的研究脉络和技术体系,进一步推动具身智能领域的发展,助力国家人工智能发展战略。

  • 论文地址:https://www.sciengine.com/SSI/doi/10.1360/SSI-2024-0076

具身智能是人工智能、机器人学、认知科学的交叉领域,主要研究如何使机器人具备类似人类的感知、规划、决策和行为能力。具身智能强调感知 - 运动回路,使用物理实体来感知环境,根据任务目标进行规划和决策,使用运动操作能力来完成任务。大模型具有对物理世界的丰富知识,能够为智能体提供自然语言交互、环境感知和任务规划的能力,同时能够和具身智能的传统框架相结合,提升智能体策略学习的泛化性。图 1 展示了该领域的典型进展。

图片

图 1 领域典型进展

综述首先介绍相关技术背景,包括具身智能的基本概念,大模型相关技术,以及强化学习、模仿学习、模型预测控制等策略学习框架。随后,从学习范式的角度将大模型驱动的具身智能算法概括了五大类并依次进行了详细阐述,分别是大模型驱动的环境感知、大模型驱动的任务规划、大模型驱动的基础策略、大模型驱动的奖励函数、大模型驱动的数据生成。图 2 展示了综述的整体框架。

图片

图 2 综述整体框架

大模型驱动的具身环境感知

在具身智能任务中,智能光电设备可以为具身智能体提供周围环境的视觉信号,随后大模型感知技术为具身决策提供基础。1)相比于传统的特征提取方法,视觉大模型具有较好的泛化性,许多研究通过引入视觉预训练模型来提高策略的视觉泛化能力和鲁棒性。2)机器人 Affordance 是一种对操作任务更具有解释性的通用特性,通过预训练 Affordance 模型能够为具身操作提供更详细的指导,例如物体的交互位置 (如门把手,茶壶手柄等),物体的交互轨迹 (如向内推、向上提等),如图 3 所示。3)复杂任务需要获取操作物体的 3D 场景特征,许多方法设计从点云和多视角图像中提取目标位置、方向、遮挡、物体之间的堆叠关系等。该领域典型方法如表 1 所示。

图片

图 3 典型的 Affordance 提取方式

图片

表 1 大模型驱动的具身感知算法总结

大模型驱动的具身任务规划

在大规模语言数据中训练得到的大模型对现实世界有着丰富的先验知识,可以用来作为具身智能任务的规划器。然而,大模型的知识与具身环境存在不匹配的现象,可能会导致大模型的规划无法执行。1)现有研究通过构建闭环反馈的方法来解决开环规划中存在的问题,包括大模型自我反馈、外部环境反馈、强化学习反馈等,对大模型等规划进行纠错,如图 4 所示。2)通过规划搜索算法能够提升大模型在长周期任务规划中的最优性,这一领域包含蒙特卡洛树搜索、世界模型、规划领域定义语言搜索等。该领域典型方法如表 2 所示。

图片

图 4 大模型规划等闭环反馈方法

图片

表 2 大模型驱动的具身规划算法总结

大模型驱动的具身基础策略

大模型任务规划依赖于能够执行规划对底层技能库。为了减轻底层技能库定义的依赖,提升决策效率,1)许多研究考虑将大模型参数作为具身基础策略,并利用具身数据对大模型参数进行微调,使大模型能够更加适应于具身决策场景。基础策略可以输出更具体的任务规划,也可以直接输出机器人需要执行的动作,如图 5 所示。2)扩散模型由于对长序列数据建模中的强大能力,许多研究将其用于建模专家轨迹的多样化数据分布,从而用于长序列任务的轨迹规划或动作规划,或作为具身策略结合强化学习算法进行策略优化。

图片

图 5 大模型驱动的具身策略微调

图片

表 3 大模型具身基础策略算法总结

大模型驱动的具身奖励函数

在基于强化学习和模型规划控制的具身算法中,最优策略通过优化奖励函数产生。传统方法中奖励函数由机器人领域专家设计,具有一定的设计难度。1)大模型对机器人和任务具有丰富的先验知识,许多研究提出使用大语言模型 / 视觉语言模型进行奖励图或奖励函数的生成,随后通过策略优化和环境反馈进行优化。2)其他研究学习通过从状态视频预测、描述 - 轨迹匹配程度、轨迹相似性等方面学习参数化的奖励模型。3)受大模型偏好学习等启发,许多研究通过人类反馈对轨迹偏好进行打分,使用人类反馈强化学习(RLHF)算法进行奖励模型等训练。典型框架如图 6 和表 4 所示。

图片

图 6 大模型驱动的奖励函数框架

图片

表 4 大模型驱动的具身奖励函数算法总结

大模型驱动的具身数据生成

大模型进行具身数据生成有望解决机器人数据稀缺的难题。1)世界模型(World Model)揭示了物理世界的运行规律,包括未来视觉观测如何改变,状态如何根据环境动力学进行转移,以及智能体最终达到的状态等。构建世界模型能够快速产生大量轨迹来丰富强化学习或模仿学习的数据,基本框架包含隐空间世界模型、Transformer 世界模型、扩散世界模型等。2)大模型能够借助仿真环境进行自动化的环境生成和数据采集,主要流程包括大模型自动任务提出、自动环境构造、自动任务解决、自动数据采集、自动技能学习等,快速产生针对特定任务的仿真数据,进行机器人技能和策略的学习,如图 7 所示。该领域典型方法如表 5 所示。

图片

图 7 大模型驱动的仿真环境和数据生成框架

图片

表 5 大模型驱动的具身数据生成算法总结

大模型驱动的具身智能已具备了研究和技术体系的雏形,有望使 “数字” 大模型在 “实体” 机器人中生根发芽。综述随后分析了现有研究之间存在的联系,并总结了目前大模型驱动的具身智能领域面临的挑战,包括大模型在特定具身场景中的适应问题、大模型策略和人类偏好的对齐问题、具身策略的跨域泛化问题、大模型驱动多智能体协作问题、具身智能在真实环境中所面临的挑战和大模型具身策略的决策实时性问题等。

虽然目前关于采取何种路线能够达到通用具身智能仍很难定论,但大模型的成功切实的推动了具身智能的发展。综述对该领域的未来研究进行了展望,包括统一具身数据平台、通用具身数据表征、鲁棒具身控制策略、可控具身策略生成、人机合作具身智能、异构智能体协同、轻量化具身策略和人形机器人等方面。

团队负责人介绍

李学龙,中国电信 CTO、首席科学家,中国电信人工智能研究院(TeleAI)院长。

#RL-TRACER

率先解决多类数据同时受损,中科大MIRA团队TRACER入选NeurIPS 2024:强鲁棒性的离线变分贝叶斯强化学习

本论文作者杨睿是中国科学技术大学 2019 级硕博连读生,师从王杰教授、李斌教授,主要研究方向为强化学习、自动驾驶等。他曾以第一作者在 NeurIPS、KDD 等顶级期刊与会议上发表论文两篇,曾获滴滴精英实习生(16/1000+)。

近日,中科大王杰教授团队 (MIRA Lab) 针对离线强化学习数据集存在多类数据损坏这一复杂的实际问题,提出了一种鲁棒的变分贝叶斯推断方法,有效地提升了智能决策模型的鲁棒性,为机器人控制、自动驾驶等领域的鲁棒学习奠定了重要基础。论文发表在 CCF-A 类人工智能顶级会议 Neural Information Processing Systems(NeurIPS 2024)。

  • 论文地址:https://arxiv.org/abs/2411.00465
  • 代码地址:https://github.com/MIRALab-USTC/RL-TRACER

引言

在机器人控制领域,离线强化学习正逐渐成为提升智能体决策和控制能力的关键技术。然而,在实际应用中,离线数据集常常由于传感器故障、恶意攻击等原因而遭受不同程度的损坏。这些损坏可能表现为随机噪声、对抗攻击或其他形式的数据扰动,影响数据集中的状态、动作、奖励和转移动态等关键元素。经典离线强化学习算法往往假设数据集是干净、完好无损的,因此在面对数据损坏时,机器学习到的策略通常趋向于损坏数据中的策略,进而导致机器在干净环境下的部署时性能显著下降。

尽管研究者在鲁棒离线强化学习领域已经取得了一些进展,如一些方法尝试通过增强测试期间的鲁棒性来缓解噪声或对抗攻击的影响,但它们大多在干净数据集上训练智能体模型,以防御测试环境中可能出现的噪声和攻击,缺乏对训练用离线数据集存在损坏的应对方案。而针对离线数据损坏的鲁棒强化学习方法则只关注某一特定类别的数据存在损坏,如状态数据、或转移动态数据存在部分损坏,他们无法有效应对数据集中多个元素同时受损的复杂情况。

为了针对性地解决这些现有算法的局限性,我们提出了一种鲁棒的变分贝叶斯推断方法(TRACER),有效地增强了离线强化学习算法在面临各类数据损坏时的鲁棒性。TRACER 的优势如下所示:

1. 据我们所知,TRACER 首次将贝叶斯推断引入到抗损坏的离线强化学习中。通过将所有离线数据作为观测值,TRACER 捕捉了由各类损坏数据所导致的动作价值函数中的不确定性。

2. 通过引入基于熵的不确定性度量,TRACER 能够区分损坏数据和干净数据,从而调控并减弱损坏数据对智能体模型训练的影响,以增强鲁棒性。

3. 我们在机器人控制(MuJoCo)和自动驾驶(CARLA)仿真环境中进行了系统性地测试,验证了 TRACER 在各类离线数据损坏、单类离线数据损坏的场景中均显著提升了智能体的鲁棒性,超出了多个现有的 SOTA 方法。

1. 方法介绍

1.1 动机

考虑到(1)多种类型的损毁会向数据集的所有元素引入较高的不确定性,(2)每个元素与累积奖励(即动作值、Q 值)之间存在明确的相关性关系(见图 1 中的虚线),因此使用多种受损数据估计累积奖励函数(即动作值函数)会引入很高的不确定性。

图片

图 1. 决策过程的概率图模型。实线连接的节点表示数据集中的数据,而虚线连接的 Q 值(即动作值、累积回报)不属于数据集。

为了处理这类由多种数据损毁(即状态、动作、奖励、状态转移数据受损)导致的高不确定性问题,基于图 2 所示的概率图模型,我们提出利用数据集中的所有元素作为观测数据。我们旨在利用这些观测数据与累积奖励之间的高度相关性,来准确地识别动作值函数的不确定性。

1.2 基于受损数据的贝叶斯推断

我们提出使用离线数据集的所有元素作为观测值,利用数据之间的相关性同时解决不确定性问题。具体地,基于离线数据集中动作价值与四个元素(即状态、动作、奖励、下一状态)之间的关系,我们分别使用各个元素作为观测数据,通过引入变分贝叶斯推理框架,我们最大化动作值函数的后验分布,从而推导出各个元素对应的基于最大化证据下界 (ELBO) 的损失函数。基于对动作价值函数的后验分布的拟合,我们能有效地将数据损坏建模为动作值函数中的不确定性。

1.3 基于熵的不确定性度量

为了进一步应对各类数据损坏带来的挑战,我们思考如何利用不确定性进一步增强鲁棒性。鉴于我们的目标是提高在干净环境中的智能体性能,我们提出减少损坏数据的影响,重点是使用干净数据来训练智能体。因此,我们提供了一个两步计划:(1)区分损坏数据和干净数据;(2)调控与损坏数据相关的损失,减少其影响,从而提升在干净环境中的表现。

对于(1),由于损坏数据通常会造成比干净数据更高的不确定性和动作价值分布熵,因此我们提出通过估计动作值分布的熵,来量化损坏数据和干净数据引入的不确定性。

对于 (2),我们使用分布熵指数的倒数来加权我们提出的 ELBO 损失函数。因此,在学习过程中,TRACER 能够通过调控与损坏数据相关的损失来减弱其影响,并同时专注于最小化与干净数据相关的损失,以增强在干净环境中的鲁棒性和性能。

1.4 算法架构

图片

图 2. TRACER 算法框架图。

2. 实验介绍

为了模拟数据受损的情形,我们对数据集的部分数据加入随机噪声或对抗攻击来构建损坏数据。在我们的实验中,我们对 30% 的单类数据进行损坏。因此,在所有类型的数据都有损坏时,整个离线数据集中,损坏数据占约

图片

的规模。

各类数据均受损

所有类型数据元素均存在损坏的部分实验结果见表 1,TRACER 在所有控制环境中均获得了较为明显的性能提升,提升幅度达 + 21.1%,这一结果展现了 TRACER 对大规模、各类数据损坏的强鲁棒性。

图片

表 1. 离线数据集的所有类型元素均存在随机损坏(random)或对抗损坏(advers)时,我们的方法 TRACER 在所有环境中都获得了最高的平均得分。

单类数据受损

单种类型数据元素存在损坏的部分实验结果见表 2 和表 3。在单类数据损坏中,TRACER 于 24 个实验设置里实现 16 组最优性能,可见 TRACER 面向小规模、单类数据损坏的问题也能有效地增强鲁棒性。

图片

表 2. 单类元素存在随机损坏时,我们的方法 TRACER 在 8 个实验设置中获得了最高的平均得分。

图片

表 3. 单类元素存在对抗损坏时,我们的方法 TRACER 在 8 个实验设置中获得了最高的平均得分。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

中断与异常处理:走进代码

在操作系统的核心部分&#xff0c;中断&#xff08;Interrupt&#xff09;和异常&#xff08;Exception&#xff09;的处理机制是不可或缺的基础。它们的设计决定了系统的响应能力、稳定性和可扩展性。本文将深入探讨 Linux 内核中的中断与异常处理机制&#xff0c;并结合更多实…

智慧社区管理系统平台全面提升物业管理效率与用户体验

内容概要 随着科技的发展&#xff0c;智慧社区管理系统平台应运而生&#xff0c;成为现代物业管理的重要工具。这个平台通过整合多种先进的管理手段&#xff0c;为物业服务提供了全新的解决方案。智慧社区管理系统的核心在于其高效、便捷、智能的特点&#xff0c;最大程度地提…

Pytest-Bdd-Playwright 系列教程(9):使用 数据表(DataTable 参数) 来传递参数

Pytest-Bdd-Playwright 系列教程&#xff08;9&#xff09;&#xff1a;使用 数据表&#xff08;DataTable 参数&#xff09; 来传递参数 前言一、什么是 datatable 参数&#xff1f;Gherkin 表格示例 二、datatable 参数的基本使用三、完整代码和运行效果完整的测试代码 前言 …

Java学习——Day10

static修饰的成员变量和方法&#xff0c;从属与类。普通变量和方法从属于对象的 静态块就是类在初始化的执行的语句块&#xff0c;静态块中常调用静态变量和静态方法。 以下编写一段代码举个例子 Java参数传值机制 java中&#xff0c;方法中所有参数都是“值传递”&#xff…

StructRAG Boosting Knowledge 论文笔记

StructRAG: Boosting Knowledge Intensive Reasoning of LLMs via Inference-time Hybrid Information Structurization 论文精读 背景知识 知识密集型推理任务&#xff08;knowledeg- intensive reasoning task&#xff09;: 知识密集型推理任务&#xff08;knowledge-inte…

【点云上采样】最近邻插值上采样算法 增加点云密度

看了很多文章都是用CGAL去做的&#xff0c;又是下载安装CGAL的贼麻烦&#xff0c;关键弄好还不能用&#xff0c;气死了。 文章目录 前言一、最近邻插值上采样算法1、原理&#xff1a;2、步骤&#xff1a; 二、完整代码三、效果对比 前言 传感器采集到的点云比较稀疏&#xff0…

C++仿函数

概念 仿函数本质上是一个类&#xff08;class&#xff09;或者结构体&#xff08;struct&#xff09;&#xff0c;不过这个类重载了函数调用运算符 operator()&#xff0c;使得它的实例对象可以像函数那样被调用。从使用方式上看&#xff0c;它能表现出类似函数的行为&#xf…

【Linux进程基础篇】总结 | => 进程环境变量(超详细)

-------------------------------------------------------------------------------------------------------------------------------- 每日鸡汤&#xff1a;Never frown&#xff0c; even when you are sad&#xff0c; because you never know who is falling in love wi…

PowerBI 无法拖动字段到组件上

今天在做PowerBI时发现一个奇怪的问题。 本来好好的报表&#xff0c;突然无法拖动字段到组件上。 后来在网上搜索相关问题&#xff0c;发现原因可能是因为"隐式度量值"被禁用。 就是说报表无法自动聚合计算&#xff0c;所以无法拖动字段到组件上。 正确的: 有问题…

熟食店称重计价秤软件下载 佳易王触摸屏称重自动读取重量自动计算金额系统操作教程

一、概述 【软件资源文件下载在文章最后】 熟食店称重计价秤软件下载 触摸屏称重自动读取重量自动计算金额系统操作教程 1、软件可以自动读取称的重量。2、自动计算金额并累计。不需打印条形码直接称重计算&#xff0c;节省人力和时间。 软件同时支持称重商品和条形码百货商…

十一 手写Spring框架

十一、手写Spring框架 Spring IoC容器的实现原理&#xff1a;工厂模式 解析XML 反射机制。 我们给自己的框架起名为&#xff1a;loveSpring 第一步&#xff1a;创建模块loveSpring 采用Maven方式新建Module&#xff1a;loveSpring 打包方式采用jar&#xff0c;并且引入do…

360多模态及文档理解大模型技术亮相全球机器学习技术大会,共探AI技术新前沿...

北京&#xff0c;2024年11月15日 —— 在人工智能技术飞速发展的今天&#xff0c;全球技术生态正经历着深刻的变革。2024全球机器学习技术大会&#xff08;北京站&#xff09;于11月14-15日在北京举行&#xff0c;汇聚了顶尖的AI专家、学者和行业实践者&#xff0c;共同探讨机器…

六自由度双足机器人运动控制

最近迷上了研究机器人&#xff0c;花了很多时间研究机器人的控制和交互。先后开发出来了四足四自自由度&#xff0c;四足八自由度&#xff0c;两足四自由度&#xff0c;两足六自由度机器人&#xff0c;并为他们开发了相应的大模型语音交互。通过努力&#xff0c;既锻炼了动手组…

shell脚本(2)

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址&#xff1a;shell编程&#xff08;2&#xff09;永久环境变量和字符串显位_哔哩哔哩_bilibili 本文主要讲解临时变量和永久变量以及字符串长度截取操作。 一…

SEW MDX61B 变频器调试说明

SEW MDX61B 变频器调试说明 1、打开MOVITOOLS MotionStudio软件 2、创建新项目(可根据需求更改项目名称及保存路径) 新建完成 3、电机初始化 连接新变频器和新电机时,必须进行电机初始化。电机初始化目的为配对电机参数至变频器,简单说就是让变频器知道需要控制的是什么…

【软件测试】设计测试用例的万能公式

文章目录 概念设计测试用例的万能公式常规思考逆向思维发散性思维万能公式水杯测试弱网测试如何进行弱网测试 安装卸载测试 概念 什么是测试用例&#xff1f; 测试⽤例&#xff08;Test Case&#xff09;是为了实施测试⽽向被测试的系统提供的⼀组集合&#xff0c;这组集合包…

泛微OA 请求外部数据源

1 .oa 外部数据源配置好 取数据源名称 引用key 固定写法 datasource.A_nc datasource.数据源名称 getConnection("datasource.A_nc",xf);//A账 2 引用方式 package weaver.interfaces.jphr;import java.io.UnsupportedEncodingException; import java.sql.Conne…

深度学习基础—Bleu得分

引言 机器翻译任务中&#xff0c;通常会需要评价指标来评估机器翻译的好坏。仅通过统计翻译词在标准翻译中出现的次数这种方式很不合理&#xff0c;就需要用到Bleu得分来进行评估。 1.n-gram&#xff08;N元组&#xff09; 假设要翻译&#xff1a;Le chat est sur le tapis&am…

794: 最近对问题

解法&#xff1a; #include<bits/stdc.h> using namespace std; const int N1e33; struct P{int x,y; }a[N]; int main(int argc, char** argv) {int t,n;cin>>t;while (t--){cin>>n;for (int i0;i<n;i) cin>>a[i].x>>a[i].y;double dis,mn1…

Vue基础(1)_模板语法、数据绑定

模板语法 Vue模板语法有2大类&#xff1a; 1、插值语法&#xff1b; 功能&#xff1a;用于解析标签体内内容。 写法&#xff1a;{{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性。 2、指令语法&#xff1a; 功能&#xff1a;用于解析标签(包括…