Transformer 架构变化:RMSNorm 指南

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

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

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

Python 的 2 个进程池相关 API

作为一名算法工程师,在我的工作中经常都会写各种 Python 脚本来处理大量数据,做数据清洗、信息提取等。通常情况下,这些数据的处理并不涉及竞争条件(Race Condition),而是简单的数据并行(Data Parallel),属于 CPU 密集型任务。通常情况下,这样的任务可以被抽象为 map(fn, data) 的模式

Class Hierarchy Analysis 算法: 快速生成调用图

对于 OOP 语言来说,搭建调用图的核心问题是有多态的场景下如何确定到底是哪一个方法被调用了,下面是 Java 的一些可能的函数调用 1

Static Call Special Call Virtual Call
Instruction invokestatic invokespecial invokeinterface, invokevirtual
Receiver Objects
Target Methods Static Method Constructor, Private Instance Method, Superclass Instance Method Other Instance Method
Count of Possible Target Methods 1 1 $\ge 1$ (polymorphism)
Determinancy Compile-time Compile-time Run-time

其中 Virtual Call 因为包含了多态,方法调用存在多个可能的目标方法

前缀和数组: 快速计算数组区间和

有这么一类问题——给定一个数组 $arr$ 和 $Q$ 个查询,每一个查询的格式是 $query(l, r)$,意思是计算区间和 $arr[l] + arr[l + 1] + … + arr[r]$

如果采用暴力求解,那么查询区间和的时间复杂度是 $O(N)$,处理 $Q$ 个查询就需要 $O(NQ)$,有没有什么数据结构或者是算法可以优化这个时间复杂度呢?