Arganzheng's Blog

stay hungry, stay foolish

算法工程师的数学(01):向量、矩阵与形状——一个 token 过一层要算多少

Vectors, Matrices and Shapes: How Much Compute Does One Token Through One Layer Take

打开任何一个大模型的结构图,看到的全是矩阵乘法:一个 token(模型处理文字的最小单位,大致是一个词或半个词——”我爱北京”约 3 个 token——不是一字一个,常用词”北京”通常整个是一个 token,”我”“爱”各一个;反过来英文长词 “tokenizer” 会被切成两三个。切法由分词器(tokenizer)的词表决定,不同模型不同;模型读到的不是字,而是 token 在词表里的编号)变成一个向量,向量乘一个矩阵变成另一个向量,再乘一个矩阵……几十层之后输出下一个 token 的概率。所以线性代数在 AI 里的第一个用处不是什么高深的定理,而是两条极其朴素的规则:形状规则(什么形状乘什么形状得到什么形状)与成本规则(这一乘要算多少次)。会了这两条,读模型结构...

算法工程师的数学:读公式不卡壳的最小集(总纲)

Mathematics for AI Algorithm Engineers: The Minimal Set to Read Papers and Derive Losses

内容简介 《算法工程师的数学:读公式不卡壳的最小集》是一组共八篇的系列文章,对应《AI 算法工程师学习地图》的第 L0 层,也是整张地图的第一个系列。它面向会一门编程语言、大学数学基本忘光、还没有碰过 AI 的读者,讲的是后面所有层——深度学习、Transformer、预训练、后训练、压缩、多模态——会反复用到的那一小块数学:它们是什么、在 AI 里长什么样、怎么代进一个真实模型算出一个数字。 它回答的问题是: 拿到一篇 LLM 论文,能不能读懂它的每一个公式;给一个建模假设,能不能推出它的训练 loss;给一个评测结果,能不能判断差异是真的还是噪声?1 问算法工程师”需要多少数学”,得到的答案通常在两个极端之间摇摆:要么”不需要,调库就行”,要么”...

AI 应用工程师学习地图:在非确定性组件之上做可靠产品

A Learning Roadmap for AI Application Engineers

内容简介 这是三张 AI 学习地图中的第三张(三张的总览与分工见《AI 全栈学习地图》)。第一张《AI 算法工程师学习地图》面向造模型的人,第二张《AI-Infra 工程师学习地图》面向跑模型的人,这一张面向用模型做产品的人——AI 应用工程师。它假设读者有后端工程的基础(服务、数据库、API、部署),同时关心产品:什么场景值得做、用户怎么用、效果怎么衡量。 “AI 应用”在这里取宽的定义:用模型改变现有的流程与体验。模型可以是 LLM,也可以是自动驾驶里的感知模型、VLA 与世界模型;动作可以是调用一个 API,也可以是控制一台车;输入可以是用户敲的字,也可以是传感器的每一帧。这张地图以 LLM 应用为主要案例展开,因为它当前的工程实践最成体系,但每一层的问题...

AI-Infra 工程师学习地图:从后端工程师到基础设施贡献者

A Learning Roadmap for AI Infrastructure Engineers

内容简介 这是一张给后端工程师——尤其是 Java、Go 等托管语言背景的工程师——转向 AI-Infra 方向的学习地图。它把这个方向需要的知识组织成十二个系列,说明每个系列解决什么问题、为什么放在那个位置、彼此之间如何依赖,以及按不同目标应该走哪条路径。 它是三张 AI 学习地图中的第二张(三张的总览与分工见《AI 全栈学习地图》):第一张《AI 算法工程师学习地图》面向造模型的人,这一张面向跑模型的人(AI-Infra 工程师),第三张《AI 应用工程师学习地图》面向用模型的人。本地图的 01 Python、03 PyTorch、04 Transformer 与 LLM 三个系列与算法地图共享。三张地图有重叠的名词,分工在本文末尾的《与算法工程师地图的关系...

AI 算法工程师学习地图:从数学基础到大模型训练

A Learning Roadmap for AI Algorithm Engineers in the LLM Era

内容简介 这是三张 AI 学习地图中的第一张(三张的总览与分工见《AI 全栈学习地图》)。这一张面向造模型的人——AI 算法工程师,也是从零开始的读者的入口:L0 数学、L1 工具箱、L2 经典机器学习三个系列假设读者没有 AI 基础。第二张《AI-Infra 工程师学习地图》面向为模型搭建训练与推理系统的工程师,它的 01 Python、03 PyTorch、04 Transformer 三个系列与本地图共享;第三张《AI 应用工程师学习地图》面向在模型之上做产品的 AI 应用工程师。三张地图各自独立,边界与重叠部分在每张地图的末尾说明。 “算法工程师”这个词在大模型时代的含义已经变了。十年前它指的是会推导 SVM 对偶、会调 XGBoost 参数的人;今天它...

面试手撕代码(20):系列总结与通关自测

Coding Interviews: Series Recap and Final Self-Test

十九篇正文回答了一个问题:面试官给一道没见过的中等题、四十分钟,怎样在前五分钟认出它属于哪一类、用哪个模板、复杂度是多少,然后把时间用来写对代码、想清边界、接住追问。前十三篇按解题模式而不是数据结构的名字组织 LeetCode 中等题——哈希、双指针、单调栈、链表、树、图、二分、堆与贪心、回溯、字符串、两篇 DP、设计题,每篇一个可以默写的骨架、三到七道主讲题、一张两种语言的坑表;后六篇是 AI 岗特有的”手撕模型组件”——attention、Transformer block 与反向传播、tokenizer 与解码、损失与训练算法、经典 ML 与指标、Infra 岗的并发与系统,每个组件从零写出来并与 PyTorch 参考实现对拍。 本文不讲新内容,做三件事:把...

面试手撕代码(19):Infra 岗手撕——并发与系统

Infra Interviews: Thread-Safe LRU, Bounded Queues, Thread Pools, Memory Pools, Blocked GEMM, Ring Allreduce, Paged KV and Token Buckets

AI-Infra 岗的手撕题和算法岗不同:不考 DP,考系统——一把锁保护什么、条件变量为什么要 while、线程池的异常怎么传回、内存池的空闲链表放在哪、矩阵乘为什么换个循环顺序快十倍、ring allreduce 每个 rank 发多少字节、paged KV cache 的引用计数和 copy-on-write、令牌桶怎样用一个时间戳懒补充。这些题的代码都不长,但每一道背后都有一个”为什么这样设计”的追问,答得出来才算过。这一篇 Python 与 C++ 各自负责擅长的部分:并发原语、模拟与协议用 Python 讲清逻辑,内存池、GEMM、线程安全容器用 C++ 落到底。 系统层面的原理在 Infra 地图:并发见 Python 在 AI-Infra(03),...

面试手撕代码(18):手撕经典 ML 与评测指标

Classical ML and Metrics by Hand: k-means, Logistic Regression, KNN, PCA, AUC, NDCG, conv2d, NMS

LLM 时代的面试仍然会让你手写 k-means、逻辑回归、PCA——不是因为工作里要用它们,而是它们十行代码就能暴露一个人对”模型 = 目标函数 + 优化”的理解是否到位。评测指标是另一类高频手撕:AUC 怎么在 \(O(n \log n)\) 内算、NDCG 的折扣是什么、F1 在类别极不平衡时为什么比准确率靠谱。CV 相关岗位再加两道:用 im2col 把卷积写成矩阵乘、NMS。这一篇每个组件给出面试够用的实现和一个能说清的”为什么”。 原理在算法地图 L2 经典机器学习与后训练(08)评测;卷积见深度学习基础(05)。 本篇要回答的核心问题是: k-means 的两步各在优化什么、为什么一定收敛?1 AUC 为什么等于”随机一对正负样本排对的概率...

面试手撕代码(17):手撕损失函数与训练算法

Losses and Training Algorithms by Hand: CE, KL, InfoNCE, DPO, PPO/GAE, GRPO, AdamW, Schedules and LoRA

“写出 DPO 的损失函数”“PPO 的 clipped objective 是什么”“AdamW 一步更新怎么算”——这些题是算法岗面试的第二梯队手撕题,考的是能不能把论文里的公式落成十行正确的代码。它们的共同难点是细节:label smoothing 平滑的是哪个分布、KL 的两个参数谁是 target、DPO 的四个 log 概率怎么组合、GAE 的递推从哪一端开始、AdamW 的 weight decay 为什么不进动量、LoRA 的 B 为什么初始化为零。这一篇每个组件给出实现、与 PyTorch(或 trl 的公式)对拍、以及面试官会追的一两个”为什么”。 推导与动机在算法地图:损失与优化器见深度学习基础(03),PPO / GRPO 见后训练(03)...

面试手撕代码(16):手撕 tokenizer 与解码

Tokenizer and Decoding by Hand: BPE, Sampling, Beam Search, Reservoir Sampling and Speculative Acceptance

模型的两端——文本进去之前的 tokenizer、logits 出来之后的解码——是面试里”看起来简单、写起来处处是坑”的手撕题。BPE 的训练循环十几行,但”合并的优先级怎么定”“编码时按什么顺序应用 merge”两个细节决定了写出来的东西对不对;top-p 采样的截断位置差一个元素就是另一个算法;beam search 里”完成的序列怎么处理”“长度归一化”是必问;投机解码的接受-拒绝规则一行公式,但要能证明”最终分布等于目标分布”。这一篇把这五组东西从零写出来,每个都有数值验证。 原理与取舍在算法地图里:分词见预训练(01),解码策略见高效推理(01),投机解码见(02)。 本篇要回答的核心问题是: BPE 训练时”合并最频繁的相邻对”如何做到确定...

×