Skip to content

Commit 6bd7981

Browse files
李泽伟李泽伟
李泽伟
authored and
李泽伟
committed
notes1
1 parent 4f55a69 commit 6bd7981

File tree

131 files changed

+3421
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

131 files changed

+3421
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# learning from bytedance
2+
3+
https://www.lpolaris.com/article/notionedu
4+
5+
https://cs.uwaterloo.ca/~wenhuche/teaching/cs886/
6+
7+
[大模型入门p1](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%85%A5%E9%97%A8p1%201083a54bd6b4805dbb95e7a43793a8c1.md)
8+
9+
## 基础知识:
10+
11+
[自然语言处理知识点](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E7%9F%A5%E8%AF%86%E7%82%B9%20948f0b8e5b6f47358f56b67e35cc438f.md)
12+
13+
[Function Calling](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/Function%20Calling%20157bdd1d37bf43b48b3a4c45d9201a01.md)
14+
15+
[模型量化](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E6%A8%A1%E5%9E%8B%E9%87%8F%E5%8C%96%20d78da432d0c64ed991d5e2b4f500a710.md)
16+
17+
[ Prompt-tuning](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/Prompt-tuning%20ecf2df045de242dcbfe2fd973c49a717.md)
18+
19+
[大模型优化推理](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E4%BC%98%E5%8C%96%E6%8E%A8%E7%90%86%20c04fc1eb9ca045a684bd16a33d33bf9a.md)
20+
21+
[Deepspeed分布式训练](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/Deepspeed%E5%88%86%E5%B8%83%E5%BC%8F%E8%AE%AD%E7%BB%83%2089d89faa46454cdfb406080b817e5d43.md)
22+
23+
[Swim transformer](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/Swim%20transformer%20c7fdf174112f436487a557a3870af33c.md)
24+
25+
26+
27+
28+
29+
[训练损失函数](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E8%AE%AD%E7%BB%83%E6%8D%9F%E5%A4%B1%E5%87%BD%E6%95%B0%208b9b6592e53b44b4aa582eedea17658e.md)
30+
31+
[RAG](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/RAG%20ce9b50f88bf045778f131a98cb562142.md)
32+
33+
## 模型篇
34+
35+
[常见大语言模型](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E5%B8%B8%E8%A7%81%E5%A4%A7%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B%2049b13e92c2544fbba6c7c3c530d2cc5e.md)
36+
37+
[多模态相关模型](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E5%A4%9A%E6%A8%A1%E6%80%81%E7%9B%B8%E5%85%B3%E6%A8%A1%E5%9E%8B%20244814b57550480b8e15cbfd3371463b.md)
38+
39+
[模型评估](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E6%A8%A1%E5%9E%8B%E8%AF%84%E4%BC%B0%20a2abf0788ae44ce3b19c7c34673b0c21.md)
40+
41+
[nlp相关仓库](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/nlp%E7%9B%B8%E5%85%B3%E4%BB%93%E5%BA%93%20a99f3a9e2bbd45889ce3d77b425df240.md)
42+
43+
[推荐系统中的LLM](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84LLM%20bbdd776cd8304c3ebfa40e38b0c0da7f.md)
44+
45+
## 数据篇
46+
47+
[大模型数据的构建](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E6%95%B0%E6%8D%AE%E7%9A%84%E6%9E%84%E5%BB%BA%2079854d0de42e4067b19a675125c36838.md)
48+
49+
## 强化学习篇
50+
51+
[强化学习篇](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0%E7%AF%87%2097f30ff06d424a7fb9c77b584ea435b2.md)
52+
53+
## 实践篇
54+
55+
[大模型全流程](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%85%A8%E6%B5%81%E7%A8%8B%20baa3f7eade2944769f87808cd268e73d.md)
56+
57+
[大模型在具体领域的应用](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9C%A8%E5%85%B7%E4%BD%93%E9%A2%86%E5%9F%9F%E7%9A%84%E5%BA%94%E7%94%A8%204b4271b664d5442f8c87e2fefa905727.md)
58+
59+
[AI agent](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6.md)
60+
61+
## 面试篇
62+
63+
[Theseyouwant](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/Theseyouwant%20f8b91e42d0284396b2d65d96de9d57b2.md)
64+
65+
[风险策略](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E9%A3%8E%E9%99%A9%E7%AD%96%E7%95%A5%2012e3a54bd6b48000a167e6bdc7344609.md)
66+
67+
[Pandas](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/Pandas%201293a54bd6b4808da1e3ed9e58567d95.md)
68+
69+
[手撕](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E6%89%8B%E6%92%95%2055486983da254e1c91f9fbf4e9603f05.md)
70+
71+
[SQL 巩固](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/SQL%20%E5%B7%A9%E5%9B%BA%206db1f87f89844439ab1506c95acca535.md)
72+
73+
[python](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/python%20ece1ef6f46b54908a95f77e93a032c17.md)
74+
75+
![Untitled](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/Untitled.png)
76+
77+
[具体内容:](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/%E5%85%B7%E4%BD%93%E5%86%85%E5%AE%B9%EF%BC%9A%2010b3a54bd6b4809fbfc9ddedf501f183.md)
78+
79+
![Untitled](learning%20from%20bytedance%20f12712a04ae04fe9b153ace3b4cd5839/Untitled%201.png)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# AI agent
2+
3+
https://bytetech.info/articles/7410618665508601871?from=lark_all_search#doxcnG7FEwJ49xLObCuCgP7Dwnd
4+
5+
![截屏2024-09-23 20.53.24.png](AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6/%25E6%2588%25AA%25E5%25B1%258F2024-09-23_20.53.24.png)
6+
7+
![截屏2024-09-23 20.54.05.png](AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6/%25E6%2588%25AA%25E5%25B1%258F2024-09-23_20.54.05.png)
8+
9+
[https://www.53ai.com/news/qianyanjishu/1084.html](https://www.53ai.com/news/qianyanjishu/1084.html)
10+
11+
![截屏2024-09-23 20.54.35.png](AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6/%25E6%2588%25AA%25E5%25B1%258F2024-09-23_20.54.35.png)
12+
13+
![截屏2024-09-23 20.55.13.png](AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6/%25E6%2588%25AA%25E5%25B1%258F2024-09-23_20.55.13.png)
14+
15+
![截屏2024-09-23 20.55.30.png](AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6/%25E6%2588%25AA%25E5%25B1%258F2024-09-23_20.55.30.png)
16+
17+
https://www.gptsecurity.info/2024/05/26/RAG/
18+
19+
![截屏2024-09-23 20.56.00.png](AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6/%25E6%2588%25AA%25E5%25B1%258F2024-09-23_20.56.00.png)
20+
21+
![截屏2024-09-23 20.56.16.png](AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6/%25E6%2588%25AA%25E5%25B1%258F2024-09-23_20.56.16.png)
22+
23+
![截屏2024-09-23 20.56.23.png](AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6/%25E6%2588%25AA%25E5%25B1%258F2024-09-23_20.56.23.png)
24+
25+
![截屏2024-09-23 20.56.39.png](AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6/%25E6%2588%25AA%25E5%25B1%258F2024-09-23_20.56.39.png)
26+
27+
![截屏2024-09-23 20.56.52.png](AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6/%25E6%2588%25AA%25E5%25B1%258F2024-09-23_20.56.52.png)
28+
29+
cohere、jinaAI
30+
31+
![截屏2024-09-23 20.57.43.png](AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6/%25E6%2588%25AA%25E5%25B1%258F2024-09-23_20.57.43.png)
32+
33+
![截屏2024-09-23 20.57.56.png](AI%20agent%2010a3a54bd6b48004bd1ed2613e17d8c6/%25E6%2588%25AA%25E5%25B1%258F2024-09-23_20.57.56.png)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Deepspeed分布式训练
2+
3+
https://wjn1996.blog.csdn.net/article/details/130764843?spm=1001.2014.3001.5502
4+
5+
![截屏2024-07-25 15.31.21.png](Deepspeed%E5%88%86%E5%B8%83%E5%BC%8F%E8%AE%AD%E7%BB%83%2089d89faa46454cdfb406080b817e5d43/%25E6%2588%25AA%25E5%25B1%258F2024-07-25_15.31.21.png)
6+
7+
https://blog.csdn.net/weixin_43863869/article/details/134760405
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Function Calling
2+
3+
https://luxiangdong.com/2024/04/13/func-call/
4+
5+
![Untitled](Function%20Calling%20157bdd1d37bf43b48b3a4c45d9201a01/Untitled.png)
6+
7+
1. 用户向应用程序提出问题
8+
2. 应用程序传递用户提供的prompt和函数声明,这是对模型可以使用的工具的描述
9+
3. 根据函数声明,模型建议要使用的工具以及相关的请求参数。**请注意,模型仅输出建议的工具和参数,而不实际调用函数**
10+
4. 4 & 5 根据响应,应用程序调用相关 API
11+
5. 6 & 7 来自 API 的响应再次输入模型,模型再输出人类可读的响应
12+
6. 应用程序将最终响应返回给用户,然后从 1 开始重复。
13+
14+
![Untitled](Function%20Calling%20157bdd1d37bf43b48b3a4c45d9201a01/Untitled%201.png)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Pandas
2+
3+
https://www.runoob.com/pandas/pandas-series.html
4+
5+
Series一维数据
6+
7+
![截屏2024-10-24 16.19.05.png](Pandas%201293a54bd6b4808da1e3ed9e58567d95/%25E6%2588%25AA%25E5%25B1%258F2024-10-24_16.19.05.png)
8+
9+
dataframe
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# Prompt-tuning
2+
3+
https://wjn1996.blog.csdn.net/article/details/120607050
4+
5+
https://blog.csdn.net/qq_24729325/article/details/132673944
6+
7+
截止23年3月底,语言模型走过了三个阶段:
8+
9+
- **第一阶段** :设计一系列的自监督训练目标(MLM、NSP等),设计新颖的模型架构(Transformer),遵循Pre-training和Fine-tuning范式。典型代表是BERT、GPT、XLNet等;
10+
- **第二阶段** :逐步扩大模型参数和训练语料规模,探索不同类型的架构。典型代表是BART、T5、GPT-3等;
11+
- **第三阶段** :走向AIGC(Artificial Intelligent Generated Content)时代,模型参数规模步入千万亿,模型架构为自回归架构,大模型走向对话式、生成式、多模态时代,更加注重与人类交互进行对齐,实现可靠、安全、无毒的模型。典型代表是InstructionGPT、ChatGPT、Bard、GPT-4等。
12+
13+
Prompt-Tuning的动机旨在解决目前传统Fine-tuning的两个痛点问题:
14+
15+
- **降低语义差异(Bridge the gap between Pre-training and Fine-tuning)** :预训练任务主要以Masked Language Modeling(MLM)为主,而下游任务则重新引入新的训练参数,因此两个阶段的目标通常有较大差异。因此需要解决如何缩小Pre-training和Fine-tuning两个阶段目标差距过大的问题;
16+
- **避免过拟合(Overfitting of the head)** :由于在Fine-tuning阶段需要新引入额外的参数以适配相应的任务需要,因此在样本数量有限的情况容易发生过拟合,降低了模型的泛化能力。因此需要面对预训练语言模型的过拟合问题。
17+
18+
博主根据对Prompt-Tuning两年多的研究经验,总结了三个关于Prompt的本质,如下:
19+
20+
- Prompt的本质是一种对任务的指令;
21+
- Prompt的本质是一种对预训练任务的复用;
22+
- Prompt的本质是一种参数有效性学习;
23+
24+
由于绝大多数的语言模型都采用MLM或ALM进行训练,所以我们现如今所看到的大多数基于Prompt的分类都要设计Template和Verbalizer。那么我们是否可以极大化地利用MLM和ALM的先验知识在不同的下游任务上获得更好的表现?是否可以设计一个全新的预训练任务来满足一些下游任务的需求呢?
25+
26+
我们介绍两个充分利用这个思想的方法:
27+
28+
- **万物皆可生成** :将所有任务统一为文本生成,极大化利用单向语言模型目标;
29+
- **万物皆可抽取** :将所有任务统一为抽取式阅读理解,并设计抽取式预训练目标;
30+
- **万物皆可推理** :将所有任务建模为自然语言推断(Natural Language Inference)或相似度匹配任务。
31+
32+
### Prompt的本质是参数有效性学习
33+
34+
根据前文的讲解,我们可以发现,实现Prompt-Tuning只需要考虑如何设计模板或指令,而模型和训练目标则都是复用预训练阶段的,即在整个训练过程中,无须添加任何参数(或只需要添加非常少量的与模板有关的参数),而其他参数都是训练好的。基于这个思想,我们再一次将Prompt升华到更高的层面—— **Prompt的本质是参数有效性学习(Parameter-Efficient Learning,PEL)**
35+
36+
> 参数有效性学习的背景
37+
>
38+
>
39+
> **参数有效性训练**
40+
>
41+
42+
常见经典的参数有效性学习有Adapter-Tuning、Prefix-Tuning、BitFit。下面进行简单的介绍。
43+
44+
Adapter-Tuning在2019年提出,其面向预训练语言模型的参数有效性学习。在多层Transformer模型中,在微调过程中所有的参数都需要更新,显然并不是有效的。为了提高效率,该方法提出固定Transformer的全部参数,然后在Transformer的每一个Block里嵌入一些新初始化的Adapter Network。如下图所示:
45+
46+
Adapter位于Feed-Forward Layer之后、残差连接之前。Adapter本质上就是两层MLP,分别负责将Transformer的表征降维和升维(右图)。基于Adapter的方法, **只需要添加不到5%的可训练参数,即可以几乎达到全参数训练的效果** ,在训练过程中大大节省了训练时间,做到时间有效性。因此在真实场景应用时, **不同的任务我们不需要重新对整个预训练模型进行微调,我们只需要保存Adapter即可** ,而预训练模型的其他参数都是原始预训练的,这样就做到了空间的有效性。
47+
48+
![截屏2024-09-03 11.28.16.png](Prompt-tuning%20ecf2df045de242dcbfe2fd973c49a717/%25E6%2588%25AA%25E5%25B1%258F2024-09-03_11.28.16.png)
49+
50+
[**P-tuning**](https://hf.co/papers/2103.10385) adds trainable prompt embeddings to the input that is optimized by a prompt encoder to find a better prompt, eliminating the need to manually design prompts. The prompt tokens can be added anywhere in the input sequence, and p-tuning also introduces anchor tokens for improving performance.(添加了可训练的prompt embeddings,这样就不用手动调整prompts)
51+
52+
## 面向超大规模模型的Prompt-Tuning
53+
54+
本文默认以GPT-3为例,介绍几个面向超大规模的Prompt-Tuning方法,分别为:
55+
56+
- **上下文学习 In-Context Learning(ICL)** :直接挑选少量的训练样本作为该任务的提示;
57+
- **指令学习 Instruction-tuning** :构建任务指令集,促使模型根据任务指令做出反馈;
58+
- **思维链 Chain-of-Thought(CoT)** :给予或激发模型具有推理和解释的信息,通过线性链式的模式指导模型生成合理的结果。
59+
60+
### InstructionGPT
61+
62+
另外一个典型的例子是OpenAI的InstructionGPT,其主要流程如下:
63+
64+
[https://bytedance.larkoffice.com/space/api/box/stream/download/asynccode/?code=NmQ2NDIyMzhlMDY0YjM3OWE1NGViY2NjMDRhMWRmZmJfMnI1ZHhrNUI5Qks1dzN1WHh1dVRrTW9MeERtcm55b0lfVG9rZW46VjJWZWIzWmJrbzRGdXN4U1B6dGMwdzl3bkVlXzE3MjE4MjQ0Mjc6MTcyMTgyODAyN19WNA](https://bytedance.larkoffice.com/space/api/box/stream/download/asynccode/?code=NmQ2NDIyMzhlMDY0YjM3OWE1NGViY2NjMDRhMWRmZmJfMnI1ZHhrNUI5Qks1dzN1WHh1dVRrTW9MeERtcm55b0lfVG9rZW46VjJWZWIzWmJrbzRGdXN4U1B6dGMwdzl3bkVlXzE3MjE4MjQ0Mjc6MTcyMTgyODAyN19WNA)
65+
66+
- **Step1** :先采样一些demonstration数据,其包括prompt和labeled answer。基于这些标注的数据,对GPT-3进行fine-tuning,得到SFT(Supervised Fine-tuning);
67+
68+
> 雇佣40名标注人员完成prompt的标注。
69+
此时的SFT模型在遵循指令/对话方面已经优于 GPT-3,但不一定符合人类偏好。
70+
>
71+
- **Step2** :Fine-tuning完之后,再给一个prompt让SFT模型生成出若干结果(可以通过beam search等方法),例如生成ABCD四种结果,通过人工为其排序,例如D>C>A=B,可以得到标注的排序pair;基于标注的排序结果,训练一个Reward Model;
72+
73+
> 对多个排序结果,两两组合,形成多个训练数据对。RM模型接受一个输入,给出评价回答质量的分数。这样,对于一对训练数据,调节参数使得高质量回答的打分比低质量的打分要高。
74+
>
75+
- **Step3** :继续用生成出来的结果训练SFT,并通过强化学习的PPO方法,最大化SFT生成出排序靠前的answer。
76+
77+
> 训练目标如下:
78+
初始化时
79+
PPO算法在训练过程中环境会发生变换。
80+
首先,根据自动标注的数据(下面的来源3),喂入 中,得到输出结果 ,其会根据 得到一个得分,期望在训练 时能够最大化reward的得分;
81+
第二项loss表示KL散度,在迭代训练过程中,避免RL模型 与原始的监督训练的SFT模型差的太远;
82+
第三项则是一个预训练目标,可以理解为避免灾难遗忘。当 时则为标准的PPO模型,否则为PPO-ptx模型1.3B 参数 InstructGPT 模型的输出优于 175B GPT-3 的输出,尽管参数少了 100 多倍。
83+
>
84+
85+
# Prompt自动优化
86+
87+
https://zhuanlan.zhihu.com/p/658649353
88+
89+
https://zhuanlan.zhihu.com/p/673323386
90+
91+
https://mp.weixin.qq.com/s/53jEDw58dkZlJAVzr31G8A
92+
93+
P-tuning:
94+
95+
<aside>
96+
💡
97+
98+
总结来说:v1就是连续版本的prompt tuning方法,对于参数量小于10亿的模型来说,使用连续的embedding调优方式进行优化。但是缺点是上下文长度限制了调优的参数
99+
100+
v2则加多了层级和前缀的优化,不再是对于中间的prompt对应的词进行操作,而是添加了一个固定的前缀。在每一层添加对应的可训练的参数
101+
102+
</aside>
103+
104+
https://mp.weixin.qq.com/s/tZOl4JPXKXXdaxvXPYSKtQ
105+
106+
https://wandb.ai/sauravmaheshkar/softprompts/reports/Brief-Introduction-to-P-Tuning--Vmlldzo3MTgyODIz
107+
108+
![image.png](Prompt-tuning%20ecf2df045de242dcbfe2fd973c49a717/image.png)
109+
110+
![image.png](Prompt-tuning%20ecf2df045de242dcbfe2fd973c49a717/image%201.png)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# RAG
2+
3+
embedding 检索:bge
4+
5+
[https://github.com/FlagOpen/FlagEmbedding](https://github.com/FlagOpen/FlagEmbedding)
6+
7+
https://www.tizi365.com/topic/10092.html
8+
9+
https://mp.weixin.qq.com/s/QFvnfmLSxjITZEUpAApZNQ
10+
11+
https://qwen.readthedocs.io/zh-cn/latest/framework/LlamaIndex.html
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# SQL 巩固
2+
3+
1. https://mp.weixin.qq.com/s/k9de-Be1GWPC6DVraIQ8rQ
4+
5+
https://kimi.moonshot.cn/chat/cqhlivatnn0o6auj6s4g
6+
7+
2. 解释sql
8+
https://kimi.moonshot.cn/chat/cqoslng967ufc4poq60g
9+
10+
```jsx
11+
row_number() OVER(
12+
PARTITION BY
13+
t1.user_id
14+
ORDER BY
15+
event_time
16+
) AS rn
17+
18+
```
19+
20+
这段代码是一个SQL窗口函数的例子,使用了`ROW_NUMBER()`函数。`ROW_NUMBER()`函数为结果集中的每一行分配一个唯一的序号,序号是按照指定的排序顺序分配的。如果未指定排序顺序,则序号按照数据检索的顺序分配。
21+
22+
让我们分解这个具体的SQL表达式:
23+
24+
- `ROW_NUMBER()`: 这是一个窗口函数,它为每个分区内的每一行分配一个唯一的序号,从1开始递增。
25+
- `OVER(PARTITION BY t1.user_id ORDER BY event_time)`: 这是`ROW_NUMBER()`函数的参数部分,定义了窗口函数的工作方式:
26+
- `PARTITION BY t1.user_id`: 这指定了窗口函数的分区条件。`ROW_NUMBER()`将为每个`user_id`的值分配一个独立的序号序列。也就是说,每个`user_id`都会从1开始重新计数。
27+
- `ORDER BY event_time`: 这指定了在每个分区内,行应该如何排序。在这个例子中,行是根据`event_time`字段的值排序的。这意味着在每个`user_id`分区内,行将按照`event_time`的升序排列。
28+
- `AS rn`: 这是给窗口函数结果指定的别名,通常用于在查询的其他部分引用这个结果。
29+
30+
这个表达式的整体作用是:对于每个`user_id`,根据`event_time`对事件进行排序,并为每个`user_id`内的每一行分配一个唯一的序号。如果`event_time`相同,那么序号会跳过,例如,如果有两个事件具有相同的`event_time`,则下一个事件将直接获得下一个序号。
31+
32+
例如,如果有一个表`t1`,其中包含以下数据:
33+
34+
| user_id | event_time |
35+
| --- | --- |
36+
| 1 | 2024-08-06 08:00:00 |
37+
| 1 | 2024-08-06 09:00:00 |
38+
| 2 | 2024-08-06 08:30:00 |
39+
| 1 | 2024-08-06 08:15:00 |
40+
41+
使用上述SQL表达式后,结果集可能会是:
42+
43+
| user_id | event_time | rn |
44+
| --- | --- | --- |
45+
| 1 | 2024-08-06 08:00:00 | 1 |
46+
| 1 | 2024-08-06 08:15:00 | 2 |
47+
| 1 | 2024-08-06 09:00:00 | 3 |
48+
| 2 | 2024-08-06 08:30:00 | 1 |
49+
50+
在这个结果集中,每个`user_id`都有一个从1开始的独立序号序列,根据`event_time`进行排序。
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Swim transformer
2+
3+
https://datawhalechina.github.io/thorough-pytorch/第十章/Swin-Transformer解读.html

0 commit comments

Comments
 (0)