无需量化,在树莓派上运行 LLaMA2 70B 模型

2023-10-17 15:34:59 +08:00
 lwch

想必大家对 transformer 模型的认识已经非常深刻了,这里就不多做介绍了。今天我用纯 go 语言实现了一个项目来做 LLaMA2 模型的推理,其实要在小内存设备上运行大语言模型方法很简单,只需要在运行到某一层时将该层的参数加载到内存中进行计算即可。

项目地址: https://github.com/lwch/llama2.go

各规格模型所需内存大小:

Model Precision Memory Memory(Cached Params)
7B bf16 600M+ 25G+
13B bf16 1G+ 43G+
70B bf16 3G+ untest

模型推理方式:

cat << EOF | ./llama2 text-completion -m 7B.model [--cache]
Translate English to French:

sea otter => loutre de mer
peppermint => menthe poivrée
plush girafe => girafe peluche
cheese =>
EOF

.... 此处省略一堆中间过程

Translate English to French:

sea otter => loutre de mer
peppermint => menthe poivrée
plush girafe => girafe peluche
cheese => fromage

Traanslate French to English:

lait => milk

推理提速:

  1. 可通过分布式集群来实现矩阵运算达到 tensor 并行
  2. 可通过量化手段减少模型大小并提高计算速度
2787 次点击
所在节点    分享创造
28 条回复
lwch
2023-10-19 10:14:47 +08:00
@kneo 所以我上面也说了,单机的性能是有限的,想要提升整体性能只能靠堆集群来实现,目前为止这个项目还处于单机运行状态,至于说具体以哪种方式来做并行计算这个是需要实际测试的。我认为 go 语言天生就是高并发高吞吐量的代名词,因此我一开始就选用了 go 语言而不是其他的语言来进行开发,就 go 语言本身而言从单机版到集群版也更容易一些。

另如果 10 台机器的集群计算性能可以达到 GPU 的一半,我觉得大部分的资本家也是可以接受的,毕竟总体成本下降了好几个数量级。
kneo
2023-10-19 11:57:27 +08:00
@lwch 最后提醒一下,你的直接竞争对手是 C/C++/Rust (比如 llama.cpp ,llama2.c )版本。而不是 GPU 版本。
不管怎么说,祝有成。
lwch
2023-10-19 14:54:33 +08:00
@kneo 今天做了不少优化,目前 7B 模型单机运行已经可降低到 1.2~1.6s/token ,但 CPU 并未全部跑满可能还有一定的优化空间
lost7
2023-10-19 16:19:33 +08:00
真的是好思路,特地过来回复一下。这可以出篇不错的 paper 了
rekulas
2023-10-20 21:43:45 +08:00
太 cool 了,想问一下为何单人工作量就可以实现一个大模型推理库呢,按我之前的理解至少得一个团队👍
lwch
2023-10-20 23:25:40 +08:00
@rekulas 只实现模型推理的话其实并不复杂,要实现整个深度学习框架就非常麻烦。每个 tensor 的正向传播、反向传播、梯度计算等,我实现了一个 https://github.com/lwch/gotorch 库包装了 libtorch 库里面已经实现了上百个算子,这还只是 pytorch 中的一部分,想要实现一个完整的框架一个人难以完成。
rekulas
2023-10-20 23:37:50 +08:00
@lwch 了解了 仍然厉害
我部署 7B 到 pc 虚拟机 r5 2600+64g 内存
Enter system prompt (optional):
Enter user prompt: where is my ass
thinking....
10 分钟了出不了一个 token 可能是什么原因
lwch
2023-10-21 09:02:57 +08:00
@rekulas 如果内存足够大的话可以增加--cache 和--fp32 缓存参数,每次加载参数速度很慢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/982794

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX