Tendis实现
Tendis冷热混合存储方案
技术实现原理
采用异步写回方案同步redis中的数据到后端tendisPlus(基于rocksdb)组件。通过订阅redis的aof日志将数据通过kafka异步写到后端tendisPlus
缓存中保存全量key,数据淘汰到tendisPlus仅仅驱逐value,key还在reidis中。当某个key过期时,redis中触发淘汰,会在aof日志中有一条del记录,通过这条记录删除tendisPlus中的值。设置value-eviction-time值为7,表示7天未访问,会被驱逐到tendisPlus中。
读数据
从 Redis 读取数据 。
如果命中,那么就将数据返回给应用程序。
如果redis中key不存在,则返回数据不存在
如果未命中(key存在但数据已落地),阻塞当前客户端, Redis 负责将 Key 从 Tendisplus 中恢复,然后返回给用户。
写数据
写入 Redis 缓存,成功后返回。
后台异步回刷,将数据持久化到后端 Tendisplus。
监听写入速度,和redis落地和redis差距很大,则阻塞写
潜在常见问题
...
Pi agent源码剖析一:启动流程分析
环境搭建
1. 下载pi-agent
1git clone https://github.com/earendil-works/pi.git
2. understanding-anything方便代码理解
安装参考: https://github.com/Lum1104/Understand-Anything
123PS D:\workspace\pi> cd C:\Users\zhiminding\.understand-anything-plugin\packages\dashboardPS C:\Users\zhiminding\.understand-anything-plugin\packages\dashboard> $env:GRAPH_DIR="d:\workspace\pi"PS C:\Users\zhiminding\.understand-anything-plugin\packages\dashboard> npx vite --host 127.0.0.1
3. codegraph阅读代码节省token
安装参考: htt ...
OpenSpec使用
一、Spec 的前世今生
1.1 什么是规范驱动开发(SDD)
规范驱动开发(Spec-Driven Development, SDD)是当前 AI 编程领域备受推崇的开发方法论。其核心理念是:先写规范,再写代码,用规范约束 AI 的每一步行为。
传统 AI 辅助编码的模式是:
1需求 → AI 写代码 → 检查 → 发现问题 → 重来
而 SDD 的模式是:
1需求 → 生成规范文档 → AI 按规范实现 → 按规范验证
1.2 为什么需要 SDD
AI 编码助手虽然能快速生成代码,但如果没有规范驱动的工作流来约束,容易带来以下问题:
上下文中毒:无关信息污染上下文,导致输出偏离
注意力漂移:长对话中偏离原始需求
质量不可控:AI 随机发挥,缺少统一约束
技术债累积:快速生成但缺乏设计的代码难以维护
SDD 的核心理念是:先想清楚再动手,用文档约束行为,用验证确保正确。
1.3 SDD 的演进
阶段
特点
早期 SRS
需求规格说明书,编码前明确系统行为
形式化方法
Z notation、VDM 等形式化规范语言
敏捷时代
User Story、BDD 中的 ...
vllm源码剖析三:调度器剖析
vLLM v1 调度器深度剖析
目录
调度器概述
Continuous Batching 深度解析
核心数据结构
调度策略与请求队列
调度流程详解
调度器与 Model Runner 的协作
KV Cache 内存管理
抢占机制
特殊场景处理
关键配置参数
源码导读
1. 调度器概述
1.1 什么是调度器?
vLLM 的调度器(Scheduler)是整个推理引擎的"大脑",负责决定在每一次前向计算(forward pass)中:
哪些请求应该被处理
每个请求处理多少 token
如何分配 GPU 内存(KV Cache)
1.2 Continuous Batching 核心思想
vLLM 采用 Continuous Batching(连续批处理) 策略,其核心思想是:
12345传统批处理: [Req1 完成] -> [Req2 完成] -> [Req3 完成] ↓ 等待 ↓ ↓ 等待 ↓Continuous Batching: [Req1, Req2, Req3] 同时处理 ...
vllm源码剖析二:整体架构与调用链深度剖析
vLLM 核心架构与调用链深度剖析
一、整体架构概览
graph TB
subgraph Frontend["前端层 (Frontend)"]
API[API Server]
AsyncLLM[AsyncLLM]
end
subgraph Client["客户端层 (Client)"]
EngineCoreClient[EngineCoreClient]
MPClient[MPClient/AsyncMPClient]
end
subgraph EngineLayer["引擎核心层 (EngineCore)"]
EngineCore[EngineCore]
EngineCoreProc[EngineCoreProc]
InputProcessor[InputProcessor]
OutputProcessor[OutputProcessor]
end
subgraph Sch ...
vllm源码剖析一:启动流程分析
一、启动分析
使用vllm可以通过CLI命令行工具使用,也可以在代码中调用。
CLI启动链路分析
当使用如下命令行启动vllm
1vllm serve Qwen/Qwen3-1.7B --dtype=half
会构造出一个服务来提供请求。具体函数入口可以在pyproject.toml中看到:
12345[project.scripts]vllm = "vllm.entrypoints.cli:main"[tool.pipx]apps = ["vllm"]
1. CLI入口分析
根据toml的命令可知,命令行工具的入口文件为:vllm/entrypoints/cli/main.py,其中主要逻辑是根据请求的参数不同,调用不同模块:
1234567891011121314151617181920# 命令模块列表CMD_MODULES = [ vllm.entrypoints.cli.openai, # chat/complete命令 vllm.entrypoints.cli.serve, # serve命令 vl ...
传统推荐算法-FM
一、FM算法
什么是FM:FM(factor Machine,因子分解机)算法是一种基于矩阵分解的机器学习算法,是由Konstanz大学Steffen Rendle(现任职于Google)于2010年最早提出的,旨在解决稀疏数据下的特征组合问题
背景
什么是稀疏性
假设一个广告分类的问题,根据用户和广告位相关的特征,预测用户是否点击了广告。源数据如下:
Clicked
Country
Day
Ad_type
1
USA
26/11/15
Movie
0
China
1/7/14
Game
1
China
19/2/15
Game
“Clicked?“是label,Country、Day、Ad_type是特征。由于三种特征都是categorical类型的,需要经过独热编码(One-Hot Encoding)转换成数值型特征。
Clicked?
Country=USA
Country=China
Day=26/11/15
Day=1/7/14
Day=19/2/15
Ad_type=Movie
Ad_type=Game
1
1
0
1
0
0
...
dify使用
一、dify基础介绍
Dify 是一款开源的大语言模型(LLM)应用开发平台,使开发者可以快速搭建生产级的生成式 AI 应用。Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的工作流,并同时提供了一套易用的界面和 API。相教于使用langchain这种工具库去开发AI应用,Dify 提供了更接近生产需要的完整方案,可以为开发者节省许多重复造轮子的时间,使其可以专注在创新和业务需求上。
二、dify部署
dify本身就是按照微服务架构设计的,将各个模块通过http进行调用。所以可以单机通过docker compose将多个微服务docker组合进行部署,也可以直接在k8s集群中进行部署。以下通过一次推理分析整个流程:
用户访问暴露的api端口(80)进行访问
首先进入api服务,api服务首先拉去工作流信息、用户信息、聊天日志,这些都存在postgreSql里面。然后启动对应工作流。工作流中遍历各个节点
当节点是llm节点。由于llm是通过插件引入的,所以会通过http调 ...
大模型ReAct-基于langchain框架
大模型ReAct-基于langchain框架
ReAct智能体出自于paper “ReAct: Synergizing Reasoning and Acting in Language Models”
ReAct 是一个将推理和行为与 LLMs 相结合通用的范例。ReAct 提示 LLMs 为任务生成口头推理轨迹和操作。这使得系统执行动态推理来创建、维护和调整操作计划,同时还支持与外部环境(例如,Wikipedia)的交互,以将额外信息合并到推理中。其核心逻辑在于推理+执行,分为如下三个步骤:Thought、Action、Observation。
Thought:由LLM模型生成,要求模型执行之前必须先进行思考。让模型自己规划需要执行什么行为来完成任务
Action:Act是指LLM判断本次需要执行的具体行为。Act一般由两部分组成:行为和对象。用编程的说法就是API名称和对应的入参。LLM模型最大的优势是,可以根据Thought的判断,选择需要使用的API并生成需要填入API的参数。从而保证了ReAct框架在执行层面的可行性。
Observation:LLM框架对于外界输入的获取。 ...
大模型ReAct-基于llamaIndex框架
大模型ReAct-基于llamaIndex框架
llamaIndex的react的系统提示词如下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556react_system_header_str = """\You are designed to help with a variety of tasks, from answering questions \ to providing summaries to other types of analyses.## ToolsYou have access to a wide variety of tools. You are responsible for usingthe tools in any sequence you deem appropriate to complete the task at hand.This may requir ...

