Sirin Schariac

Thinking will not overcome fear but action will.

NVIDIA K8s DRA Driver

GPU管理

关于NVIDIA DRA Driver#gpu-kubelet-plugin 这里主要探讨GPU allocation side,即关于GPU资源动态分配的部分(cmd/gpu-kubelet-plugin)。另外一部分ComputeDomain端主要针对Multi-Node NVLink的拓扑与Pod间资源隔离实现。 对于gpu-kubelet-plugin,其核心作用是在节点上,响应...

NVIDIA K8s Device Plugin

GPU管理

关于NVIDIA Device Plugin 主要的作用包括 向集群上的每个节点暴露GPU数量,将GPU作为拓展资源(nvidia.com/gpu)注册 监控GPU状态 在K8s集群上运行使用GPU的容器 与K8s框架集成的示意图如下: ┌────────────────────────────────────────────┐ │ ...

plugin manager代码走读

插件管理

pkg/kubelet/pluginmanager/plugin_manager.go 整体架构 plugin_manager 的核心是 PluginManager 接口及其实现类 pluginManager,其中核心组件包括: desiredStateOfWorldPopulator(期望状态填充器):由 pluginwatcher.Watcher 管理,负责填充期望的插件状态...

基于缓存卸载的缓存优化

卸载、传输与驱逐的策略设计

基于KV Cache卸载的推理系统设计 《Stateful Large Language Model Serving with Pensieve》基于vLLM的卸载设计。 《Cost-Efficient Large Language Model Serving for Multi-turn Conversations with CachedAttention》提出的策略比较基础,是基本的...

Harbor配置

单节点K8s集群上的Harbor配置

关于Harbor的配置 Harbor主要是用于管理私有镜像库的,这里我记录下配置Harbor过程中遇到的一些问题以及解决措施。 1. 基础准备 我这里服务器采用的是rke2发行的k8s,已经预装了helm,因为校园服务器连不上外网,所以需要自己提前下载Harbor的镜像然后再上传到服务器上离线下载,因此这里说的也是对对应于这种方式。 这里我下载的是harbor-offline-ins...

文件挂载

将/home挂载到新磁盘上

Ubuntu上将/home挂载到新的磁盘上 有时候服务器更新,会插入一个新的大容量磁盘,这时候是希望将主要的用户系统都迁移到这块新磁盘上。有时候这块新磁盘上可能还保留有一部分资料,那么要怎么办? 例如,我们要把/home迁移到新的硬盘/dev/sdb1上。 1. 备份数据 为了避免迁移过程出现问题(断电、其他用户误操作之类的),最好要先进行备份 sudo cp -a /home /...

基于调度的推理优化

负载均衡与公平性的处理

关于调度:我们在做什么 ​ 在前面的博客中,我们讲解了关于推理优化的一些技术和文章。本文将继续针对调度这一专题,介绍相关的工作内容。对于LLM的推理服务中,调度主要关心的目标有两个,一个是负载均衡,即公平性;一个是缓存复用/降低延迟,即局部性/效率性。Virtual Token Counter这一技术,就是公平性一极的工作;SGLang提出的Prefix Longest Match,就是局...

推理优化Survey

针对推理系统的优化调研综述

算子优化 多头注意力Multi-headed attention 相比于传统注意力只注重于一种分析,多头注意力则是通过将多个注意力头组合使用,来分析不同类型的依赖关系。其基础是传统注意力的基础构建块:缩放点积注意力 核心是Q,K,V三个向量: Q表示问询内容,即“我正在寻找什么” K表示所能提供的信息,例如书籍的标题 V则表示实际包含的信息,例如书籍的具体内容 ...

项目开发笔记-5

SpringBoot笔记

什么是SpringBoot?它的作用是什么 SpringBoot是Spring框架下的一个子项目,其作用是旨在简化Spring应用的初始搭建和开发过程,它在Spring框架之上提供了一套开箱即用的解决方法,相当于Spring框架的快速启动的工具包。 其核心特征包括: 约定优于配置:提供了合理的默认配置,减少决策负担 自动配置:根据类路径中的依赖关系自动配置应用程序,减少了手动...

项目开发笔记-4

Java并发编程

并发Concurrent与并行Parallel的区别? 并发是同一时间段内处理多个任务,但不是同时执行,可以通过时间片轮转在单核CPU上实现,也就是说并发是逻辑上的同时进行。 并行则是真正同时执行多个任务,必须有多核处理器或者多个处理器来支持,并行是物理上的同时进行。 Java内存模型 Java Memory Model 内存模型的结构包括: 主内存main memory 所...