当我们在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 扩展模块。
简单...
LLaMA Factory 训练中 SDPA 引发 grad_norm 为 NaN 问题解决
在使用 LLaMA Factory 进行模型训练时,问题:训练起步的时候梯度范数(grad_norm)显示为 NaN。相关的日志输出:
/usr/local/lib/python3.12/dist-packages/torch/autograd/graph.py:825: UserWarning: cuDNN SDPA backward got grad_output.strides() != output.strides(), attempting to materialize a grad_output with matching strides... (Triggered internally at /opt/pytorch/pytorch/aten/src/ATen/nati...
prime_server:基于ZeroMQ的高性能分布式服务框架
介绍
从Valhalla项目发现了一个非常有趣的服务器库—prime_server,这是一个基于ZeroMQ构建的非阻塞式web服务器API,专为分布式计算和面向服务架构(SOA)设计。
架构特点:蝴蝶模式
prime_server采用了ZeroMQ中的”蝴蝶模式”(Butterfly Pattern)或”并行管道模式”(Parallel Pipeline Pattern)。这种设计模式在ZeroMQ教程中有详细描述。
基本架构如下:
client <---> server ---> proxy <---> [worker pool] <---> proxy <---> [worker pool] <---> ...
基于AOF的Redis Migrate Tool
Redis Migrate Tool (RMT) 是唯品会(Vipshop)开发的一款高性能Redis数据迁移工具,支持多种Redis部署模式间的数据迁移,包括单实例、Twemproxy、Redis集群以及从RDB/AOF文件加载数据
RMT工具概述
RMT具有以下核心特性:
高速多线程迁移
基于Redis复制协议
在线迁移(源Redis可持续服务)
异构迁移(支持不同Redis部署模式间转换)
支持Twemproxy和Redis集群
迁移状态实时查看
数据验证机制
AOF迁移配置示例
AOF迁移的典型配置如下:
[source]
type: aof file
servers:
- /data/redis/appendonly1.aof
-...
Redis 简单动态字符串(SDS)详解
Redis 中的字符串实现是一个被称为简单动态字符串(Simple Dynamic String, SDS)的抽象数据类型,它不仅是Redis字符串对象的底层实现,也是Redis内部几乎所有需要字符串表示的地方的基础数据结构。下面让我们深入了解SDS的设计与实现。
SDS(简单动态字符串)和前文讨论的Redis字符串对象是两个不同层次的概念,它们之间存在层次关系:SDS是Redis字符串对象的底层实现方式之一。
层次关系
Redis对象层:字符串对象(StringObject)是Redis的高层抽象,是一种redisObject结构
编码实现层:StringObject可以使用三种不同的编码方式(INT、EMBSTR、RAW)
底层数据结构:当使用EMBSTR或RAW...
共计 188 篇文章,24 页。