自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (1)
  • 收藏
  • 关注

原创 vllm源码解析(五):LLM模型推理

self.model_executor.execute_model,调用与vllm耦合后的LLM模型进行推理。这是本篇要讲解内容,我们先来看下模型输入长什么样,execute_model_req:从调度系统中获得,可以用于做推理的seq_groups, 对seq_groups及可用到的各种属性做了封装,暂时不必管都是什么意思,用到时再现场分析。8.1中完成了资源调度工作,接下来该送入初始化好的模型进行推理了。不过vllm对具体模型的又做了多层封装:8.1中模型调用指向gpu_executor:

2024-09-08 22:01:42 1201

原创 vllm源码解析(四):LLM模型权重加载与kv-cache初始化

图来自B站某个视频,发现找不到原视频了!我们先来看下LLM是怎么结合到vllm中的。这是模型的入口,model_path路径指向下载的。可以看到通过from_engine_args来加载,继续往下看from_engine_args输入参数如下:cls(…, 这在本章开头的结构图中也能清晰看到。tokenizer比较简单,这里略过,schedule在第二篇文章中已经讲过。

2024-09-08 13:36:16 773

原创 vllm源码解析(三):块管理(BlockManager)

目前为止,我们提到了很多次物理块的概念,到底什么是块呢?首先来看下物理块block(在块管理器BlockSpaceManager中使用)self,) -> None:# 该物理块在对应设备上的全局block索引号# 每个block槽位数量(默认16)# 在prefix caching场景下使用,其他场景值为-1# 该物理块的hash值是由多少个前置token计算而来的,非prefix caching场景值为0# 该物理块被引用次数。

2024-09-05 21:50:22 972 1

原创 vllm源码解析(二):调度策略分析

你有没有遇到过这种情况,某天,你老板(**调度**)来到你面前,跟你(**running**)说,亲,你的工作饱和吗(**最大吞吐量**),要不要给你再来点?我想你肯定没遇到过。真实的情况是,老板会直接把工作甩你脸上,工作不饱和你就干吧,没时间干(**gpu资源不足或处理数量超出阈值**)就先积压起来(watiing or swapped),有时间再搞。

2024-09-03 23:25:17 963

原创 vllm源码解析(一):整体架构与推理代码

vlllm官方代码更新频发,每个版本都有极大变动, 很难说哪个版本好用.第一次阅读vllm源码是0.4.0版本,对这版圈复杂度极高的调度代码印象深刻0.4.1对调度逻辑进行重构,完全大变样, 读代码速度快赶不上迭代的速度了。现在已经更新到0.5.4, 经过长时间观察,发现主要的调度逻辑基本也稳定了下来, 应该可以作为一个固话的版本去阅读。本文解读依据vllm 0.5.4版本. 没有修改任何代码,大家不必担心夹带私货!打算以五篇文章的篇幅剖析vllm,希望能对大家有所帮助。

2024-09-03 23:08:46 1219

原创 llama-factory训练RLHF-PPO模型

除了ppo, dpo(Direct Preference Optimization:直接偏好优化)也是一种常见的调优手段, 不过多篇paper研究证明性能不如PPO, 在计算资源不足的情况下DPO也是个不过的选择,因为不需要训练奖励模型, 而且训练速度快,效果也比较稳定, 不像PPO那样很容易训崩.其他LLM偏好对齐训练技术还有ORPO,IPO,CPO以及效果看起来很棒的KTO.还有最新发表的RLOO,看起来比PPO更好更易训练.这个领域发展太快, 脑子快不够用了.

2024-06-29 13:47:01 2264 8

原创 并发调用deepseek API,构建多轮对话数据

现在大模型领域非常魔幻一件事,是调用友商开源的大模型构建自己的数据集,大家相互调用, 数据同源导致同样的问题回答内容也差不多,也难怪大家会质疑某些大模型是套壳gpt了,看来只有能积累原始数据的公司才能最终活下来。这里就演示下如何用多进程调用商用大模型构建sft数据集。

2024-06-21 10:26:07 1032

原创 使用Qwen2进行RAG代码实践

前几天qwen2发布, 看与其他模型对比,效果挺棒的。用这个新模型写点东西, 测试下效果, 就测试下rag效果吧。RAG是大模型的补充, 可归类为提示词工程范畴(prompt),旨在扩展大模型中没有的知识. 具有可解释性,难度低的特点.RAG逻辑其实很简单,也不需要微调模型,就是个外挂知识库,但要想达到好的效果,还是需要花心思深究的。: 向量数据库的建设,提取向量的模型的挑选,信息检索方法等允许模型在生成文本时,从外部知识库中检索相关信息,从而提高生成内容的准确性、相关性和时效性。

2024-06-14 14:26:39 3096 6

原创 语言大模型qwen1.5全流程解析:微调,量化与推理

qwen1.5用法与qwen差异很大,代码合入了transformers库中,使用风格变得统一,这种标准化是以后大模型发展的一个趋势吧,就像tokenizer.apply_chat_template统一prompt一样。仅过去一年时间,这个领域的许多技术已经趋向成熟,发展速度真是太快啦,对于我们来说变方便了,同时门槛也变低,可以让更多人进入大模型领域。但从另一个角度看,当大模型研发,部署都能通过已有技术简单高效完成,那算法人员存在的意义又是什么呢,技术搬运工 or 高级调参侠?

2024-06-07 00:01:06 2772 1

原创 tensorrt-llm与vllm的量化性能比较

准备部署lora微调好的语言大模型,有tensorrt-llm和vllm两种加速策略可选,而量化策略也有llm.int8,gptq,awq可用, 怎样的组合才能获得最佳精度与速度呢,这是个值得探讨的问题,本文以llama-factory训练的qwen-7b的lora模型为基准,探究这几个组合对性能的影响。大模型的效果评估是件很难做的事,尤其是对文本生成类的lora模型,比较简单的办法是把生成文本与标签文本用chatgpt去评估打分。

2024-06-04 23:50:46 1648

原创 使用TVM在树莓派部署yolov8模型(三)

tvm易用性是不是限制它推广的主要因素?我觉得是的!踩了无数的坑,在树莓派上部署有无数bug,官方教程,民间教程通通不靠谱。tvm git仓库频繁更新,却没有出一个完善的使用文档,太奇怪了。在英特尔cpu上还很慢,瞬间不想在树莓派上玩了,可能优化参数没配置好吧。记得某位tvm使用者说的话,使用tvm项目周期不可控,对这句话有了更深刻理解,现在只想说,NCNN真香~!出了三篇文章想在树莓派上玩tvm的,暂时不想搞了,以后有机会再把未完的部分补上!

2024-04-17 20:44:33 552 2

原创 使用TVM在树莓派部署yolov8模型(二)

这部分主要记录部署环境的搭建。在电脑或服务器上编译,需要搭建完整的TVM工具链;树莓派上仅负责运行,因此只编译runtime即可。

2024-04-16 12:14:05 633

原创 使用TVM在树莓派部署yolov8模型(一)

从咸鱼淘了一个树莓派4/4G设备,测试一下TVM优化的yolov8模型在嵌入式端的推理速度.

2024-04-14 17:50:09 499

原创 用Gold-yolo模块改进yolov8模型

Gold-Yolo是华为诺亚方舟实验室2023年发布的工作,主要优化检测模型的neck模块。论文上展示的效果挺棒的, 打算引入到yolov8中,替换原有的neck层.目标检测模型一般都是分成3个部分,backbone,neck,head,其中neck部分,主要是类似fpn的结构,将不同层级的特征进行融合。

2024-04-13 11:23:04 2104 7

原创 yolov8模型结构改进方法

根据模块类型,将其添加到对应位置,清晰明了。通过此方法可以快速搭建新模型架构。接下来只需填充配置文件及对应参数就好。具体实施过程,参考下一篇将gold引入yolov8的文章。

2024-04-13 10:51:12 1920

原创 Grounding DINO论文解读与代码调试

该模型2023.4月发布,是较新,效果很好的Open-Set Object Detection模型,很好玩,但直接做zero-shot还达不到工业部署的水平。我对它的整体评价也如GLIP一样。虽然比GLIP有提升,但效果还有继续提升空间。

2024-03-12 15:33:21 4026 2

原创 GLIP代码调试与效果分析

如果图中没有提示词物品, 可能会强行安利一个不能处理太长的句子, 会超出理解范围提示词很重要, 检测不到的物品, 可能换个表达就能检测出来了.作为开集检测模型, GLIP还是非常优秀的, 比如零样本检测. 还可以实现视频检测任务. 快速自动标注等,至于检测精度, 还不能与有监督算法相比.对于工业部署, zero-shot还是算了, 薛定谔的检测结果不太靠谱. 微调后应该会好很多.

2024-03-09 17:36:43 2138 30

原创 RT-DETR模型代码图解分析

RT-DETR很像detr系列发展的成果总结, 对应于yolov4的发布阶段。v4总结之前各种调参工艺,使得yolo系列在当时取得SOTA结果;RT-DETR工作也融合当前detr各种研究成果,使得fps与AP获得与yolov8性能相匹配。源代码使用了torchvision的代码模块,版本必须是, 其他版本都会报错(连0.15.1都会出错论文链接源码链接当前项目链接部分结构图参考。

2024-02-24 16:54:25 7485 21

原创 Multi-attentional Deepfake Detection论文代码复现

原作者放出的代码缺少使用说明, 跑通都很困难. 这里对源码做了修改,主要是两方面:论文链接:论文源码链接:魔改代码链接。

2024-02-23 17:23:25 885 7

原创 记录常用的docker命令(持续更新...)

这是制作镜像, 封装服务并交付的环节. 工作中,项目开发完后, 交付给下一级部门和客户就是通过这种方式.容器内跑程序, 容器外监控整个容器的内存/CPU使用情况, 从而达到性能测试的目的。docker技术很多,但工作中用到的就那么几个, 整理下经常用到的.

2024-02-21 10:10:12 389 1

原创 手撕transformer代码

transformer是nlp领域重要创新,被应用到cv领域后更是迅速火爆,在Python包pyitcast已经实现好了transformer模型,为了深刻理解模型各个细节,这里重新手动实现一遍。重要参考:12345关于理论部分,上面列举参考讲的非常好,我写不出更好的文字解读,就直接推荐别人的吧。

2024-01-18 09:42:59 573 1

原创 手动复现论文Dynamic Inconsistency Learning for DeepFake Video Detection

论文Delving into the Local: Dynamic Inconsistency Learning for DeepFake VideoDetection(以下简称DILD)是STIL(Spatiotemporal Inconsistency Learning for DeepFake VideoDetection)升级版, 同一作者, 两篇论文都来自腾讯优图实验室, 其中STIL有公开源码, 但DILD没有, 详细阅读原文后, 觉得是一个很好的idea, 因此手动复现了论文模型。

2023-09-27 14:44:47 582 10

原创 细说TensorRT C++模型部署4

至此, 关于tensorRT部署 C++部分全部写完了,这份代码是按自己的想法来写, 我认为部署代码就该是这个样子的. 这里放出的代码仅是涉及主体思想部分代码,希望对大家工作有所帮助,篇幅所限,还有很多辅助代码没贴出来, 可以去github看完整代码. 如果在阅读过程有好的建议,请在评论区留言,我们共同进步, 这也是写这个系列博文的初衷.这些仍然是C++代码, 下面使用pybind11封装,在python中调用,pybind11是个很棒的工具,使用方法这里不赘述了。在initEngine中提到的。

2023-09-03 16:36:09 454

原创 细说TensorRT C++模型部署3

设想这样一个场景, python中通过request 请求一次传入66张图片,但batchsize仅设为8,这时需处理9次, 最后一次处理数量为2,当进行到后处理时, flag为True,会获得totalNum=66, 后处理会将每次处理的结果量记录到countPost中, 然后合并到vector变量batchBoxes中. 当totalNum

2023-09-03 16:34:40 379

原创 细说TensorRT C++模型部署2

比如当模型执行到后处理阶段, 预处理和推理都是停止状态. 为提升效率,这里引入多线程方法. 即预处理,推理,后处理各是一个独立线程. 每个线程只处理从前一个步骤接收的数据,处理后放入共享队列, 等下一个节点去取用. 没有数据处理则进入等待状态. 三个线程同时工作, 效率会高很多.该实现类中最主要方法是commit,trtPre,trtInfer,trtPost和startThread, 属性中各种必需的变量和队列,结构体,结构体定义在外部,具体定义在完整代码中有详细说明.

2023-09-03 16:33:54 467

原创 细说TensorRT C++模型部署1

部门有一套多年整合且完善的部署流程,但随着原开发者相继跑路,后来接手者不明白代码意图,新需求在源代码基础上改来改去,一团糟。传到我手里,只能说可以运行,虽然能使用部署代码完成工作,但不敢改,默默祈祷不要出错,不然就是灾难.我理想中的部署架构不该是这样的;代码写的多了,总会形成自己的风格与想法,各种开源架构也见过很多,很想写一份自己风格的部署代码,在此记录下我对AI模型部署的理解与思考。

2023-09-03 16:33:01 617 1

原创 探讨C++ std::queue队列涉及的拷贝问题

结果表明, job每次都会创建新的, 拷贝到队列时会调用拷贝构造函数, 一次for循环结束时会析构掉. 每次for循环都是如此, 认为这样的效率比较低下. 同时, job的生命周期只在for中,因此pop时的job1 变量地址会与job相同.在上述测试二中,把job的生命周期限制在一个作用域中,在作用域结束后变量job释放空间, 那么创建job1会在已释放空间上创建, 注意测试一与测试二中地址的变化.从最后打印结果也可知, job,job1两个变量是在程序结束时析构的. 测试代码二给出这点证明.

2023-03-23 11:08:36 1816

原创 win10 wsl2 cuda opencv tensorrt安装与clion pycharm环境配置(二)

tensorRT的安装简单,实际上就是指定下搜寻路径从官网找到适合自己的版本. 这里我使用8.5.1版本添加环境变量最后验证tensorRT安装是否正确出现才算安装成功. 第一次装的TensorRT-8.4.1.5版本,显示FAILED, 在加速代码中能运行,但怎样也得不出正确结果.大概率是cuda-11.6与TensorRT-8.4.1.5不兼容.TensorRT的使用有很多坑,参考我的另一篇使用踩坑记录。

2023-02-21 17:31:17 498

原创 win10 wsl2 cuda opencv tensorrt安装与clion pycharm环境配置(一)

自己电脑装的是windows系统,公司电脑也是win系统,可是平时的模型训和部署却是在linux服务器上进行。使用pycharm和vscode,clion可以连接远程解释器开发,又会涉及时更新延迟等问题。能否在不装linux系统情况下, 也能使用linux环境做研发呢?因为要使用gpu,所以不能使用vmvare虚拟机,因为不能显卡透传。这里我使用WSL2技术,在win10环境下搭建linux开发环境wsl2最低版本要求是 Windows 10 version 1903 及更高。

2023-02-21 17:19:47 748

原创 C++ filesystem常用操作总结

【代码】C++ filesystem常用操作总结。

2023-02-09 19:21:14 1092

原创 记录TensorRT使用时发现的问题和解决方法

TensorRT常见使用问题

2023-02-06 09:24:05 4609

原创 C++文件操作

记录C++操作文件步骤, 方便以后直接复用。

2023-01-09 14:27:20 59

原创 记录一些经常使用却又记不住的linux命令

常用linux命令

2022-12-06 15:19:26 160

原创 目标检测算法1:FasterRCNN tensorflow-keras源码解读

FasterRCNN tensorflow-keras源码解读提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录FasterRCNN tensorflow-keras源码解读前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言faster-frcnn 运行运行流程已有很多优秀的文章解读,这里给出网络的训练,预测代码的解读流程.

2021-04-24 23:19:54 1422 3

原创 数据结构与算法(一):图解递归

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档图解递归一、pandas是什么?二、使用步骤1.引入库2.读入数据总结通俗地讲,递归即调用函数自身,很容易让人想到俄罗斯套娃。但代码写出来又很让人不解,一个函数调用另一个函数很好理解,但调用自身什么鬼?因为这不是人类能轻易想象的结构。递归是用栈来实现的,画出函数的进栈出栈图可以清楚看出其执行过程。这里我们不适用栈,而从程序自上而下的运行流程中理解。我们从一下两点分析递归:1、退出条件:必定有一个条件能结束递归,否则会死循环。函数的

2021-04-20 13:16:04 578

原创 起点

写给以后一直以来,经常浏览各种技术文档, 只获取,却从未分享过。现在终于有机会停下脚步,整理下自己的知识体系与工作经验,陆续会写点东西吧。知识的价值在于分享,若以后写的内容对大家有些许帮助,不胜荣幸!...

2021-04-12 19:37:28 76

安川最新系列YRC1000使用说明书

安川最新系列YRC1000使用说明书

2018-11-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除