

回忆录
前言#
我正在一辆开往西安的列车上,匆匆写下自己对于大三的回忆。准确来说,大三或许是很多内容真正意义上的起点,我对于真正的科研的探索也是主要在大三展开的。
在大二暑假前往上海人工智能实验室实习之后,我基本上已经确定了自己的去向。事实上,在当时大二期间已经有顶会一作的中稿,并且排名和学校还算不错,对于上海人工智能实验室这已经很不错的地方来说也已经是十分少见。对于本科生来说,距离保研也就短短三年时间,在论文中稿的周期面前,大量更多的人是怀揣充足的见解以及能力,可能有一些论文的在投,但是距离中稿可能还差一些时间以及运气。
在众多条件的加持下,实验室中心主任的眼中,我自然也就成为了相对来说不可多得的好苗子,再加上我频繁表示出非 SHAILAB 不去的意向,因此基本上我只需要保证能够顺利获得保研名额,剩下的内容就全部不需要我操心了。
怀揣着半个 Offer,我回到了西安,开始了我的大三生活。
保持聚焦#
在从上海回来之后,在西安的生活可以说是按部就班。从保研的视角出发,实际上当时的我算上加分可以领先保研线七分之多,而学分绩本身已经压上了大量的学分作为缓冲,这似乎意味着只要我不考出足以挂科的成绩使得自己失去了保研资格,那么一切其实都是绰绰有余的。
大三对于大多数同学是一个显然的分水岭,越来越多的同学开始接受现实,关于自己是否需要重新规划自己的学习以及未来,是否需要继续挣扎保研,还是说直接躺平准备考研。当然也正是因此,我可以观察到身边有越来越多的同学开始正式进行科研,而不是一些比较 toy 的探索。
当然,从我的视角来看,似乎大多数的科研还是以「水论文」为目的的,直到学年结束拥有论文发表的同学似乎也只是凤毛麟角,不过 anyway,这并不重要。
对于我来说,当务之急是对于目前若干的事物进行剪枝并且保持聚焦,主要的事情也就包括,课内的学习、在本校还没有完成的科研课题、SHAILAB 的远程实习以及 RM。
在这其中被首要剪枝的自然就是 RM。尽管在大学的前两年时间中我似乎一直都很喜欢 RoboMaster 比赛,并且和很多同学一起度过了非常愉快的一段时间,但是从事实上来说,我其实并没有那么需要 RM 带来的加分以及相关的一系列优惠政策了。因为众多的科研任务,可以确信的是,我几乎没有时间继续在各个比赛周期内和队伍一起去外地参加比赛,不过尽管如此,我依然担任视觉组组长的职务,来跟踪大家的进度,给出一些关键的建议并且完整带着大家通过了前期的培训。
我一向认为我是具有某些天赋的,类似于向别人讲解一些内容的表达能力,尽管似乎我有一些口吃。从零开始剖析Linux到计算机视觉的基本功,包括后面一系列的优化相关的内容,我自诩为还是不错地完成了内容。不过除此之外,RM 对于我来说的意义大概也就只剩下为我提供了一个 24 小时宽广的工位了。
第二件剪枝的事情自然就是本校的科研。在大二的下学期中,在本校老师的 idea 的指导下,我开始了为期半年对于一个如今看来并没有任何价值的方法的调参工作的优化。并不同于第一段科研我自己提出的 idea,这篇的 idea 更加由老师推动,整体是在 meta learning 故事线下的某种对于参数的优化,但是在半监督情境下的训练不稳定导致很多时间我都在疲于调参并且浪费了大量的生命。
在以 ICLR 为目标的本校科研以及 SHAILAB 以 CVPR 为目标的科研同步推进的那段时间中,毫无疑问对于我来说是最为痛苦的。甚至在中途十一假期的时候前往米兰进行 ECCV 的开会的途中,我还在修改 ICLR 的论文。
无论如何,论文成功投稿,然后拿到了意料之中的低分,无外乎本身论文的方法近乎一个 trick,我也早已经失去了继续进行下去的动力。再之后,老师建议将这篇论文的内容连同之前 ECCV 中稿的论文一同变成一篇 TMI 的期刊投稿论文,尽管这篇论文似乎必中,但是我确实已经身心俱疲。
一个妥当的建议被我提出,当时本校老师正在扩招,大概是因为前一年我个人实力拿下的顶会中稿让老师认为可以通过增加科研实习人数带来更多的中稿,即让几位目前来实习的同学来负责论文写作(毕竟这两篇完整的论文里面都已经拥有了十分充足的实验结果以及故事),而我负责 track 整体的进度并且给出一些建议,同时我可以让出大量的作者位次上的妥协。
然而事实上是——我要带着至今依然存在的怨气给出辛辣的评价——我的水平确实远远超过组中一切的实习同学。在一切材料已经充足的情况下,由我在 Overleaf 中导入了 TMI 模板,两位自称愿意投入时间的同学实际上只给项目带来了约等于零的进展,几乎全部的文字都由我添加,而两位同学进行的所谓看上去很多的更新,只是将我原来论文中一模一样的文字复制到模板中,甚至懒得进行润色。
以我自己与项目的切割作为结束似乎是显然的结果。尽管我似乎并不应该对论文失去热情,但是伴随着进入新的领域以及对于整体人工智能发展的思考,我越发认为更多的医学影像论文对我似乎没有任何的帮助。因为怕麻烦,各种纠缠以及利益纠纷,我选择直接放弃这个项目相关的一切内容,相关的全部的代码以及实验结果他们全都可以访问,我完全退出这个项目,不参与任何跟进,同时项目之后的任何发表我也不需要任何署名,从此完结。
至于在学校课内的学习,大三期间的内容其实逐渐回到了我熟悉的领域,一些关于 CV 以及 NLP 的基础知识,以及比如说相关的技术栈(例如 PyTorch 或者服务器)的使用,这些实在是我的舒适区,于是我就游离于课堂之外,在课上进行科研进展的推进,同时一心二用跟上课内的进度。
自此我可以保持聚焦,来 focus 在 SHAILAB 的科研中。
ECCV 参会,小憩#
在进行上述的一系列内容的同时,我也参加了 ECCV 的会议。这一次的 ECCV 决定在米兰召开,这意味着我需要提前申请申根签证,购买机票,申请报销以及关于外出相关的申请一系列的内容,也算是废了九牛二虎之力才终于走过了学校的各种流程,并且和两位在西交的师兄一起前往米兰参加会议。
首先来说印象比较深刻的,就是意大利的天气了,可以带着引号的说,国外的空气确实「香甜」几分。出发的时候西安还比较炎热,起码在正午的时候是这样的,而到了晚上有些寒冷。不过在意大利的时候,下了飞机传来了就是一股恰到好处的凉爽,加上确实意大利米兰这个城市不算很发达,基本上属于是古朴的小镇,所以一路上视野开阔,确实有一种秋高气爽的感觉,让人身心愉悦。
确实在这个城市里面有不少有意思的设定,是我之前没有想到我会看见的。包括有轨电车,无处不在的信用卡支付以及会吐出的大量发票,还有超乎我想象数量的带有欧式风格的建筑。以及不知道算是意外还是幸运,但是在米兰的时候并没有遇见治安混乱的情况,基本上都是平安无事。
我去参观了米兰大教堂,确实是和国内完全不同的一种华美,那种极具雕琢的艺术组成了一座庞大的建筑,那种视觉的冲击感确实难以言表。
这几天主要的时间其实去了会场,然后晚上的时候在酒店里面写程序,准备之后的工作,所以说几乎没有太去逛他们的城市或者景点,倒是吃了一些所谓的当地美食,不过和国内确实相差甚远。
我觉得或许比较有趣的一件事情是,我住的酒店里面有一个浴缸,一般来说在国内会是淋浴,可以泡澡的浴缸貌似只有在更加高端的酒店才可以有。因此在我用热水把浴缸反复清洗了五六次之后,我就开始了为期六天的泡澡生涯。我有些难以形容这是一种怎样的感受。
在写代码写累了之后,整个人躺在浴缸的温水中,感受着浮力将你轻轻地托举着,然后卧室的窗半掩,微凉的风轻轻的吹拂进来,我将半个头埋到水下,能感受到那一抹凉微微刺痛我的皮肤,而水的温度又令人心安,让人的思绪不禁飘向远方。
另外,再分享一些意大利时候的碎碎念。一方面会场的饭确实很难吃,我基本上吃了一次之后就没有再考虑了。本质上零食其实还好,可以有糕点和巧克力吃,这个我倒是经常品鉴一番。一方面其实这出国的几天也提升了我的口语水平,虽然说我的口语确实不太好,但是因为现在有了使用的刚需,所以说也要硬着头皮去表达,这让我在和外国人交流的时候能在我所了解的学术领域中表达我的见解。当然最后我的 poster 顺利展示了,不过我 present 到一半就离开了,紧张是一方面的,更多的是精神状态不是很好,我到了米兰之后过了前两天的正常作息,又飞快的变成了熬夜的情况,导致那时候我实在头晕的厉害。
在意大利的几天可以说是十分 work life balance 的,这导致在我周日回国之后立刻陷入了极大的不适应之中,后来思考了一下,大概是因为还有学校存在吧,这算是在两边的唯一变量,而且现如今又一次出现的 ddl,主要的提供者还是学校课程的作业,那些不会对我的未来有任何帮助的内容,在无尽地侵占着我的时间,浪费着我的精力,并且不会给我任何收获。
新的科研#
在结束了米兰的小憩之后,日常的科研还在继续。
在上海人工智能实验室这边的科研需要获得新的进展。事实上之前在暑假我就已经进行了初步的准备,在当时我们认为 VLA 领域中尚且不存在成熟的可泛化端到端模型(事实上现在也没有出现),因此在一段时间内中会出现一系列通过模块化、类似于 agent 形式构建的方法。这在当时比较经典的代表可能是 CoPA 以及 MOKA,这些方法基于一些成熟的 foundation model 以及 VLM,从而可以达成一些需要泛化能力的任务。
在此基础上,我们判断对于这个可能即将兴起的领域来说,有必要制作一个完善的 Benchmark 来测试模型的性能,从此 GenManip 应运而生。从现在的视角来回看当时的判断,基本上可以说是完全错误的,事实上在领域中涌现了部分值得训练的 Benchmark 之后,研究者更加关心的事情似乎是依旧遵循模仿学习的范式,能否在这些榜单上获得更高的分数。不过幸运的是,GenManip 最后发挥了更大的功能。
可能一部分是因为我在远程的原因,这个由我主导的项目并没有像想象中那样顺利进行合作,几位合作者事实上在代码构建层面并没有帮到太多忙,也暴露了当时我缺乏 PM 能力的缺点。不过无论如何,在若干的煎熬之后 CVPR 也是成功投稿了。
投稿之后当时的组中陆续加入了两位核心的主力,分别是 fangjing 以及 jinhui,这两位包括我以及 mentor 伦哥,当时的工程师 bolun 以及坤哥,共同构成了后续推进主线的核心班底。
CVPR 的 rebuttal 几乎有惊无险,从 4333 Re 到 5442,一位审稿人比较关注的问题因为疏忽没有回答,因此与可能存在的 highlight 失之交臂,不过还是中稿了。
尽管当时 GenManip 在论文中的 scope 就已经足够不尽如人意,但是当时我们迅速意识到了 GenManip 作为可拓展的数据引擎的可能性。原始的 GenManip 就已经支持了部分的数据合成功能,通过大量的优化以及 coding,我们实现了通用的 Pick and Place 数据合成,可以合成各种 scene graph 约束下的 Pick and Place,从而可以通过简单的 config 在特定的场景下或者完全随机的场景下合成大量的数据。
当然,整体的进步并没有描述中那样顺利,事实上,在这期间我们遇到了两个十分恶性的 bug,并且导致进度几乎变慢了三个月之久。
其中之一是训练不稳定性带来的,我们一开始选择字节的 GR1 模型作为 baseline 进行调试,但是模型极度不稳定,在相同数据上的训练也可能带来极大的偏差,以至于我们想复现之前的性能,并且在此基础上进一步迭代遇到了极大的困难,最后在 debug 无果之后切换为 GR00t,问题迎刃而解。
另一个则是仿真器的物理仿真问题。这个问题我在各种地方都有过类似的描述,大概可以理解为在处理 Objaverse 之下大量的 messy 资产的时候面临的问题。具体来说,对于部分的资产,在进行物理仿真的过程中,会出现不稳定性,因为物体之间的穿模导致一些物体会因为斥力而飞出去。这一问题并不是本质上由物体的形状直接导致的,也就使得没有一种程序化的方法可以分辨所谓稳定的物体以及不稳定的物体,唯一的方案就是调试仿真器。通过 Isaac Sim 文档中的方法,在开启 CCD 之后看似问题好转了,并且在一段时间内都没有发现进一步的问题,但是事实上在后续我们几乎已经忘记了这部分与后续 Bug 的相关性的时候,后续我们遇到了严重的问题。
机械臂的夹爪在一些物理接触的情况下会和机械臂本身产生分离现象,似乎夹爪不再受到 Joint 的约束(可以确认的是,我们对于约束的设置是恰当的,例如说不会有 Breaking Force 的上限设置)。因此我在进行了若干尝试无果之后,决定采用 Sapien 进行物理仿真而仅仅用 Isaac Sim 实现渲染的设置。这种双端同步的方案在我巧妙的设计中被加入到了 Codebase 中,又经过了陆续半个月的时间才进行完全的实装,算上之前的若干寻找解决方案的时间,此时实际上已经到了五月的下旬。
好在后续发现了问题所在,物理问题也通过其他方法解决了,在相关的 Isaac Sim 博客中有所阐述,在这里不进行赘述。
WAIC 风云#
到了 2025 年的夏天,我们开始专注于所谓主线的交付。上海人工智能实验室对于 WAIC 会议的参与十分重视,这也是一年一度实验室发布重要成果的场合,因此对于我们团队,也需要进行若干的交付。彼时 GenManip 的 Codebase 已经可以承担团队中一些模型测试的需求,同时 Scaling up 数据也可以进行顺利的合成了(事实上这个功能早在今年二月份春节期间其实就已经完成了,并且在那时候就已经可以生成不少的数据,但是因为上述的两个 Bug 导致拖延至今)。
数据引擎的加入使得我们可以生成一些 for VLM 以及 VLA 训练的数据,同时 GenManip 框架也可以让程序来生成诸如 Semantic Mask / 2D Bounding Box / 3D Bounding Box 在内的一些中间表征信息,总体来说对于模型的训练也是可以起到一些裨益的。
基本上完全由我完成代码,当时的另外一位组中的好朋友 jinyu 完成的挂数据的过程,然后交给坤哥完成清洗,得到了 WAIC 期间算是完整的交付之一,也就是 InternData M1。
与此同时,我们组同样需要交付一个模型,模型总体来说经过了大量的迭代。彼时我的好友 weiyang 加入了我们组来进行暑假期间的实习,和坤哥一起负责调优 VLM 模型,组中的另一个项目 RoboInter 注入了一些真机数据,而 InternData M1 提供了仿真合成数据,加上常规的 VLM 数据。同时,在大脑的基础之上,我们也需要训练一个小脑,或者说一个完整的 VLA 模型。
之前提及的 fangjing 以及 jinhui 两位同学在 25 年的前半年进行了大量的迭代,因此最后我们整个团队协作之下做出了 InternVLA-M1,也是目前中心交付的非常 Ready 的 VLA Manipulation 模型。事实上技术报告的撰写持续到了九月份,这期间诸多颠沛不再赘述,我们的团队做了大量的真机实验,模型聚焦在使用 Latent Planning 并且进行了 VLM 以及 Actor 的 Co-training,这在一定程度上保留了模型部分的泛化能力以及通用能力。
后续从这个 Codebase 的基础上衍生而来的 starVLA 也成为了风靡一时的仓库,无论后续接手 VLA 训练的团队还是 Qwen 团队都在使用。
值得一提的是,在 InternVLA-M1 的技术报告中,我也算是突破自己,承担了画图相关的工作。相较于上次画图,还是之前医学影像中的画图,这一次可以说画出来了令我十分满意的图,实力长进可以说是十分地迅速,已经可以说一个有品位的画图人了。当然同时我也负责了网页以及视频的制作,这些算是老本行,也是效果不错。
琐事若干#
在进行科研的同时,保研的故事也悄然落下了帷幕。事实上就像之前说到的一样,因为在实验室中较早确认了 offer,因此整个的保研过程可以说几乎没有什么悬念,再加上我自己也简单复习了机试,所以最后也是成功到了上海人工智能实验室和上交的联培。
如今回看这条道路,一定程度上的远见使得我可以规避掉很多的风险,从而尽早达成自己的目标,这都与之前的我来说可以说是一次显然的进步。
与此同时,另外一些有意思的事情可能包括,在大三我也算是认识了很多的好朋友,一些好朋友组成了一个小群,大家在里面可以经常聊天。因为都是科研出身,所以说共同话题也相对来说聚焦一些,还是十分有趣的。尤其是对于我来说,基本上现实中的社交仅限乐小姐,以及有的时候的两位同年级的同学,大多数时候都是孤身一人,因此填充了我的生活。
总结#
总体来说,这就是我大三的故事,前往上海人工智能实验室进行实习,并且成功保研,这大概就是唯一的进展。大三的一整年并没有像我的预期一样,我可以化身 paper machine,而是一直在迭代同一项目,并且通过增加深度来获得更多的收益。
伴随着科研的增多,我的学识获得了增长,但是似乎并没有变得更加活跃,而是开始思考,这些思考伴随着长期注意以及更多在当下时代中的迷思,在后面的一年中长久地延续。不过至少在现在来看,这一年还是相对成功的,我达成了自己的目标,并且获得了一些额外的收获。