大模型面試基礎問題

1.1.1 最主流的開源模型?

ChatGLM-6B[1] prefix LM

LLaMA-7B[2] causal LM

1.1.2 prefix LM和causal LM的區別?

1.1.2.1 Prefix LM

Prefix LM,即前綴語言模型,該結構是Google的T5模型論文起的名字,望文知義來說,這個模型的”前綴”有些內容,但繼續向前追溯的話,微軟的UniLM已經提及到了。前綴指的是輸入序列中的一部分已知內容,通常用來為模型提供上下文信息,以便生成后續內容。具體來說,前綴就是模型在生成過程中已經處理的那一部分序列為后續生成提供條件和指導

Prefix LM其實是Encoder-Decoder模型的變體,為什么這樣說?解釋如下:

(1) 在標準的Encoder-Decoder模型中,Encoder和Decoder各自使用一個獨立的Transformer

( 2) 而在Prefix LM,Encoder和Decoder則共享了同一個Transformer結構,在Transformer內部通過Attention Mask機制來實現。

與標準Encoder-Decoder類似,Prefix LM在Encoder部分采用Auto Encoding (AE-自編碼)模式,即前綴序列中任意兩個token都相互可見。在自編碼過程中,模型學習到的隱藏表示保留了輸入數據中的主要特征。在這個過程中,模型需要訪問所有輸入數據,以便找到數據中的整體結構和相關性。因此,AE模式下的模型可以看到輸入數據中的所有內容

在自然語言處理中,假設有一個前綴序列 X = [x1, x2, x3, ..., xn]。在AE模式下,序列中的每個token(如x2)可以訪問整個前綴 X,即可以看到其他token的信息。這不同于自回歸模式中的單向性約束(只能看到前面的token),AE模式是雙向的。

而Decoder部分采用Auto Regressive (AR-自回歸)模式,即待生成的token可以看到Encoder側所有token(包括上下文)和Decoder側已經生成的token,但不能看未來尚未產生的token。

Prefix LM的AttentionMask機制(左)及流轉過程(右)

Prefix LM的代表模型有UniLM、T5、GLM(清華滴~)

1.1.2.1.1 Auto Enconding(AE-自編碼)

自編碼器(AutoEncoder)是一種無監督的模型結構,其用途廣泛,可用于特征提取,異常檢測,降噪等。

自編碼器的基本結構是編碼器encoder解碼器decoder,其中編碼器對輸入的原始數據進行壓縮(降維),解碼器對壓縮后的數據進行重構,將壓縮數據還原為原始數據。整體其類似沙漏形狀。

自編碼器的編碼器encoder解碼器decoder多用串聯的全連接層構成,如下圖:

  • 其中黑色箭頭為構成編碼器encoder的全連接層,多個全連接層逐步將數據維度降低 到指定維度;紅色箭頭為構成解碼器decoder的全連接層,多個全連接層逐步將壓縮數據維度增加到 原始維度。一般來說編碼器與解碼器的結構是對稱的。

    • 特別的,編碼器,解碼器內部的層不必為全連接層,卷積層或循環層也可以。

  • 訓練中,該模型的輸入為原始數據。因為模型的功能是對輸入的數據進行壓縮與重構,所以期望的輸出應該和原始的輸入數據越接近越好。我們以兩者的差異為衡量的損失函數(差異可以使用binary交叉熵或者均方誤差等),進行模型內部參數的優化。

    • 輸出是原始數據,模型的輸出結果也是與原始數據對比差異,全程只用到了原始數據本身,不需要額外的信息。

https://zhuanlan.zhihu.com/p/625085766 代碼實例鏈接

1.1.2.1.2 Auto Regressive(AR-自回歸)

1.1.2.2 Causal LM

Causal LM是因果語言模型,目前流行的大多數模型都是這種結構,別無他因,因為GPT系列模型內部結構就是它,還有開源界的LLaMa也是。

Causal LM只涉及到Encoder-Decoder中的Decoder部分,采用Auto Regressive模式,直白地說,就是根據歷史的token來預測下一個token,也是在Attention Mask這里做的手腳。

CausalLM的Attention Mask機制(左)及流轉過程(右)

1.1.2.3 結論

attention mask不同,前者的prefix部分的token互相能看到,后者嚴格遵守只有后面的token才能看到前面的token的規則。

1.1.3 哪種架構是主流?

GPT系列就是Causal LM,目前除了T5和GLM,其他大模型基本上都是Causal LM。

1.1.4 說一下LLM常見的問題?

出現復讀機問題。比如:ABCABCABC不斷循環輸出到max length。

對于這種現象我有一個直觀的解釋(猜想):prompt部分通常很長,在生成文本時可以近似看作不變,那么條件概率 P(B|A)也不變,一直是最大的。

固定的 Prompt 和最大條件概率:生成內容的過程中,大語言模型通常會保持給定的 prompt 和上下文不變。這意味著在生成每個新 token 時,模型會基于一個不變的歷史內容進行預測。這時候,條件概率 P(B∣A)就傾向于穩定在某種模式下。例如,模型生成了一個短句 ABC,而模型預測下一部分最有可能是同樣的 ABC 時,它就可能陷入這種循環,生成 ABCABCABC。

生成內容的高概率反饋循環:由于模型的目標是最大化生成內容的概率,它自然會傾向于在「看起來高概率的句子模式」中停留,尤其是在 prompt 固定且上下文信息較少的情況下。簡單來說,重復的句子和結構成為了“高概率”選擇,使得模型不斷選擇生成同樣的內容。這可以類比為「陷入一個局部最優解」——模型在 ABCABC 的重復中找到了最高的概率分布,便難以跳脫出來。

生成重復內容,是語言模型本身的一個弱點,無論是否微調,都有可能出現。并且,理論上良好的指令微調能夠緩解大語言模型生成重復內容的問題。但是因為指令微調策略的問題,在實踐中經常出現指令微調后復讀機問題加重的情況。

另外,可能出現重復用戶問題的情況,原因未知。

1.1.5 如何緩解復讀機問題

1.1.5.1 do_sample:啟用隨機采樣
  • 作用:在常規解碼中,模型通常會選擇概率最高的下一個 token(greedy search),這可能導致高頻短語的重復。do_sample=True 則允許模型隨機從多個可能的 token 中選擇,使生成更具多樣性。

  • 影響:在啟用 do_sample 后,模型不再只選取最高概率的 token,而是通過引入隨機性選擇下一個 token,這可以打破不斷循環的高概率模式。這樣,生成的內容不再嚴格依賴于每一步的最高概率,使得模型可以探索更廣泛的輸出空間。

  • 潛在問題:采樣過度可能會導致內容的連貫性下降,生成的文本變得不相關。因此,do_sample 通常需要配合其他參數(例如 temperaturetop-k)進行細致的調節,以保證內容的質量。

1.1.5.2. temperature:溫度系數
  • 作用temperature 控制采樣的「隨機性」。當 temperature=1.0 時,模型按照默認概率分布進行采樣;temperature<1.0 時,概率分布變得更尖銳,模型更傾向于選取高概率的 token;而 temperature>1.0 會使分布變得更平緩,使得低概率的 token 也有較高的可能被選中。

  • 實踐應用

    • 當復讀問題嚴重時,可以適當提高 temperature,例如調至 1.2 或 1.5,使模型不再過于“保守”地生成高概率短語。

    • 如果 temperature 設得太高(如 >2),會引入極端隨機性,使文本變得混亂,生成的內容缺乏連貫性和邏輯。

    • 推薦的設置范圍:在 1.0 至 1.5 之間微調,既可以提升生成的多樣性,又保持一定的邏輯。

1.1.5.3. repetition_penalty:重復懲罰
  • 作用repetition_penalty 用來在解碼過程中對已經生成的詞或短語施加懲罰,以降低重復生成的概率。例如,repetition_penalty=1.2 時,模型會對每個重復出現的詞或短語施加 1.2 倍的懲罰,減少它們再次被選中的可能性。

  • 設置過大時的副作用:如果懲罰設置過大(例如 >2),模型會過度避免任何形式的重復,包括詞語的自然重復和標點符號的使用,導致生成的內容缺乏基本的語言結構。例如,“.” 和 “,” 等標點符號可能無法正常出現,使句子結構混亂。

  • 合理設置:通常建議在 1.1 到 1.5 之間設定 repetition_penalty,在保持一定懲罰的同時不影響自然語言的流暢度。

1.1.5.4. 組合使用 do_sampletemperaturerepetition_penalty

在實際應用中,這些參數往往要結合使用,以達到較好的效果。以下是一些常用的組合技巧:

  • 解決復讀問題的常用組合

    • 啟用 do_sample,將 temperature 設置為 1.2 左右,增加隨機性,同時將 repetition_penalty 設置在 1.1-1.3 范圍內,適度懲罰重復短語。

  • 過度隨機性問題的解決:如果發現 do_sample 使生成內容變得過于隨機,降低 temperature 到 1.0 左右,或者將 repetition_penalty 調低,減少對低概率詞的過度采樣。

這種組合方法通常會在減少復讀現象的同時,維持生成內容的連貫性和自然性。

1.1.6 llama 輸入句子長度理論上可以無限長嗎?

以 LLaMA 為代表的許多現代大語言模型,采用了 相對位置編碼(ROPE)理論上可以處理無限長度的序列。這種編碼方式不固定于某一個具體位置,而是根據每個 token 相對于其他 token 的距離來計算,這使得模型在結構上沒有長度限制。因此,模型確實在構架上可以生成極長的文本。

但問題在于:大多數模型的訓練數據通常包含長度不超過一定范圍(比如 2K 或 4K tokens)的序列。如果訓練過程中很少看到長于這個范圍的文本,模型在推理時生成超過訓練長度的文本效果就會明顯下降。這種情況類似于模型在“沒有見過的情境”下工作,即 缺乏“長度外推性”

1.1.6.1 RoPE
1.1.6.1.1. 關于RoPE

RoPE(Rotary Position Embedding),是蘇劍林大神在2021年就提出的一種Transformer模型的位置編碼。RoPE是一種可以以絕對位置編碼形式實現的相對位置編碼,兼顧了模型性能和效率。

2023年上半年的時候,大模型位置編碼尚有Alibi和RoPE在相互比拼,而到了2023年下半年,及今2024年,新開源出來的模型,大部分都是使用RoPE了。當然Alibi也有其優勢,這個在講Alibi的時候來說。

蘇神在他的個人網站科學空間中對RoPE有相關文章進行了介紹,本篇是在這個基礎上,對RoPE進行理解(公式和符號上也會沿用蘇神的寫法)。

1.1.6.1.2. 以絕對位置編碼的方式實現相對位置編碼

前面提到,RoPE是一種一絕對位置編碼的方式實現的相對位置編碼,那么這么做能帶來什么收益?

先說原因:

在文本長度不長的情況下(比如Bert時代基本都是256/512token的長度),相對位置編碼和絕對位置編碼在使用效果上可以說沒有顯著差別。 如果要處理更大長度的輸入輸出,使用絕對位置編碼就需要把訓練數據也加長到推理所需長度,否則對于沒訓練過的長度(訓練時沒見過的位置編碼),效果多少會打些折扣。 而使用相對位置編碼則更容易外推,畢竟token-2和token-1的距離,與token-10002和token-10001的距離是一樣的,也因此可以緩解對巨量長文本數據的需求。 但是傳統相對位置編碼的實現相對復雜,有些也會有計算效率低的問題。由于修改了self-attention的計算方式,也比較難推廣到線性注意力計算法模型中。 總結來說,就是絕對位置編碼好實現效率高適用線性注意力,而相對位置編碼易外推,因此就有了對“絕對位置編碼的方式實現相對位置編碼”的追求,去把二者的優點結合起來。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70728.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70728.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70728.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

your HTTP request connection start duration too long

If your HTTP request connection start duration is taking more than 7 seconds, here are some possible causes and troubleshooting steps: Possible Causes: Network Latency – Slow internet or network congestion.DNS Resolution Delay – Slow DNS lookup affecti…

Python天梯賽系統備考-字符串篇

知識點拆解 1. 切片技巧 定義 通過 [start:end:step] 語法截取字符串的子序列 start&#xff1a;起始索引&#xff08;包含&#xff0c;默認0&#xff09; end&#xff1a;結束索引&#xff08;不包含&#xff0c;默認末尾&#xff09; step&#xff1a;步長&#xff0…

國標28181協議在智聯視頻超融合平臺中的接入方法

一. 國標28181介紹 國標 28181 協議全稱是《安全防范視頻監控聯網系統信息傳輸、交換、控制技術要求》&#xff0c;是國內視頻行業最重要的國家標準&#xff0c;目前有三個版本&#xff1a; 2011 年&#xff1a;推出 GB/T 28181-2011 版本&#xff0c;為安防行業的前端設備、平…

深入探究 C 語言內存函數:memcpy、memmove、memset 和 memcmp

一&#xff0c;常見的內存函數 在 C 語言的編程世界里&#xff0c;對內存的高效操作至關重要。C 標準庫為我們提供了一系列強大的內存操作函數&#xff0c;其中 memcpy、memmove、memset 和 memcmp 這四個函數是處理內存數據的得力助手。接下來&#xff0c;讓我們深入了解它們…

Java 集合

Java 集合 在 Java 編程中&#xff0c;集合框架&#xff08;java.util 包&#xff09;是處理一組對象的強大工具。與數組不同&#xff0c;集合提供了更靈活的數據存儲和操作方式。本文將詳細介紹 Java 集合框架的核心接口、常用實現類及其應用場景&#xff0c;幫助你更好地理解…

go基本語法

跟Java比較學習。 hello word 示例代碼 test1.go文件&#xff1a; // 包路徑 package main// 導入模塊&#xff0c;下面兩種都行 import ("fmt" ) import "log"// main方法 func main() {log.Print("hello word !!!")fmt.Print("hello …

【Docker】如何在Linux、Windows、MacOS中安裝Docker

Linux安裝Docker 在終端中執行一鍵安裝腳本命令安裝docker sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh | bash -s docker --mirror Aliyun1.1 配置docker鏡像源 在終端執行 一行命令&#xff0c;編輯配置文件 sudo …

2.24力扣-回溯電話號碼的字母組合

17. 電話號碼的字母組合 - 力扣&#xff08;LeetCode&#xff09; class Solution {List<String> ans new LinkedList<>();StringBuilder temp new StringBuilder();public List<String> letterCombinations(String digits) {if(digitsnull || digits.leng…

Cocos Creator Shader入門實戰(一):材質和Effect的了解

引擎版本&#xff1a;3.8.5 環境&#xff1a; Windows 簡介 在Cocos Creator中&#xff0c;游戲炫彩繽紛的效果是借助著色器(Shader)來實現的。 Cocos主要基于OpenGL ES&#xff0c;而Shader的編寫則是在可編程渲染管線中基于修改&#xff1a;頂點著色器(Vertex) 和 片段著色…

akka現有的分布式定時任務框架總結

根據你的需求&#xff0c;以下是一些基于 Akka 實現的分布式定時任務框架&#xff0c;以及相關的 GitHub 項目推薦&#xff1a; 1. Openjob Openjob 是一個基于 Akka 架構的新一代分布式任務調度框架&#xff0c;支持多種定時任務、延時任務、工作流設計&#xff0c;采用無中…

微信小程序地圖map全方位解析

微信小程序地圖map全方位解析 微信小程序的 <map> 組件是一個功能強大的工具&#xff0c;可以實現地圖展示、定位、標注、路徑規劃等多種功能。以下是全方位解析微信小程序地圖組件的知識點&#xff1a; 一、地圖組件基礎 1. 引入 <map> 組件 在頁面的 .wxml 文…

Python的PyTorch+CNN深度學習技術在人臉識別項目中的應用

人臉識別技術是一種基于人臉特征進行身份識別的生物識別技術&#xff0c;其核心原理包括人臉檢測、人臉對齊、特征提取、特征匹配、身份識別。 一、應用場景 安防&#xff1a;門禁、監控。 金融&#xff1a;刷臉支付、身份驗證。 社交&#xff1a;自動標注、美顏。 醫療&am…

《數據庫索引設計與優化》譯本錯誤糾正(1)

今天在學習《數據庫索引設計與優化》第十一章第198頁的時候遇到一個問題&#xff0c;即參數的文字描述與實際不符。我看的是從網絡上找到的譯本&#xff0c;許多喜歡白嫖的朋友可能也會像我一樣遇到這種問題。 可以看到&#xff0c;上面對參數Z的描述是&#xff1a;Z上一次索引…

API測試工具:Swagger vs Postman 2025最新全面對比

隨著微服務架構的普及和云原生應用的激增&#xff0c;高效的 API 開發、測試和文檔管理工具變得越來越重要。在眾多 API 工具中&#xff0c;Swagger 和 Postman 各自以不同的方式解決著 API 開發生命周期中的關鍵問題&#xff0c;本文將從多個維度深入對比這兩款工具&#xff0…

如何查詢SQL Server數據庫服務器的IP地址

如何查詢SQL Server數據庫服務器的IP地址 作為數據庫管理員或開發人員&#xff0c;了解如何查詢SQL Server數據庫服務器的IP地址是一項重要技能。本文將介紹幾種簡單而有效的方法&#xff0c;幫助你輕松獲取這一信息。無論你是新手還是經驗豐富的專業人士&#xff0c;這些方法…

centos 7 安裝python3 及pycharm遠程連接方法

安裝openssl 使用pip3安裝 virtualenv的時候會提示WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 這是因為缺少openssl 2.0以上版本 解決辦法&#xff1a; 一、先確認版本 openssl version 二、安…

AI人工智能之機器學習sklearn-數據預處理和劃分數據集

1、概要 本篇學習AI人工智能之機器學習sklearn數據預處理和劃分數據集&#xff0c;從代碼層面講述如何進行數據的預處理和數據集劃分。 2、簡介 本片講述數據預處理的標準化處理、歸一化處理&#xff0c;以常用的兩個類為例 標準化處理類 StandardScaler歸一化處理類 MinMax…

智能硬件-01智能停車場

行業背景 隨著現代人們生活水平的提高&#xff0c;私家車輛在不斷增加&#xff0c;小區將面臨著臨時車用戶要多于固定車用戶的窘境&#xff0c;尤其是在早晚高峰時段車輛出入擁堵&#xff0c;對小區的車輛管理難度越來越大&#xff0c;對停車場收費員的崗位要求越來越高&#…

定長內存池的實現、測試及錯誤分析

背景 C/C 申請內存使用的是 malloc &#xff0c;malloc 其實就是一個大眾貨&#xff0c;什么場景下都可以用&#xff0c;但是什么場景下都可以用就意味著什么場景下都不會有很高的性能。 定長內存池解決固定大小的內存申請釋放需求&#xff0c; 性能達到極致&#xff0c;不考…

vue3 下載文件 responseType-blob 或者 a標簽

在 Vue 3 中&#xff0c;你可以使用 axios 或 fetch 來下載文件&#xff0c;并將 responseType 設置為 blob 以處理二進制數據。以下是一個使用 axios 的示例&#xff1a; 使用 axios 下載文件 首先&#xff0c;確保你已經安裝了 axios&#xff1a; npm install axios然后在你…