lmdeploy推理do_sample崩溃问题
采用server方式推理一个模型,会崩溃。
采用pipeline方式推理一个模型,不会崩溃。
不管是server还是pipeline,都调用了同样的generate()方法,但是为什么会产生不同的结果?传递的参数不同。
采用server方式推理一个模型,会崩溃。
采用pipeline方式推理一个模型,不会崩溃。
不管是server还是pipeline,都调用了同样的generate()方法,但是为什么会产生不同的结果?传递的参数不同。
pin_memory就是在RAM上固定了一块内存,这个内存范围是被锁住的。pin这个单词很形象,很像rust中pin含义,用钉子把钉住,这个内存就不会释放,是安全的意思。GPU在传递数据的时候,就可以用DMA的方式,高效传输数据。否则,普通的cpu_memory,就会swap掉,然后访问的时候缺页中断,这样速度肯定就慢了很多。
今天要介绍的主题是TGI(text-generation-inference), 是huggingface开源可用于生产环境的LLM大模型的推理部署服务。
由Router和Engine构成,Engine包括了InferServer。Router由Rust实现,InferServer由python端实现。Router相当于一个代理,面向业务会启动一个WebServer,包括对业务请求采用合适的策略进行动态Batch调整,实现大的吞吐和低的延迟。 Engine对各种LLM大语言模型进行支持,启动模型推理服务。 Router和Engine之间通过Protobuf定义消息和格式,通过GRPC方式就可以对推理服务进行访问。