当我在H800上运行基准测试时,结果令人困惑。为什么hf比vllm更好?当我运行脚本时有什么问题吗?
python benchmark_throughput.py --input-len 128 --model /home/jiekong/.cache/modelscope/hub/AI-ModelScope/opt-125 --output-len 128 --max-num-batched-tokens 2048 --trust-remote-code
吞吐量:59.50请求/秒,15231.62令牌/秒
python benchmark_throughput.py --input-len 128 --model /home/jiekong/.cache/modelscope/hub/AI-ModelScope/opt-125 --output-len 128 --backend hf --hf-max-batch-size 256
吞吐量:108.34请求/秒,27736.31令牌/秒
4条答案
按热度按时间bvk5enib1#
你好,yuki252111。当我尝试使用更现实的LLM尺寸$x_1m_0n_1x$时,我发现vLLM大约是2倍快。我使用了RTX A6000 GPU。
vLLM:
$x_1a_0b_1x$
HF:
$x_1a_1b_1x$
z31licg02#
我在这里也有同样的问题,你有什么更新吗?
py49o6xq3#
@AlexBlack2202
我从源代码中分析了这个问题,以下是我的个人推测:
a. vllm实际上将请求添加到队列中,然后每次批处理256个序列
b. hf更直接,for循环每次批处理256个序列
所以我做了两个实验。
实验1 batch_size=20
这个实验将使连续批处理更加有效
hf Throughput: 12.51 requests/s, 3202.18 tokens/s
vllm Throughput: 29.34 requests/s, 7510.30 tokens/s
实验2 llama-7b-chat-hf batch_size=20
hf Throughput: 2.77 requests/s, 708.53 tokens/s
vllm Throughput: 12.93 requests/s, 3310.62 tokens/s
感谢 @mgoin
这个结果似乎有道理...
sd2nnvve4#
@AlexBlack2202 我从源代码中分析了它,以下是我的个人推测:
a. vllm实际上将请求添加到队列中,然后一次批处理256个序列
b. hf更直接,for循环每次批处理256个序列
所以我做了两个实验。
实验1 batch_size=20
这个实验将使连续批处理更有效
hf Throughput: 12.51 requests/s, 3202.18 tokens/s
vllm Throughput: 29.34 requests/s, 7510.30 tokens/s
实验2 llama-7b-chat-hf batch_size=20
hf Throughput: 2.77 requests/s, 708.53 tokens/s
vllm Throughput: 12.93 requests/s, 3310.62 tokens/s
感谢 @mgoin这个结果似乎有道理...
非常感谢