跳转至

博客文章

GPU的pin_memory是什么?

gpu的pin_memory

pin_memory就是在RAM上固定了一块内存,这个内存范围是被锁住的。pin这个单词很形象,很像rust中pin含义,用钉子把钉住,这个内存就不会释放,是安全的意思。GPU在传递数据的时候,就可以用DMA的方式,高效传输数据。否则,普通的cpu_memory,就会swap掉,然后访问的时候缺页中断,这样速度肯定就慢了很多。

text-generation-inference推理框架剖析

今天要介绍的主题是TGI(text-generation-inference), 是huggingface开源可用于生产环境的LLM大模型的推理部署服务。

由Router和Engine构成,Engine包括了InferServer。Router由Rust实现,InferServer由python端实现。Router相当于一个代理,面向业务会启动一个WebServer,包括对业务请求采用合适的策略进行动态Batch调整,实现大的吞吐和低的延迟。 Engine对各种LLM大语言模型进行支持,启动模型推理服务。 Router和Engine之间通过Protobuf定义消息和格式,通过GRPC方式就可以对推理服务进行访问。

C++如何实现FP16(IEEE754-2008)类型?

计算机在进行数值计算时,首先需要对数据进行表示,比如F32、F16、F64、int32、int16、int8等等。特别在深度学习中,如果模型的参数是F32类型,那么计算耗时且保存的参数占用内存大。

为了准确率同时保证计算的速度,一般需要把模型转换成F16类型。F16即是通过16个bit(位)表示浮点数类型。

我们一起看一下:

  • IEEE754-2008如何定义Float32和Float16的?
  • float32和float16如何转换?在C++23版本以下标准库是没有f16类型的。
  • Float16不用转换成float32比较,如何直接比较大小?