异步编程+令牌桶算法:批量调用 LLM API

最近在工作中着手模型评测平台的搭建,其中有这么一个场景:需要调用其他部门提供的 LLM API 进行在评测集上跑模型评测,但这个 LLM API 有请求速率限制 - 最多 1 秒调用 2 次。所以我的任务概括来说就是:如何在严格遵守 API 速率请求的情况下,最大提高并发度加快模型评测速度。本文的内容主要记录了对这个任务的尝试,以及最后的解决方案

Transformer 架构变化:旋转位置编码 (RoPE)

用 $\mathbf x_i$ 表示没有位置编码的 token embedding,那么 $\mathbf q_m,\mathbf k_n,\mathbf v_n$ 的计算如下

$$ \begin{aligned} \mathbf q_m&=f_q(\mathbf x_m,m)\\ \mathbf k_n&=f_k(\mathbf x_n,n)\\ \mathbf v_n&=f_v(\mathbf x_n,n) \end{aligned} $$

这里的 $n, m$ 表示的是不同的位置,这里假设 $\mathbf k$ 和 $\mathbf v$ 是都是位置 $n$ 的,而 $\mathbf q$ 是位置 $m$ 的,并且 $m > n$

Transformer 架构变化:RMSNorm 指南

从 2017 年 Transformer 架构被提出以来,到现在 2025 已经 8 年过去了,Transformer 架构已经发生了很多变化。比如,现如今越来越多的大模型采用的是 RMSNorm1 而不是 LayerNorm。今天这篇文章就是对 RMSNorm 的一个简单介绍,在了解 RMSNorm 之前,我们不妨先回顾一下什么是 LayerNorm

Kosaraju 算法:求解有向图的强连通分量

在做算法题练习的时候遇到了一道有趣的题目 - 1682. Flight Routes Check。要解决这一道题需要高效确定一个有向图上有多少强连通分量。在看了一下题解之后,我发现 Kosaruju 算法可以用于解决这个问题,它可以在线性时间内找到有向图的所有强连通分量。这里说的线性时间是