RAG小结
RAG
RAG做知識問答,我們所使用的語料、索引建立方式、訓練方式,大致的模型參數,以及滿足以上我們對GPU運算資源的需求。
- 需求總結:
- 以下表格列舉我們實驗配置和論文實驗配置;
- 如果要使用base甚至large版本的預訓練模型和batch128,最好是單服務器節點有3塊16G+的gpu;沒有的情況下,可以利用多節點多GPU并行,需要配置;但單塊gpu能跑的batch還是很有限;
| 模型 | DPR (Albert-small*2) | mT5-small | DPR+mT5 (fix-ctx) |
| 參數 | 5M*2 | 80M | 85M |
| 訓練語料 | 問診(11W)+母嬰(2K) 測試1W | 問診(11W)+母嬰(2K) 測試1W | 問診(11W)+母嬰(2K) 測試1W |
| 訓練方式 | B-24/S-256/40E | B-16/S-256/30E | B-16/S-256/30E |
| 索引方式 | Faiss(12W/1hour) | 無 | 無 |
| 實際占用GPU | 3gpus*9G/gpu (office0-1080ti) | 2gpus*10G/gpu (office2-2080ti) | 2gpus*11G/gpu (office2-2080ti) |
| 以下為論文使用配置 | |||
| 模型 | DPR (Bert-base-uncased*2) | Bart-large | DPR+Bart (fix-ctx) |
| 參數 | 120M*2 | 400M | 520M |
| 訓練語料 | Eng-QA(16W)+Wiki(2KW ) | Eng-S2S預訓練 | QA(16W) |
| 訓練方式 | B-128/S-100/40E | B-8000 | B-128/S-100/40E(約) |
| 索引方式 | Faiss(21M/8.5hour) | 無 | 無 |
| 實際占用GPU | 8gpus*32G/gpu | 不少于DPR(約) | 不少于DPR(約) |
注1:fix-ctx指固定context encoder,不做更新
注2:M-百萬,W-萬,K-千;h指hour,B指Batch,S指Seq length,E指Epoch;Eng指English;S2S指Seq2Seq;
注3:我們的其他可用語料近600W–百度百科(146W) & dureader(22W) & web問答(400W) & cmrc2018(1.3W);
注4:“約” 指的是論文沒有明確指出配置具體情況,表格給出的相關數據為綜合推測;
注5:DPR論文提到21M passages建立Faiss索引只需8.5h,使用E5-2698 V4@2.2GHz CPU和512G的內存;使用of2 CPU和96G內存實測faiss建索引,速度約12W/1h,300W/85h(非線性);查看實測用的Faiss索引代碼和DPR論文索引代碼實現方式,基本一致;估計是硬件差別;
注6:數據問題–DPR論文訓練數據answer有對應的源context/passage,我們的數據沒有(除了2K母嬰QA),目前是利用answer同時做context,問題應該不大;
-
RAG相關
- 流程如圖
- 基本過程:RAG由Retriever和Generator組成,輸入編碼后(對QA來說即question)傳入Retriever,Retriever檢索與question相關的多個內容(稱為contexts),并將contexts與question結合后,作為新的輸入發送給Generator,Generator接受輸入并生成結果(對QA即生成答案)。
-
組件細節
- Retriever
- 來自另一篇論文DPR。DPR使用Bi-Encoder,即雙編碼器,分別編碼question和context。原始paper使用的兩個編碼器為 Bert-base-uncased;
- Retriever訓練使用In-batch negative training,大致是 batch內每個樣本(即question)對應的positive context均為其他樣本的negative;每個樣本另外利用BM25尋找最相似的context作為hard negative,以此增強模型學習能力;
- Inference階段,Retriever將輸入的question編碼為q_vector,再利用q_vector和事先做好索引的passages(檢索語料庫,即context)進行相似度計算,獲得相似度top k的contexts,與question拼接,結果作為新的輸入傳遞給generator,由generator生成答案;
- Generator
- RAG論文使用的generator為預訓練的Bart模型,Bart是一個預訓練的seq2seq(S2S)模型,將很多任務當做S2S模式來訓練;MBart/MT5為基于Bart/T5的多語言預訓練模型;
- generator經過預訓練,已存有一定的知識,再結合檢索的contexts,可以更好的生成答案;
- Retriever
-
訓練過程
- 固定retriever的context encoder,訓練question encoder及generator;
總結
- 上一篇: 网站验证码破解功略
- 下一篇: 成功英语演讲的秘诀:开场白、结束语(我们