# Awesome-LLM-Learning [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)
## 引言
欢迎来到本 Repo!这里是一个专注于大语言模型学习的仓库,旨在为大语言模型学习入门者和大语言模型研发岗位的面试准备者提供全面的基础知识。
我们涵盖了多个主题,包括深度学习基础知识、自然语言处理基础知识、大语言模型基础知识以及大语言模型推理和应用等内容。你将在这里找到丰富的学习资料,帮助你构建对大语言模型的全面理解和应用能力。
除了基础知识,我们还会推荐一些大语言模型领域的前沿论文,帮助你跟上最新的研究进展,掌握最先进的技术。
无论你是新手还是有经验的从业者,本 Repo 都会为你提供有价值的学习资源。欢迎一起探索大语言模型的奥秘,让我们一同进步和成长!如果你有任何问题或建议,欢迎提出,我们将尽力完善这个仓库,为大家提供更好的学习体验。谢谢你的参与!
## 目录
- [1.深度学习基础知识](1.深度学习基础知识)
- [1.Transformer基础](1.深度学习基础知识/1.Transformer基础.md)
- [2.深度神经网络基础](1.深度学习基础知识/2.深度神经网络基础.md)
- [2.自然语言处理基础知识](2.自然语言处理基础知识)
- [1.分词器(Tokenizer)](2.自然语言处理基础知识/1.分词器(Tokenizer).md)
- [2.经典NLP模型](2.自然语言处理基础知识/2.经典NLP模型.md)
- [3.困惑度(perplexity)](2.自然语言处理基础知识/3.困惑度(perplexity).md)
- [3.大语言模型基础知识](3.大语言模型基础知识)
- [1.训练框架介绍(Megatron-lm、DeepSpeed)](3.大语言模型基础知识/1.训练框架介绍(Megatron-lm、DeepSpeed).md)
- [2.参数高效微调(PEFT)](3.大语言模型基础知识/2.参数高效微调(PEFT).md)
- [3.经典开源LLM介绍](3.大语言模型基础知识/3.经典开源LLM介绍.md)
- [4.RLHF介绍](3.大语言模型基础知识/4.RLHF介绍.md)
- [5.CoT、ToT介绍](3.大语言模型基础知识/5.CoT、ToT介绍.md)
- [6.SFT训练](3.大语言模型基础知识/6.SFT训练.md)
- [7.混合专家模型(MOE)](3.大语言模型基础知识/7.混合专家模型(MOE).md)
- [4.大语言模型推理](4.大语言模型推理)
- [1.Huggingface推理参数介绍](4.大语言模型推理/1.Huggingface推理参数介绍.md)
- [5.大语言模型应用](5.大语言模型应用)
- [1.LangChain介绍](5.大语言模型应用/1.LangChain介绍.md)
- [6.大语言模型前沿分享](6.大语言模型前沿分享)
- [1.LLM相关博客分享](6.大语言模型前沿分享/1.LLM相关博客分享.md)
- [2.LLM相关论文分享](6.大语言模型前沿分享/2.LLM相关论文分享.md)
## 深度学习基础知识
### Transformer基础
#### Transformer 的 Self Attention Layer 实现
- Transformer 模型的自注意力(Self Attention)机制涉及三种线性变换:查询(Q)、键(K)、值(V),以及通过计算注意力权重和加权求和来生成最终的输出。以下是自注意力机制的公式:
- 假设输入序列为 $X \in \mathbb{R}^{L \times d}$,其中 $L$ 是序列长度,$d$ 是特征维度。自注意力层中的线性变换矩阵为 $W_q \in \mathbb{R}^{d \times d_k}$、$W_k \in \mathbb{R}^{d \times d_k}$ 和 $W_v \in \mathbb{R}^{d \times d_v}$,其中 $d_k$ 和 $d_v$ 是分割查询、键和值时的维度。
- 查询(Q)、键(K)和值(V)的线性变换:
- $Q=X⋅W_{q}$
- $K=X⋅W_{k}$
- $V=X⋅W_{v}$
- 多头拆分:
- 在多头自注意力中,将查询(Q)、键(K)和值(V)分成 $h$ 个头,其中 $h$ 是注意力头的数量。对于每个头,使用不同的线性变换权重。
- 注意力得分计算:
- 使用查询(Q)和键(K)计算注意力得分,可以使用点积注意力(Scaled Dot-Product Attention):
- $Attention(Q,K)=softmax(\frac{QK^{T}}{\sqrt{d_{k}}})$
- 注意力加权求和:
- 使用注意力权重对值(V)进行加权求和,得到自注意力的输出:
- $Output=Attention(Q,K)V$
- 上述公式涵盖了Transformer模型中自注意力层的基本计算步骤。在实际应用中,通常还会考虑添加缩放(scaling)、掩码(masking)等操作来优化注意力机制的计算过程。多头自注意力则在每个头上分别进行这些计算,然后将多个头的输出拼接或串联起来,进一步提取序列中的信息
- 一个多头 Self Attention 代码实现如下:
```python
import torch
import torch.nn.functional as F
class SelfAttentionLayer(torch.nn.Module):
def __init__(self, d_model, num_heads):
super(SelfAttentionLayer, self).__init__()
self.d_model = d_model
self.num_heads = num_heads
self.d_k = d_model // num_heads
# 线性变换矩阵
self.W_q = torch.nn.Linear(d_model, d_model, bias=False)
self.W_k = torch.nn.Linear(d_model, d_model, bias=False)
self.W_v = torch.nn.Linear(d_model, d_model, bias=False)
def split_heads(self, x, batch_size):
x = x.view(batch_size, -1, self.num_heads, self.d_k)
return x.permute(0, 2, 1, 3)
def forward(self, x):
batch_size, seq_len, d_model = x.size()
q = self.W_q(x)
k = self.W_k(x)
v = self.W_v(x)
q = self.split_heads(q, batch_size)
k = self.split_heads(k, batch_size)
v = self.split_heads(v, batch_size)
# Scaled Dot-Product Attention
attn_scores = torch.matmul(q, k.transpose(-2, -1)) / (self.d_k ** 0.5)
attn_weights = F.softmax(attn_scores, dim=-1)
# Attention加权求和
output = torch.matmul(attn_weights, v)
output = output.permute(0, 2, 1, 3).contiguous().view(batch_size, seq_len, -1)
return output
# 测试自注意力层
d_model = 512
num_heads = 8
seq_len = 10
batch_size = 16
input_data = torch.randn(batch_size, seq_len, d_model)
self_attention = SelfAttentionLayer(d_model, num_heads)
output = self_attention(input_data)
print(output.size()) # 输出: torch.Size([16, 10, 512])
```
#### Transformer 中 Self Attention 计算为什么要除以特征维度数量的平方根
[参考1](https://zhuanlan.zhihu.com/p/366592542), [参考2](https://www.cnblogs.com/hisi-tech/p/16709612.html), [参考3](https://zhuanlan.zhihu.com/p/105722023)
- 上面 Transformer 代码中有使用 $\sqrt{d_{k}}$ 来对 softmax 之后的结果进行 scale,解释如下:
> We suspect that for large values of $d_{k}$, the dot products grow large in magnitude, pushing the softmax function into regions where it has extremely small gradients. To counteract this effect, we scale the dot products by $\frac{1}{d_{k}}$. To illustrate why the dot products get large, assume that the components of q and k are independent random variables with mean 0 and variance 1. Then their dot product $q ⋅ k=\sum_{i=1}^{d_{k}}(q_{i}k_{i})$, has mean 0 and variance $d_{k}$.
>
1. 首先要除以一个数,防止输入 softmax 的值过大,导致偏导数趋近于 0;
2. 选择根号 d_k 是因为可以使得 q*k 的结果满足期望为 0,方差为 1 的分布,类似于归一化。
#### 为什么要引入位置编码 (Position Embedding)
[参考](https://zhuanlan.zhihu.com/p/106644634)
- 对于任何一门语言,单词在句子中的位置以及排列顺序是非常重要的,它们不仅是一个句子的语法结构的组成部分,更是表达语义的重要概念。一个单词在句子的位置或排列顺序不同,可能整个句子的意思就发生了偏差。
> I do not like the story of the movie, but I do like the cast.
> I do like the story of the movie, but I do not like the cast.
> 上面两句话所使用的的单词完全一样,但是所表
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
学习大型语言模型(LLM).zip (45个子文件)
Awesome-LLM-Learning-main
0.引言
0.ignore.md 962B
tools
replace_image_revert_html_to_md.py 1011B
replace_image.py 2KB
gen_readme.py 3KB
Makefile 99B
LICENSE 1KB
5.大语言模型应用
1.LangChain介绍.md 854B
1.深度学习基础知识
2.深度神经网络基础.md 5KB
1.Transformer基础.md 11KB
images
PI.png 695KB
BN.png 163KB
2.自然语言处理基础知识
1.分词器(Tokenizer).md 6KB
3.困惑度(perplexity).md 2KB
2.经典NLP模型.md 490B
images
ppl.png 38KB
openai_token.png 111KB
4.大语言模型推理
1.Huggingface推理参数介绍.md 5KB
3.大语言模型基础知识
3.经典开源LLM介绍.md 8KB
5.CoT、ToT介绍.md 2KB
6.SFT训练.md 912B
7.混合专家模型(MOE).md 7KB
2.参数高效微调(PEFT).md 3KB
1.训练框架介绍(Megatron-lm、DeepSpeed).md 5KB
images
tot_24.png 151KB
megatron3.png 649KB
ptuning.png 43KB
MOE.png 161KB
lora.png 91KB
cot_zeroshot.png 424KB
chatglm2.png 59KB
dpo_2.png 67KB
dpo_1.png 51KB
cot.png 236KB
tot.png 249KB
megatron2.png 291KB
megatron4.png 532KB
megatron1.png 111KB
dpo.png 355KB
chatglm2_optim.png 81KB
4.RLHF介绍.md 3KB
.gitignore 3KB
6.大语言模型前沿分享
1.LLM相关博客分享.md 621B
2.LLM相关论文分享.md 734B
README.md 65KB
Learning Large Language Model (LLM)(大语言模型学习)_Awesome-LLM-Learning
项目内附说明
如果解压失败请用ara软件解压.txt 42B
共 45 条
- 1
资源评论
普通网友
- 粉丝: 1127
- 资源: 5293
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- delphi 读取多种格式的图像,并实现互转
- Wordpress简约大气昼夜切换导航主题模板NDNAV主题
- gcc-8.5.0.tar.gz
- Python爬取、存储、分析、可视化豆瓣电影Top250
- 应对期末考试时,所准备的学习仓库 主要是研一的期末课程-数值分析
- yolo算法-跌倒检测数据集-10792张图像带标签-检测到跌倒.zip
- yolo算法-道路旁边树木检测测试数据集-6898张图像带标签-.zip
- yolo算法-道路损坏数据集-9376张图像带标签纵向裂纹-砌块开裂.zip
- yolo算法-巴士卡车数据集-9900张图像带标签-公交车-卡车.zip
- yolo算法-热成像人-动物检测数据集-9124张图像带标签-人-鹿-大象.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功