1. 背景
从几年前开始,随着人工智能、神经网络的兴起,大模型得到了越来越广泛的应用,与此同时,计算机算力不足的问题也逐渐凸显,大模型的训练和使用非常耗时。于是,在技术圈便出现了一种现象——几乎百分百的企事业单位都在招聘速度优化人员,要求使用多线程技术优化大模型的训练和调用响应速度。
2. 分析
大模型的训练非常消耗时间,这源于两点:其一,训练过程中需要对以亿计的参数做很多的计算;其二,训练使用的输入数据数量非常庞大。由此可以看出,要想优化训练速度,主要的方向就是优化训练算法、减少训练数据。
优化训练算法包括减少运算量、调整运算顺序以适应硬件加速。这两点都能对整体优化效果起到决定性的作用,也是优化过程中最难的部分,尤其是前者。只可惜,目前中国市场上针对这两方面的优化少之又少。
减少训练数据包括减少训练数据量、降低数据维度。减少数据量很容易理解,顾名思义,就是除去大量冗杂、错误、歧义数据,只保留高质量数据进行训练,此方法也能有效加快训练速度,不过,高质量数据集建立的难度也不小。而降低数据维度,也是目前国内最常见的优化方向,譬如图像数据的训练,将1920*1080的图像降维成320*240,然后用于训练,效果方面可以看实际产品或研发总结,从理论上来看的话,有效果但又不能尽如人意。
多线程技术是在计算机软件开发过程中引入的编程技术,旨在提高CPU利用率,降低外部硬件速度、单个软件模块的条件等待、用户输入和指令等待等造成的CPU空闲率,以便更快向用户给出反馈或尽快完成用户任务。
由上可知,大模型速度优化中与多线程相匹配的部分少之又少,只有训练数据降维部分可能产生交集。因此,想用多线程实现大模型训练过程中的速度提升,结果差强人意,即便能看到的效果,也只是边边角角的提升。
3. 总结
多线程在很多常规场景下都能提高硬件利用率,进而缩短软件任务工作周期。但是,对于运算密集型任务,CPU大部分都已用于该任务,此时,再使用多线程也无法提高速度。从本质上讲,多线程只是提高CPU的利用率,减少CPU空闲时间,所以,多线程对于CPU几乎满负荷工作的场景是无效的。多线程技术的使用也将趋于理性。对于大模型训练之类的应用场景,要想加快任务速度,除了增加硬件配置、优化训练算法之外,能做的也就剩下消除操作系统和其它软件的干扰了,比如使用“元神操作系统”这种支持单任务的OS,它能将所有硬件资源都用于训练任务,过程中没有其它应用会产生干扰。