汽车工程师转行AI机器人
在我坚定要从智驾行业转行到机器人领域时,我就着手开始规划我的学习计划,从而在最短时间补齐知识欠缺,做到至少能够拿到面试的级别。大约半年时间确实走了不少弯路浪费了不少时间,同时也学习到了很多知识了解到了很多信息,在此一并记录下来,希望对有同样想法的朋友有所帮助。 从一开始补齐AI但是没想好换工作做什么,到最终拿到Offer,一共是10个月的时间,至于坚定去学习机器人大约是最后的三四个月。大多数时候很难一次性想明白要做什么以及搞清楚该怎么做,我自己的心得是先动手先开始,大方向还是比较容易看到的,那就先往那边去走。对于我来说一开始还是计划在智驾领域深耕的,当时想切入AI车端部署,于是我补了很多大模型以及VLA相关的知识。 学习教程的话我是看的李沐的《动手学深度学习》,非常的基础并且深入浅出,适合之前完全没有接触过机器学习、深度学习、大模型的同学。我是官网在线学习的,比起他的书,网站上新增了关于大模型关于RAG相关的内容,在经典深度学习的知识之外包含了Transformer、BERT、Embedding等章节内容,非常贴近当前的技术热点。非常建议转行AI的同学从这里开始学起:https://zh-v2.d2l.ai/。 我工作间隙用了四五个月时间粗浅地看完。讲真如果非常扎实学一遍的话,还是需要不少时间的,对于工作党更是很大的挑战。可如果之前没接触过深度学习算法,完整跟着学习一遍打基础的这个过程是逃不掉的,不然到了后边大模型相关的学习过程中会发现很多提到的名词不知道什么意思不知道什么作用,大模型本质还是深度学习的延伸,知识点是递进的。 对大模型有了初步了解后立马就找个项目开始实战。我当时的资源非常有限,只有一台配备NVIDIA GeForce RTX 5090显卡的服务器,和一辆配备Jetson Nano算力的四轮小车,想要训练部署跑通一个完整大模型资源非常受限。前期调研了很多算法例如FSDrive、Tiny VLA、OpenDriveVLA、SmolVLA、DriveVLA-W0、Pi0.5、AutoVLA、Orion VLA、SimLingo、UniAD等,最终结合模型大小、社区活跃度以及配套工具成熟度我们选择了SmolVLA作为我们学习的主论文。后来在面试时候了解到当时的评估还是挺明智的,SmolVLA在很多机器人公司有着大量的应用,同时由于SmolVLA基于HuggingFace的LeRobot框架,而后者也在一些初创机器人公司用得很广,相当于一举多得。 在学习基于LeRobot的SmolVLA同时,我还学习了一些ROS2的基础内容,这在机器人领域也是绕不过的基础知识,官网的Tutorial是最好的学习资料。在后来的四轮小车软件架构设计时候也充分利用了ROS2框架,用于对ROS2学习内容的一个真机锻炼。小车架构层面我们进行了如下设计,尽量贴近真实项目,做到麻雀虽小五脏俱全。最终的代码实现基本上就是按照如下框架进行的,仓库地址在此:https://github.com/shuspieler/smol_rugv/。 当SmolVLA在服务器上调通,以及找了一些公开的数据进行预训练后,我们安排了使用小车进行真实数据采集以及后训练和微调的过程。整体来说SmolVLA模型不大,在我们服务器上大约几个小时就能够全量训练完毕。可我们是学习的目的所以在真机采集数据后训练时候使用了LoRA,将训练时长压缩到了1小时,最终我们实现了一个极简大模型从预训练到真机部署的全流程。我对此的理解就是大模型时代软件开发的新范式,像是敲通了第一行Hello World!还是很有成就感的。 并且在后来面试过程中也感受到,这个经历对于我找工作有着至关重要的帮助,至少50%的面试机会或者说offer是这个小项目带给我的。虽然看似简单,但是在转行机器人的这部分人群中,领先八成以上的竞争者压力不大的。 到了年底我开始回顾LeetCode数据结构与算法。虽说当前社招对于刷题不是硬性要求,我一次都没遇到过说先给一个链接做个题的情况,但是在面试的时候还是高概率会问到算法基础的。我在本次求职遇到过口头问的和让我展示屏幕随便开一个IDE写一道题的。当然多数时候不需要真的能够真机运行通过,更多的时候是看思路和简单的代码规范。 虽然现在AI编程真是很强大,但是数据结构与算法作为程序员基本功是非常非常必要的。可能长时间不写有些不熟练,但是不能说压根不知道没见过不了解。等到了入职后基本也不需要亲自写这些算法,但是其中的思想会内化到程序员的素养中,对于之后软件的设计、Bug的调试以及性能的优化,这些内在并且底层的原理是到时候拉开差距的源头。我当时整体过了一遍LeetCode基础知识后对于其中排序章节特别有感触还写了一篇随笔:LeetCode排序章:算法与生活的共鸣。 复习完了LeetCode后我又开始B站了《黑马程序员大模型RAG与Agent智能体项目实战教程,基于主流的LangChain技术从大模型提示词到实战项目》这门课程的学习。这个与机器人开发其实关系不大,我学这门课程主要是为了更加深入了解当前火爆的大模型Agent开发以及RAG开发到底是怎么一回事。 经过系统性的学习我感觉收获非常大,对我认知的影响可以用震撼形容。深入了解后我把大模型Agent的开发类比成Java后端开发,RAG类比之前数据库设计——即我们要实现相同的软件目标,之前需要使用Java设计数据结构和算法接口,而现在我们要实现的软件目标没变,但是使用的是大模型Agent以及MCP、Skills等技术。我看到了由于大模型的到来,原来的开发需求很多可能会被Agent重新定义一遍。曾经的以Java为首的软件开发撑起了互联网、移动互联网黄金十年,现在大模型Agent很有可能会是这个产业的二次升级,就像是电气时代取代了蒸汽时代,需求没有变即人类生产需要动力,但是内核和效率有了天翻地覆的变化。 大约在今年三月我确定了要冲一把机器人领域,于是就全力去搞我的SmolVLA小车项目了,其他的学习内容暂且放一放。同时我开始了解机器人领域对于人才的需求,和多个猎头以及面试官交流后我大致摸清了机器人行业当前分工主要有哪些。不管大厂小厂,共同点大致可以分为: 机械设计:即画图设计机械臂等结构的工程师; 小脑软件开发:大致可以理解成单片机开发,主要用于对传感器执行器进行驱动设计以及对其控制进行封装。常见技术栈是STM32、Keil、C语言等; 大脑中间件开发:这里大厂小厂有了一些区分,小厂的话多数是基于开源框架进行二次开发,比如是在ROS2、OpenARM、OpenPilot等上边定制开发。而大厂的话会研发自己的中间件,用于替代上述提到的开源框架; 大脑大模型算法:这个就是在无数场合看到的最火也是最稀缺的算法开发岗,主要是做适配自己项目的模型设计、预训练、后训练、微调等内容,这块主要是以博士以及学术研发人员为主,可以类比于互联网的大模型算法岗; 大脑工程开发:即将上边算法人员设计好的模型部署到真机边缘端,并且调优到最佳性能。这个岗位需要既懂模型优化(量化、剪枝、TensorRT)又懂嵌入式系统(ROS、实时性、硬件约束),是算法和硬件之间的桥梁。可以类比为互联网公司的ML Engineer或MLOps,但要多一块嵌入式系统的技能树; 技术型产品岗:与客户沟通发现痛点、搜集市场需求,阅读并复现论文算法以把握技术动向,与开发交流实现技术落地和需求实现; 产品型产品岗:类似于传统互联网的产品岗,或者说大模型应用的产品岗,文科生居多,这个职位可能在较大的机器人公司才会有,创业公司可能还没到这个阶段; 机器人测试岗:又可区分为软件测试和硬件测试部分,同上可能只有较大的公司才会有这个岗,初创公司大部分由开发兼职就干了; 融资/战略岗:负责公司融资、投资人关系、政府关系等,早期公司通常由创始人亲自做,成长期可能设专门岗位。这部分对人的资源积累要求极高,不是靠短期学习能补齐的。 当对岗位也有了一定了解后,结合着自己所擅长的能力或者想发展的方向,就可以针对性去学习欠缺的知识了。当对岗位拆分够细,就会发现现有工作的知识很多是可以迁移过去继续使用的——假设之前是嵌入式开发工程师,那么去做机器人小脑开发非常的对口;假如之前是智驾里边做感知决策或者说端到端的,那么可以冲一把机器人的大脑大模型算法岗;如果是之前做传统开发的,那么去挑战一下大脑工程开发应该也是OK的。还有如果是之前做TPM或者智驾的系统工程师,去尝试下机器人的技术型产品岗,个人感觉还是挺有意思的,是一个需要综合能力比较强的岗位。 记录到这里终于算是告一段落了,希望我的经历能够帮助到你,也希望你能够留下你的反思和感悟啊。智驾转行机器人这个团体不大,之前是同行之后可能也还是同行,希望我们之后能够有机会相互交流,共同进步啊。