摘要:
最近在学习CUDA编程,将最近看到的一些资源进行汇总。 书籍和文档 英伟达CUDA C编程入门 NVIDIA CUDA C Programming Guide https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html 官方的文档 阅读全文
摘要:
以数智重庆.全球产业赋能创新大赛 为例,目标检测的几种常见的做题技巧如下: 针对数据集进行数据提升 a. 需要对数据进行了解,比如有哪些分类,每个分类下各有什么特点,每个分类下的图片尺寸是怎样的,分布是怎样的(长尾分布,类别不均衡)。 b. 数据出现了什么样的问题,应该怎么去解决这些问题。(多样性, 阅读全文
摘要:
由来 无论在使用LLM大模型时,还是使用bert等传统的模型,对字符串进行编码都是必要的,只有经过编码后的字符串才能参与到后面的模型计算。 以下是在transformers库下的编码方式,无论是什么模型,AutoTokenizer隐藏了很多细节: query = 'hello' tokenizer 阅读全文
摘要:
统一内存管理简介 最近和一个朋友聊到了统一内存管理的话题,统一内存是cuda中的一个很重要的概念,通过统一内存管理,用户可以直接使用内存,而不用在意数据在内存中位置,做到透明管理。 统—内存编程模型由CUDA6引入,从开普勒架构开始就可用,但开普勒架构和麦克斯韦架构的GPU提供的统一内存编程功能相对 阅读全文
摘要:
LLM后量化(PTQ)总结及原理实现 weight only per_channel:按照每个channel的方式,计算得到scale和zero参数,通过weight = weight * scale + zero的方式进行还原。 per_channel_group_wise:按照每个channel 阅读全文
摘要:
TRT-LLM部署流程 1. 编译trt-cpp文件 cd TensorRT-LLM/cpp/build export TRT_LIB_DIR=/usr/local/tensorrt export TRT_INCLUDE_DIR=/usr/local/tensorrt/include/ cmake 阅读全文
摘要:
生产者消费者模式下实现多batch延时推理 需求分析 在实际推理过程中为了实现较高的吞吐量和较高的资源利用率,往往会使用多线程来收集多次请求,并组合形成多batch下的模型推理,一种常见的实现便是生产者和消费者模式,其需求如下: 生产者收集提交的请求,消费者对请求进行消费,并将结果返回。 资源是有限 阅读全文
摘要:
LLM采样后处理总结:LLM的后处理的cpp实现 在经过LLM的lm_head之后,会得到[batch, vocab_size]大小的矩阵向量,此时需要对输出的逻辑张量进行采样,除了beam_search的贪心策略,还有repetition_penalty、temperature、top_k、top 阅读全文
摘要:
ControlNet-trt优化总结4:onnx图修改与重建 在这一节中,主要总结网络层面的优化,针对于算子插件优化,主要聚焦于以下几点: 修改onnx图,添加不支持的算子插件 增加前后处理部分,前后处理导出为onnx图 onnx图surgeon 原有的graph中存在大量的GN操作,正常fp32的 阅读全文
摘要:
ControlNet-trt优化总结3:使用multi-stream和cuda-graph构建并行流水线 上节谈到使用TRT-API来构建网络,在这一节中总结一些trick来提升模型的运行效率,这些trick在所有的trt优化中均可使用,主要有以下几点: 使用cuda_graph减少kernel间的 阅读全文
摘要:
ControlNet-trt优化总结2:使用TRT-API从零构建ControlNet网络 在上节讲到,可以通过手动搭建trt网络的方式来重新构造controlnet网络,这样可以避免onnx中间转换过程中的精度损失,也可避免onnx中间转化时的算子被拆解的细碎的情况,对于不支持的算子,也可通过添加 阅读全文
摘要:
vllm kernels分析 接着上一节的架构分析,vllm的csrc目录下有一些手动实现的核函数,在上一节没有具体分析,这节详细来看看。 文件结构 csrc/activation_kernels:对应的silu和gelu激活函数 csrc/attention: 存放的是sq_kv_attentio 阅读全文