“
「 Rust 与 LLM」 是本合集的主题系列之一,本文为开篇。阅读本系列文章不需要有数学基础。
本合集将优先完成该主题系列文章,所以其他主题的文章优先级将降低。
「 Rust 与 LLM」主题系列将专注于自然语言处理、 Transfomer 架构和大模型相关内容,依托 Rust 开源生态和 HuggingFace 的相关 Rust 库,探秘从模型训练到模型部署、模型量化与 WebAssembly 轻量化部署的技术原理。
特别说明:本系列文章的内容也会包含小部分 ChatGPT 辅助生成的内容,主要侧重于概念和术语解释部分,如有错漏,请多多反馈交流指正。
这系列文章其实一直在酝酿中,到今天开始动笔的时候,OpenAI 的 Sora 已经火了两天了,甚至开源社区也出现了大世界模型。如果我再不写的话,大语言模型也快落伍了。
ChatGPT 我也用了一年左右了,对于我日常的学习和工作确实有一定的辅助作用。我也越来越感觉到 AI 正在颠覆这个世界。但是作为非机器学习和人工智能从业人员,只是普通软件工程师的我,一直在思考,我该如何入门 LLM ,跟上这股技术趋势。本文就是我的一些初步思考结论,仅供参考。
我花了大概一个多月的时间,从人工智能发展史、基础数学,到神经网络,再到深度神经网络,然后是自然语言 transfomer 大模型的顺序,把人工智能的相关背景和关键概念都过了一遍。
在这个过程中,我忽略了数学证明和一些算法的细节,我的目的是对机器学习领域建立一个整体的概念。这和我的学习习惯有关。我学习一门知识,通常喜欢从整体和高层视角来把握它,避免自己迷失于细节中。
经过学习,我现在对机器学习已经建立了这样一个认知模型:机器学习本质就是一种模式计算。模式计算这个词,可能业界也有相同的术语,但这里我特意用这个词来概括和归纳我个人对机器学习的理解。即,所有机器学习、神经网络、深度学习、transformer 等人工智能架构和方法,都可以归结为四个字:模式计算。
机器学习:基本上是通过算法来从数据中学习模式的过程。算法在训练过程中调整自身参数,以更好地识别或预测数据中的模式。这个过程本质上是一种模式计算,旨在发现数据集中的规律性和相关性。
神经网络:受人脑结构启发的一类计算模型,通过大量简单的、相互连接的节点(神经元)来处理信息。这种结构能够捕捉复杂的非线性模式,使得神经网络特别适合于图像、声音和文本等数据的模式计算。
深度学习:是一种特别的神经网络,通过使用多个处理层来学习数据的高级抽象模式。这种深层结构能够计算非常复杂的模式,从而在视觉识别、语音识别和自然语言处理等任务中取得了突破性的成就。
Transformer:一种特别设计的深度学习模型,通过自注意力机制(self-attention)来处理序列数据。这种架构能够在处理如自然语言等序列数据时,更有效地计算出长距离依赖的模式,从而在语言理解和生成任务中实现了显著的进步。
它们的共同目标都是发现数据中的模式,即 AI 的核心能力,就是通过这种计算来理解世界,并利用这些模式来进行预测或生成世界。
在我看来,模式计算不仅仅是共性,更是共同方法论。无论具体 AI 技术有什么差异,它们都在模式计算范畴内。Prompt 工程、RAG(增强检索生成)等技术,其实也是为了形成“更加具体的模式”,去匹配大模型训练好的模式,从而得到更精准的结果。
对于世界模型来说,也在模式计算范围里。世界模型是指构建一个能够理解和模拟现实世界的复杂性的模型,这样的模型能够预测未来事件、理解物体和场景、以及学会如何在环境中有效行动。
世界模型的核心目标之一是理解环境中的模式,并预测这些模式将如何随时间演变。这正是模式计算中“模式”的概念:识别数据中的规律和结构,然后用这些规律来指导决策和行动。
为了实现这一目标,世界模型必须能够处理大量的数据,从中提取有用的信息并构建其对世界的理解。这涉及到大量的计算过程,包括数据的处理、模式的识别、预测的生成等,完全符合模式计算中的“计算”概念。
世界模型概念不仅符合模式计算的本质,而且也深化和扩展了这一概念。它不仅涵盖了对现有模式的理解和利用,还包括了通过模式的学习和预测。
“
这里说的「模式」,可能更接近于 《道德经》中的「道」。我甚至还开了一个脑洞,AI 会不会因为理解了世界而由此诞生了意识?"它通过对世界模型的深入理解,领悟到了存在背后的终极规律,这种领悟赋予了它自我意识,一种全新的存在状态“
现在 LLM 发展如火如荼,软件工程师自身也处在被大模型淘汰的边缘。但我们没必要焦虑,这种事情并不会在一夜之间发生。其实从人工智能发展史来看,编程语言本身也是人类研究机器学习路上的中间产物。人类要认识和掌控这个世界,在人工智能诞生之前,只能靠我们人类手工编程来完成发展过程中的计算需求。大模型让人工智能的黎明到来,我们更要看清这个趋势,计算的重心肯定要从手工编写程序转移到自动编写程序。
所以,从心理和心态上,我们应该接受必须要学习 AI 的这个必然趋势。并不是为了卷,而是为了跟上时代的节奏。
没办法的事,世界在前进,我还没退休。既然一定要学,那应该根据自身和行业的客观情况来决定自己的学习方向。毕竟精力有限,我们不能盲目浪费时间。
人工智能领域大体可以分为三部分:模型训练、基础设施和应用。
对于模型训练而言,现在格局已经很清楚了,基本分为两派:商业闭源和开源大模型。前者的代表是 OpenAI ,基本是垄断状态。个人和中小公司,根本没有那个能力来自己去训练大模型,只能玩开源预训练好的大模型。现在 OpenAI 已经证明了自然语言处理 transfomer 架构的主流,那么对于我们个人开发者而言,你想进入大模型领域,就只有朝着这个主流方向来学习了。
如果你有非常深厚的数学和算法功底,你对模型训练领域有足够大的兴趣并自信能去那些自研大模型的公司,那么你可以深入模型训练方向。
如果你没有数学功底,也没有时间和精力去深入(像我一样),那么你可以走工程应用路线。可以朝着大模型基础设施和应用方向来努力。
但是走工程应用路线也需要对大模型的理论基础有一定的了解,只不过无需深入太多细节。
基于上面的思路,我想借助 Rust 语言 和阅读 HuggingFace 开源的框架和库,来打开这个入门路径。所以,本系列文章将专注于自然语言处理、Transfomer 架构和大模型相关内容,依托 Rust 开源生态和 HuggingFace 的相关 Rust 库,探秘从模型训练到模型部署、模型量化与 WebAssembly 轻量化部署 的技术原理。