vllm 当加载LoRa模块时,性能问题

lbsnaicq  于 2个月前  发布在  其他
关注(0)|答案(3)|浏览(36)

我比较了两种启动服务器的方法。模型是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/。但是性能相差很大。

lxkprmvk

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

s6fujrry

s6fujrry2#

这与我们的预期相符。有两个优化可以应用(需要帮助!):

仅在请求LoRA时启用Punica内核。

从与@Yard1的线下讨论中得知
目前,即使没有加载LoRA,我们也会执行所有LoRA相关操作。我认为它可以进一步优化(与获得更好的内核无关)。
这意味着,如果有人能帮助我们在多LoRa仅在LoRA使用时有条件地启用Punica内核,那将非常棒。

为较小的非A100/H100设备优化Punica内核,甚至适用于更低的sm7.5

好的,我正在学习vllm中的多个LoRa代码,我会检查这些代码,如果我有能力做到这一点,我会帮助发送一个PR。

iyr7buue

iyr7buue3#

这与我们的预期相符。有两个优化可以应用(需要帮助!):

仅在请求LoRA时启用Punica内核。

从与@Yard1的线下讨论中得知
目前,即使没有加载LoRA,我们也会执行所有LoRA相关的操作。我认为它可以进一步优化(与获得更好的内核并行)。
这意味着,如果有人能帮助我们在仅使用多LoRa时有条件地启用Punica内核,那将是非常棒的。

为较小的非A100/H100设备优化Punica内核,甚至适用于更低的sm7.5

你好,仍有一些要点需要确认。

  1. 当禁用lora时,性能为311.5 token/sec,
  2. 使用lora时,但发送基本模型请求,我得到的是254.9 token/sec
  3. 使用lora时,发送lora请求,我得到的是196 token/sec
    当优化完成时,2的性能与1相同,但3仍然如此,对吗?
    看来多个lora的开销相当大。

相关问题