Tlntin/Qwen-TensorRT-LLM

triton同步异步接口询问

Closed this issue · 15 comments

大佬 我根据您的方案部署了qwen14B,但是这么请求时候,貌似是同步接口?多个请求的时只能等一个完成之后,另一个才开始响应

是否有开启inflight-batching功能呢?

是否有开启inflight-batching功能呢?

请问是构建engine的时候开启吗?
这是我使用的build命令

`
python3 build.py --hf_model_dir /root/model_repo
--dtype float16
--remove_input_padding
--use_gpt_attention_plugin float16
--enable_context_fmha
--use_gemm_plugin float16
--output_dir /root/Qwen/14B/trt_engines/fp16/2-gpu
--world_size 2
--tp_size 2
--paged_kv_cache
--use_inflight_batching

`

是否有开启inflight-batching功能呢?

parameters: {
key: "gpt_model_type"
value: {
string_value: "inflight_batching"
}
}这里启用了

了解,stream和非stream模式都试过了吗?

了解,stream和非stream模式都试过了吗?

非stream看不出来是否同时推理了,
stream和非stream接口可以同时推理,先发送非stream请求,然后发送stream请求(立马收到响应)

先发送非stream请求,然后发送stream请求(立马收到响应)那说明不就是成功了吗

先发送非stream请求,然后发送stream请求(立马收到响应)那说明不就是成功了吗

但是先发一次stream ,再发一次stream (第二次的 不能立马收到响应)

好的,我待会测试一下。

你也可以试试打印出第一个请求和第二个请求的每个token的响应时间,看看是否所有的第二个请求token响应均在第一个请求之后。

你也可以试试打印出第一个请求和第二个请求的每个token的响应时间,看看是否所有的第二个请求token响应均在第一个请求之后。

确实是,第二个请求响应在第一个回答完毕之后

刚刚看了一下确实和你说的一样,猜测应该是由于前后处理都是单线程导致的。
于是我将group_instance从1换成了10(这个数值可以根据你的cpu核心数设置,建议设置为一半cpu线程数), tensort_llm那边的继续默认是1,相关commit
修改后我开启了两个长文本流请求,两边可以同时响应,说明问题解决。
你也可以测试一下是否如此。

刚刚看了一下确实和你说的一样,猜测应该是由于前后处理都是单线程导致的。 于是我将group_instance从1换成了10(这个数值可以根据你的cpu核心数设置,建议设置为一半cpu线程数), tensort_llm那边的继续默认是1,相关commit 修改后我开启了两个长文本流请求,两边可以同时响应,说明问题解决。 你也可以测试一下是否如此。

大佬我刚在triton那边issue翻看,发现有个人是这么请求的 用的ensemble而不是tensorrt_llm_bls。
我发现ensemble是可以的!

刚刚看了一下确实和你说的一样,猜测应该是由于前后处理都是单线程导致的。 于是我将group_instance从1换成了10(这个数值可以根据你的cpu核心数设置,建议设置为一半cpu线程数), tensort_llm那边的继续默认是1,相关commit 修改后我开启了两个长文本流请求,两边可以同时响应,说明问题解决。 你也可以测试一下是否如此。

我试一下您这种

刚刚看了一下确实和你说的一样,猜测应该是由于前后处理都是单线程导致的。 于是我将group_instance从1换成了10(这个数值可以根据你的cpu核心数设置,建议设置为一半cpu线程数), tensort_llm那边的继续默认是1,相关commit 修改后我开启了两个长文本流请求,两边可以同时响应,说明问题解决。 你也可以测试一下是否如此。

大佬我刚在triton那边issue翻看,发现有个人是这么请求的 用的ensemble而不是tensorrt_llm_bls。 我发现ensemble是可以的!

使用这个的配置 前处理group_instance1 后处理group_instance为10,tensorrt_llm_bls的group_instance为1

按您的思路 已经解决