微调大语言模型,如何设计数据格式?【解答最常见的初学者问题】
参观党史馆时看到的,1934年的奶酪陷阱体
人在西西里,刚和Andrej Kalpathy吃完饭,还在消化中,给大家分享一点茶余饭后的二手信息。
其实饭是前天吃的…Andrej真的是个很有耐心的暖男…OpenAI还算是乐于分享的,比如MoE,人家去年六月就发布了技术文章挂在官网上分享了…
Andrej在ICVSS2023分享了多模态的技术信息,其实没啥好分享的,因为简单到令人发指,就是直接把图像用一个神经网络Tokenize后和文字混一起完事…但即便这样效果也很好,他说这个模型在很多视觉任务上都达到了sota
有人问他batch size多大,他说能搞多大就搞多大,完全根据计算资源定,就压根不调这个参数…
所以大框架应该说没什么不得了的秘密。
但是魔鬼藏在细节中啊,据Andrej说其实OpenAI真正搞研究的也就百分之二十的人,百分之八十的人都是搞很实际的工程。比如加速训练,量化部署,并行化等等,因为IO才是最大的bottle neck。在这方面,他的说法是无数人在这上面做了数不清的工作,优化到了极致。
这个时候你问他细节,他就顾左右而言他了,比如有位同学问他量化到几个比特,是8还是4,他一副神秘的表情回答"you will be impressed that so few bits can do so much work"…
他在讲座上说RLHF难调,不要轻易尝试,fine tune就很好了。于是有同学问他要怎么调,他又是一副似笑非笑的样子说OpenAI有很多人研究这个,非常多的trick,比如控制剃度爆炸,增加entropy预防model collapse什么的。但其实这些不是common sense就是公开信息…他们有哪些trick ,他也不说。
图像的Tokenizer到底是什么样的,怎么训练的,他也没说。
所以参考他这些在大方向上慷慨分享,小细节上抠抠索索的表现,我觉得Sam Altemann在采访中说的GPT4相比GPT3.5有数百项改进应该不是虚言,毕竟再小的改进也是改进…所谓聚沙成塔,各方面追求极致的结果就是追赶者的望尘莫及。
因此我估计不会造成什么影响,大家该干嘛干嘛,堆dirty work就完事了…这基本等于是阳谋,除非能有black magic级别的突破,否则其他人也不可能赶上他。现在各个领域都有一个显而易见的事实:数据质量的重要性远胜于超参数和模型结构。所以batch size啥的他们根本不调,模型结构也不在乎,在巨量的数据之下,这些东西可能都无关紧要了…
但这也提醒了各位老板们,大量的dirty work和良好的工程师协作环境可能才是成功的关键。如果你能让优秀的工程师聚集在一起,让他们后顾无忧的,在一个受尊重且互相尊重的环境里朝着一个共同的目标协作,一起慢慢地做出大量有效的dirty work,你就能成功。
这个可能才是真正的竞争力,而不是想象中的所谓black magic 。当然,这搞不好比black magic还要难…
要谈计算机历史,就一定少不了这位早在两个世纪前的蒸汽时代就已提出通用计算机设想的绅士 -- 查尔斯.巴贝奇。这位绅士几乎是一位全才,他是数学家、发明家、哲学家、经济学家和机械工程师。
巴贝奇(Charles Baggage),1791年出生于伦敦。他因170多年前设计的分析机而被誉为“计算之父”(Father of Computing)。巴贝奇的思想在当时是极为超前的,他设想的分析机由输入设备、内存、中央处理器和输出设备组成,和我们现在的计算机并无不同。
Charles Babbage, 1791-1871(Wellcome Library, London)巴贝奇年轻时喜欢数学,通过自学达到了很高的水平。1810年,巴贝奇进入剑桥大学三一学院,主修数学。在大学里巴贝奇遇到了将伴随他一生的朋友们:John Herschel、著名的数学家George Peacock和著名律师Edward Ryan。John是William Herschel之子,William是一位杰出的天文学家,曾于1781年发现了天王星。约翰步其父亲的后尘,在19世纪成为英格兰科学界的领军人物。
1810年时的剑桥大学,牛顿的母校,欧洲数学曾经的明灯,已经逐渐失去了它的荣耀。虽然剑桥大学的数学专业在英国已属一流,但巴贝奇还是很快失望地发现自己的数学造诣远高于老师,而他寻觅的深入知识在那里却找不到。巴贝奇开始研究微积分,并同时掌握了牛顿和莱布尼兹的两套系统(虽然它们本质上同一种微积分,但却使用了互不兼容的两套符号系统)。就读本科期间,巴贝奇和Peacock、Herschel以及其他志同道合的学生一起创立了分析学会(the Analytical Society),改革牛顿的微积分学,竭力复兴英国数学。巴贝奇1814年从剑桥大学毕业。他将主要精力投入数学研究,于1815年当选为英国皇家学会会员(Fellow of the Royal Society)。1820年,他又作为重要成员之一创立了皇家天文学会(the Royal Astronomical Society)。也就在那时,巴贝奇对计算机器产生了浓厚兴趣,这一兴趣发展成为伴随他一生的事业。
人们使用数表的历史由来已久。现存最古老的一批数表来自巴比伦,生成于公元前1800-1500年。这些数表用楔形文字刻在粘土上,人们使用它们进行单位转换,计算乘法和除法。
在近代,数表广泛应用于科学、金融、航海、工程、测绘等领域。这些数据作为工具在人们的生活中变得不可或缺。编制数表需要分工合作,通常的模式是:数学家负责确定计算用的数学公式;监督员负责按照数学公式组织计算,并监督结果的汇总和印刷;计算员负责计算。计算员们各自在家工作,为了防止出错,两名计算员会独立计算一遍数据,再由另一名比较员核对结果。计算并出版这些数表需要投入巨大的工作量,但错误依然不可避免。即使著名的英国《航海天文历》(the British Nautical Almanac) - 航海员的圣经,也包含错误。曾经有不止一只船报告说,因为天文历中的错误数据导致他们的船只搁浅或者在大海里迷失方向。
数学家们对此束手无策。这时一位年轻的英国绅士出现了,他就是查尔斯.巴贝奇。当时巴贝奇还是剑桥大学的一名学生,他在自传《Passages from the Life of a Philosopher》里回忆到,有一天他正在分析学会盯着对数表出神,突然一个想法冒了出来,“这些数字或许可以用机器来计算”。巴贝奇当时仅是大二的学生,这个主意很快从他的脑海中消失了。直到几年之后的一次偶然对话。1820年左右,巴贝奇和好友Herschel,在为天文学会验算对数表。在枯燥的验算比对过程中,他们不断发现错误。“如果这些计算能用蒸汽完成该多好啊”,巴贝奇感叹到。赫歇尔回答:“这完全可能”。自此,差分机的想法浮上纸面。
差分法可以将多项式函数、对数函数或三角函数等高阶计算降阶,简化为加法,从而大大简化计算。有限差分方法经过数学家的近百年研究,在制表过程中已经成熟使用,同时这也是一种很容易程序化的方法。
我们来看一下这个巴贝奇经常使用的公式:T=x^2+x+41
给x设不同的整数值,会有一系列对应的T值。
一阶差分(first differences) D 是第三列,它的值通过第二列T的两个相邻值相减得到,D的值具有一些规律。二阶差分(second differences) D^2是第四列,它的值通过第三列D的两个相邻值相减得到。令人惊讶的是,D^2的值是一个常量。
了解到这个规律,我们很容易就可以构造函数T的表格。把二阶差分和上一行的一阶差分相加,就可以得到对应的一阶差分,比如2+2=4, 2+4=6。得到一阶差分后,同样地,把一阶差分和上一行的T值相加,就可以得到该行的T值,比如 41+2=43, 43+4=47。
在我们的例子中,T是二次多项式,因此二阶差分是常量。如果T是三次多项式,比如T=x^3,那么二阶差分的值会有规律变化,但是通过相减二阶差分相邻值得到的三阶差分将是常量。推而广之,一个n次多项式的n阶差分会是一个常量,而这个多项式的值可以通过n次简单的加法得到。
通过逆向执行差分法的计算过程,即不是通过反复做减法求出差分,而是通过级联的加法生成一系列数,就可以得到一列所需的计算结果。常量差分法是一个重复加法的过程,显然很适合用机器来实现。
因其以差分法作为核心原理,巴贝奇将自己设想的机器命名为差分机。差分机,是一个雄心勃勃的想法,它由蒸汽机推动,通过常量差分计算数表,并把结果记录到金属表盘上。通过直接从这些表盘打印表格,差分机避免了制表工人可能引起的各种错误。巴贝奇设想,一位操作员只需给差分机输入不同的差分值,机器就可以反复累加并打印出结果。因为每个加法项都要依赖于前一步计算的值,因此这个方法包含内在的检测机制:只要最后一个数字是正确的,那么表中所有之前的数据一定都是正确的。如果换作人类计算员的话,则有可能在任何一步出错。确定好设计方案后,巴贝奇弄了一套车床,自己操作,还雇了几位金属铸件工。1822年,一台可以工作的模型机问世了。它经由一个手柄,转动齿轮执行运算。虽然这只是巴贝奇设想机器的一部分,但无疑这台模型机已证实了他的想法的可行性。
巴贝奇清楚,要制造一台实用的差分机耗资巨大。即使他将从父亲(一位富有的银行家)那里继承一笔可观的遗产,这个项目也会耗尽他的家产。鉴于差分机的发明会使其他人包括英国受益,巴贝奇决定获取外部的经济支持。巴贝奇于1822年7月3日,写信给皇家学会会长,在信中描述了差分机,解释可能的广泛应用,并恳请资助。最终在1824年,英国财政部决定资助巴贝奇1500英镑,他开始动手制造全尺寸差分机。
巴贝奇的差分机包括两个模块:一个执行计算的加法机构、一个印刷模块。他聘请了一流的机械工程师Joseph Clement担任总工程师,开始在自己的工厂里制造零部件。差分机对零部件的要求很高,当时的制造工艺远达不到巴贝奇的要求。巴贝奇不得不在设计差分机的同时制造能生产差分机零部件的工具。通常的情况是,他先设计差分机的一个模块,然后再设计并制造工具来生产这个模块。结果是,差分机项目把英国的机器制造水平提升到了新的高度,但是项目本身却进展缓慢而且耗资巨大。
在耗费大量资金,并持续工作10年后,巴贝奇的差分机接近完成,但是和工程师Clement的争执,打乱了他的计划。当时在差分机上的投资已达12000英镑,这笔钱基本都经过Clement之手,他已经从中赚得盆满钵盈。他给自己的作坊装备了价值数千英镑的机械工具,这些工具正是由巴贝奇设计、政府投资建造的,但是根据法律,这些东西却是Clement的财产。Clement还在索求更多,而且在未满足要求之前拒绝归还图纸和零部件,最后巴贝奇和政府不得不满足了他的要求。巴贝奇后来给财政部写信道:“图纸和零部件终于到了一个安全的地方。整件事情让我厌恶和恼怒,我几乎已精疲力竭。”
组装出的差分机被搬到巴贝奇在伦敦的寓所,在他著名的周末沙龙上展示给来宾。这台机器的计算部分基本组装完成,但还没有打印部分。这只是全尺寸差分机的一部分,约有全尺寸机器的1/7大小,能解决二阶差分的算式,产生六位数的结果。尽管只实现了设想的一小部分,但从现在陈列在伦敦科学博物馆的实物可以看出,这台由六个竖轴、几十个齿轮组成的样机依然是一部漂亮的机械作品,实现了当时技术条件下精密工程所能达到的极致。
A portion of Differnce Engine, 1832 (Science Museum,London)在和Clement争吵的那段日子里,巴贝奇有接近一年半的时间无法投入差分机的工作,正是在那段时期他萌生了分析机的想法。为什么不建造一台不仅能计算基于常量差分的算式,还能解决任何数学问题的机器呢?
1834年12月23日,巴贝奇在给时任首相的一份陈述中提及分析机 ——— 一种更强大和通用的机器,差分机能做的所有工作,分析机都能做到,而且还能做得更多。他希望政府放弃差分机项目,转而继续支持他的新设想。然而这绝不是英国政府在耗费了十年时间和一万七千英镑后想看到的结果。英国政府对差分机项目的信心因此遭受致命打击,之后再未资助过巴贝奇的任何项目。
巴贝奇在43岁的时候产生了分析机的构想,终其一生都在追寻这个目标。从开始热情投入分析机的那一刻开始,他好像一脚踏进了二十世纪中叶。巴贝奇所面临的技术问题,一百年后的第一代计算机工程师也同样面临过,虽然他们不曾知道对方的工作,却常常惊人的得出相同的解决方案。
分析机的基本设计完成于1837年12月,巴贝奇发表了一篇论文《Of the Mathematical Powers of the Calculating Engine》,详细讲述了这台机器。虽然之后许多年巴贝奇继续分析机的设计工作,但是主要原理并没有改动,只有细节和实现在不断精炼和改进。实际上,1837年巴贝奇设计的分析机基本组成结构不仅在他后来的工作中保持不变,甚至在以后计算机的设计开发中也未曾改变。分析机称得上是世界上第一台数字计算机,它体现了现代数字计算机几乎所有的功能。和现代数字计算机类比,分析机包含对应的四部分:
输入: 从1836年起,打孔卡成为给机器输入数据和指令的主要方式。输出: 一直以来,巴贝奇采用打印设备作为基本输出机制。他也考虑过利用打孔卡输出信息,以及采用图形化的输出设备。内存: 巴贝奇称之为Store,采用多个数轴存储数据。他也考虑过使用打孔卡存储中间结果的分级存储系统。中央处理器: 巴贝奇称之为Mill。象现代处理器一样,Mill会存储要立即处理的数字(类似于寄存器);操作这些数字进行基本算术运算;控制机制把从外部输入的用户指令翻译为具体内部硬件操作;同步机制以精确时序执行操作。在分析机的设计开发过程中,巴贝奇遇到了一位才华横溢的助手,她就是Ada Lovelace(1815-1852),洛夫莱斯伯爵夫人。Ada是诗人拜伦的女儿,一位数学天才。她推广了巴贝奇的分析机,并为其编程,被视为世界上第一位计算机程序员。虽然巴贝奇未完成分析机的制造,但Ada的努力使其广为人知。早期的编程语言Ada以她的名字命名,每年十月份的第二个星期二被定为Ada Lovelace Day,以致敬女性在科学、技术、工程和数学方面所做的贡献。
Augusta Ada, Countess of Lovelace, in a portrait painted by Margaret Carpenter in 1836与巴贝奇在英国受到的冷遇相比,他在欧洲大陆找到了欣赏者,尤其是在意大利。1840年,巴贝奇受邀前往意大利都灵大学参加有关分析机的研讨会。与会期间,他觐见了对科学问题拥有浓厚兴趣的撒丁王国国王。更重要的是,他还遇见了一位精力充沛的年轻数学家Luigi Menabrea。Menabrea后来成为意大利的将军、外交官和总理。他以法语撰写了介绍分析机的论文《Sketch of the Analytical Engine》。Ada将其译成英语,并根据自己掌握的知识订正了原文的一些错误。Ada的论述采取了为Menabrea论文作注的方式,注释以字母A到G注记,长度将近原文的三倍。
1847年,巴贝奇完成了分析机的设计工作后,又回到差分机项目,把分析机中使用的简化和改进过的运算机制用于差分机2号。1857年,巴贝奇再次开始分析机的设计。在新的阶段,巴贝奇利用自己的资源积极建造一台分析机。在他1871年去世时,一个简单的拥有Mill和打印机制的模型接近完成。
A model of the Mill of Analytical Engine, constructed about 1870 (Science Museum, London)瑞典印刷商Pehr Georg Scheutz与其子Edvard Scheutz受到巴贝奇的启发,于1837年开始制造差分机。经过十几年的不懈努力,他们制造出一台全尺寸差分机。这台差分机在1855年巴黎世界博览会上展出,作为Institute of France的一位备受尊敬的成员,巴贝奇参观了博览会,并对Scheutz差分机给予高度评价。差分机在博览会上荣获金奖。1857年,美国纽约州奥尔巴尼的达德利天文台(Dudley Observatory at Albany, New York, USA)以5000英镑的价格买下Scheutz差分机;同期,英国政府出资1200英镑进行复制,用于计算一套新的人寿保险表。Scheutz差分机的成本只有1200英镑,远低于巴贝奇对差分机项目的投入。低成本的代价是机械水平存在瑕疵,Scheutz差分机并非特别可靠,必须经常调整。
1871年,巴贝奇去世,在遗嘱中他把机器的设计图纸、车间和剩余的所有部件都留给了小儿子Henry Babbage。Henry继续父亲的工作,并不断向公众推广这些机器。他组装了六个差分机一号的小型演示模型,把其中之一送给哈佛大学。几十年后的20世纪30年代,这个模型吸引了Howard Aiken的注意,Aiken正是第一台现代计算机 - 哈佛马克一号(Harvard Mark I)的发明人。
巴贝奇在有生之年虽未完成完整的差分机或分析机,但他那超越时代的思想,在遭受冷遇时仍坚持理想的科学精神却是留给后人的巨大财富。1991年,在巴贝奇诞辰200周年之际,伦敦科学博物馆使用巴贝奇时代的机械技术建造完成了差分机2号的主机。2002年,在差分机2号开始设计的153年后,一台完整的机器终于面世。它由8000多个部件组成,重5吨,长约335厘米。这台机器工作良好,证明了在巴贝奇的年代使用当时的技术实现自动计算机器的可行性。
Difference Engine No.2, designed by Charles Babbage, 1847-1849 (Science Museum,London)巴贝奇曾在自传中写到:“如果有人没有被我的经历吓倒,而且可以基于不同的原则或更简单的机械方法,成功制造出能体现完整数学分析执行过程的机器,那么我将自己的名誉留给他又何妨?因为只有他才能完全领悟我努力的本质以及结果的价值。”当Aiken读到这段文字时,他“感觉巴贝奇彷佛在过去与自己直接对话。”
Stan Augarten, Bit by Bit: An Illustrated History of Computers.Howard Aiken, 1937, "Proposed Automatic Calculating Machine".Charles Babbage, Passages from the Life of a Philosopher.L. F. Menabrea, (translated and noted by Ada Lovelace), Sketch of the Analytical Engine Invented by Charles Babbage.history-computer.com, articles about Babbage.James Gleick, The Information: A History, A Theory, A Flood.Martin Campbell-Kelly, etc. , Computer:A History of the Information Machine.
找找相关资料,“希腊是怎么自由独立的?”给出的答案是这样的:
现代希腊的独立主要起源于19世纪初期的希腊独立战争。
当时,希腊处于奥斯曼土耳其帝国的统治下,民族和宗教差异导致希腊人长期受到歧视和压迫。1821年,希腊爆发了著名的“希腊独立战争”,由一些领袖人物领导,创造了一系列的胜利,战火最终导致土耳其帝国不得不承认希腊的独立,并签署了“伦敦协议”(1830)。这一事件标志着现代希腊的独立建国。在形成独立的进程中,希腊受到了许多欧洲和其他地区国家的支持与干预,比如英国、法国和俄罗斯等。同时,独立后的希腊还进行了大规模的社会、政治和经济改革,以推动国家逐渐实现现代化与发展。总之,希腊的独立主要是通过自身民族的反抗和斗争,以及国际上的外交支持和干预,才最终实现的。
标准教科书认为:希腊的独立主要是通过自身民族的反抗和斗争来赢得的,而事实上,资本的力量在这场战役里起到了决定性的作用。
1821年,希腊人起身反抗奥斯曼帝国,伦敦金融家在这件事上看到了巨大的商机,他们在伦敦证券交易所上市发行债券,为希腊的自由战争募集资金,伦敦的金融家向希腊自由战争领袖提议:如果最后希腊独立成功,就要连本带利偿还本息。 于是,在伦敦,民间的投资者有的是出于同情(英国诗人拜伦都亲自前往希腊,支持希腊的自由战争),有的是为了利益,有的兼而有之,纷纷买入这种债券。
随后土耳其慢慢占了上风,眼看着希腊自由无望,而投资人将会血本无归,就在此时,正因为债券持有人的利益就是国家的利益,英国组织起一致国际舰队,于1827年的纳瓦里诺战役一举击溃奥斯曼帝国的主要舰队。此时,希腊自由的战争已不是单纯的民族人民的起身反抗,而是背后的资本的力量在推动,让希腊终于获得了自由[1]。不过,代价就是一笔高额的债务,而这个新成立的国家压根儿无力偿还,导致希腊在独立后的十几年,经济都被英国的债务压得踹不过气来。
教科书式的真相不一定就是真相。
23年的AI绕不开的问题就是大模型,最近私下以及在几个workshop上反复和各种同学讨论相关的问题。借这个机会也整理一下几点个人的看法和大家分享讨论~
Q1: 究竟什么是大模型?参数量或计算量大就叫大模型吗?Large Model or Foundation Model?
A1: 其实在讨论所有关于大模型的问题之前,都需要明确这个问题。大模型(Large Model)这个名词其实是一个非常误解的名字,其实更准确的应该是基石模型(Foundation Model)。经常发现和很多人聊了很久,观点针锋相对,最后发现双方根本讨论的不是一个东西。。。就目前而言,我认为的大模型至少要有两个要素:1) 跨任务的通用性 2) 跨域的通用性。参数量和计算量的scale up只是大模型的一个必要而不充分条件。以GPT为代表的NLP大模型,通过prompt来统一了不同任务,也通过利用了基本上所有可用的文本数据将所有NLP问题变成了域内问题。
如果我们以这个标准来讨论,就会发现其实现在很多所谓的大模型,都不能叫做大模型。去讨论这样的模型到底能做什么,边界在哪里自然就是一个没有意义的事情。如果能理解这点,很多所谓的行业大模型本身就会成为一个伪命题,只能叫做通用大模型在垂直行业的一个应用(当然这件事情本身很多时候也是有商业价值的)。而反过来讲,想只靠某些垂直领域的数据去训练一个所谓的行业大模型不如叫做小模型或者专业模型变大,这和大家在讨论的Foundation Model就是完全不同的两个东西。
Q2: 目前视觉领域存在这样的大模型吗?如果没有可能的原因是什么?
A2: 很遗憾,虽然这方面已经有了很多如CLIP或DINO之类的尝试和进展,但是目前对于CV而言,还远未到达ChatGPT时刻。究其原因,本质还是视觉信息与语言信息这两者在信息密度上的巨大差异。语言只需要考虑一维上(前后文)的context,然而视觉需要考虑在三维(2D图像的x y和时间)的context。这会使得context信息密度的急剧下降,对于需要的数据量和计算量有指数级的上升。说到底,语言毕竟还是人的逻辑思考的产物,而图像或者视频则完全是自然的展现。具体到技术层面上来说,也有若干没有确定答案的open问题:
什么是最合适的监督形式?年初SAM带火了一波视觉大模型,但其实本质上仍然是监督学习的范式。做的事情也是在工程上推到极致,通过这样的方式继续scale up的难度是非常大的。而现在视觉自监督最常见的两种范式Contrastive Learning和Masked Autoencoder也遇到了继续scale的难题:似乎视觉模型随着参数量和计算量的增加并没有出现语言模型的Grokking现象,甚至随着规模的scale up性能出现了一定程度的饱和。这和在NLP里面的大力出奇迹的表现非常不同,究竟是规模还不够大,还是因为这样的监督方式就有问题,目前还不得而知。
多任务的表示形式怎么统一?这一点其实是在一次的panel上 @代季峰 老师提到的。在NLP中我们可以通过prompt的形式把基本上所有的NLP任务统一成text to text的形式,但是CV中呢?naive地类比成image to image translation显然会存在很多的问题。没有统一的表示使得多任务很难共享同样的网络,仍然需要单独训练不同任务的head,使得模型的泛化性大大降低。
不敢妄言视觉大模型正确的思路是什么,但是可以分享一些我认为的视觉大模型该考虑到的一些点或者说具有的一些性质:以自监督为范式,时序和3D为基础,能预测物理世界。第一点是scale up的基础,无需多言。第二三点其实我认为是目前所有视觉预训练模型都没有解决的一个核心问题,也是打通low level vision与high level vision的一个关键的桥梁。现有的视觉预训练数据基本都来自于单帧的web data,这和在自然物理世界中会遇到的数据分布其实是有巨大的差异的。而CV和NLP我认为最大的区别就在于,CV的大模型最终极的目标是能和这个物理世界产生互动,能够理解这个物理世界中的常识。为了达到这个目标,只使用单帧的web data是显然不行的。在这个方向上,SFMLearner是一个很好的尝试,解决了low level vision自监督中的一些问题,但是仍然没有向上去解决high level的语义问题。希望在这个角度上,能看到更多有意义的尝试。
Q3: 现在有很多大语言模型在机器人领域的尝试,这是否意味着传统的规划控制会被全数据驱动的方法取代?
A3: Of course no! 以有限的对LLM for robotics的了解,现在的工作大致可以分为两类:1) 用LLM作为一个更好的环境理解与人机交互的接口。 2) 用LLM + Neural Symbolic的方法去做task planning。在这两个方向上确实LLM取得了很好的进展,但是这就是规划和控制的全部吗?分享一些我能看到的问题:
1) 更底层的运动控制与规划是一个被well solved的问题吗?目前还没看到有什么证据表明LLM可以直接去控制一些复杂的被控目标。和执行器打交道的更底层控制,仍然需要对被控对象进行精细的建模。我也不相信Boston Dynamic这样的公司真的会去用大模型去解决这些复杂的底层控制问题。
2) 现在看到的应用中基本上都是对于静态环境与静态的agent交互。对于更复杂的POMDP,目前并没看到有什么相关的尝试。这恰恰算是在规划控制问题中一类常见的问题,例如无人车的规划,竞技类的棋牌游戏亦或是星际争霸。这样的一些任务中,状态空间巨大,也需要对不确定性进行很好的建模。目前也没看到LLM能够通过一些prompt的形式实现这样的功能。
所以总结一下,LLM for robotics确实有很多有价值的应用,尤其是在任务理解和规划层面,但是想完全取代也是不现实的。
Q4: 端到端自动驾驶算不算大模型?都拿了CVPR best paper了,你们L4为什么不跟进?
A4: Well,如果以Q1中的定义的话确实不算。除了实际的一些工程问题之外,其实在L4中不去这样做的一个核心问题还是在于可靠性。在很多场合我都表达过追求全系统的端到端对于L2来说是可行的,但是对于L4是不适合的。L2系统很多时候可以在效率与安全之间tradeoff,但是L4系统的设计目标则是在保证worst case安全的前提下来优化效率。显然,任何一个纯数据驱动的feedforward系统是不会有这样保证的。为了达到这样的安全目标,我们必然要去在系统设计层面设计足够多的算法冗余,这就会打破端到端的模式。更详细的阐述见我之前写的这篇文章:
Naiyan Wang:海量数据就是高级别自动驾驶的银弹吗?最后,为了防杠,想补充的一点是,上下游协同设计和优化的这个思想我认为是非常正确和有意义的,只不过在部署端一定会存在模块化的冗余。在这一点上,还是有很多有意义的方向可以尝试,除了常见一些模块之间的表示与接口有很大的优化空间,就算在端到端方向也有一些有意义的问题:第一,怎样把一些行为有保障的planner(一般会是一个非凸的优化问题) formulate成对输入可导的形式,从而指导上游模块的学习?这样系统就不是一个纯feedforward了,从而可以加入各种约束和保证。我们之前在多目标追踪方向上做过这样的一些尝试,但是这个问题中的优化形式相比于planner还是过于toy了。 第二,如何评测一个端到端训练的系统输出以便可以比较?在端到端的系统中,传统的感知评测的metric都已经不再适用。期待在这些问题上能有一些突破性的进展。
Q5: 那大模型在自动驾驶中可能有哪些应用?有没有实际落地的场景呢?
A5: 在车端而言,我确实没看到有什么去做部署的可能。一方面是实际算力的问题,一方面是并没看到一个特别清晰的杀手锏应用,也就是说没看到什么现在车端小模型一定解决不了但是大模型可以解决的问题。换句话说,如果给一台8卡A100在车上跑,L4自动驾驶就做出来了吗?答案显然不是的。但是在离线场景中,确实大有可为。这面最典型的应用可能就是数据集和corner case的检索与扩充。这个在 @王井东 老师在Apollo Day上有详细的介绍,我们做过一些类似的尝试,也取得了很不错的效果。除此之外,在预标注和自动标注方向也有很多的应用,也可以用更直接的model distill的方法来辅助在线模型的训练。总结下来,核心思想都是通过无论是数据还是特征的方式,将大模型更强的表征能力赋予在线的模型。也期待后续能有一些更新的范式出现,解决在线场景中的一些棘手的问题。但所有这些的前提都是大模型真的可以可靠解决小模型解决不了的问题。
在2023.7这个时间点来mark一下现在的认知,可能随着技术的发展有很多东西都要被打脸,也欢迎大家评论区理性讨论,观点碰撞~
答案非常简单:你想怎么用,就怎么设计数据格式。下面举例说明(以 RWKV World CHNtuned 为例),请仔细阅读。
首先,大语言模型如何实现对话?以最新 RWKV-Runner 为例,若使用 World 系列模型,它将对话存储为这种格式:
然后让模型续写,就自动得到【其中哇哇哇有哪些观点】的回答。
例一,如果数据这样设计:
那么,必须用相同的prompt(如果想最佳效果,必须一模一样,空格和标点都不能错):
然后让模型续写,就自动得到【一加一等于二。】。
由于目前 RWKV-Runner 的对话格式也是这样,所以这样的数据可以影响 RWKV-Runner 的对话。
因为,如果用户在 RWKV-Runner 对话问【一加一等于几】,会被自动转换为:
然后让模型续写,就自动得到【一加一等于二。】。
例二,用户问,想模型生成多人相声,怎么设计数据。
如果希望用对话生成,可以这样设计数据:
然后,如果用户在 RWKV-Runner 对话问【写一段相声,主题是xxxxxxxxx】,会被自动转换为:
然后让模型续写,就自动得到张三李四王五这段相声。
例三,如果数据设计为这种格式:
就必须这样写prompt:
然后让模型续写,就自动得到答案。
例四,如果希望支持这样的prompt:
那么,数据就必须这样设计:
总结:
你想怎么用,就怎么设计数据格式。你怎么设计数据格式,就怎么用。