1. 聊天机器人Chatbot,一般,input tokens : output tokens = 1100:15
2. LLama2的tokenizer,中文情况下,token:汉字=1:1.01
3. prefilling阶段的吞吐量(tokens/s),一般是decoding阶段的50~100倍。
4. 4张带有NVLink的A100,在70B模型上的推理加速比,大约是3x(即是单张A100卡吞吐量的3倍)。
5. 开了continous batching,相比串行,吞吐量,在单卡上可提升70%;在4卡上可提升100%。
6. 4xA10(PCIe4.0)和1xA100,在70B模型上的吞吐量基本相等。
7. batching推理70B模型时,用nvidia-smi dmon看性能,4xA100,sm约为90%,mem约为55%;1xA100,sm约为100%,mem约为80%。
8. 同等条件下,70B模型的吞吐量:1req/s;13B模型的吞吐量:5req/s。(同等条件:同样的GPTQ W8A16量化,同样的1张A100,同样的聊天评测集,同样开batching)
9. batching的基础上,chunked prefill用和不用,吞吐量基本不变,延迟在并发请求数>1之后,用了的可明显快,并发量大可达数倍优势。
10. chunked prefill的chunk tokens太小时,例如小于128 tokens/chunk,则吞吐量和延迟都开始变差。因为计算密集不起来了。
11. prefilling kv cache,在多数任务上,效果不明显。即使是input比output长50~100倍的聊天任务,两阶段的延迟比例大约1:1,即使99%的前缀都相等,也就加速1倍。
效果明显的条件:input prompt公共前缀比不同后缀长很多倍,input比output长的倍数>50倍,显存足够大,来自同一个用户的请求被路由至同一张卡,用户回复的时间间隔较短。