我比较了两种启动服务器的方法。模型是vicuna-7b,GPU是2 * A30。第一种方法是:
python -m vllm.entrypoints.openai.api_server \
--model /data/models/vicuna-7b-v1.5/ \
--tensor-parallel-size 2 --gpu-memory-utilization 0.9 --enforce-eager --disable-log-requests
第二种方法是:
python -m vllm.entrypoints.openai.api_server \
--model /data/models/vicuna-7b-v1.5/ \
--max-loras 16 --tensor-parallel-size 2 --max-lora-rank 64 --gpu-memory-utilization 0.9 \
--enable-lora --enforce-eager --disable-log-requests --lora-modules lora1=/root/path1/ lora2=/root/path2/ ...
在这两种测试中,我都发送了相同的请求,将模型设置为/data/models/vicuna-7b-v1.5/
。但是性能相差很大。
3条答案
按热度按时间lxkprmvk1#
This is in line with what we expect. There are two optimization can be applied (help wanted!):
Only enable Punica kernels when LoRA is requested.
From discussion with @Yard1 offline
Currently we do all of the LoRA stuff even if there are no LoRAs loaded. I think it can be further optimized (orthogonally to getting better kernels).
This means, if anyone can help us conditionally enable Punica kernels for multi-lora only when LoRA is used, that would be wonderful.
Optimize Punica kernels for smaller, non-A100/H100 devices, even for lower sm7.5
s6fujrry2#
这与我们的预期相符。有两个优化可以应用(需要帮助!):
仅在请求LoRA时启用Punica内核。
从与@Yard1的线下讨论中得知
目前,即使没有加载LoRA,我们也会执行所有LoRA相关操作。我认为它可以进一步优化(与获得更好的内核无关)。
这意味着,如果有人能帮助我们在多LoRa仅在LoRA使用时有条件地启用Punica内核,那将非常棒。
为较小的非A100/H100设备优化Punica内核,甚至适用于更低的sm7.5
好的,我正在学习vllm中的多个LoRa代码,我会检查这些代码,如果我有能力做到这一点,我会帮助发送一个PR。
iyr7buue3#
这与我们的预期相符。有两个优化可以应用(需要帮助!):
仅在请求LoRA时启用Punica内核。
从与@Yard1的线下讨论中得知
目前,即使没有加载LoRA,我们也会执行所有LoRA相关的操作。我认为它可以进一步优化(与获得更好的内核并行)。
这意味着,如果有人能帮助我们在仅使用多LoRa时有条件地启用Punica内核,那将是非常棒的。
为较小的非A100/H100设备优化Punica内核,甚至适用于更低的sm7.5
你好,仍有一些要点需要确认。
311.5 token/sec
,254.9 token/sec
196 token/sec
。当优化完成时,
2
的性能与1
相同,但3
仍然如此,对吗?看来多个lora的开销相当大。