如今AI和软件的联系实在太紧密了,乍一看这个问题好像有点莫名其妙。平时随口聊起的话,答案肯定是“算”:不管是大语言模型还是小语言模型,都是工程师搭建的,靠软件系统开发中的软件流水线交付,跑起来也得靠程序。但要是站在系统程序员、编译器开发者或者硬件设计师的角度,这个问题可就一点都不简单了。AI模型到底是个啥?里面都装了些什么?它真的符合软件的技术定义吗?
软件的技术定义
在硬件和系统设计领域,软件的定义是可执行逻辑——说白了,就是处理器能跑的一串指令,不管是机器码、字节码,还是靠解释器执行的源代码都算。软件里得有控制流程,比如分支判断、循环、函数调用和返回这些。只要最终能转换成CPU或加速器可执行的指令流,那就算软件。反过来,就算某个文件和应用程序打包在一起,要是只用来存数据,那其实根本算不上软件。而软件开发公司在进行相关项目时,也会严格遵循这样的技术定义。
AI模型的本质是数据而非代码
从最本质的角度来说,训练好的大小语言模型,一般都是以.safetensors、.gguf或者.pth这类格式的文件分发的。里面装的全是一大堆多维数字数组,也就是模型训练过程中学到的权重和偏置。这些数字是为一个固定的数学函数设定参数的:比如告诉神经元该对另一个神经元产生多大影响,该给某个特征分配多少权重,信号又该怎么在各层之间传递。对于软件开发公司而言,了解这些底层细节是很重要的。
关键的一点是,模型文件里压根没有控制流程。没有“如果X成立,就执行Y”这类条件判断,也没有循环或者任何指令。它不是算法本身,只是给另一个独立存在的算法设定的参数。像safetensors这种格式,设计初衷就是只存原始数据和元数据,明确禁止嵌入可执行代码,防止出现远程代码执行攻击。这种设计思路也能看出来,模型本来就该是静态的数据,不是能直接运行的程序。这也体现了软件系统开发中数据与代码的区别。
模型运行依赖推理引擎软件
咱们再想想,模型能直接运行吗?答案是不能。CPU没法直接解析.gguf文件,GPU没有驱动也跑不起来,你就算给文件加执行权限(比如用chmod+x命令),也没法直接启动它。要让模型输出结果,得先把它加载到推理引擎里——推理引擎才是真正的软件,一般用C++、Python、Rust这些语言编写,它清楚模型的架构,能做张量运算,安排任务执行顺序,还能管理内存。这对于软件系统开发来说,是关键的一环。
所有和矩阵相乘、激活函数运算、缓存管理相关的逻辑,都在这个运行时环境里,根本不在模型本身。同一个模型文件,在不同的运行时环境、硬件设备下,或者采用不同的精度、量化方式,表现可能天差地别。这种依赖性也把数据(模型)和运行模型的软件(推理引擎)分得明明白白。软件开发公司在处理相关问题时,需要充分考虑到这一点。
神经网络确实模糊了数据和代码之间传统的界限。在传统程序里,程序的行为是通过条件判断、循环这些语句明确写出来的;但在神经网络里,行为是隐含在数值权重里的:调整上百万个数字,就能改变系统的输出,这和改写几千行代码改变软件输出的效果是一样的。
但即便如此,权重只是规定了运算该用哪些数值,并没有说明该怎么运算。而算法——也就是“怎么算”的部分,是固定的、独立于模型存在的;权重只是这个算法里的系数而已。这也是为什么不同的推理引擎加载同一个模型,哪怕用的执行策略完全不同,最终也能得到一模一样的结果。软件决定了怎么执行,模型只是提供运算所需的参数。软件开发公司在进行优化等工作时,要明白这其中的关系。
应用场景不影响模型本质属性
大家之所以觉得这些模型是软件,很大程度上是因为它们最常见的一个应用场景——作为开发者辅助工具,比如ClaudeOpus、通义千问、Copilot这些。但生成源代码只是这类通用统计模型的一个应用而已。不管模型是写Python代码、做语言翻译、预测蛋白质结构,还是给图片分类,它的内部结构都不会变。一个能输出代码的模型,并不会比一个存着代码片段的CSV文件更“像软件”。软件开发公司在使用这些模型时,也要清楚这一点。
咱们可以做个测试:给一个模型文件算个校验和,保证文件里的每一个字节都不动。然后只改变它的运行环境:把PyTorch换成llama.cpp,从CUDA环境换到CPU,把精度从fp32量化成int4,或者把指令集从AVX2换成AVX-512。模型本身还是那个模型,但运行延迟、内存占用,甚至数值计算结果,都可能差好几个数量级。唯一变的是可执行逻辑,这也印证了:模型本身根本不是软件。
实际工作中,模型的版本管理、分发、缓存、部署和回滚,确实和其他软件组件的操作方式一样。它们存在代码仓库里,有兼容性限制,还要监控是否出现性能退化的情况。但这些操作方式,并不代表它们就是软件。软件开发公司在进行软件系统开发时,要注意区分。
单独来看,AI模型只是数据——是一种经过训练的数值产物,里面存的是某个数学函数的参数。它没有可执行逻辑,没有控制流程,也没有任何指令。只有当推理引擎(软件)去解析这些数字的时候,模型才会成为软件系统的一部分。
分清这一点,对保证系统正确性、安全性,开展审计工作和形式化推理都很重要。它提醒我们,现代AI并不是用“魔法”取代了算法,只是用通过学习得到的参数,取代了人工编写的规则,而这些参数的运算,终究还是要靠传统代码来完成。
所以,绕了一圈想清楚这个问题后,我的结论是:小语言模型和大语言模型都不算软件,它们只是一组经过训练的数字,只有被可执行代码解析时,才会成为软件系统的一部分。
热门跟贴