TensorRT-LLM七日谈 Day5

发布于:2024-10-15 ⋅ 阅读:(146) ⋅ 点赞:(0)

模型加载

在day2, 我们尝试了对于llama8B进行转换和推理,可惜最后因为OOM而失败,在day4,我们详细的过了一遍tinyllama的推理,值得注意的是,这两个模型的推理走的是不同的流程。llama8b需要显式的进行模型的转换,引擎的生成,而tinyllama则进行了隐式的执行。

如果参考[1],也有明确的说明。目前模型的推理确实支持多种形式。

量化及调参

接下里,我们的关注点来到: 如何进行各种量化方法的调用,在[2]中提供了对应的实例/。

可以看到的是,他是在LLM的加载和隐式的转换过程中,执行的量化。

    llm = LLM(
        model="TinyLlama/TinyLlama-1.1B-Chat-v1.0",
        # define the quantization config to trigger built-in end-to-end quantization.
        quant_config=quant_config)

而在生成结果的过程中,还涉及到很多参数,但这些参数,就与模型的engine无关,而更像是“调参”,在推理的时候指定即可。如下

    # Create a sampling params.
    sampling_params = SamplingParams(temperature=0.8, top_p=0.95)

    for output in llm.generate(prompts, sampling_params):
        print(
            f"Prompt: {output.prompt!r}, Generated text: {output.outputs[0].text!r}"
        )

显存占用

对于LLM来说,显存的有效利用是一个非常务实的话题,在文档[3]中提到了,模型权重,激活值和I/O tensor会占用显存大小,这里的I/O tensor概念感觉很很隐晦,按我的理解,这是通过一个类似page的形式,进行显存管理?其中,也包含了kv cache,.

另外,文档中还提到了memory pool, 这个的概念,我也不太理解其对应的实现。

今天就先到这吧。

 

[1] LLM Examples Introduction — tensorrt_llm documentation

[2] LLM Quantization — tensorrt_llm documentation 

[3] Memory Usage of TensorRT-LLM — tensorrt_llm documentation


网站公告

今日签到

点亮在社区的每一天
去签到