学习了荒木教师笔下的普奇神父的台词

玩LLM的多数用的是Huggingface框架,而它本身提供的是accelerate库来提高模型的训练推理速度。这些都离不开Nvidia 的 Cuda 核算,而现在适配这一驱动的只要WindowsLinux。于是我就测验在这两个系统上进行加快实验,测验Huggingface Doc中引荐的 Flash Attention 2以及 vLLM的 Page Attention。

原理参阅

LM(十七):从 FlashAttention 到 PagedAttention, 如何进一步优化 Attention 功能

Windows

显卡:RTX 2070
模型:Phi2

我首要测验通过pip装置 flashattn, 成果发现需要git submodule,只好VPN和Proxy怼上去,一向卡在build状态。抛弃后测验git clone 源码,走 python setup.py install, 过程很坑,让我回想起被Gentoo分配的日子。一向没成功说rule有问题,莫非是我的CUDA上12.4导致的,可是在Arch这里成功了。
既然WSL 2不行,我就测验从TensorRT LLM的经验装置容器,一顿Ops,说WSL的cuda途径辨认不了。(吐槽:当初忽悠我WSL有多好,方便Windows和Linux无差别生态,成果Blog几乎在2023年停止了,shit,我还要测验很多底层,比方ebpf、wifi、蓝牙。。。)

最终用原生的 msvc 来build,和wsl一样。2070莫非不是安倍架构吗?吐槽:微软为什么要集成在Visual Studio里,不能单独领出来。

换vllm走pip装置,顺畅,速度明显,快了一倍。

主张windows测验vllm加快。

Arch

显卡:RTX 4090
模型:zephyr-7b-beta

我首要测验通过pip装置 flashattn, 成果发现需要git submodule,只好VPN和Proxy怼上去,一向卡在build状态。也抛弃后测验git clone 源码,走 python setup.py install, 直接顺畅make,可是编译很慢。

用time库随便测试一下,快了一倍。

接着 按照windows装置vllm(pip就能够了),也很顺畅,便是 运转报了

ValueError: The model's max seq len (32768) is larger than the maximum number of tokens that can be stored in KV cache (28912). Try increasing `gpu_memory_utilization` or decreasing `max_model_len` when initializing the engine.

搜 Bing,都是在Issue里发问,仍是没有精确的答案。没办法,这种小问题,我只好看看源码,发现能够 gpu_memory_utilization(default)是0.9,我就试了1.0.运转就通过了。估量90%不行,用95%(0.95)也能够。

可是vllm在Linux上不算理想。这个模型速度变慢了,估量是GPU使用增加了导致的。可是在Phi 2上又加快,但貌似只要4%左右。

总之仍是引荐用 Flash Attention 2。

最终

之前,我就说过现在是大算力年代,关于算力开发是一场前所未有的比赛。未来关于AI模型地训练和推理可不止英伟达的GPU一家,比方Groq TPU,Google TPU,Intel APU等等都可能成为代替。但同时,现干流算力维持在互联网上,可是迟早会向物联网倾斜。安波里欧们,紧跟加快吧!