CPU 虚拟化——从 trap-and-emulate 到 VT-x
CPU 虚拟化——从 trap-and-emulate 到 VT-x 本文目标:把 CPU 虚拟化的完整脉络讲透——从 Popek-Goldberg 理论、软件 trap-and-emulate、到硬件辅助 VT-x,再到 KVM 的工程实现。读完你能回答"为什么 x86 早期不能做高效虚拟化"“VT-x 的 root/non-root 是什么”“VMCS 存什么”“一次 VM-Exit 的开销和优化”“嵌套虚拟化怎么实现”。 一、要解决的问题:一个物理 CPU 怎么变成多个虚拟 CPU CPU 虚拟化的本质是:让多个 Guest OS 以为自己在独占一个物理 CPU,实际由 hypervisor(VMM)时分复用一个或多个物理核。 核心难点在于"特权指令"。Guest OS 内核要执行 hlt(停 CPU)、cli(关中断)、改 CR3(切页表)、lgdt(加载 GDT)这些指令——这些指令一旦真在物理 CPU 上执行,会真的关掉中断、真的换掉页表、真的停下 CPU,整机就乱了。所以必须让 Guest 不能直接执行这些指令,或执行后...
虚拟化技术学习路线——从原理到云原生
虚拟化技术学习路线——从原理到云原生 本文目标:给你一条从零到能独立设计/运维虚拟化平台的清晰路径。覆盖 CPU/内存/IO 虚拟化、QEMU/KVM、容器与 namesapce/cgroup、网络与存储虚拟化、云编排,最后落到大模型训练/推理场景下的 GPU 虚拟化与云原生调度。 学习哲学:先吃透"一个虚拟机是怎么被造出来的",再学"容器是怎么隔离的",最后学"云平台怎么把它们编排起来"。原理是地基,工程是楼层,地基不稳楼越高越晃。 学习路线总览(六个阶段) 12345678910111213阶段0 打地基:操作系统与硬件基础 │阶段1 虚拟化原理:CPU / 内存 / IO 三大虚拟化 │阶段2 Type-1 / Type-2 与 QEMU-KVM 全栈 │阶段3 容器虚拟化:namespace + cgroup + rootfs │阶段4 网络与存储虚拟化:virtio / SDN / 分布式存储 │阶段5 云编排:OpenStack / Kubernetes / 调度 │...
RDMA 技术栈全解——ML 系统研发面试通关
RDMA 技术栈全解——ML 系统研发面试通关 本文目标:让你在面试官问"你们大模型训练集群用的什么网络、为什么用 RDMA、RDMA 怎么做到零拷贝、RoCEv2 和 InfiniBand 区别、NCCL 里 RDMA 起什么作用"时,能从原理到工程对答如流。 全文按"为什么 → 是什么 → 怎么用 → 在 ML 系统里怎么用 → 面试问答"组织。 一、为什么需要 RDMA:传统网络栈的瓶颈 先看传统 TCP/IP 协议栈一次发送数据的完整路径(以应用 A 发数据到应用 B 为例): A 应用调用 send(),数据从用户态缓冲区通过 copy_to_user-like 的拷贝进入内核态 socket buffer(第一次拷贝)。 协议栈(TCP/IP)逐层封装报文头,经过内核协议栈处理。 数据通过 DMA 从内核缓冲区拷到网卡(NIC)的发送环(第二次拷贝)。 网卡把数据发到网线上。 B 端网卡收到数据,DMA 拷到内核 socket buffer。 B 应用调用 recv(),数据从内核态拷回用户态(第三次拷贝)。 问题有三...
SQL 语句学习手册——从入门到面试通关
SQL 语句学习手册——从入门到面试通关 本文目标:从零到能在面试里手写复杂 SQL、讲清执行计划与索引优化。按"基础语法 → 多表查询 → 聚合与窗口函数 → 进阶 → 性能优化 → 面试高频题"组织,每段配可运行示例。 全文示例基于 MySQL(最常考),并在涉及 PostgreSQL/标准 SQL 差异处注明。 一、SQL 三大门类 先建立全局观,SQL 语句分三大类: 类 关键字 作用 DDL(Data Definition) CREATE / DROP / ALTER / TRUNCATE 定义结构(库、表、索引、视图) DML(Data Manipulation) INSERT / UPDATE / DELETE / SELECT 操作数据(查增改删) DCL(Data Control) GRANT / REVOKE / COMMIT / ROLLBACK 权限与事务控制 注:严格说 SELECT 属 DQL,但日常归到 DML。TRUNCATE 是 DDL 不是 DML——它是删表重建,不逐行删除,不能回滚,面...
大模型显存计算法则——训练与推理全景图
大模型显存计算法则——训练与推理全景图 本文目标:面试官问"一个 70B 模型 fp16 训练要多少显存?为什么混合精度训练 Adam 优化器要 16 bytes/参数?ZeRO-3 之后能降到多少?推理 KV cache 占多大?"——你能张口就算、并且讲清每个数的来源。 全文以**“算清训练显存 → 算清推理显存 → 进阶优化对显存的影响 → 面试速算题”**为主线。 一、前置:精度与字节换算(所有计算的基石) 精度 1 个参数占多少字节 常见用途 FP64 / double 8 B 几乎不用 FP32 4 B 优化器状态、master weight、科学计算 TF32 4 B(存储同 fp32,计算用 19 bit 尾数) A100 训练加速,存储仍 4B BF16 / FP16 2 B 训练前向/反向权重、推理权重 FP8 (E4M3/E5M2) 1 B H100+ 训练/推理加速 INT8 1 B 推理量化、部分训练激活量化 INT4 0.5 B 推理量化(W4A16、GPTQ/AWQ) INT3 / ...
大模型投机解码与拒绝采样为何无损
大模型投机解码与拒绝采样为何无损 一、为什么需要投机解码 大模型自回归推理(autoregressive decoding)存在一个根本性的性能瓶颈:每次只生成一个 token,且每一步都要把整个模型跑一遍。对一个几十上百层的 Transformer 而言,生成 1 个 token 和一次 forward 把 batch 里所有位置都算一遍,计算量几乎一样——因为推理时 batch size 通常很小(甚至为 1),算力(GPU 的算术运算单元)远没有被喂饱,真正的瓶颈在显存带宽:每生成一个 token,都要把权重从 HBM 读到 SRAM,而权重读取这一步占据了绝大部分时间。 换句话说,现代大模型推理在 decode 阶段是 memory-bandwidth bound(访存受限),而不是 compute bound(算力受限)。GPU 的算术运算单元(FP16/BF16 tensor core)大量空闲,每次 forward 实际上只算出了概率分布里被采样到的那一个 token,剩下成千上万维的概率信息全部被浪费了。 投机解码(Speculative Decoding)正是为...
SkillClaw技能集体进化框架深度代码解析
SkillClaw 技能集体进化框架深度代码解析 摘要 SkillClaw(arXiv:2604.08377)提出了一种让 LLM Agent 的技能在多用户环境中持续进化的框架,核心洞察是:当前 Agent 系统(如 OpenClaw)的技能在部署后基本静态,不同用户重复踩同样的坑、重复发现相似工作流。SkillClaw 把跨用户、跨时间的交互轨迹作为信号,通过"自主 evolver"自动识别模式并更新共享技能库,实现"一次改进,全系统受益"的累积式能力提升。 本文不重复论文摘要,而是直接对照项目源码,回答一篇针对该论文的评审所提出的若干关键疑问:evolver 的算法到底是什么?是否引入了外部验证器作为"认识论锚点"?更新频率和粒度如何控制?技能冲突如何仲裁?错误累积与隐私隔离如何处理?技能库规模增大后检索效率如何保障? 读完本文你会发现:代码基本印证了评审基于摘要的推测,并把其中几个"摘要未说明"的点坐实了——evolver 是 LLM 反思式自举而非 RL,默认路径无外部锚点,冲突仲裁极浅,无...
从SkillClaw到执行锚定自进化:让Agent技能在真实环境中验证、进化、部署
从 SkillClaw 到执行锚定自进化:让 Agent 技能在真实环境中验证、进化、部署 摘要 自进化 Agent 是当前 LLM Agent 领域最前沿的方向之一:让 Agent 从自身的执行轨迹中提炼经验、进化技能(skills),实现跨会话的累积式能力提升。然而,现有工作(SkillClaw、EvoSkill、AutoSkill、EmbodiSkill、Trace2Skill、SkillOpt、SkillLens)普遍面临三大痛点:认识论锚点缺失(LLM 判 LLM,无外部验证)、更新不稳定(ad hoc 编辑,语义漂移)、错误累积(失败模式被固化进共享技能库)。 本文在深度解析 SkillClaw 源码和系统性调研 7 篇前沿工作的基础上,提出 执行锚定技能进化(Execution-Grounded Skill Evolution, EGSE) 框架。核心洞察是:当一个 Agent 的技能本质是可执行的操作流程(如 chaos inject→validate→recover 闭环)时,"真实环境执行"本身就是最可靠的锚点——不需要 LLM 自评,不需...
正则表达式
正则表达式 我来给你整理一份正则表达式常用语法大全,按使用频率和功能分类,附带实战示例: 一、基础元字符(必须掌握) 元字符 含义 示例 匹配结果 . 匹配任意单个字符(除换行符) a.c abc, a1c, a@c \ 转义特殊字符 a\.c a.c 字面量 | 或(选择) a|b a 或 b () 分组捕获 (ab)+ ab, abab, ababab [] 字符类(匹配其中一个) [aeiou] a, e, i, o, u [^] 否定字符类 [^0-9] 非数字的任意字符 - 范围(在字符类中) [a-z] 任意小写字母 二、量词(重复匹配) 量词 含义 示例 匹配结果 * 0次或多次(贪婪) a* "", a, aa, aaa + 1次或多次(贪婪) a+ a, aa, aaa ? 0次或1次(贪婪) a? "", a {n} 恰好 n 次 a{3} aaa {n,} 至少 n 次 a{...
GPFS Fileset 详解:并行文件系统中的精细化运营之道
GPFS Fileset 详解:并行文件系统中的精细化运营之道 在AI大模型训练和高性能计算(HPC)场景中,数据存储系统往往面临着前所未有的压力。成百上千个计算节点同时读写海量小文件或超大文件,对文件系统的性能和可管理性提出了苛刻要求。 IBM GPFS(通用并行文件系统,现称 IBM Storage Scale) 凭借其出色的横向扩展能力和并行访问性能,成为了这一领域的基石。但在日常运维中,一个大麻烦始终困扰着管理员:如何对庞大的共享存储空间进行精细化管理? 答案,就藏在 GPFS 的 Fileset 功能里。 什么是 Fileset? 从用户视角看,Fileset 可能只是一个普通目录。但从管理员视角看,Fileset 是 GPFS 文件系统命名空间中的一个逻辑子树,但在很多方面,它表现得像一个独立的文件系统。 你可以把它形象地理解为一个大型存储池里,可以被独立"关照"和"管理"的容器。 为什么需要 Fileset? 传统文件系统缺乏细粒度的管理手段。当数百个用户或项目共享一个巨大的 GPFS 文件系统时,以下痛点尤为突出: 配额管...
