大模型问题汇总
-
llama 2注意力机制,手写分组注意力机制
- GQA分组注意力机制(为了加速模型训练和推理,MHA每个head都需要一个QKV矩阵,于是有了将K,V矩阵分组,几个head共用一个KV矩阵,Q矩阵不变)
- MQA 则是所有的head共用KV矩阵
-
langchain介绍,主要组件
- langchain主要包含langchain,langchain-core,langchain-community,LangServe,LangSmith
-
langchain: 包含ModelIO,Retrieval,Agent,Chains,Memory,Callbacks
- ModelIO主要是和LLM进行交互
- Retrieval主要是和外部数据检索交互
- Agent提供工具的代理能力
- Chains提供调用序列抽象能力
- Memory存储会话状态和记录
- Callbacks回调监控、日志
-
Langchain-community: 提供第三方集成的功能,譬如文档载入、分割等
-
langchain-core: 包含langchain的基本抽象已经LCEL(Langchain Expression Language)
-
LangServe: 使用了FastAPI提供服务能力,有server和client端侧的能力
-
LangSmith: 提供测试、开发、监控的平台
-
- 具体详细介绍http://shiyanjun.cn/archives/2613.html
- langchain主要包含langchain,langchain-core,langchain-community,LangServe,LangSmith
-
位置编码,几种位置编码的异同
-
绝对位置向量编码(1...N),扩展性差,很难外推,泛化性不好
-
正余弦标准位置编码(偶数正弦,基数余弦编码)
-
\(PE_{pos,2i+1}=cos(\frac{pos}{10000^{{2i+1}/d_m}})\) ; \(PE_{pos,2i}=sin(\frac{pos}{10000^{{2i}/d_m}})\)
-
RoPE 旋转位置编码(QK进行乘法的时候,会将绝对位置转化成相对位置,可以理解是一种位置编码的转换)
- \(<f_q(x_m,m),f_k(x_n,n)> = g(x_m,x_n,m-n)\) 详细介绍:https://blog.csdn.net/v_JULY_v/article/details/134085503
- 具体实施步骤:
- token编码向量后+pos编码向量,使用Q,K矩阵计算出\(q_m\),\(k_n\)向量,此时向量携带绝对位置
- 然后对\(q_m\),\(k_n\)应用旋转矩阵,具体做法针对向量元素,每2个一组进行旋转操作,也就是乘以旋转矩阵\(\begin{bmatrix} cos(m\theta_0) & -sin(\theta_0) & \cdots & 0 \\ sin(m\theta_0) & cos(\theta_0) & \cdots & 0 \\ \vdots & \ddots & cos(m\theta_{d/2-1}) & -sin(\theta_{d/2-1}) \\ 0 & \cdots & sin(m\theta_{d/2-1}) & cos(\theta_{d/2-1}) \end{bmatrix}\) ,其中d对应的向量维度
- RoPE有相应的局限,无法聚焦远处;attention score在随着distance很大时候会很小
-
ALiBi(Attention with Linear Biases) 不和标准transformer那样,在embedding层添加位置编码,而是QK^T结果后添加一个静态的不可学习的偏置项(说白了,就是数值固定)
- \(softmax(qiK^T+m⋅[−(i−1),…,−2,−1,0])\), \(m=\frac{-8}{n}\),其中n是head的索引
-
-
RLHF具体流程,包含几种模型
- 包含3个步骤,4个模型(actor,critic,SFT,reward)四个模型
-
encoder-only,decoder-only,encoder-decoder代表模型
- encoder-only bert以及bert变种模型
- decoder-only llama2等一些大模型
- encoder-decoder 模型有T5模型,GLM第一代模型
-
p-turing,lora微调方法介绍,与传统finetune区别
- p-turing 讲prompt进行参数隐式微调;一般会通过训练一些隐式的token(也有对应的emb参数),有些可能会通过MLP+LSTM训练拿到emb
- lora则是通过外挂一个低秩的矩阵进行参数微调,一般在nn.linear线性矩阵层,attention矩阵参数
- Qlora则是quant+lora
- 一般量化针对比较稳定的参数,譬如nn.linear层参数;激活层参数有较大值,量化可能会影响精度
- 量化可以降低显存占用,加快运算速度
- quant: float -> int8 (先将矩阵参数float映射到int8;计算【forward,backward】的时候再反量化回去);所以量化的好坏取决于映射函数的压缩比以及反量化解码效率
- 譬如int8量化策略:\(Q=round(\frac{real_val - zero_point}{scale} * 255) - 128\),这样将量化到区间[-127,127]之间
-
显存不够一般怎么解决
-
主流大模型的loss了解过吗?
-
deepspeed介绍,使用情况
-
领域模型continue Pretrain数据选取?
-
领域模型训练后通用能力下降,怎么缓解幻觉
-
指令微调、如何选择、设定、优化不同的超参数
-
指令微调如何选择最佳指令策略,以及该指令对模型的效果影响
-
llama,glm,bloom等大模型在数据处理,训练细节以及模型结构的优化点,包括但不限于注意力机制,归一化,嵌入层
相关文章:
强化学习:https://blog.csdn.net/v_JULY_v/article/details/128965854