2025¶
VLLM推理框架中的sleep_mode如何实现
vllm sleep_model 简介
前文torch_memory_saver 高性能 CUDA 内存管理工具实现,介绍了 sglang 中利用了该库将保存 kv_cache 和权重的显存释放出来。
在 VLLM 中也有同样的功能实现,在 VLLM 中的直接应用是“sleep mode”。将模型权重从显存(或者 NPU 内存中)卸载,并丢弃其中的 KV 缓存。
优雅开发篇:git worktree并行分支开发,及一个测量二进程膨胀的rust工具应用
git worktree 是什么?
Git Worktree 是 Git 提供的一个强大功能,允许你在同一个仓库中创建多个独立的工作目录,每个目录可以关联不同的分支(或者 commit),从而实现并行开发而无需频繁切换分支或依赖 git stash 暂存代码 。
C++技法:模板元编程编译期获取类成员数量
C++反射中,有个必要的就是需要获取一个类的成员个数,然后就可以根据个数,将类的成员通过std::tie转换成tuple。继而可以实现equal、hash、serialize等功能。
C++零拷贝反序列化库cista
C++零拷贝反序列化库cista
在阅读Candle(rust的机器学习库)时,看到了rust中利用mmap和Cow机制实现零拷贝反序列化加载模型的tensor。
其中为了解决mmap的数据生命周期为’a, 如果用Cow<’a>引用mmap返回的指针, 使用的生命周期如果超过’a则不能使用,不利于代码开发和引用。因此引入了yoke crate擦除生命周期。
借此,搜索了一下c++的零拷贝反序列化库,找到了cista。
cista零拷贝反序列化库实现之swiss_table–group匹配位运算
Swiss Table中Group的实现解析
这个group
结构体是Swiss Table实现中的核心组件,用于高效处理哈希表控制位的批量操作。
cista零拷贝反序列化库实现之swiss_table哈希表实现
朋友们,大家好!上文我们介绍了C++零拷贝反序列化库 cista,今天接着介绍一下 cista 库的实现。
swiss_table实现原理
可以从cista库的介绍中看到如下内容:
Comes with a serializable high-performance hash map and hash set implementation based on Google’s Swiss Table technique.
swiss table的实现可以参考简单了解下最近正火的SwissTable,讲解的很清晰。
本小节大多数内容是站在巨人肩膀上,引用简单了解下最近正火的SwissTable,加上作者结合cista库的介绍。
以三种实现hashmap的方式,看优缺点:
-
链表法:指针稳定性,能采取扩容之外的手段阻止查询性能退化,比如把过长链表转换成搜索树。缺点:缓存不够友好,冲突较多的时候缓存命中率较低从而影响性能。
-
线性探测法:缓存友好,加上冲突会有连锁影响,没有指针稳定性。
C++技法:如何为一个类动态附加任意类型数据
C++技法:如何为一个类动态附加任意类型数据
在设计一个类时,类的成员就固定下来了。但是某些场景下,需要扩展类的成员,但是又不想改变类的定义。这种情况怎么办呢?