使用小模型
在评估模型时,应该尽量选择能够提供所需精度的最小模型。这样做预测速度更快,训练和推理所需要的硬件资源也更少。 算力昂贵,能省就省。 实际上,现在的机器学习模型越来越小,也早已不是什么新鲜事了。熟悉计算机视觉的人都会记得 2017年SqueezeNet 的问世,与 AlexNet 相比,SqueezeNet的规模缩小了98%,同时在精度表现上与AlexNet不相上下。
除了计算机视觉领域,NLP社区也在努力缩小模型的规模,其中大量使用了知识蒸馏等迁移学习技术。其中最出名的可能就是对谷歌BERT模型的改进型DistilBERT。 与原始 BERT 模型相比,DistilBERT保留了97%的语言理解能力,同时模型体积缩小了 40%,速度提高了60%。相同的方法已应用于其他模型,比如 Facebook 的 BART。 最近来自「Big Science」项目的最新模型也令人印象深刻。如下图所示,这些项目中的 T0 模型在许多任务上都优于 GPT-3的性能,但模型大小只有GPT-3的1/16。
微调模型
如果需要在一个高度专门化领域使用模型,大可不必从头开始训练模型,这时应该对模型进行微调,也就是说,仅在自己的数据集上训练几个时期。 实际上,微调模型也是迁移学习的一种方式,目的还是节约资源,能省就省! 使用迁移学习的好处不少,比如:
- 需要收集、存储、清理和注释的数据更少
- 实验和数据迭代的速度更快
- 获得产出所需的资源更少
换句话说就是:省时、省钱、省资源!
使用云基础设施
云计算企业知道如何构建高效的基础设施。研究表明,基于云的基础设施往往比替代方案能效更高、碳足迹更浅。Earth.org 表示,虽然云基础设施目前并不完美,但仍然比替代方案更节能,可以促进对环境有益的服务,推动经济增长。” 确实,在易用性、灵活性和「即用即付」方面,云当然有很多优势。如果实在负担不起自购 GPU,何不尝试在 Amazon SageMaker(AWS 的机器学习托管服务)上微调模型呢?
优化模型
从编译器到虚拟机,软件工程师长期以来一直使用工具来自动优化硬件代码。
然而,和软件行业相比,机器学习社区仍在为这个问题苦苦挣扎,这是有原因的。最重要的是,对机器学习模型的进行优化是一项极其复杂的任务,其中涉及以下技术和条件:
- 硬件:大量面向加速训练任务(Graphcore、Habana)和推理任务(Google TPU、AWS Inferentia)的专用硬件。
- 剪枝:删除对预测结果影响很小或没有影响的模型参数。
- 融合:合并模型层(比如卷积和激活)。
- 量化:以较小的值存储模型参数(比如使用8位存储,而不是32位存储)
所幸,现在已经开始出现可用的自动化工具,如Optimum 开源库和 Infinity,这是一种容器化解决方案,延时低至1毫秒,但精度可以与Transformer相当。
另一个「摩尔定律」要来了吗?
在过去的几年里,大型语言模型的规模每年都以10倍的速度增长。看起来,另一个「摩尔定律」就要诞生了。 原来的摩尔定律,现在的命运如何?关于「摩尔定律行将终结」的话题,早几年就已经甚嚣尘上。
但有一点是确切无疑的,如果机器学习沿着「模型巨大化」的路走下去,路可能会越走越窄。收益递减、成本增加、复杂度增加,这些可以预见的问题,可能会在不远的未来,把机器学习行业逼进死胡同。 这就是人工智能未来的样子吗? 希望不是。与其追逐万亿参数的巨大模型,不如把更多精力放在构建解决现实世界问题的、实用且高效的解决更好么?