主页

bsdiff 二进制diff库

简介 提供两个文件的 binary diff 的patch 补丁 Patch 的数据结构 Control Data: 补丁过层指导 Diff Data: 新旧两个版本文件的差异 Extra data:在新文件里完全没有的data 基于stream的设计 通过stream来抽象 io 操作,方便在多种环境(实测linux server, android,ios设备都有一致性, server打出来的patch 可以直接在端上merge) 二进制diff算法 Suffix Array Generation 后缀数组 针对于 老文件,进行 利用 qsufsort 进行排序,实际上就是产出一份方便匹配的数据 为每个字节值创建桶(0-255) 计算每个字...

阅读更多

spdlog 和 GLOG 的核心区别

spdlog 和 GLOG 的核心区别 维度 GLOG (Google Logging) spdlog 项目起源 Google 内部老项目(2000年代初) 轻量、高性能现代日志库(C++11以后) 库大小 很重、依赖复杂(GFLAGS、线程库) 单头文件版也有,非常轻量 初始化 必须全局初始化(InitGoogleLogging) 直接即用,支持单独 logger、多 logger 依赖 gflags、pth...

阅读更多

tippecanoe 地图网格切分工具

Tippecanoe 是一个命令行工具,用于从大型地理空间数据集构建矢量瓦片集。其主要目的是实现尺度无关的可视化,在所有缩放级别上保留原始数据的密度和细节, 简化(RDP)、索引(R-Tree)、裁剪(Clipping)、投影(Mercator)、合并(Union)等 概述 结构 1. 命令行工具 tippecanoe:主要工具,用于生成矢量瓦片 tile-join:用于合并瓦片和连接 CSV 属性的工具 tippecanoe-decode:将矢量瓦片转换回 GeoJSON 的工具 tippecanoe-json-tool:用于操作 GeoJSON 的实用工具 tippecanoe-enumerate:列出 MBTiles 文件中的瓦片 2. 核...

阅读更多

sglang 对 DeepSeek的 MLA的矩阵乘 load阶段融合的优化

主要优化点 PR标题: Fuse q_a_proj and kv_a_proj for DeepSeek models 动机(Motivation): 在 DeepSeek V3 模型的 Self-Attention 结构中, q_a_proj(query after attention projection)和 kv_a_proj(key-value after attention projection)都以同一个 hidden state 作为输入。 因此可以把它们合并为一个模块, 这样: 只需要 一次 DeepGemm 调用(矩阵乘), 减少了一次 kernel launch 开销, 提升整体推理速度。 具体修改(Modifications) ...

阅读更多

当我们在sft的时候发生了什么

1. SFT 微调概述 SFT(Supervised Fine-Tuning)指的是在大模型预训练完成后,使用人工标注的 (prompt, response) 对,进行标准监督学习训练, 目的是引导模型输出符合特定任务要求的响应。 输入/输出定义 输入 ( x ):Prompt(指令) 输出 ( y = (y_1, y_2, \ldots, y_T) ):Response 的 token 序列 2. SFT 训练流程(带公式) 2.1 目标函数(Objective) SFT 训练的目标是: 最大化在已知输入 Prompt ( x ) 条件下,生成正确 Response ( y ) 的概率。 换句话说,最小化负对数似然(Negative Log-Likeli...

阅读更多

dragonflyDB 和redis的区别与定位

DragonflyDB 和 Redis 主要区别有这些: 方面 Redis DragonflyDB 架构 单线程(IO多路复用 + pipeline优化) 多线程(基于”shared-nothing”并行架构,线程间无锁) 性能 单核极限高,但多核扩展性一般 原生支持多核扩展,吞吐量更高(官方称同硬件上可以比 Redis 高 25x) 内存管理 自己管理内存(jemalloc优化) 自研内存模型(基于 Small-Object Arena + Slab ...

阅读更多

nlohmann::json 的 MessagePack 的std::byte 特化修复记录

背景 最近在使用 nlohmann::json 库进行 MessagePack 反序列化时,遇到编译错误。问题出现在 AppleClang(Xcode 16.3 自带)环境下,提示: D:\a\power-grid-model\power-grid-model\tests\native_api_tests\test_api_serialization.cpp(18): error C3856: 'char_traits': symbol is not a class template D:\a\power-grid-model\power-grid-model\tests\native_api_tests\test_api_serialization.cpp(18): error ...

阅读更多

.pyx 文件

最近在参与 tilelang 项目开发时,我提了一个 PR #267,遇到了需要修改.pyx 的情况 起因:py 修改 这个pr主要是修复非CUDA环境的编译问题,找到问题的 parser.py 进行了提交,但是reviwer 提了 You should also update parser.pyx accordingly. 我当时一愣:.pyx?这不是编译后的产物吗?为什么还要改?我一度以为这类似 .pyc 或 .so 文件,是由某些构建流程生成的 .pyx 文件并不是编译产物! 我很快发现,.pyx 实际上是 Cython 的源代码文件,和 .py 作用类似,但它允许使用 C 语言扩展语法,最终会被编译成 C,再生成 .so 或 .pyd 扩展模块。 简单...

阅读更多