最近一直在忙着研究这些开源的大模型,写文的频率慢了点。不过老乡先别走,船长会持续努力写文的。
小扎的 llama2 模型发布已经十多天了。起初我没有太注意,但看到好多人开始讨论这个新模型后。感觉不得不看一下了,看来这次小扎是要站起来了。 赶紧屁颠屁颠的回去仔细看看是怎么个事。
船长本着好东西必须体验一波的精神,立马去官网申请了下载模型的链接。我看介绍是说个人电脑也是可以部署 llama2 模型,就是说你自己的电脑可以下载 llama2 模型和运行 llama2 模型的代码,然后个人电脑把这个程序给跑起来。
你知道这个意味着什么吗?这意味着大家都可以租云服务器基于 llama2 模型去训练自己的行业大模型了。
不过我之前很好奇的是为什么 llama2 模型在个人电脑上可以运行,但ChatGPT 是不可以的,即使它开源了也不行,除非ChatGPT改变了技术方向。
这次我们深入的扒一扒 llama2 模型背后的技术,看下跟 ChatGPT 方面有哪些不同。
我在Meat的官网上看到 llama2 是构建在PyTorch之上的,而ChatGPT是基于TensorFlow Probability框架的,本文里面就简称TFP。我们来对比下这两个技术的区别。
PyTorch
PyTorch就像一个神奇的工具箱,集成了很多功能。比如:动态神经网络、强大的GPU加速、分布式训练、模型压缩和量化、还支持移动端部署,每一个流行的技术框架都离不开强大的社区支持,PyTorch也不列外。
PyTorch提供了对NVIDIA CUDA非常好的支持,可以将模型和数据高效加载到GPU显存中,利用GPU并行计算带来的加速。
llama2 就是利用了GPU加速和模型量化这两个特性来支持个人电脑上部署的。
此外PyTorch还提供了对模型的压缩,我大概说下压缩是怎么回事:
1. 动态计算图,PyTorch使用动态计算图,这意味着计算图可以根据代码执行逻辑动态构建,而不是固定定义图结构。这为模型压缩提供了基础,因为可以在运行时改变图连接来裁剪模型。如果使用静态图,裁剪会很困难。
2. 裁剪与稀疏化技术,PyTorch内置了多种裁剪技术,可以移除冗余的权重连接和节点,使模型变得更加稀疏紧凑。如极限化裁剪、L1正则化裁剪等。裁剪是压缩模型的重要手段。
3. 知识蒸馏,PyTorch允许通过知识蒸馏算法训练一个小模型来模拟大模型,获取轻量版本。小模型训练完后表现出来结果差不多,但模型大小可以减小10倍以上。
4. 量化压缩,PyTorch支持各种量化技术,如8位定点数量化,可以大幅压缩模型大小。同时提供量化感知训练算法使压缩精度损失最小化。
5. 模块化设计便于裁剪,PyTorch模块化设计使模型可以方便拆分为子模块,然后按需加载,减小内存占用,有利于部署。
6. 优化编译后端,PyTorch可以进行模型优化和编译,移除冗余计算,并利用硬件加速,提升执行效率。
PyTorch的动态图、先进的压缩算法和模块化设计让其成为压缩大模型的最佳框架之一,可以大幅减小模型体积。这就为它在个人电脑上部署提供了很大的支持。
TensorFlow Probability
TensorFlow Probability是基于TensorFlow之上构建的概率编程库,它简化了概率建模的复杂度,并且可以无缝的使用TensorFlow强大的计算能力支持。
TensorFlow Probability也有它的优势:
1. 统一的概率框架,TFP提供了一个统一的框架来构建概率模型,可以避免直接使用TensorFlow底层API进行建模的复杂性。
2. 丰富的概率工具,TFP实现了各种常见的概率分布,数据转换和采样方法,以及贝叶斯推断算法等,使建模更加便利。
3. TFP基于TensorFlow之上,可以无缝地使用TensorFlow的自动微分、加速库、分布式执行等能力。
4. 硬件优化,通过TensorFlow对各类硬件的优化,TFP可以获得良好的性能,可拓展到多GPU及TPU。
5. 模型自定义,TFP允许用户基于已有的概率构件来灵活地定制自己的模型。
6. 生产可部署并且与Keras集成,TFP模型可以导出为TensorFlow Serving等格式以实际部署。TFP与Keras进行了集成,可以通过Keras接口构建概率模型并训练。
以上这两段可以说是本文比较硬核的部分了,我们对比了这两个模型的特性。
llama2 是构建在PyTorch这个优秀开源深度学习框架之上的。PyTorch提供了动态计算图、强大的GPU支持、网络构建、模型压缩等功能。这些特性可以让模型根据实际部署环境进行优化,而不必固定图结构。
llama2 还提供了一个系列的模型。其中最小的版本只有130亿个参数。llama2 团队通过调整网络结构、裁剪参数等方法实现模型轻量化。这样的版本对电脑硬件需求不是很高,所以它可以在普通电脑上运行。
相比之下,ChatGPT 是基于TensorFlow Probability这一概率编程框架开发的。TFP框架缺乏针对个人电脑部署进行模型压缩、转换等优化的支持。
而 ChatGPT 采用了约1750亿参数的超大规模模型。这样的大模型对高速内存和专业级GPU有比较高的依赖。需要高端的硬件支持,而这也超过了大多数普通电脑的配置
综上所述,语言模型能否在普通电脑上配置,主要取决于语言模型底层对硬件的需求,而个人电脑硬件条件的制约是关键因素。
出自:https://mp.weixin.qq.com/s/JZJz499zB2h-LNp06mmzLg