学习使用 Vim&Neovim 的 text-object

你可能不知道什么是 text-object,但我相信你可能已经在使用了只是你自己没有意识到。比如,在写代码的时候,我们经常想要修改函数调用的入参。比如我们在下面这段代码中,想要修改成 bar(3, 2, 1),而你的光标停留在 () 里面

LLM 推理加速 - KV Cache

LLM 用于推理的时候就是不断基于前面的所有 token 生成下一个 token

假设现在已经生成了 $t$ 个 token,用 $x_{1:t}$ 表示。在下一轮,LLM 会生成 $x_{1:t+1}$,注意他们的前 $t$ 个 token 是一样的

LoRA 微调

自从 LLM 时代到来之后,如何微调 LLM 成为了一个难题,因为 LLM 的模型实在是太大了,很难做全量微调更新所有参数。可选的路线有:冻结整个模型做 Prompt tuning 或者 In-context Learning;冻结整个模型但是会插入可训练的模块。今天要介绍的 LoRA(Low-Rank Adaptation) 就对应了后者的技术路线,这是微软团队的工作1

下一个排列问题

有时候我们会想要生成一个序列的「下一个排列」或者是「上一个排列」,你会怎么做呢?如果你对 C++ 很熟悉的话,不难想到可以用 next_permutation1prev_permutation2。但是 Python 并没有提供类似的 API。因此今天要探讨的就是如何用 Python 实现这 2 个 API,又因为「上一个排列」和「下一个排列」的方法其实大同小异,因此让我们聚焦其中的「下一个排列」问题