大家好,我想做這個視頻已經有一段時間了。這是一個全面但面向普通觀眾的介紹,介紹像ChatGPT這樣的大型語言模型。我希望通過這個視頻讓大家對這種工具的工作原理有一些概念性的理解。
首先,我們來談談你在這個文本框里輸入內容并點擊回車后背后的運作機制。我們應該輸入什么?這些生成出來的詞又是怎么回事?它是如何工作的?你到底是在和什么交流?
我們將從構建像ChatGPT這樣的東西開始講起,在這個過程中,我會提到一些這些工具在認知心理學方面的影響。
預訓練數據(互聯網)?
預訓練階段是整個過程的第一步。預訓練階段的第一步是從互聯網下載和處理數據。為了讓大家對這個有個直觀的感受,我推薦大家看看這個網址。有一家公司叫Hugging Face,他們收集、整理并創建了一個名為FineWeb的數據集。他們在這個博客文章里詳細介紹了FineWeb數據集的構建過程。像OpenAI、Anthropic和Google等主要的LLM提供商內部也有類似的數據集。
我們試圖從互聯網上獲取大量高質量的文本,這些文本來源公開可用,并且我們希望文檔的種類非常豐富,因為我們希望模型能包含大量的知識。實現這個目標其實很復雜,需要多個步驟。比如FineWeb數據集最終大概是44TB的磁盤空間。雖然互聯網非常大,但我們處理的是文本,并且經過了嚴格的篩選。
Common Crawl是一個從2007年開始就一直在抓取互聯網的組織。截至2024年,他們索引了27億個網頁。他們有很多爬蟲在互聯網上抓取數據,從一些種子網頁開始,順著鏈接不斷抓取并索引信息。Common Crawl的數據很原始,需要經過很多處理步驟,比如URL過濾,去除惡意網站、垃圾網站等;文本提取,把HTML代碼轉化為純文本;語言過濾,比如FineWeb會用語言分類器篩選出英語占比超過65%的網頁;還有去重和去除個人身份信息等操作。
標記化(Tokenization)?
在把文本輸入神經網絡之前,我們需要決定如何表示這些文本并將其輸入。我們的技術要求文本是一維符號序列,并且符號數量有限。我們先把文本轉化為UTF - 8編碼的原始比特,然后通過字節對編碼算法等方式將文本轉化為有限的符號序列。比如GPT - 4使用了大約10萬個可能的符號。
神經網絡的輸入輸出
我們把文本序列用標記器轉化為標記序列后,就進入神經網絡訓練階段。我們希望模型學習標記在序列中的統計關系。我們會從數據中選取一定長度的標記窗口,預測下一個標記。開始時神經網絡是隨機初始化的,我們會根據預測結果和真實標簽調整網絡參數,讓正確答案的概率更高。
神經網絡內部
神經網絡的輸入是變長標記序列,輸出是對下一個標記的預測概率。這些參數就像DJ調音臺上的旋鈕,通過調整參數來優化模型的預測結果。現代神經網絡有數十億個參數,訓練過程就是不斷調整這些參數使其與訓練數據的統計模式相匹配。
推理(Inference)?
推理階段是從模型中生成新數據。我們從一些起始標記開始,根據模型的概率分布采樣下一個標記,不斷重復這個過程。由于采樣和隨機性的存在,生成的結果具有一定的隨機性,可能與訓練數據不完全相同。
GPT - 2:訓練和推理
GPT - 2是OpenAI發布的第二代Transformer神經網絡,有16億個參數,最大上下文長度為1242個標記,訓練了約1000億個標記。我曾嘗試復現GPT - 2,訓練成本在2019年估計約為40000美元,現在可以做得更好且成本更低。
Llama 3.1基礎模型推理
我們還可以使用一些大科技公司訓練好的模型。比如Llama 3,它是Meta發布的450億參數模型,訓練了15萬億個標記。Meta還發布了Instruct版本,使其成為一個助手模型。我們可以與基礎模型交互,但它還不是完整的助手,只是一個標記自動補全工具,并且結果是隨機的。雖然它能提供一些知識,但這些知識是模糊、概率性的,而且可能存在幻覺。不過,通過巧妙的提示設計,基礎模型也可以在一些實際應用中發揮作用,比如構建翻譯應用等。甚至可以通過特定的提示結構讓基礎模型扮演助手的角色。
最后,我們來回顧一下從預訓練到后訓練的過程。我們希望訓練像ChatGPT這樣的LLM助手,預訓練階段主要是獲取互聯網文檔,將其分割成標記,然后用神經網絡預測標記序列。
參考
https://www.youtube.com/live/7xTGNNLPyMI