自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Agent实战(五)MCP的demo

Model Context Protocol(MCP)是一种开放协议,旨在为AI模型与其运行环境之间建立标准化的通信机制。通过MCP,AI模型可以发现和使用各种工具、资源和提示词,从而扩展其能力边界。标准化接口:提供统一的API规范,便于不同组件间的互操作可扩展性:支持自定义工具、资源和提示词的添加多传输协议:支持多种通信方式,包括HTTP、SSE、stdio等安全性:通过明确定义的接口控制模型对系统资源的访问FastMCP是一个基于Python的MCP实现框架,它大大简化了MCP服务的开发过程。

2025-12-02 21:07:49 779

原创 Agent实战(四)深入理解Agent从输入到输出的信息流

我们需要了解,当我们给Agent输入一个query时,它会经过哪些处理,最终得到输出呢?通过了解这整个过程,可以使我们对Agent有一个更深入的理解。@tool"""发送邮件 - 该工具可以发送电子邮件给指定收件人Args:to: 收件人邮箱地址或姓名subject: 邮件主题body: 邮件正文内容"""email = {"to": to,# ...邮件发送逻辑print(f"📧 工具执行: send_email(to='

2025-11-27 16:53:03 931

原创 RAG实战(七)使用 LlamaIndex + Qwen 微调 BCE 中文嵌入模型

基于本地 PDF 文档,利用 Qwen 大模型自动生成问答对,并微调开源中文嵌入模型 bce-embedding-base_v1,打造适用于特定领域的高精度语义检索系统。:全程使用(Qwen + BCE),无需联网调用 API;完整支持中文场景;适配 LlamaIndex RAG 流程。

2025-11-25 12:19:39 661

原创 Agent实战(三)Agent的短期记忆

✅基础记忆:通过实现跨轮次状态保持;✅智能裁剪:利用中间件动态精简上下文,避免 token 耗尽;✅主动遗忘:按需删除敏感或冗余信息,提升安全性与效率。这些能力使得 Agent 不仅“聪明”,而且“可靠”——既能记住重要信息,又不会被冗长的历史拖累。

2025-11-24 14:37:56 473

原创 Agent实战(二)构建智能体的完整实践指南:工具调用、错误处理、动态模型选择与记忆扩展

工具执行可能失败(如除零错误)。我们可以通过中间件拦截异常并返回友好提示。try:str)",@dataclassAgent 默认记住对话历史(messages),但我们还可以添加自定义字段,如user_info。本文通过六个递进式实验,系统性地展示了 LangChain/LangGraph 框架下构建高阶 Agent 的关键技术路径。能力维度技术实现机制核心价值典型应用场景工具集成与推理链编排通过@tool。

2025-11-24 12:34:23 830

原创 在 FastAPI 中高效处理阻塞任务:利用 ThreadPoolExecutor 实现异步非阻塞操作

通过使用,我们可以在 FastAPI 应用中有效地处理阻塞任务,确保应用的响应性和并发处理能力。这种方法不仅提高了应用的性能,还使得代码更加清晰和易于维护。Uvicorn 是一个超快的 ASGI 服务器,专门用来运行像FastAPI或Starlette这样的异步 Python Web 框架。ASGI= 异步 Web 服务器接口(类似 WSGI,但支持 async)Uvicorn 基于uvloop(比标准 asyncio 快很多)和httptools它能高效地处理成千上万的并发连接。

2025-11-23 16:39:59 916

原创 Agent实战(一)Agent、LangChain、LangGraph和LangSmith

特性LangChainLangGraph核心定位快速构建功能完善的LLM应用框架为智能体设计复杂控制流的运行时主要目标开发效率与标准化,提供开箱即用的组件精细控制与灵活性,支持定制化工作流擅长场景通用AI应用(如聊天机器人、文档问答)复杂、有状态的自主智能体(如模拟、多步推理)类比提供了一套完整的乐高积木和搭建手册提供了设计和连接复杂齿轮与传动系统的工具关系提供了智能体的核心组件(工具、记忆等)基于 LangChain 的组件,为其增添复杂逻辑和流程控制。

2025-11-22 23:58:10 629

原创 TensorRT介绍

TensorRT,由NVIDIA精心打造,是一款专为深度学习推理任务设计的高效优化工具。它能够显著降低应用的延迟同时提升处理速度,是大规模数据中心、嵌入式设备以及自动驾驶技术等领域推理加速的理想选择。TensorRT的兼容性广泛,支持包括TensorFlow、Caffe、Mxnet和Pytorch在内的主流深度学习框架,与NVIDIA GPU的结合使用,实现了在各种框架下的快速且高效的模型部署。本章参考。

2025-11-14 18:04:27 369

原创 RAG实战(六)RAG的评价指标

检索指标是原因,答案指标是结果。一个检索指标很差的系统(比如命中率低、mAP低),几乎不可能生成出高忠实度、高正确性的答案。在实际评估中,通常会结合使用这两类指标:先用检索指标诊断检索器的问题(如Embedding模型不好、分块策略不佳、排序模型失效)。再用答案指标评估整个端到端系统的最终效果。

2025-11-13 18:14:17 987

原创 RAG实战(五)重排序与查询集成

重排序: 使用交叉编码器提升精度RRF融合: 简单有效的结果融合方法多查询: 提高召回率混合检索: 结合向量和关键词检索# 技术选择指南"快速原型": {"策略": "simple","说明": "简单向量检索","适用": "快速验证想法,数据量小"},"生产环境基础": {"策略": "hybrid","说明": "混合检索(向量+BM25)","适用": "大多数生产场景,平衡速度和质量"},"高召回率": {"策略": "multiquery",

2025-11-13 16:46:09 730

原创 RAG实战(四)高级索引与检索策略

在前面的章节中,我们学习了查询优化和路由技术。但是,检索质量不仅取决于查询,还取决于如何组织和索引文档。本章将深入探讨高级索引和检索策略。基础索引的局限性问题1: 文档过长问题2: 上下文丢失问题3: 多语义内容问题4: 检索冗余文档分块(Chunking)是将长文档切分成更小片段的过程。好的分块策略能显著提升检索质量。方法1: 固定长度分块方法2: 句子级分块方法3: 语义分块 ✅ 推荐1.1.3 普通文本分割器运行结果:1.1.4 语义分块处理流程:运行结果:1.1.5 分块最佳实践

2025-11-13 16:08:19 616

原创 RAG实战(三)路由与查询构建

智能数据源选择:根据查询意图自动选择最相关的数据源性能优化:避免查询所有数据源,提高检索效率结果质量提升:确保查询在最适合的数据源中执行系统可扩展性:支持轻松添加新的数据源import re"""自定义自查询检索器(适配vLLM配置)""""""调用vLLM模型进行查询解析"""top_p=0.9,return """""解析自然语言查询,生成过滤条件"""# 构建元数据字段描述f"-

2025-11-13 15:21:13 586

原创 RAG实战(二)RAG查询优化

在基础RAG系统中,我们使用单一查询进行检索。但在实际应用中,用户的查询往往存在表达模糊、角度单一或过于笼统的问题。本章将介绍多种查询优化技术,让你的RAG系统能够更准确地理解用户意图。用户查询: “机器学习是什么?”问题分析:查询优化的核心思想:通过生成多个角度的查询、重写查询或分解复杂查询,增加检索到相关文档的概率。1.2 技术概览本章将介绍5种主要的查询优化技术:输出:1.4:Multi-Query - 多角度查询1.4.1 核心思想Multi-Query技术通过LLM生成原始查询的多

2025-11-13 13:21:44 640

原创 RAG实战(一)构建QA系统

策略优点缺点适用场景字符分块简单、快速易切断语义,质量差快速原型、非关键任务递归分块✅语义友好、高效、通用基于字符,非 token 精确大多数 RAG 项目推荐Token 分块精确控制 token 长度依赖 tokenizer,可能断句对接特定 LLM,严格 token 限制语义分块语义连贯性最佳计算开销大,速度慢高精度检索(法律、科研等)接下来,我们将把分块后的文本转换为向量,并存入向量数据库,为检索阶段做准备。当然可以!以下是为你 RAG 实战博客撰写的。

2025-11-13 11:18:02 1062

原创 模型训练(五)分布式训练之DP、DDP、DeepSpeed ZeRO技术

问题类别具体描述优点- 基于多进程架构,避免 Python GIL 限制,训练更稳定高效。- 使用高效的 All-Reduce(如 NCCL)进行梯度同步,通信带宽利用率高。- 支持单机多卡和多机多卡训练,扩展性强。- 各 GPU 显存占用均衡,无主 GPU 瓶颈。- 与torchrun等标准工具链无缝集成,是 PyTorch 官方推荐方案。缺点- 每个进程需加载完整模型副本,显存开销大,难以直接训练超大规模模型(如百亿参数以上)。

2025-11-13 00:05:23 789

原创 大模型学习(十二)vLLM的实现原理

在大语言模型的推理过程中,生成文本并非一蹴而就,而是分为多个阶段并涉及多种优化策略。其中,Prefill(预填充) 和 Decode(解码) 构成了推理的基本流程:前者高效处理用户输入的完整提示(prompt),后者则逐个生成输出 token。而在需要生成多个候选结果时(如提高回复质量或多样性),系统会采用 Parallel Sampling(并行采样) 或 Beam Search(束搜索) 等策略。

2025-11-12 21:46:01 864

原创 大模型学习(十一)LoRA与QLoRA

LoRA(Low-Rank Adaptation,低秩适配)是一种高效微调大语言模型(LLM)的技术。。通过这种方式,LoRA 仅需训练极少量参数,就能在下游任务上达到接近全参数微调的性能,同时显著节省显存、计算资源和存储成本。因其高效、灵活且易于集成,LoRA 已成为大模型适配(如指令微调、领域迁移)的主流方法之一。如上图,我们在进行模型全量微调时,是对左边的(1024*512)的矩阵进行微调,微调过程是:通过反向传播会得到与左边矩阵同样大小的梯度矩阵,然后对原矩阵进行更新。

2025-11-12 18:25:17 977

原创 大模型学习(十)注意力机制之MHA、MQA、GQA

自 Transformer 架构提出以来,多头注意力()凭借其强大的并行建模能力成为标准配置。然而,随着模型规模不断扩大、上下文长度持续增长,MHA 在推理阶段暴露出显著的内存与计算瓶颈——尤其是其庞大的KV Cache开销,严重制约了部署效率。为平衡模型性能与推理成本,研究者相继提出了多种注意力变体:多查询注意力()通过共享单一Key和Value头大幅压缩缓存,显著提升生成速度;而分组查询注意力()则在MHA与MQA之间取得折中,在几乎不损失模型质量的前提下,有效降低内存占用并加速推理。

2025-11-12 16:57:01 1044

原创 大模型学习(九)KV Cache

本节内容参考KV Cache,键值缓存)是大语言模型(LLM)在自回归生成过程中用于加速推理、避免重复计算的一种关键技术。在的解码阶段,模型每次生成一个新token时,都需要计算从第一个token到当前所有token的自注意力(如果不做优化,每生成一个新词,就要重新计算之前所有token的Key(K)和Value(V)向量,导致时间和内存开销随生成长度平方级增长。KV Cache的核心思想是:将已生成token对应的K和V向量缓存起来,在后续生成中直接复用,只需计算新token的K、V并拼接到缓存中。

2025-11-12 16:21:21 842

原创 Vision-Language Models(VLM)学习(三)复现OpenAI的CLIP模型

前面已经学习了CLIP模型的原理,本节就基于MNIST手写数字数据集实现一个CLIP模型。这里是实现了两种任务,第一种就是分类任务,第二种就是通过图片相似度实现以图搜图的任务。对应的图片,此时在计算Loss时,会强制认为。向量,经过编码得到特征,也是一个长度为。是匹配的),所以会导致模型“脑裂”。经过卷积操作后,通过。构成的,首先输入的就是一个长度为。进行编码,然后进行矩阵乘法操作。也是匹配的,但是这时模型强制认为。是匹配的,从而打压模型对。将特征展平,然后用一个。是同一个标签,假设是。

2025-11-12 15:11:24 190

原创 Vision-Language Models(VLM)学习(二)CLIP模型训练原理

原因就在于 CLIP 的训练数据主要来自互联网图像和文本对(如网页上的图片和标题),其风格和内容偏向于自然场景、日常物体等,而 MNIST 是一种高度结构化、低分辨率、黑白线条构成的手写数字图像,与 CLIP 训练数据的视觉风格差异巨大。前文说过,在对 CLIP 做 zero-shot 预测时,我们的文字标签是一个闭集(closed set),模型输入一张可能从未见过的图片,然后从这个预定义的标签集合中找出最匹配的一个,而不是去预测一个全新的文字标签。,比如给一张图片,输出一段关于这个图片的描述;

2025-11-12 13:42:41 1006

原创 Vision-Language Models(VLM)学习(一)原理

与传统的单模态模型(如仅处理图像的卷积神经网络或仅处理文本的语言模型)相比,VLM通过学习视觉和语言之间的关联,能够处理更复杂的任务。例如,VLM可以根据图像生成描述性文本(图像描述),回答基于图像的问题(视觉问答),甚至根据文本生成图像(多模态生成)。例如,CLIP(2021年由OpenAI发布)通过学习图像-文本对,展示了强大的零样本图像分类能力,超越了许多专门训练的视觉模型。需要注意的是,输入的数据包括(图像、问题和答案),在计算损失的时候,的编码特征,因为这是之前预训练过的,并不认识来自。

2025-11-12 11:18:37 404

原创 模型训练(四)梯度累计Gradient Accumulation

但当 batch size 很大时,中间激活和梯度会占用大量显存,可能超出 GPU 显存。当batch size很小,比如为1时不会超过GPU显存,它会每训练一个样本,然后计算一次梯度,由于样本之间的差异很大,导致更新的梯度忽大忽小不可控,导致训练过程不稳定、收敛缓慢,甚至无法收敛。得到平均梯度,然后一次性更新模型参数,从而在不增加显存占用的前提下,获得大。都是参数,他们会在反向传播的过程中会进行更新。的前向/反向计算,累积梯度,对梯度除以。在这个过程中,模型的参数例如。的梯度,在更新的时候,应该要取。

2025-11-09 20:35:31 343

原创 模型训练(三)激活值检查点Activation Checkpoint

在标准的反向传播中,所有中间层的激活值(即前向传播的输出)都需要保存在显存中,以便计算梯度时使用。激活值检查点的核心思想是:不在前向传播时保存所有中间激活值,而只保存部分关键层的输出(称为“检查点”);在反向传播需要某段中间激活时,临时从最近的检查点重新执行前向计算来恢复,用时间换空间。)启用激活值检查点(Activation Checkpointing),以在训练时节省显存。,即按常规方式完成前向传播,所有中间激活值都会被保存在显存中,供后续反向传播使用。的前向计算(从保存的输入开始)来重建所需激活值。

2025-11-09 20:05:14 269

原创 模型训练(二)AMP自动混合精度训练

同时,为防止 FP16 表示范围有限导致梯度下溢(变为零),它使用 GradScaler 对损失值进行放大(如乘以1024),使反向传播产生的梯度落在 FP16 的有效范围内;整个过程由框架自动管理哪些操作使用 FP16、哪些必须保留 FP32(如 BatchNorm 或 softmax),从而在几乎不损失模型精度的前提下,显著提升训练速度并降低显存消耗。AMP(Automatic Mixed Precision,自动混合精度训练)是一种在深度学习训练中加速计算并节省显存的技术,同时几乎不损失模型精度。

2025-11-08 11:31:42 458

原创 模型训练(一)分布式训练之DDP

作用是创建一个同步屏障,所有进程必须在此处等待,直到所有进程都到达这个点才能继续执行。它的核心思想是:将大批次数据拆分到多个GPU上,每个GPU计算部分梯度,然后聚合梯度更新模型,确保每个模型的权重都是一样的,然后再进行下一个epoch的训练。接下来需要建立多GPU/多机器间的通信网络,让所有训练进程能够互相识别和通信,这是是DDP分布式训练的核心初始化部分。DDP(分布式数据并行)​ 是PyTorch的分布式训练框架,用于在多个GPU/机器上并行训练模型,大幅提升训练速度。,DDP会自动同步模型参数。

2025-11-08 00:10:43 420

原创 大模型学习(八)大模型微调之DPO训练

其中学习模型是被训练优化的模型,学习生成更好的回答。参考模型是保持初始行为,防止模型"遗忘"或"跑偏"PO(直接偏好优化)​ 是一种无需训练奖励模型的强化学习算法,专门用于对齐大语言模型与人类偏好。感觉还没有拟合,第二个问题回答不对。训练的过程中只更新pi模型的权重。方法,跟之前的一样,只是多了。

2025-11-07 23:13:14 291

原创 大模型学习(七)大模型微调之SFT训练

注意力掩码(Attention Mask)​ 是Transformer模型中非常重要的组件,用于控制模型在处理序列时应该关注哪些位置。表示模型支持的最大上下文长度是 32,768 个 tokens,超长会被截断。是基于通义千问模型提供的微调代码进行微调的,现在是手写一个微调的代码,相对来说更底层,感受一下大模型微调。它的核心思想就是只预测大模型的输出内容,这个效果是通过。这段代码是专门服务于Qwen模型的SFT(监督微调)训练的它的输入是。这段代码是将对话格式转换为模型期望的ChatML文本格式。

2025-11-07 22:46:05 773

原创 大模型学习(六)大模型微调之理论篇

一般来说,大模型的训练分为三个部分:(1)预训练。(2)监督式微调。(3)强化学习。

2025-11-07 16:14:01 277

原创 Text2SQL(二)Vanna源码解读之train和ask

本节源码基于。由上一章节可以知道Vanna主要由两个函数起作用,第一个是train函数,第二个是ask函数,这两个函数都封装在VannaBase类中。

2025-11-07 15:38:56 1040

原创 Text2SQL(一)Vanna项目实践

Vanna 是一个基于 MIT 许可的开源 Python RAG(检索增强生成)框架,用于 SQL 生成和相关功能。它允许用户在数据上训练一个 RAG “模型”,然后提问问题,这将生成在数据库上运行的 SQL 查询语句,并将查询结果通过表格和图表的方式展示给用户。详细介绍参考。

2025-11-07 12:04:09 759

原创 ONNX Runtime推理框架

这一章节的学习在的代码上进行实验。关于什么是ONNX,可以参考,总的来说就是:(1)ONNX 允许开发者将模型从一个框架导出,然后在其他框架或推理引擎中运行。(2)提供更快的推理速度和更低的延迟。(3)支持动态计算图和静态计算图,可以灵活适应不同的推理需求。(4)支持多种数据类型,包括浮点数(FP32、FP16)、整数(INT8、UINT8)等,方便针对不同硬件进行优化。值得注意的是,onnx构建静态图有两种方式,第一种就是模型的结构是永远固定的,在处理过程中没有if,for等控制流,使用trance。

2025-11-06 18:14:21 585

原创 复现Mixture of Experts(MOE)架构

所以可以反过来思考,experts数量是固定的,我们可以对experts进行遍历,从第一个expert开始,看那些想了选择了第一个expert,然后将该向量输入到第一个expert的模型进行推理,然后将结果存放到y的对应位置。MoE更像是一种思想,它的处理流程是:假设有n个专家,输入向量x,经过一个门控网络(Gating Network)生成n个概率,取top_k个概率对应的专家执行对x的推理,然后进行加权融合。接下来是将x输入到对应的experts进行推理,这里有一个巧妙的设计,对于x来说,它的第一维。

2025-11-06 16:52:14 674

原创 大模型学习(五)asyncio+uvicorn+fastapi+threadpool

的作用是允许工作线程安全地与主线程的事件循环交互,确保回调函数在正确的线程(事件循环所在的线程)执行。其中获取当前asyncio事件循环。

2025-11-06 10:28:37 453

原创 大模型学习(四)LangChain实现RAG检索增强

它的逻辑就是首先将query传入到检索器中,检索到5个最相关的向量作为context,然后依次传入query和chat_history,再将这三个内容传入到full_chat_prompt,构建起一个完整的Prompt,最后输入到我们的chat模型得到输出。一共432段文字,chunks列表里面存放的就是Document类数据,它包括page_content(也就是我们需要的文字),和meta信息,例如。这段代码先加载向量库,然后将向量库作为一个检索器。这里指定top_k为5,返回5个最相关的向量。

2025-11-05 20:22:00 905

原创 大模型学习(三)从零打造HTTP并发推理服务

是Python 的异步编程模型。允许在单线程中并发处理多个 I/O 操作(比如等待网络、文件、数据库)。

2025-11-05 17:30:49 741 1

原创 大模型学习(二)大模型vLLM推理

首先查看Qwen的只需要加载分词器,模型以及一些配置信息等,即可对话大模型了。可以看到上述对话中,不断将history传入到模型中,实现一个多轮对话的效果。但是当前的情况下只适合单机一个人使用,此时你传入的字符串,会经过chat方法映射成tokenID序列交给模型推理;当把模型交给推理服务端,作为一个服务的时候,此时将没有chat方法了,只会加载模型本身,模型的输入就是tokenID的序列。当我们在服务端是需要加速模型推理时,可以使用vLLM。

2025-11-05 13:31:26 770

原创 大模型学习(一)通义千问1.8B大模型微调

本人双非硕,硕士课题研究机械臂抓取相关的工作,秋招两个半月,投递简历500+,笔试测评若干,面试10+,到手小厂视觉算法岗offer一个。奈何算法太吃bg了,准备转大模型开发,这个专栏用于记录我的大模型学习记录。,老师讲的很不错!

2025-11-04 22:52:06 698

原创 ROS2_Moveit2_Ur5e_Grasp项目详解(十):tracker.py详解

项目的主线已经差不多介绍完毕了,接下来都是介绍一些支线代码。在前面的代码中,可以看到里面引入了一个目标跟踪tracker的代码。所以本节就来了解一下tracker.py。目标跟踪在本项目中的作用:在多目标场景中,目标跟踪确保每个目标都有唯一的ID标识,这样机器人可以按照预定顺序(如从左到右)依次抓取目标,而不会混淆不同目标。这对于实现有序抓取任务非常重要。当目标被短暂遮挡或检测算法在某些帧中未能检测到目标时,跟踪器可以基于先前的状态预测目标位置,保持对目标的跟踪,直到目标重新被检测到。

2025-08-06 17:54:57 1034

原创 ROS2_Moveit2_Ur5e_Grasp项目详解(九):u5re_gripper.h详解

demo.cpp中调用了ur5e_gripper.cpp中实现的多个方法来完成机器人控制任务。这表明demo.cpp和ur5e_gripper.cpp被编译成同一个可执行文件demo。ur5e_gripper.cpp是实现文件,包含了这些方法的具体实现。接下来介绍private私有函数,这些是类内部使用的资源和回调函数。a. 加载ur5e_gripper_control包。在前面的cpp操作文件中可以看到都引用了头文件。b. 查找并执行名为demo的可执行文件。四个文件之间的关系。最后介绍私有成员变量。

2025-08-06 17:54:34 831

UR5e的三维模型文件,适用于SolidWorks打开

UR5e的三维模型文件,适用于SolidWorks打开

2025-04-21

答题系统V2.0.zip

JAVA写的答题程序,使用很方便,优点:有计时计分功能,缺点是只能够使用单项选择题。题目可以自己导入,代码也不难看懂。

2020-09-06

空空如也

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

TA关注的人

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