Faiss入门及应用经验记录
Faiss入门及应用经验记录 转载:https://zhuanlan.zhihu.com/p/357414033 1. 什么是Faiss? Faiss的全称是Facebook AI Similarity Search,是FaceBook的AI团队针对大规模相似度检索问题开发的一个工具,使用C++编写,有python接口,对10亿量级的索引可以做到毫秒级检索的性能。 简单来说,Faiss的工作,就是把我们自己的候选向量集封装成一个index数据库,它可以加速我们检索相似向量TopK的过程,其中有些索引还支持GPU构建,可谓是强上加强。 2. Faiss简单上手 首先,Faiss检索相似向量TopK的工程基本都能分为三步: 得到向量库; 用faiss 构建index,并将向量添加到index中; 用faiss index 检索。 好吧…这貌似和废话没啥区别,参考把大象装冰箱需要几个步骤。本段代码摘自Faiss官方文档,很清晰,基本所有的index构建流程都遵循这个步骤。 第一步,得到向量: 123456789import numpy as npd = 64 ...
TD lamda和GAE
图解大模型RLHF系列之:人人都能看懂的PPO原理与源码解读 参考:https://zhuanlan.zhihu.com/p/677607581
异步RL框架AReaL
异步RL框架AReaL https://www.zhihu.com/question/1890112252100703430/answer/1890177974956970468 转自:https://zhuanlan.zhihu.com/p/1916441720817714438 一、异步的含义 在本文接下来的表达中,我们用**trainer(后端是deepspeed/fdsp/megatron等)**和 **rollout(后端是sglang/vllm等)**等来分别指代RL训练中做【训练】和【生成】的两个后端。 figure1的左图刻画了【同步RL训练】的流程,具体来说: 假设初始时刻actor的权重为 θ0 rollout使用θ0 ,吃一批prompt,生成对应的response。这批数据中的“每一条”都生成完毕后,rollout停止工作 trainer使用θ0 ,接收这批(prompt, response)数据,进一步生成exp值,进行训练,更新权重为 θ1 trainer将θ1 发送给rollout,rollout使用 ,重复上面的过程 显而易见,【同步RL训练...
TCP连接中ACK,SEQ变化
TCP连接中ACK,SEQ变化 以下是 TCP 连接中 ACK 和 SEQ 交互变化的详细示例(包含完整的三次握手、数据传输和四次挥手过程): 📡 连接建立阶段(三次握手) 客户端 → 服务器 SYN=1, SEQ=X(随机初始序列号) 客户端声明自己的初始序列号 X 服务器 → 客户端 SYN=1, ACK=1, SEQ=Y, ACK=X+1 服务器确认收到 X(ACK=X+1)并声明自己的初始序列号 Y 客户端 → 服务器 ACK=1, SEQ=X+1, ACK=Y+1 客户端确认收到 Y(ACK=Y+1),准备开始数据传输 📦 数据传输阶段 sequenceDiagram participant Client participant Server Client->>Server: SEQ=100, Data="ABC"(3字节) Server->>Client: ACK=103(SEQ=500,ACK号=100+3) Client->>Server: SEQ=103, Data="DEF"(3字节) Se...
github博客换机无缝迁移教程
github博客换机无缝迁移教程 迁移参考(这个迁移教程是不全的): https://blog.csdn.net/qq_43698421/article/details/120407042?fromshare=blogdetail&sharetype=blogdetail&sharerId=120407042&sharerefer=PC&sharesource=a1150568956&sharefrom=from_link 搭建参考: https://yangcheneee.github.io/categories/博客/ 旧电脑如下操作: 123456789101112131415161718## 旧电脑如下操作:bashgit clone $原仓库cd到目录下git checkout -b hexogit push origin hexo:hexo## 在hexo分支删掉除了.git文件之外的其他文件 将原来main分支的下面六个东西复制到下来:_config.ymlpackage.jsonscaffolds/source/themes...
无标题
Value-Based RL中offline policy、off-policy、on-policy 如何区分强化学习中的「在线/离线」与「同策略/异策略」 这两组概念? https://www.zhihu.com/question/1923492665154049281/answer/1923493513200378057 https://www.zhihu.com/question/627726012/answer/3613730093 https://www.zhihu.com/question/627726012/answer/3613730093 offline policy: 也叫Batch RL或者Offline RL 使用条件:在实时互动与环境成本高昂或者危险的情况下使用,或者当有大量现有数据可用时(比如要train一个真实的机器人,每次尝试都可能导致机器人受损,就可以使用模拟器收集大量的行走数据)。 实际上就是从一个静态的数据集去学习,不与环境交互(所以叫离线) 没有exploration 缺点: agent不能实时地从其行动中学习 需要一个高质量、大...
KL散度
KL散度 🧩 KL散度公式解析 图片中的KL散度公式为: DKL(πθ∣∣πref)=∑θπθ(y∣x)logπθ(y∣x)πref(y∣x)=Ey∼πθ(y∣x)logπθ(y∣x)πref(y∣x)D_{KL}(\pi_{\theta}||\pi_{ref})=\sum_{\theta}\pi_{\theta}(y|x)\log\frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)} = E_{y\sim \pi_{\theta}(y|x)}\log\frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)} DKL(πθ∣∣πref)=θ∑πθ(y∣x)logπref(y∣x)πθ(y∣x)=Ey∼πθ(y∣x)logπref(y∣x)πθ(y∣x) 🔍 关键参数解释 π_θ 和 π_ref(核心参数) π_θ: 当前策略模型 带参数θ的神经网络(例如PPO正在训练的策略) 策略的数学表示:π_θ(y|x) = 在状态x下选择动作y的概率 动态更新:通过梯度下降不断优化 π_ref: ...
TOR Leaf Spine交换机
TOR Leaf Spine交换机 Spine、Leaf、ToR 交换机:数据中心网络的三层核心架构 这三种交换机是现代数据中心网络架构(通常称为 Spine-Leaf 架构)的核心组件,主要用于处理东西向流量(服务器之间的流量),替代了传统的三层网络架构(接入层-汇聚层-核心层)。 1. ToR(Top-of-Rack)交换机 - 接入层 位置:位于服务器机柜顶部 功能: 直接连接机柜内的服务器(每个ToR连接12-48台服务器) 提供1G/10G/25G端口连接服务器 提供40G/100G/400G上行端口连接Leaf层 实现机柜内部服务器之间的数据交换 特点: 端口密度高 部署成本低(单机柜部署) 易于维护(故障仅影响单个机柜) 应用场景: 12345[机柜]|-- ToR 交换机 ├── 服务器1 ├── 服务器2 └── ...(其他服务器) 2. Leaf 交换机 - 汇聚层 位置:位于一组机柜的中心汇聚点 功能: 汇聚多个ToR交换机的流量 提供跨机柜通信能力 连接所有Spine交换机(全互连架构) 实...
k8s中通过pod获取gpu使用进程到pod的映射关系
k8s中通过pod获取gpu使用进程到pod的映射关系 背景 该任务的pod为daemonset在集群的每一个节点上,controller pod(只有一个)通过grpc的方式进行调用该daemonset pod获取到该节点上gpu的使用进程到pod的映射关系,传递的参数为使用gpu的pod的id。 该需求涉及到几个部分内容: 如何通过pod id定位到具体的节点 通过controller 的cache机制(包含有pod和node cache)获取到daemonset pod id对应的node ip,在daemonset的pod部分新建grpc server端,根据ip:port构建grpc client即可 如何获取到节点上的gpu->process的映射关系 调用go-nvml即可 如何获取到节点上的process->container的映射关系 调用taskClient container->pod的映射关系? controller cache机制获取到对应的node,然后可以获取到该node上的pod和container,做一层映...
CUDA容器化&Container runtime相关技术梳理
CUDA容器化&Container runtime相关技术梳理 整体结构 CUDA API体系 CUDA Driver API:GPU 设备的抽象层,通过一系列 API 直接操作 GPU 设备,性能好,但编程难度高(需要显式进行device初始化以及context管理等); CUDA Runtime API: 对 CUDA Driver API 进行一定封装,简化编程过程,降低开发难度; CUDA Libraries: 更高层的封装,包含一些成熟的高效函数库。 因此要实现 NVIDIA 容器化,也就是要让应用程序可以在容器内调用 CUDA API 来操作 GPU,一般来讲,就要使容器内应用程序内可调用 CUDA Runtime API 和 CUDA Libraries,容器内可使用 CUDA Driver 相关库。 NVIDIA CONTAINER TOOLKIT 具体结构 GPU 容器底层实现 GPU 容器相关概念 一些背景知识 什么是运行时?什么是高级运行时(high-level runtime)和低级运行时(low-level runtime): 参考:ht...