如何在微信公眾號里建設(shè)微網(wǎng)站制作app平臺需要多少錢
導(dǎo)讀
大模型時代很多企業(yè)都在開發(fā)自己的大模型,這直接刺激了大模型崗位的需求。本文為大家整理了大模型面試相關(guān)的知識點,希望對大家面試求職有所幫助。
今天分享大模型面試相關(guān)知識點,持續(xù)更新。
1. RAG技術(shù)體系的總體思路
數(shù)據(jù)預(yù)處理->分塊(這一步驟很關(guān)鍵,有時候也決定了模型的效果)->文本向量化->query向量化->向量檢索->重排->query+檢索內(nèi)容輸入LLM->輸出
2. 使用外掛知識庫主要為了解決什么問題
- 克服遺忘問題
- 提升回答的準(zhǔn)確性、權(quán)威性、時效性
- 解決通用模型針對一些小眾領(lǐng)域沒有涉獵的問題
- 提高可控性和可解釋性,提高模型的可信度和安全性
3. 如何評價RAG項目效果的好壞
針對檢索環(huán)節(jié)的評估:
- MMR 平均倒排率:查詢(或推薦請求)的排名倒數(shù)
- Hits Rate 命中率:前k項中,包含正確信息的項的數(shù)目占比
- NDCG
針對生成環(huán)節(jié)的評估:
- 非量化:完整性、正確性、相關(guān)性
- 量化:Rouge-L
4. 大模型的幻覺問題、復(fù)讀機問題是什么
幻覺問題:即生成的內(nèi)容是無意義的或不忠實于提供的源內(nèi)容
復(fù)讀機問題:重復(fù)生成某些話
5. 針對問題4,有沒有什么解決辦法
針對幻覺問題:引入外掛知識庫,加入一些糾偏規(guī)則,限制輸出長度等
針對復(fù)讀機問題:
- 豐富數(shù)據(jù)集的多樣性,預(yù)處理時盡量過濾重復(fù)無意義的文本
- 同義詞替換等做數(shù)據(jù)增強
- 溫度參數(shù)調(diào)整
- 后處理與過濾
6. 出現(xiàn)問題4的原因有哪些
針對幻覺問題:幻覺問題主要分為兩大類,一類是生成結(jié)果與數(shù)據(jù)源不一致,自相矛盾。另一類是用戶問題超出了大模型的認(rèn)知。針對前者可能是訓(xùn)練數(shù)據(jù)和源數(shù)據(jù)不一致、數(shù)據(jù)沒對齊或者編碼器理解能力的缺陷和解碼器策略錯誤可能導(dǎo)致幻覺。后者則是用戶的問題不在語言模型認(rèn)知范圍內(nèi)。
針對復(fù)讀機問題:數(shù)據(jù)質(zhì)量不高,存在大量單一、重復(fù)文本,文本過長(補充:當(dāng)你的前面的條件文本過長時,大模型的輸出的幾個短文本會被原始的很長的條件文本淹沒,繼續(xù)預(yù)測下一個token的話,在模型看起來可能條件仍然是差不多的,此時如果使用greedy search,只選擇概率最大的一個token,模型極大可能會將前面已經(jīng)生成的短文本重新預(yù)測成概率最大的文本,以此類推,會一直重復(fù)下去。)
7. 當(dāng)前主流的開源大模型是哪個,其架構(gòu)具體是怎樣的?
當(dāng)前開源影響范圍最廣,生態(tài)建設(shè)最好的開源大模型是Meta的LLaMA。其依舊采用Transformers架構(gòu),并做了如下改動:
- 為了提高訓(xùn)練穩(wěn)定性,對每個子層做輸入前置歸一化,歸一化函數(shù)為RMSNorm(受GPT-3啟發(fā))
- 為了提升性能,SwiGLU激活函數(shù)替換ReLU激活函數(shù)(受PaLM啟發(fā))
- 從絕對位置嵌入,改為旋轉(zhuǎn)嵌入(受GPT-neo啟發(fā))
- 使用causal multi-head attention的一個高效實現(xiàn)來減少內(nèi)存占用和運行時間
8. 有哪幾種SFT方法
- 全微調(diào)
- Adapter Tuning
- Prefix Tuning
- Prompt Tuning
- P-Tuning v1
- lora
- RLHF
(SFT時,學(xué)習(xí)率設(shè)置為預(yù)訓(xùn)練階段的10%,一般會取得不錯的效果)
9. 什么是lora微調(diào)
在原始 PLM (Pre-trained Language Model) 旁邊增加一個旁路,做一個降維再升維的操作,來模擬所謂的 intrinsic rank。訓(xùn)練的時候固定 PLM 的參數(shù),只訓(xùn)練降維矩陣A與升維矩陣B。而模型的輸入輸出維度不變,輸出時將BA與PLM的參數(shù)疊加。用隨機高斯分布初始化A ,用0矩陣初始化B,保證訓(xùn)練的開始此旁路矩陣依然是 0 矩陣。
10. RAG的檢索階段,常見的向量檢索模型有哪些?
ANN算法
- 乘積向量
- 暴力搜索
- hnswlib
KD樹
11. 針對通用的RAG,你覺得還有哪些改進點?
- query側(cè):做query的糾錯、改寫,規(guī)范化和擴展
- 對向量數(shù)據(jù)庫做層次索引,提高檢索效率和精度
- 對LLM模型微調(diào),針對當(dāng)前垂直領(lǐng)域引入知識庫,提升回答的專業(yè)性、時效性和正確性
- 對最終輸出做后處理,降低輸出的不合理case
12. 什么是LangChain
LangChain為大型語言模型提供了一種全新的搭建和集成方式,通過這個強大的框架,我們可以將復(fù)雜的技術(shù)任務(wù)簡化,讓創(chuàng)意和創(chuàng)新更加易于實現(xiàn)。有點類似于神經(jīng)網(wǎng)絡(luò)開發(fā)與tensorflow/pytorch之間的關(guān)系
13. LangChain的常用模塊有哪些?
- document_loaders 文檔加載
- text_splitter 文檔分塊
- embedding.huggingface 向量化
- vectorstores 向量存儲
- chain.RetrievalQA 檢索問答
14. SFT和RLHF優(yōu)劣對比
方法 | 優(yōu)點 | 缺點 |
---|---|---|
SFT | 1. 啟動簡單,僅需要問答對數(shù)據(jù)就可以進行訓(xùn)練; | |
2. 訓(xùn)練簡單,直接對LLM進行調(diào)參,大部分情況下,訓(xùn)練幾個epoch就可達到預(yù)期; | ||
3. 顯存資源相比于RLHF來說耗費低 | 1. 模型的效果非常依賴于SFT數(shù)據(jù)的質(zhì)量,天花板取決于SFT數(shù)據(jù)標(biāo)注的質(zhì)量; | |
2. 對標(biāo)注要求高,對一條指令來說,要標(biāo)注很高質(zhì)的回答其實是一件非常困難的事情,既耗時又耗力。 | ||
RLHF | 1. 直接利用人類偏好來進行指導(dǎo)大模型的訓(xùn)練,使大模型的輸出更能滿足人們的要求; | |
2. 在安全性和事實性上,都能有很大的提升。 | 1. 訓(xùn)練消耗大量的顯存;2. 訓(xùn)練的過程中很不穩(wěn)定,想要成功的完成PPO的訓(xùn)練不是那么容易的事情;3. 除了SFT階段的數(shù)據(jù),還得標(biāo)注Reward model的數(shù)據(jù)。在對齊人類偏好的過程中,標(biāo)誰更好比較容易,但是想標(biāo)誰比誰好多少,又差多少,這不是件容易的事情。be |
本答案引用自文章(https://zhuanlan.zhihu.com/p/677341520)
15. 詳細(xì)介紹一下RLHF
留個坑,改天詳細(xì)歇一歇
16. 大模型訓(xùn)練經(jīng)常出現(xiàn)一些OOM問題,在現(xiàn)有硬件基礎(chǔ)下,有什么性能提升trick
梯度累積
- 混合精度訓(xùn)練
- 減輕模型參數(shù)
- 分布式訓(xùn)練
- 減少批量大小
- 增加硬件資源
- 數(shù)據(jù)處理與加載優(yōu)化:例如,可以使用數(shù)據(jù)流水線技術(shù)來并行加載和處理數(shù)據(jù),減少內(nèi)存中同時存在的數(shù)據(jù)量
17. LLaMA模型輸入句子理論上可以無限長嗎?
不可以
- 受限于計算資源
- 訓(xùn)練階段長句子會導(dǎo)致梯度消失或者梯度爆炸(因為它依賴前面的詞進行最大似然估計作為損失函數(shù),這個最大似然估計化簡一下就是連乘的形式,容易造成梯度消失或者梯度爆炸)
- 推理階段會增加預(yù)測錯誤率
18. 如何讓大模型處理更長的文本?
- 分塊處理,同時重疊保證連貫性
- 增加模型參數(shù)量,復(fù)雜化模型架構(gòu),提高對更長文本的捕捉與表達能力
19. 大模型推理時,顯存中有那幾部分?jǐn)?shù)據(jù)?
- 模型參數(shù)
- 輸入數(shù)據(jù)
- 計算中間結(jié)果
- 內(nèi)存管理策略:某些深度學(xué)習(xí)框架在推理時采用了一種延遲釋放顯存的策略,即顯存不會立即釋放,而是保留一段時間以備后續(xù)使用。這種策略可以減少顯存的分配和釋放頻率,提高推理效率,但也會導(dǎo)致顯存一直占用的現(xiàn)象。
20. 介紹下ChatGLM
首先要說起它的基座 GLM, GLM 既可以做 Encoder 也可以做 Decoder。
主要通過 兩種mask方式來實現(xiàn):
- [mask]:bert形式,隨機mask 文本中的短span
- [gmask]:gpt 形式,mask末尾的長span
在chatglm里面做生成任務(wù)時,是用 [gmask]。chaglm2中完全采用 gmask來進行預(yù)訓(xùn)練。
在ChatGLM 的內(nèi)部結(jié)構(gòu)中的變換,從下到上依次是:
- 位置編碼:從BERT的訓(xùn)練式位置編碼轉(zhuǎn)變?yōu)樾D(zhuǎn)位置編碼
- 激活函數(shù):從BERT中的 GeLU 轉(zhuǎn)變?yōu)?GLU, 在ChatGLM2 中又變成了SwiGLU
- LayerNormalization:采用的是DeepNorm,是對post-Normalization 的改進,即在殘差之后做Normalization。在ChatGLM中,把 layer-normalization 改為 RMSNormalization。
在ChatGLM 2.0 中還添加了一些其他變化:
- FlashAttenion:利用顯存和內(nèi)存來做加速
- Multi-Query Attention:多個頭只采用一個 KV對,通過參數(shù)共享來降低顯存占用
21. 介紹下GLU激活函數(shù)和SwiGLU激活函數(shù)
GLU 的核心思想是通過門控機制來過濾信息,進而提高網(wǎng)絡(luò)的表達能力和泛化能力。(門控機制有助于長距離建模)
SwishGLU 的核心思想是將 Swish 和 GLU 結(jié)合起來,SwishGLU 實際上只是多乘了一個 g(x)。
22. LLaMA1/2的異同
首先從數(shù)據(jù)角度,lamma2.0為2.0T, lamma1是1.4T。其次是上下文長度, lamma1是2k,lamma2是4k。
最后從模型架構(gòu)角度:
從整體上看,二者都遵循自回歸 Transformer 的架構(gòu),只不過內(nèi)部的細(xì)節(jié)有些不同。
- 位置編碼:二者都采用了旋轉(zhuǎn)位置編碼
- Normalization:二者都采用pre-normalization,只不過1.0中采用原始的 LayerNormalization,2.0中采用的是 RMSNorm
- 激活函數(shù):采用SwiGLU
23. 模型在訓(xùn)練和推理的時候各占用顯存的多少?
一般來說,訓(xùn)練占用模型參數(shù)量的16倍大小(優(yōu)化器、梯度、模型本身);推理占用模型參數(shù)量的2倍大小(fp16是一個單位參數(shù)大小對應(yīng)兩個字節(jié),int8是一個單位參數(shù)大小對應(yīng)一個字節(jié))。
24. 詳細(xì)說說Deepspeed的機制
以下內(nèi)容引用自該篇文章
是一種數(shù)據(jù)并行的方法,采用的ring all reduce方式。
傳統(tǒng)的parameter server是server和client的方式,client通過計算分配給自己的數(shù)據(jù),產(chǎn)生梯度,傳給server,server做聚合,然后把聚合后的參數(shù)再傳給client,這個方式的弊端是server容易成為瓶頸,server通信量太大。另外可能一個client失敗,會導(dǎo)致其他client等待。
Ring all reduce是一種分布式的方式,各個節(jié)點分配通信量。總的通信量和ps沒啥變化,但是通信的壓力平攤到各個GPU上了,GPU之間的通信可以并行進行。
假如,GPU數(shù)量是N,把模型參數(shù)分成N份,每個GPU要存放整個參數(shù)。每個GPU也要分配訓(xùn)練數(shù)據(jù)。當(dāng)一次迭代,N個GPU之間要經(jīng)過一個scatter和gather操作,reduce-scatter是將不同gpu上對應(yīng)的參數(shù)的gradient相加,一共需要通訊(N-1)次。All-gather 是將合并完整的參數(shù),傳到其他gpu上,需要通訊(N-1)次。一次all reduce,單卡通信量為2*sita。
Zero包括3種方案,逐步遞進:
zero1:將adam的參數(shù)分割成N份,這樣一個GPU上只能保存一份adam參數(shù):這對于forward沒啥影響,gradient需要進行一次all-reduce,但是只能更新一部分參數(shù),所以W需要進行一次all-gather,通信量為3Nsita,存儲為 12sita/N + 4*sita
zero2: 將adamw,gradient都分割成N份,梯度就不需要all-gather了,只需要scatter了,w需要all-gather,通訊量為2N*sita
zero3: 將參數(shù),adam 和gradient都分割,forward的時候,需要將w all-gather,backfoward時,還需要把w all-gather回來,計算梯度,丟掉不屬于自己的w,然后對梯度做reduce scatter,更新w,通訊量為3N*sita。
最后采用采用stage3:用1.5倍的通訊開銷,換回近120倍的顯存
另外,還有ZeRO-Offload是基于Zero2,將adam和gradient放到內(nèi)存中,在cpu內(nèi)起了N個線程計算。其中的一條主線是gradient總是需要scatter的,感覺這個數(shù)據(jù)并行標(biāo)志。這里需要注意一點 不管是forward 還是backward,都是需要有完整的w的。另外有了gradient,以及adamW的參數(shù),才能更新W。
25. 什么是混合精度訓(xùn)練
FP64用8個字節(jié)共64位,FP32用4個字節(jié)共32位,FP16用2個字節(jié)共16位。在神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練過程中,通常默認(rèn)使用單精度(FP32)浮點數(shù)據(jù)類型來表示網(wǎng)絡(luò)模型的權(quán)重和其他參數(shù)。
為什么需要混合精度訓(xùn)練呢?
使用FP16訓(xùn)練神經(jīng)網(wǎng)絡(luò),相比使用FP32有以下優(yōu)點。
- 內(nèi)存占用減少:FP16的位寬是FP32的一半,所以權(quán)重等參數(shù)占用的內(nèi)存也減少了一半,這樣就可以訓(xùn)練更大的網(wǎng)絡(luò)模型或者使用更多的數(shù)據(jù)。
- 通訊效率提高:對于分布式訓(xùn)練,特別是大模型訓(xùn)練,通訊的開銷是一個性能瓶頸,通訊的位寬減少了一半,就可以加快通訊速度,減少等待時間,提高數(shù)據(jù)流通效率。
- 計算效率更高:在一些專門的AI加速芯片上,使用FP16的計算性能比FP32更快。
但是使用FP16也會帶來一些問題,主要有兩個方面:
- 數(shù)據(jù)溢出和
- 舍入誤差
為了利用FP16的優(yōu)勢,提高深度學(xué)習(xí)訓(xùn)練的效率和性能,同時避免精度溢出和舍入誤差的影響,可以采用FP16和FP32的混合精度訓(xùn)練,主要涉及到一下三個重要技術(shù)點:
- 權(quán)重備份(Weight Backup)
- 損失放大(Loss Scaling)
- 精度累加(Precision Accumulated)
26. 什么是prefix LLM和casual LLM
prefix LM:token可以相互看到,輸入雙向注意力,輸出單向注意力(ChatGLM、ChatGLM2、U-PaLM)
casualLM:嚴(yán)格自回歸,從左到右的單向注意力 (LLaMA-7B、LLaMa 衍生物、Qwen)
27. 說一說針對MHA后續(xù)的一些計算優(yōu)化工作
- KV cache,核心思想:因為transformers是自回歸,每一個token的預(yù)測包含大量前文的重復(fù)冗余計算。優(yōu)化點是將需要重復(fù)利用的中間結(jié)果存下來,避免重復(fù)計算
- MQA,核心思想:雖然SRAM的帶寬很大,但是容量很小(A100只有大概20M),所以要進一步減少需要緩存的數(shù)據(jù)。MQA中的多頭只有Q是不一樣的,K、V完全相同。
- GQA,核心思想:進一步減少需要緩存的數(shù)據(jù)大小,K、V分組復(fù)制,數(shù)據(jù)大小介于MQA和MHA之間。
- FlashAttention,核心思想:將Q、K、V切分為更小的塊,從HBM中加載到SRAM,需要計算的時候直接從SARM中讀(因為目前transformers的計算效率瓶頸不在于計算速度,而是IO)
FlashAttention涉及到很多計算trick,有空單獨開一篇文章來說
28. 說說attention幾種常見的計算方式
- self-attention
- din的attention計算在得到權(quán)重之后,沒有進行softmax歸一化操作,而是保留了權(quán)重原始的信號強度。原始權(quán)重是通過網(wǎng)絡(luò)最后一層激活函數(shù)得到,因此可以利用激活函數(shù)的特點,將其值限制在0-1之間,如sigmoid函數(shù),從而使得到的原始權(quán)重值可直接用于加權(quán)求和,保留了權(quán)重的差異性。使用softmax操作雖然可以進行歸一化,但同時會弱化了權(quán)重之間的差異性,有損用戶興趣的局部聚焦性。
如何學(xué)習(xí)大模型 AI ?
由于新崗位的生產(chǎn)效率,要優(yōu)于被取代崗位的生產(chǎn)效率,所以實際上整個社會的生產(chǎn)效率是提升的。
但是具體到個人,只能說是:
“最先掌握AI的人,將會比較晚掌握AI的人有競爭優(yōu)勢”。
這句話,放在計算機、互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)的開局時期,都是一樣的道理。
我在一線互聯(lián)網(wǎng)企業(yè)工作十余年里,指導(dǎo)過不少同行后輩。幫助很多人得到了學(xué)習(xí)和成長。
我意識到有很多經(jīng)驗和知識值得分享給大家,也可以通過我們的能力和經(jīng)驗解答大家在人工智能學(xué)習(xí)中的很多困惑,所以在工作繁忙的情況下還是堅持各種整理和分享。但苦于知識傳播途徑有限,很多互聯(lián)網(wǎng)行業(yè)朋友無法獲得正確的資料得到學(xué)習(xí)提升,故此將并將重要的AI大模型資料包括AI大模型入門學(xué)習(xí)思維導(dǎo)圖、精品AI大模型學(xué)習(xí)書籍手冊、視頻教程、實戰(zhàn)學(xué)習(xí)等錄播視頻免費分享出來。
第一階段(10天):初階應(yīng)用
該階段讓大家對大模型 AI有一個最前沿的認(rèn)識,對大模型 AI 的理解超過 95% 的人,可以在相關(guān)討論時發(fā)表高級、不跟風(fēng)、又接地氣的見解,別人只會和 AI 聊天,而你能調(diào)教 AI,并能用代碼將大模型和業(yè)務(wù)銜接。
- 大模型 AI 能干什么?
- 大模型是怎樣獲得「智能」的?
- 用好 AI 的核心心法
- 大模型應(yīng)用業(yè)務(wù)架構(gòu)
- 大模型應(yīng)用技術(shù)架構(gòu)
- 代碼示例:向 GPT-3.5 灌入新知識
- 提示工程的意義和核心思想
- Prompt 典型構(gòu)成
- 指令調(diào)優(yōu)方法論
- 思維鏈和思維樹
- Prompt 攻擊和防范
- …
第二階段(30天):高階應(yīng)用
該階段我們正式進入大模型 AI 進階實戰(zhàn)學(xué)習(xí),學(xué)會構(gòu)造私有知識庫,擴展 AI 的能力??焖匍_發(fā)一個完整的基于 agent 對話機器人。掌握功能最強的大模型開發(fā)框架,抓住最新的技術(shù)進展,適合 Python 和 JavaScript 程序員。
- 為什么要做 RAG
- 搭建一個簡單的 ChatPDF
- 檢索的基礎(chǔ)概念
- 什么是向量表示(Embeddings)
- 向量數(shù)據(jù)庫與向量檢索
- 基于向量檢索的 RAG
- 搭建 RAG 系統(tǒng)的擴展知識
- 混合檢索與 RAG-Fusion 簡介
- 向量模型本地部署
- …
第三階段(30天):模型訓(xùn)練
恭喜你,如果學(xué)到這里,你基本可以找到一份大模型 AI相關(guān)的工作,自己也能訓(xùn)練 GPT 了!通過微調(diào),訓(xùn)練自己的垂直大模型,能獨立訓(xùn)練開源多模態(tài)大模型,掌握更多技術(shù)方案。
到此為止,大概2個月的時間。你已經(jīng)成為了一名“AI小子”。那么你還想往下探索嗎?
- 為什么要做 RAG
- 什么是模型
- 什么是模型訓(xùn)練
- 求解器 & 損失函數(shù)簡介
- 小實驗2:手寫一個簡單的神經(jīng)網(wǎng)絡(luò)并訓(xùn)練它
- 什么是訓(xùn)練/預(yù)訓(xùn)練/微調(diào)/輕量化微調(diào)
- Transformer結(jié)構(gòu)簡介
- 輕量化微調(diào)
- 實驗數(shù)據(jù)集的構(gòu)建
- …
第四階段(20天):商業(yè)閉環(huán)
對全球大模型從性能、吞吐量、成本等方面有一定的認(rèn)知,可以在云端和本地等多種環(huán)境下部署大模型,找到適合自己的項目/創(chuàng)業(yè)方向,做一名被 AI 武裝的產(chǎn)品經(jīng)理。
- 硬件選型
- 帶你了解全球大模型
- 使用國產(chǎn)大模型服務(wù)
- 搭建 OpenAI 代理
- 熱身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地計算機運行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何優(yōu)雅地在阿里云私有部署開源大模型
- 部署一套開源 LLM 項目
- 內(nèi)容安全
- 互聯(lián)網(wǎng)信息服務(wù)算法備案
- …
學(xué)習(xí)是一個過程,只要學(xué)習(xí)就會有挑戰(zhàn)。天道酬勤,你越努力,就會成為越優(yōu)秀的自己。
如果你能在15天內(nèi)完成所有的任務(wù),那你堪稱天才。然而,如果你能完成 60-70% 的內(nèi)容,你就已經(jīng)開始具備成為一名大模型 AI 的正確特征了。
這份完整版的大模型 AI 學(xué)習(xí)資料已經(jīng)上傳CSDN,朋友們?nèi)绻枰梢晕⑿艗呙柘路紺SDN官方認(rèn)證二維碼免費領(lǐng)取【保證100%免費
】
