- 博客(80)
- 收藏
- 关注
转载 Python-3.12 告别 GIL 锁 & 性能原地飞升!
多年以来由于全局解释器锁(GIL)的存在,导致 Python 生态一直就没有真正的多线程,也就是说所有线程都运行在同一个核心上,不管你的 CPU 物理上有多少个核心它只用一个。前面我们提到的两个绕过 GIL 的方案都不太优雅,优雅的解决方案就应该是把 GIL 锁拿掉。这么个老实的程序(不算再多的核心它都只用一个),定然不是我们在 cpu 密集型场景下想要看到的。经过多年的磨合,社区为了临时解决这个 GIL 锁的问题,宏观上大致上有 2 类不同的方案。,不过我们上面的例子不存在不兼容性的事,可以直接测试。
2025-03-26 16:28:47
19
原创 Milvus WeightedRanker 对比 RRF 重排机制
Milvus WeightedRanker 对比 RRF 重排机制下图说明了Milvus中混合搜索的执行过程,并强调了重排在这一过程中的作用。混合搜索中的重排是一个关键步骤,它整合了来自多个向量字段的结果,确保最终输出具有相关性并准确排序。:这种方法通过计算不同向量搜索得分(或向量距离)的加权平均值来合并结果。它根据每个向量字段的重要性分配权重。RRFRanker:这种策略基于不同向量列中的排名来合并结果。Milvus混合搜索通过重排策略优化多向量检索的结果,提高搜索质量。
2025-03-21 17:29:30
784
原创 L2和内积inner dot区别
ip l2 向量相似度对比虽然L2距离在很多场景下更为全面(同时考虑方向和大小),但IP在特定场景(如推荐系统、文本相似度)中依然有不可替代的优势。选择合适的相似度度量方法,需要深入理解数据特性和应用场景需求。考虑因素选择IP选择L2数据特性稀疏数据密集数据计算需求高效率高准确性应用场景推荐系统、NLP图像检索、聚类相似性定义方向相似空间距离在实际应用中,建议通过离线实验对比两种方法的效果,选择最适合特定场景的相似度度量方法。
2025-03-21 17:14:58
864
原创 万字长文梳理2024年的RAG-综述
——转自InfiniFlow,个人认为非常精彩在已经过去的 2024 年,RAG 的发展可以称得上是风起云涌,我们回顾全年,从多个角度对全年的发展进行总结。首先用下图镇楼:对于 2024 年的 RAG 来说,有一系列标志性事件:2024 年在年初被称为“RAG 发展元年”,虽然这并非共识性的说法,但事实证明,全年的进展无愧于这一称号。在LLM 使用的场景中,RAG 自始至终都在扮演着不可或缺的重要角色。然而,自诞生以来关于 RAG 的争论就没有停止过。由上图可以看到,2023 年 RAG 的称呼并不流行,
2024-12-24 16:23:38
985
原创 Python/FastAPI 的并发能力对比
最后,还是觉得有几点放到总结里头的,方便回顾时直接跳到最后方使用 FastAPI 直接用 Uvicorn 启动就行,代码或 uvicorn 方式都行。而不像代码启动 Flask 真的只能用于开发过程,产品环境必须用 uwsgi 或 gunicornFastAPI 的 async API 方法都由 MainThread 调用,因此其中调用的外部耗时方法必须也都是 async,并以 await 方式调用,否则一个请求拦住所有的其他请求。
2024-11-05 15:03:41
2099
2
原创 文本语义分块、RAG 系统的分块难题:小型语言模型如何找到最佳断点?
任务的构建方式对最终结果影响很大。让模型只输出文本块头部,而不是整个文本块,这个策略很关键。因为它让模型更专注于语义转换,而不是简单的复制输入内容,从而提高了边界检测的准确性和分块连贯性。而且,由于生成的文本更少,模型的处理速度也更快了。
2024-11-05 10:42:12
876
2
原创 HTTP、WebSocket、gRPC 或 WebRTC:各种协议的区别
在本文中,我们将介绍一些可以作为开发人员使用的流行通信协议,并探讨不同协议的优缺点。正如开头所说,没有比另一个更好的解决方案,只有一些解决方案更适合特定的应用程序或问题。一些应用程序需要点对点连接,具有低延迟和高数据传输,并且可以接受一些数据包(信息)丢失。有些应用程序可以根据需要轮询服务器,而不需要获取被轮询方的同等数据,有些应用程序需要具有数据可靠性的实时通信,诸如此类。在线多人游戏、消息传递应用程序、博客网站、媒体库应用程序和视频会议软件都有不同的通信和数据需求。
2024-11-04 12:04:17
2028
原创 FastAPI中如果async def和def 路由的区别
原理:**在python 中,使用async def 定义的函数是运行在协程中,而多个协程是在一个主线程中的。fastapi中的async def协程路由处理的请求会全部放在main thread,而def 处理的请求每个都有自己的独立线程,fastapi内部会自动为这两种接口进行对应的处理逻辑 **我们来详细看一下各种情况。本文将使用。
2024-11-04 09:41:40
825
原创 Concurrency and async await - FastAPI解释
关于_路径操作函数_的async def语法以及一些关于异步代码、并发和并行性的背景知识。
2024-11-01 19:20:49
894
原创 flask websocket服务搭建,flask-sock 和 flask-socketio
socket是网络上运行的两个程序之间的双向通信链路的一个端点。这是一个非常低级的东西,其他一切都是在 TCP 套接字之上实现的。WebSocket 是 Web 的标准通信协议。它允许在客户端和服务器之间建立全双工通信通道。Socket.IO 是一种构建的通信协议,提供自动重新连接、基于事件的通知等额外功能。Flask-SocketIO 是 Socket.IO 服务器端协议的实现,作为 Flask 扩展。两个主流框架flask-sock 和 flask-socketio。
2024-11-01 12:03:22
965
原创 DockerUI:一款功能强大的中文Docker可视化管理工具
DockerUI 是由国内开发者打造的一款优秀的 Docker 可视化管理工具。该工具拥有简洁直观的UI界面,可以轻松进行Docker主机管理、集群管理,以及Docker任务的编排等操作。DockerUI不仅展示了资源利用率、系统信息和更新日志等内容,还提供了镜像管理的功能,能够有效清理中间镜像和残留的垃圾文件。其UI设计和功能全面覆盖了Docker的核心操作,让用户无需通过命令行,即可方便地管理Docker环境。DockerUI 主界面。
2024-09-27 14:29:58
1026
1
原创 transformer中为什么使用不同的K 和 Q, 为什么不能使用同一个值?
简单的说,K和Q的点乘是为了计算一个句子中每个token相对于句子中其他token的相似度,这个相似度可以理解为attetnion score,关注度得分。这里解释下我理解的泛化能力,因为K和Q使用了不同的W_k, W_Q来计算,得到的也是两个完全不同的矩阵,所以表达能力更强。但是经过与attention score相乘后,V中每个token的向量(即一个单词的word embedding向量),在300维的每个维度上(每一列)上,都会对其他token做出调整(关注度不同)。
2024-09-26 15:44:21
717
原创 Transformers 中的 Softmax 可以并行加速么?
通过融合前两个计算步骤,降低执行Reduce_max和Reduce_sum等操作的通信开销。利用共享内存来存储临时数据,以减少对全局内存的访问成本。
2024-09-26 11:20:43
831
原创 rag 长文本 Embedding 模型中的“迟分”策略
大约一年前,2023 年 10 月,全球首个支持 8K 上下文长度的开源 Embedding 模型 —— jina-embeddings-v2-base-en。自此,长文本在 Embedding 模型中的应用引发了广泛讨论和争议。一个典型的 RAG Pineline 包括:分块-Embedding-检索-生成。那么,如果行业只需要具有 512 上下文长度的 Embedding 模型,那么训练 8192 上下文长度的模型又有什么意义呢?
2024-08-27 09:27:53
973
2
原创 LitServe:开源!闪电般快速部署AI模型的服务引擎!灵活、简单、企业级(比FastAPI快2倍)
对于高性能 LLM 服务(例如 Ollama/VLLM),LitServe 与 LitGPT 搭配使用或构建自定义 VLLM 类服务器时是理想之选。为了最大限度地提高 LLM 性能,建议使用 KV 缓存等优化(可通过 LitServe 轻松实现)。各种优秀的功能都具备,而不是简单的炒作具有非常。
2024-08-27 09:25:58
884
原创 gradio如何实现修改代码后自动重载运行
每次你重新运行单元格时,Gradio 都会在相同端口和底层web服务器上重新渲染你的应用。文件所在的目录,如果文件发生更改,它将自动重新运行文件。本指南将涵盖这两种方法,因此无论你如何编写Python代码,学习完本指南后,你都能更快地构建Gradio应用。当你使用 Blocks 构建 Gradio 演示时,你可能会发现每次测试更改时都要重新运行代码非常麻烦。问题是,每次你想更改布局、事件或组件时,都需要关闭并重新运行应用,即使用。因此,在完成开发并想在生产环境中运行时,你无需更改脚本,只需使用。
2024-08-23 09:08:49
1338
原创 使用Qwen-Agent将上下文记忆扩展到百万量级 Qwen
我们在本文中介绍了利用智能体扩展模型上下文记忆的关键思路。一旦智能体准备就绪,如何合成数据便显而易见。例如,我们可以招募志愿者与智能体互动,并记录结果来构建微调数据集。此外,我们还可以利用智能体对其他方法生成的数据进行交叉验证,以确保数据质量。此外,用智能体的结果去微调模型,这个思路也适用于其他领域,比如提升模型解决大规模任务的能力。
2024-08-19 14:25:51
1231
原创 LMDeploy 部署 VLMs 的方法与探讨
默认情况下,LMDeploy 会根据算法 repo 提供的对话模版将表示图片的特殊 token 插入到 user prompt 中,但在一些模型中,图片 token 的位置并没有限制,如 deepseek-vl,或者用户需要自定义图片 token 插入的位置。因为复用VLMs上游库关于图像的预处理和视觉模型的推理,且不同的VLM依赖各不相同,出于维护性方面的考虑,LMDeploy 没有把 VLMs 的依赖,比如 timm,flash-attn,放在自己的依赖列表里。(后续考虑移除,相信用户)
2024-08-16 17:52:03
1095
原创 LLM - 长文本总结处理方案_当文档的长度过长时,llm怎样处理
URL:三国演义读后感- 初始化自己的 LLM可以选择开源的 LLM,使用 HuggingFace 的 Auto API 直接加载。- 选择自己的长文进行切分虽然 OpenAI 不能用,但是 TextSplitter 可以用。基于不同的处理方式总结根据上面 Stuff、MR、Refine 和 Map Rerank 的逻辑图实现自己的总结逻辑查看总结效果。不过由于我们本地机器的限制,Mapper 能否并行就看我们能起几个服务了。长文总结是很典型常见的问题,大家有更多想法和意见也欢迎在评论区交流讨论~
2024-08-15 16:52:02
1778
原创 图解大模型计算加速系列:vLLM源码解析1,整体架构
图中左侧是用户使用界面,罗列了上述所说的两种调用方式(注意,如前文所说,做demo用的api server官方已经不再维护了,openai_api_server才是官方推荐的使用方式,user custom server目前还没有实现)。右侧则是开发者界面,不难发现LLMEngine是vLLM的核心逻辑。我们来看开发者界面下的几个函数,先来看**LLMEngine。
2024-08-14 16:08:12
1200
原创 大模型来自面试的体会和分享 2024版
然后做的比较好的有,各种非助手的形态,互联网C端的比如评论区机器人,视频总结摘要,文章总结,搜索总结,从用户量维度看,算是相对成功,也能在很多APP上看到全量开放。基座赛道的分工更细,有强烈的工业化大兵团作战的特点,招聘的画像也非常细分,代码,推理,数学等,恨不得一个能力标签一个负责人,再搭建各自的数据,训练,对齐团队。当然,基座赛道也不都是高枕无忧,常见的问题就是过于螺丝钉了,甚至有些厂,让每个人都负责一小块工作,信息单向流动,有完整认知和可泛化经验的不多,国内的差距逐渐缩小,与国外的差距依然存在。
2024-08-14 16:03:46
441
原创 目前针对大模型进行量化的方法概览
模型量化是指以较低的推理精度损失将连续取值(通常为float32或者大量可能的离散值)的浮点型权重近似为有限多个离散值(通常为int8)的过程。通过以更少的位数表示浮点数据,模型量化可以减少模型尺寸,进而减少在推理时的内存消耗,并且在一些低精度运算较快的处理器上可以增加推理速度。具体如下图所示,[-T, T]是量化前的数据范围,[-127, 127]是量化后的数据范围。
2024-08-12 14:17:52
1877
原创 triton inference server入门1
肯定很多人想知道triton干啥的,学习这个有啥用?triton可以充当服务框架去部署你的深度学习模型,其他用户可以通过http或者grpc去请求,相当于你用flask搭了个服务供别人请求,当然相比flask的性能高很多了triton也可以摘出C-API充当多线程推理服务框架,去除http和grpc部分,适合本地部署多模型,比如你有很多模型要部署,然后分时段调用,或者有pipeline,有了triton就省去你处理显存、内存和线程的麻烦注意,还有一个同名的triton。
2024-08-12 11:50:55
490
原创 突破大模型极限!GLM-4-long百万长文本模型上线bigmodel.cn
最近业务上多了长文本的需求,因为要在prompt里面塞进比较多的rag内容,以供决策,且这些召回的内容,都有可能用到。智谱果然是国产大模型开源事业的排头兵,如果把国产化大模型看成一个整体的话,开源确实会继续整个群体的智力水平和互相交流不断进步,把整个行业的蛋糕越做越大,最终使整个群体收益。“第一个,就是你之前bert时候打比赛中常用的,batch sort方法,让一个batch中的样本尽量对齐,这样需要packing的空间就很少了,提高资源利用率。对了,我刚刚给你说的那些,之前开源的技术报告里都有。
2024-08-11 22:13:16
936
原创 大模型微调到底有没有技术含量
老生常谈的一句话吧:有没有技术含量取决于这个工作你怎么做,尤其是 llm 方向,上手门槛相比传统 NLP 变得更低了。我举一些例子吧,针对大模型微调的几个重要环节,我列举的每一种做法大概率都能完成最终目标,甚至说训出来的模型效果都没什么差别。但对个人能力成长的帮助就大不相同了。
2024-08-11 22:10:08
882
原创 Triton+TensorRT部署Bert文本向量化服务实践
本篇介绍以Triton作为推理服务器,TensorRT作为推理后端,部署句嵌入向量模型m3e-base的工程方案和实现,句嵌入模型本质上是Bert结构,本案例可以推广到更一般的深度学习模型部署场景。推理服务器和推理后端介绍TensorRT+Triton环境搭建Bert模型转化为ONNX中间表示ONNX中间表示编译为TensorRT模型文件Triton服务端参数配置Triton服务端代码实现Triton服务端启动HTTP客户端请求TensorRT前后压测结果对比。
2024-08-10 14:28:24
591
原创 LLM评估有哪些指标? ROUGE 分数、BLEU、困惑度、MRR、BERTScore
此外,它不是一个单一的分数,而是计算召回率、准确率和 F1,这被称为 ROUGE-Recall、ROUGE-Precision 和 ROUGE-F1。(Bilingual Evaluation Understudy,双语评估替补),它评估输出与 Ground Truth 的相似程度(因此与 Perplexity 不同,需要 Ground Truth),主要用于机器翻译问题。***基本 LCS 的问题:***基本 LCS 测量在两个文本中以相同顺序出现的最长单词序列的长度,但不区分连续匹配和分散匹配。
2024-08-10 13:29:06
2600
原创 大语言模型的模型量化(INT8/INT4)技术
由于量化前的激活值变化范围较大,即使对于同一 token,不同channel数值差异较大,对每个 token 的量化也会造成精度损失,但是不难看出较大值一般出现在同一 channel,因此作者也分析了采用 per-channel 的量化方式,这种量化方式能很好的避免精度损失,但是硬件不能高效执行,增加了计算时间,因此大多数量化仍采用 per-token 及 per-tensor 的量化方式。最后,我们再计算与 A 和 B 的最大绝对值向量的外积,并将此与 C 求哈达玛积来反量化回 FP16。
2024-08-09 09:14:15
3537
原创 大模型涉及到的精度是啥?FP32、TF32、FP16、BF16、FP8、FP4、NF4、INT8区别
浮点数精度:双精度(FP64)、单精度(FP32、TF32)、半精度(FP16、BF16)、8位精度(FP8)、4位精度(FP4、NF4)量化精度:INT8、INT4 (也有INT3/INT5/INT6的)另外,实际使用场景中,还有多精度和混合精度的概念假设你每秒钟赚到的钱是1块钱,那一个月的收入是160602430=216000,如果每秒钟赚到1块1呢,那一个月的收入是237600,就一个1毛钱的小数点,让你月收入少了1万多,这就是精度不同导致的差异。
2024-08-09 09:13:18
13271
原创 程序员窃喜!卡了大模型脖子的Json输出,OpenAI终于做到了100%正确
默认情况下,大模型在进行token输出时,可以在词汇表中选择任意一个词汇,作为下一个输出token。而在使用动态的约束解码技术后,大模型在下一个token输出时,便增加了一些约束,将模型限制在有效的token内,而不是所有token。很多人说,为什么非要纠结 JSON 格式的输出,我用的挺好的,啥 JSON 格式都没见过,这种要么就是用的不多,要么就不是做开发的!但很明显,93%的准确率也就意味着7%的不可靠,对于开发人员来说,不是100%的准确就是不够用的,所以OpenAI又用了第二个方法。
2024-08-08 10:12:29
769
原创 大模型无限上下文的奥秘已被揭开
无限(Infini)上下文其实有些标题党博眼球的成分,首先,这里更新记忆的方式并不是无损保留记忆,对于历史信息是有舍弃有保留的。这对于超长文本的推理,仍然可能造成一些遗忘前文关键信息的问题。其次,结构中左边的记忆部分,所占空间也不小。有人戏称,这是在用一个大模型和一个知识库,在做实时RAG。不过这个工作的亮点确实很多,因为这个记忆模块是可插拔模块,可以嵌入到任何大模型中。而且确实在计算量上,实现了线性拓展。
2024-08-07 17:00:19
1156
原创 多图、视频首上端!面壁「小钢炮」 MiniCPM-V 2.6 模型重磅上新!魔搭推理、微调、部署实战教程modelscope
再次刷新端侧多模态天花板,面壁「小钢炮」 MiniCPM-V 2.6 模型重磅上新!该模型基于 SigLip-400M 和 Qwen2-7B 构建,仅 8B 参数,取得 20B 以下单图、多图、视频理解 3 SOTA 成绩,一举将端侧AI多模态能力拉升至全面对标 GPT-4V 水平。更有多项功能首次上「端」:小钢炮一口气将实时视频理解、多图联合理解、多图 ICL 等能力首次搬上端侧多模态模型,更接近充斥着复杂、模糊、连续实时视觉信息的多模态真实世界,更能充分发挥端侧 AI 传感器富集、贴近用户的优势。
2024-08-07 16:58:34
1621
6
原创 消费级显卡,17G显存,玩转图像生成模型FLUX.1!ModelScope
从模型架构上看,FLUX.1和SD3有很多相似之处,都是基于FlowingMatching调度的模型,都通过引入T5来增强prompt的依从性。而比较显著的区别在于:flux模型引入了一种叫DoubleStreamBlock的结构,具体来说在前几层layer中,采用了txt和img embedding独立过各自的transformer块,然后再拼到一起过统一的transformer块,我们推测是为了进一步对齐图像和文本特征,但是这部分还没有更具体的技术报告。风格上,个人认为风格属性一般。
2024-08-06 15:26:21
2266
原创 为什么KV Cache只有KV,没有Q
大家都知道大模型是通过语言序列预测下一个词的概率。假定x1x2x3...xn−1为已知序列,其中x1x2x3, …,xn−1均为维度是dmodel的向量,qnknvn同为向量。当输入xn时,需要预测xn1的概率分布。
2024-08-06 15:21:41
1057
原创 LLama 405B 技术报告解读
LLama 405B 技术报告解读果然传的消息都是真的,meta在24号凌晨发布了llama 3的405B版本,这次还是做一个技术报告解读。值得一提的是,在技术报告的开头,meta特意强调了一个 Managing complexity,大意是管控复杂度。为什么没用MoE却弄个405B的dense?为什么没用PPO只用DPO?meta给的解释是:Managing complexity,大意就是这样简单吧…评测结果如下,这个结果跟当初网上传的那个版本还是有一定出入的,没有到摁着GPT4o锤的程度。况
2024-07-25 09:07:29
1802
原创 大模型中的temperature、topk、topn、repetition_penalty等参数原理
核心就在于采样策略,一图胜千言:上图中(language model) 的预测输出其实是字典中所有词的概率分布,而通常会选择生成其中概率最大的那个词。不过图中出现了一个采样策略 (sampling strategy),这意味着有时候我们可能并不想总是生成概率最大的那个词。设想一个人的行为如果总是严格遵守规律缺乏变化,容易让人觉得乏味;同样一个语言模型若总是按概率最大的生成词,那么就容易变成 XX讲话稿了。
2024-07-23 14:36:50
3801
2
原创 详解 BGE-M3 与 Splade 模型
详解 BGE-M3 与 Splade 模型本文将探索两种先进的 Embedding 模型——BGE-M3 和 Splade,深入解析它们的设计理念和工作原理。01.快速回顾Embedding向量的概念Embedding 向量或者向量表示,是指在高维向量空间中以数值描述表示对象、概念或实体(Entity)。每个 Entity 由一个向量表示,此向量通常长度固定,每个维度反映了Entity 的一个特定属性或特征。Embedding 向量类型主要分为三种:传统的稀疏向量、稠密向量以及“学习到的”(lear
2024-07-16 17:57:42
1374
原创 3万字讲解大模型高效推理清华综述
提示词总结的核心思想是在保持相似的语义信息的前提下,将原有提示词浓缩为更短的总结。这些技术还可以作为提示词的在线压缩方法。与前面提到的保留未裁剪标记的提示词裁剪技术不同,这一行方法将整个提示符转换为总结。RECOMP[34]引入了一个抽象压缩器(AbstractiveCompressor),其将输入问题和检索到的文档作为输入,生成一个简洁的摘要。具体来说,它从大规模的大模型中提取轻量级压缩器来进行总结工作。SemanticCompression提出了一种语义压缩方法。它首先将文本分解成句子。
2024-07-16 13:56:19
1576
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人