大模型問題彙總
-
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