关于大模型的碎碎念
OpenAI在2020年5月发布了GPT-3的论文,而在2022年2月1日,GPT3.5也随之问世。国内对大模型的热情似乎从22年的12月开始高涨。对我个人而言,从我首次打开GPT3.5的对话页面到现在,已经过去了九个月。在此,我想分享一下我对大模型的一些想法。
首先,大语言模型到底改变了什么?或者说,AI改变了什么?我认为最明显的变化有两点:一是解决问题的成本大大降低,二是学习的成本显著减少。从学习的角度看,由于公司业务的快速变更,我在短短不到两年的时间里经历了部门调整和岗位调整,因此在技术方向上也需要做出相应的调整。
我最初在学校时学习的是C语言,开发了一些如贪吃蛇和扫雷等控制台小游戏。后来我学习了数据结构和Linux操作系统,然后学习了Java以开发后端服务。在熟练掌握Java的基础上,我开始学习Android原生开发。除了C语言、操作系统和计算机网络这些需要系统学习的课程,我大部分的学习都是通过观看在线视频教程完成的,因为当时网络上的视频教程资源丰富,知识点也相当系统和完整。
然而,如果我现在要学习这些基础内容,只需要阅读好的教材并利用大模型就足够了。为什么我还要强调阅读书籍的重要性呢?因为书籍的内容是系统的,有条理的(前提是书籍的质量好,现在计算机类的劣质书籍还是相当多的)。结合大模型的问题解答和代码示例,学习效率非常高。计算机科学或工程是一种验证成本非常低的学科,只需要几行代码就能验证你的学习成果或想法。
在经历了公司架构调整和业务变革后,我从一名Android开发者转变为Unity开发者,虽然大方向没有变,但是很多思想可以直接应用,比如我将RecycleView的复用逻辑用于Unity,实现了Unity版本的RecycleView。基于LRU算法的图片缓存同样适用于Unity中模型加载切换的缓存策略。
在转向Unity开发后,我系统地学习了Unity开发,并在网络上观看了许多课程,其中包括Unity中文课堂的一些独立开发者的课程,这些课程的质量非常高。然而,随着我对Unity基础开发的熟练,问题也随之增多,我发现这些问题的主要原因在于我对某些概念的理解不够深入。
对我来说,概念的理解非常重要。当我遇到问题去搜索答案的时候,我可能找到了答案,答案中也有很多高赞的回答,但是如果我不理解其中的含义,那么这些答案对我来说就没有什么用。例如,如果你遇到一个关于Unity中如何优化阴影的问题,大模型可能会建议你将静态阴影与动态阴影结合使用,以在保持画面质量的同时减少动态阴影的数量,从而提高性能。但是,如果你不了解什么是动态阴影和静态阴影,那么这个建议对你来说就没有什么意义。因此,理解基础概念和原理是非常重要的。
为了更好地理解这些概念,我补习了一些计算机图形学的知识,其中有一个非常有趣的项目叫做Tinyrenderer。这个项目是用C++实现的一个软光栅化器,除了obj文件解析和image库之外,没有任何额外的库依赖。在实现这个项目的同时,我也完成了一部分该项目的翻译工作。另外,我还学习了闫令琪老师的图形学课程,其实这个课程在Bilibili上的反响非常好。
在做了大约一年的Unity开发后,可能是因为我有服务端开发的经验,我现在正在开发一个客服系统,该系统将应用大模型。因为我对大模型非常感兴趣,所以我打算在有空的时候学习其内部基本原理,以加强我对大模型的理解。目前我只知道大模型的核心是Transformer架构,但我还没有深入研究。
在经历了这些变革之后,我只能说我非常感谢科技的快速进步。大模型的庞大知识库让我的好奇心得到了充分的满足。今年4月份左右,我在工作中开始使用Github Copilot。在许多情况下,我只需要写清楚注释,代码就能自动补全。虽然在补全Lua代码的时候有些问题(比如有时会创建不存在的变量,而且在某些情况下无法进行调试,这使得找出错误变得困难),但在Python、Java和JS这些常用语言上,它的表现非常好,可以说是提高了我的生产力。
总的来说,AI在工作中给我带来的是一个随时随地可以请教的老师,一个可以随时帮我检查代码错误的工程师,以及一个不需要任何NLP知识就能使用的NLP服务。更令人惊讶的是,它的推理能力让人联想到这可能就是新时代的硅基生命。
有了大模型,我可以毫不夸张地说,在绝大多数情况下,我可以以最低的成本找到最合适的答案。回顾我学习Android、Linux系统编程、FFmpeg、软光栅化器、Flask等的经历,我觉得在大模型的帮助下,我从未有过如此快速的了解和掌握一个领域知识的途径。从这个角度看,无论对我个人还是对整个人类社会的未来,都充满了希望。