1、其中編碼器-解碼器架構(gòu),適合進(jìn)行序列到序列的任務(wù),比如文本翻譯、內(nèi)容摘要。
2、編碼器架構(gòu),適合需要對(duì)輸入內(nèi)容分析但不需要生成新序列的任務(wù),比如情感分析、文本分類(lèi)。
3、解碼器架構(gòu),適合基于已有信息生成新序列的任務(wù),比如文本生成、對(duì)話系統(tǒng)。
備注:指令微調(diào)【監(jiān)督微調(diào)】或繼續(xù)預(yù)訓(xùn)練
1、目前大模型基本使用的模型結(jié)構(gòu)是:解碼器+下一個(gè)詞預(yù)測(cè)(可以理解為一種通用任務(wù));
2、書(shū)籍(綜述):https://github.com/RUCAIBox/LLMSurvey/;https://www.bestblogs.dev/article/91b247
”一般來(lái)說(shuō),編碼器架構(gòu)被認(rèn)為更適合去解決自然語(yǔ)言理解任務(wù)(如完形填空等),而解碼器架構(gòu)更適合解決自然語(yǔ)言生成任務(wù)(如文
本摘要等)“
解釋?zhuān)海?)編碼器架構(gòu)的核心目標(biāo)是將輸入的文本信息進(jìn)行有效的特征提取和表示,把自然語(yǔ)言文本轉(zhuǎn)換為計(jì)算機(jī)能夠處理和理解的向量空間表示。在自然語(yǔ)言理解任務(wù)中,例如完形填空,需要對(duì)整個(gè)上下文有準(zhǔn)確的理解,才能預(yù)測(cè)出合適的缺失詞匯。
編碼器通常采用諸如 Transformer 編碼器這樣的結(jié)構(gòu),它通過(guò)多頭自注意力機(jī)制(Multi - Head Self - Attention)來(lái)捕捉輸入序列中不同位置之間的依賴關(guān)系。這種機(jī)制能夠讓模型學(xué)習(xí)到文本中各個(gè)詞匯之間的語(yǔ)義和句法聯(lián)系,從而生成一個(gè)包含豐富語(yǔ)義信息的序列表示。
在完形填空任務(wù)里,編碼器會(huì)對(duì)給定的上下文文本進(jìn)行編碼,將其轉(zhuǎn)化為一個(gè)向量表示,這個(gè)向量表示整合了整個(gè)句子的語(yǔ)義和語(yǔ)法信息。模型可以基于這個(gè)表示來(lái)分析句子的結(jié)構(gòu)和語(yǔ)義,從而預(yù)測(cè)出缺失的詞匯。因?yàn)榫幋a器專(zhuān)注于理解輸入文本的整體信息,所以能夠很好地處理這類(lèi)需要理解上下文語(yǔ)義的自然語(yǔ)言理解任務(wù)。
(2)解碼器架構(gòu)的主要功能是根據(jù)給定的輸入信息生成新的文本序列。它通常在生成過(guò)程中會(huì)考慮到已經(jīng)生成的部分內(nèi)容,并逐步預(yù)測(cè)下一個(gè)合適的詞匯。
解碼器同樣基于注意力機(jī)制,不過(guò)它使用的是掩碼多頭自注意力機(jī)制(Masked Multi - Head Self - Attention),這種機(jī)制可以確保在生成每個(gè)位置的詞匯時(shí),模型只能關(guān)注到該位置之前的詞匯,從而保證生成過(guò)程的順序性和合理性。
在文本摘要任務(wù)中,解碼器會(huì)接收編碼器對(duì)原文的編碼表示作為輸入,然后根據(jù)這個(gè)表示和已經(jīng)生成的部分摘要內(nèi)容,逐步生成后續(xù)的摘要文本。解碼器的這種逐步生成和基于已生成內(nèi)容進(jìn)行預(yù)測(cè)的特性,使得它非常適合處理自然語(yǔ)言生成任務(wù),能夠生成連貫、有邏輯的文本序列。
備注:(1)以 ELMo、BERT、GPT-1 為代表的預(yù)訓(xùn)練語(yǔ)言模型確立了“預(yù)訓(xùn)練-微調(diào)”這一任務(wù)求解范式。其中,預(yù)訓(xùn)練階段旨在通過(guò)大規(guī)模無(wú)標(biāo)注文本建立模型的基礎(chǔ)能力,而微調(diào)階段則使用有標(biāo)注數(shù)據(jù)對(duì)于模型進(jìn)行特定任務(wù)的適配,從而更好地解決下游的自然語(yǔ)言處理任務(wù)。
記錄:隨著模型參數(shù)、訓(xùn)練數(shù)據(jù)、計(jì)算算力的大規(guī)模擴(kuò)展,最新一代大語(yǔ)言模型(LLM)的任務(wù)求解能力有了顯著提升,能夠不再依靠下游任務(wù)數(shù)據(jù)的微調(diào)進(jìn)行通用任務(wù)的求解。說(shuō)明:之前的預(yù)訓(xùn)練模型,均需要經(jīng)過(guò)”微調(diào)“階段才能夠展現(xiàn)解決特定下游任務(wù)的能力,而大語(yǔ)言模型,則不需要。另外,通過(guò)預(yù)訓(xùn)練與微調(diào)兩個(gè)階段的學(xué)習(xí),大語(yǔ)言模型具備了較好的人類(lèi)指令遵循能力,能夠直接通過(guò)自然語(yǔ)言描述下達(dá)任務(wù)指令(又稱(chēng)為“提示學(xué)習(xí)”)。這里的理解:LLM在預(yù)訓(xùn)練完成后,如果想要在某一【具體】領(lǐng)域具有很好的能力,則需要有針對(duì)性的微調(diào),然后投入使用,之后人類(lèi)的【提示學(xué)習(xí)】也可以看作是模型的【泛華】,這里的提示學(xué)習(xí)稱(chēng)謂應(yīng)該指的是將LLM視為一個(gè)agent。結(jié)論:LLM既可以進(jìn)行微調(diào)也可以不進(jìn)行微調(diào)。
通用人工智能(Artificial General Intelligence,AGI),也被稱(chēng)為強(qiáng)人工智能,是人工智能領(lǐng)域追求的終極目標(biāo)之一。它指的是一種具有高度自主性的智能系統(tǒng),該系統(tǒng)能夠像人類(lèi)一樣理解、學(xué)習(xí)、適應(yīng)各種不同的任務(wù)和環(huán)境,擁有廣泛的認(rèn)知能力,包括但不限于語(yǔ)言理解、知識(shí)推理、問(wèn)題解決、感知、創(chuàng)造力等,并且能夠在沒(méi)有人類(lèi)過(guò)多干預(yù)的情況下,靈活地應(yīng)對(duì)和處理前所未有的復(fù)雜情況。
與當(dāng)前廣泛應(yīng)用的狹義人工智能(也叫弱人工智能)不同,狹義人工智能通常是為特定的、單一的任務(wù)而設(shè)計(jì),例如圖像識(shí)別系統(tǒng)只能專(zhuān)注于圖像識(shí)別任務(wù),語(yǔ)音助手主要用于語(yǔ)音交互和執(zhí)行特定指令;而通用人工智能則具備跨領(lǐng)域、通用化的智能表現(xiàn),能夠勝任多種類(lèi)型的任務(wù),就如同人類(lèi)可以在生活中同時(shí)處理學(xué)習(xí)、工作、社交等多方面事務(wù)一樣。
摘錄:(1)實(shí)際上,基于大規(guī)模無(wú)標(biāo)注文本的下一個(gè)詞元預(yù)測(cè)任務(wù)本質(zhì)上可以看作一個(gè)多任務(wù)學(xué)習(xí)過(guò)程 [17],因?yàn)獒槍?duì)不同詞元的預(yù)測(cè)任務(wù)可能涉及到情感分類(lèi)(“... 這部電影真好看”)、數(shù)值計(jì)算(“3+4=7”)、知識(shí)推理(“中國(guó)陸地面積最大的省份是新疆”)等非常多樣的訓(xùn)練任務(wù)。
(2)數(shù)據(jù)工程主要包括三個(gè)方面。首先,需要對(duì)于數(shù)據(jù)進(jìn)行全面的采集,拓寬高質(zhì)量的數(shù)據(jù)來(lái)源;其次,需要對(duì)于收集到的數(shù)據(jù)進(jìn)行精細(xì)的清洗,盡量提升用于大模型訓(xùn)練的數(shù)據(jù)質(zhì)量;第三,需要設(shè)計(jì)有效的數(shù)據(jù)配比與數(shù)據(jù)課程,加強(qiáng)模型對(duì)于數(shù)據(jù)語(yǔ)義信息的利用效率。
(3)上下文學(xué)習(xí)能力是指模型能夠理解和利用文本周?chē)男畔?lái)更好地處理和生成內(nèi)容的能力。
(4)思維鏈能力是指模型能夠?qū)⒁粋€(gè)復(fù)雜的問(wèn)題分解為多個(gè)步驟,并通過(guò)一系列連貫的推理和思考來(lái)解決問(wèn)題的能力,就像人在思考問(wèn)題時(shí)一步一步推導(dǎo)的過(guò)程。
(5)通常來(lái)說(shuō),現(xiàn)有的研究認(rèn)為指令微調(diào)無(wú)法向大模型注入新的知識(shí),而是訓(xùn)練大模型學(xué)會(huì)利用自身所掌握的知識(shí)與信息進(jìn)行任務(wù)的求解。在提示學(xué)習(xí)方面,需要設(shè)計(jì)合適的提示策略去誘導(dǎo)大語(yǔ)言模型生成正確的問(wèn)題答案。為此,研究人員提出了多種高級(jí)提示策略,包括上下文學(xué)習(xí)、思維鏈提示等,通過(guò)構(gòu)建特殊的提示模板或者表述形式來(lái)提升大語(yǔ)言模型對(duì)于復(fù)雜任務(wù)的求解能力。
指令微調(diào)(Instruction Tuning)和提示策略(Prompting Strategies)是在自然語(yǔ)言處理和大語(yǔ)言模型領(lǐng)域中用于優(yōu)化模型性能和引導(dǎo)模型生成的重要技術(shù)手段,以下是具體介紹:指令微調(diào):含義:指令微調(diào)是一種對(duì)預(yù)訓(xùn)練語(yǔ)言模型進(jìn)行進(jìn)一步訓(xùn)練的方法,旨在使模型更好地遵循特定的指令或任務(wù)要求。通過(guò)使用大量包含指令和相應(yīng)期望輸出的數(shù)據(jù)集對(duì)預(yù)訓(xùn)練模型進(jìn)行微調(diào),讓模型學(xué)習(xí)如何根據(jù)不同的指令生成合適的響應(yīng)。
提示策略:含義:提示策略是在與語(yǔ)言模型交互時(shí),通過(guò)設(shè)計(jì)特定的提示信息來(lái)引導(dǎo)模型生成期望的輸出。提示可以是一個(gè)問(wèn)題、一段文本、一個(gè)情境描述等,目的是為模型提供更多的上下文信息或引導(dǎo)模型朝著特定的方向進(jìn)行思考和生成。
(6)OpenAI 提出了基于人類(lèi)反饋的強(qiáng)化學(xué)習(xí)算法(Reinforcement Learning fromHuman Feedback, RLHF)[28],將人類(lèi)偏好引入到大模型的對(duì)齊過(guò)程中:首先訓(xùn)練能夠區(qū)分模型輸出質(zhì)量好壞的獎(jiǎng)勵(lì)模型,進(jìn)而使用強(qiáng)化學(xué)習(xí)算法來(lái)指導(dǎo)語(yǔ)言模型輸出行為的調(diào)整,讓大語(yǔ)言模型能夠生成符合人類(lèi)預(yù)期的輸出。由于強(qiáng)化學(xué)習(xí)算法的優(yōu)化過(guò)程較為復(fù)雜,最近學(xué)術(shù)界開(kāi)始涌現(xiàn)出一批使用監(jiān)督微調(diào)的對(duì)齊方式,從而簡(jiǎn)化 RLHF 優(yōu)化過(guò)程的算法,如 DPO 算法等。
(7)在技術(shù)路徑上,工具調(diào)用能力主要是通過(guò)指令微調(diào)以及提示學(xué)習(xí)兩種途徑實(shí)現(xiàn),而未經(jīng)歷過(guò)特殊訓(xùn)練或者缺乏有效提示的大語(yǔ)言模型則很難有效利用候選工具。理解:特殊訓(xùn)練指的是經(jīng)過(guò)特定數(shù)據(jù)集進(jìn)行微調(diào)了。
(8)一般來(lái)說(shuō),LLM訓(xùn)練過(guò)程可以分為大規(guī)模預(yù)訓(xùn)練和指令微調(diào)與人類(lèi)對(duì)齊兩個(gè)階段。一般來(lái)說(shuō),預(yù)訓(xùn)練是指使用與下游任務(wù)無(wú)關(guān)的大規(guī)模數(shù)據(jù)進(jìn)行模型參數(shù)的初始訓(xùn)練,可以認(rèn)為是為模型參數(shù)找到一個(gè)較好的“初值點(diǎn)”。
OpenAI 前首席科學(xué)家 Ilya Sutskever 在公開(kāi)采訪中指出大規(guī)模預(yù)訓(xùn)練本質(zhì)上是在做一個(gè)【世界知識(shí)的壓縮】,從而能夠?qū)W習(xí)到一個(gè)編碼世界知識(shí)的參數(shù)模型,這個(gè)模型能夠通過(guò)解壓縮所需要的知識(shí)來(lái)解決真實(shí)世界的任務(wù)。
(9)由于 GPT 系列模型的爆火,【“解碼器架構(gòu) + 預(yù)測(cè)下一個(gè)詞”】的有效性得到了充分驗(yàn)證,已經(jīng)成為現(xiàn)有大語(yǔ)言模型主要采納的技術(shù)路徑。
備注:詞元化(Tokenization)是將文本數(shù)據(jù)分割成一個(gè)個(gè)詞元(Tokens)的過(guò)程,詞元可以是【單詞、子詞、字符等】,這在自然語(yǔ)言處理中至關(guān)重要,為后續(xù)的分析和處理奠定基礎(chǔ)。以下為你介紹常見(jiàn)的詞元化方式及其應(yīng)用場(chǎng)景:
1、基于單詞的詞元化
原理:以空格、標(biāo)點(diǎn)符號(hào)等作為分隔符,將文本按單詞進(jìn)行劃分。例如,對(duì)于句子 “I love natural language processing.”,基于單詞的詞元化會(huì)將其分割為 [“I”, “l(fā)ove”, “natural”, “l(fā)anguage”, “processing”]。
應(yīng)用場(chǎng)景:適用于大多數(shù)需要基于完整單詞進(jìn)行處理的任務(wù),如文本分類(lèi)、情感分析等。在這些場(chǎng)景下,單詞作為獨(dú)立的語(yǔ)義單元,能夠反映文本的關(guān)鍵信息。例如在分析電影評(píng)論的情感傾向時(shí),“terrible”(糟糕的)、“excellent”(出色的)等單詞能直接體現(xiàn)情感態(tài)度。
2、基于字符的詞元化
原理:將文本按照單個(gè)字符進(jìn)行分割。例如,句子 “Hello” 會(huì)被詞元化為 [“H”, “e”, “l(fā)”, “l(fā)”, “o”]。
應(yīng)用場(chǎng)景:在處理形態(tài)豐富的語(yǔ)言(如阿拉伯語(yǔ)、芬蘭語(yǔ))或處理一些對(duì)字符級(jí)信息敏感的任務(wù)時(shí)很有用。例如在光學(xué)字符識(shí)別(OCR)后的文本校正中,基于字符的詞元化有助于識(shí)別和糾正單個(gè)字符的錯(cuò)誤;在處理密碼學(xué)相關(guān)文本時(shí),字符級(jí)的分析也十分關(guān)鍵。
3、子詞詞元化
原理:介于單詞和字符之間,將單詞拆分成有意義的子詞單元。當(dāng)遇到詞匯表中未出現(xiàn)的單詞(即 OOV,Out - Of - Vocabulary)時(shí),子詞詞元化能將其分解為多個(gè)子詞。例如,單詞 “unaffordable” 可能被拆分為 [“un”, “afford”, “able”]。常見(jiàn)的子詞詞元化算法有字節(jié)對(duì)編碼(Byte - Pair Encoding,BPE)和 WordPiece 等。
應(yīng)用場(chǎng)景:有效解決 OOV 問(wèn)題,提高模型對(duì)罕見(jiàn)詞和新詞匯的處理能力。在機(jī)器翻譯中,由于不同語(yǔ)言的詞匯差異大,子詞詞元化能幫助模型更好地處理源語(yǔ)言中的生僻詞,準(zhǔn)確地將其翻譯成目標(biāo)語(yǔ)言。
(10)預(yù)訓(xùn)練后的模型就像進(jìn)入工作崗位的畢業(yè)生,盡管學(xué)習(xí)了很多通用的文化課,具備了一定的實(shí)習(xí)經(jīng)驗(yàn),但是仍然需要加強(qiáng)面向特定崗位的工作能力,并且深入了解工作崗位所涉及的相關(guān)要求。因此,用人單位往往需要設(shè)置特定的培訓(xùn)環(huán)節(jié),對(duì)于新入職的人員針對(duì)業(yè)務(wù)場(chǎng)景以及所需要的技術(shù)進(jìn)行專(zhuān)門(mén)提升。相似地,當(dāng)預(yù)訓(xùn)練結(jié)束后,通常需要對(duì)于大語(yǔ)言模型進(jìn)行微調(diào)與對(duì)齊,使之更好地被用于任務(wù)求解,為人類(lèi)服務(wù)。
(11)比較廣泛使用的微調(diào)技術(shù)是“指令微調(diào)”(也叫做有監(jiān)督微調(diào),Supervised Fine-tuning, SFT),通過(guò)使用任務(wù)輸入與輸出的配對(duì)數(shù)據(jù)進(jìn)行模型訓(xùn)練,可以使得語(yǔ)言模型較好地掌握通過(guò)問(wèn)答形式進(jìn)行任務(wù)求解的能力。
(12)一般來(lái)說(shuō),指令微調(diào)很難教會(huì)大語(yǔ)言模型預(yù)訓(xùn)練階段沒(méi)有學(xué)習(xí)到的知識(shí)與能力,它主要起到了對(duì)于模型能力的激發(fā)作用,而不是知識(shí)注入作用。與預(yù)訓(xùn)練相比,指令微調(diào)通常來(lái)說(shuō)需要的指令實(shí)例數(shù)據(jù)規(guī)模要小的多。通常來(lái)說(shuō),數(shù)十萬(wàn)到百萬(wàn)規(guī)模的指令微調(diào)數(shù)據(jù)能夠有效地激發(fā)語(yǔ)言模型的通用任務(wù)解決能力,甚至有些工作認(rèn)為數(shù)千條或者數(shù)萬(wàn)條高質(zhì)量指令數(shù)據(jù)也能達(dá)到不錯(cuò)的微調(diào)效果。
(13)LLM的三種典型涌現(xiàn)能力:上下文學(xué)習(xí)(In-context Learning, ICL)、指令遵循(Instruction Following)和 逐步推理(Step-by-step Reasoning),其中思維鏈提示特別適合幫助大語(yǔ)言模型解決復(fù)雜數(shù)學(xué)問(wèn)題
(14)目前還缺少對(duì)于大語(yǔ)言模型涌現(xiàn)機(jī)理的基礎(chǔ)性解釋研究工作。與這一問(wèn)題較為相關(guān)的研究叫做“頓悟”(Grokking),是指訓(xùn)練過(guò)程中的一種數(shù)據(jù)學(xué)習(xí)模式:模型性能從隨機(jī)水平提升為高度泛化。
(15)GPT 系列模型的基本原理是訓(xùn)練模型學(xué)習(xí)恢復(fù)預(yù)訓(xùn)練文本數(shù)據(jù),將廣泛的世界知識(shí)壓縮到僅包含【解碼器(Decoder-Only)】的 Transformer 模型中,從而使模型能夠?qū)W習(xí)獲得較為全面的能力。其中,兩個(gè)關(guān)鍵要素是:(I)訓(xùn)練能夠準(zhǔn)確預(yù)測(cè)下一個(gè)詞的 Transformer (只包含解碼器)語(yǔ)言模型;(II)擴(kuò)展語(yǔ)言模型的規(guī)模以及擴(kuò)展預(yù)訓(xùn)練數(shù)據(jù)的規(guī)模。
備注:GPT,Generative Pre-Training 生成式預(yù)訓(xùn)練模型。
(16)GPT-2 的論文 [17] 中得到了著重論述,它試圖使用無(wú)監(jiān)督預(yù)訓(xùn)練的語(yǔ)言模型來(lái)解決各種下游任務(wù),進(jìn)而不需要使用標(biāo)注數(shù)據(jù)進(jìn)行顯式的模型微調(diào)。形式化來(lái)說(shuō),多任務(wù)學(xué)習(xí)(Multi-task Learning)可以通過(guò)一種較為通用的概率形式刻畫(huà),即 ??(output|input, task)——根據(jù)輸入和任務(wù)信息來(lái)預(yù)測(cè)輸出。
(17)*GPT-3: 上下文學(xué)習(xí)可以指導(dǎo)大語(yǔ)言模型學(xué)會(huì)“理解”自然語(yǔ)言文本形式描述的新任務(wù),【從而消除了針對(duì)新任務(wù)進(jìn)行微調(diào)的需要】?;谶@一學(xué)習(xí)范式,大語(yǔ)言模型的訓(xùn)練與利用可以通過(guò)語(yǔ)言建模的形式進(jìn)行統(tǒng)一描述:【模型預(yù)訓(xùn)練】是在給定上下文條件下預(yù)測(cè)后續(xù)文本序列,【模型使用】則是根據(jù)任務(wù)描述以及示例數(shù)據(jù)來(lái)推理正確的任務(wù)解決方案。問(wèn)題:什么是上下文學(xué)習(xí),請(qǐng)舉出一個(gè)例子進(jìn)行解釋。
(18)LLaMA 已經(jīng)成為了最受歡迎的開(kāi)源大語(yǔ)言模型之一,許多研究工作都是以其為基座模型進(jìn)行【微調(diào)或繼續(xù)預(yù)訓(xùn)練】,衍生出了眾多變體模型
(19)?MiniCPM 在訓(xùn)練前進(jìn)行了模型沙盒實(shí)驗(yàn),通過(guò)預(yù)先使用小模型廣泛實(shí)驗(yàn)尋找更優(yōu)的訓(xùn)練設(shè)置,并最終遷移至大模型上。在訓(xùn)練方法上,MiniCPM 首先采用了穩(wěn)定訓(xùn)練與退火的兩階段學(xué)習(xí)方法,然后進(jìn)行了有監(jiān)督微調(diào)和人類(lèi)偏好對(duì)齊。
(20)DeepSpeed 為分布式訓(xùn)練提供了各種優(yōu)化技術(shù)支持,如內(nèi)存優(yōu)化(ZeRO 技術(shù)、梯度檢查點(diǎn))、數(shù)據(jù)并行、混合精度訓(xùn)練等,使得整個(gè)訓(xùn)練過(guò)程變得更加高效、穩(wěn)定。
筆記:模型分布式訓(xùn)練和混合精度訓(xùn)練是深度學(xué)習(xí)領(lǐng)域中用于提高訓(xùn)練效率和模型性能的重要技術(shù),以下是對(duì)它們的詳細(xì)介紹:
### 模型分布式訓(xùn)練
- **定義**:模型分布式訓(xùn)練是指將一個(gè)大規(guī)模的深度學(xué)習(xí)模型的訓(xùn)練任務(wù)分割到多個(gè)計(jì)算節(jié)點(diǎn)(如多個(gè)GPU或多臺(tái)服務(wù)器)上并行執(zhí)行的技術(shù),目的是利用多個(gè)計(jì)算資源來(lái)加速模型訓(xùn)練過(guò)程,縮短訓(xùn)練時(shí)間。
- **實(shí)現(xiàn)方式**
? ? - **數(shù)據(jù)并行**:將訓(xùn)練數(shù)據(jù)劃分成多個(gè)子集,每個(gè)計(jì)算節(jié)點(diǎn)處理不同的數(shù)據(jù)子集,但都擁有完整的模型副本。在訓(xùn)練過(guò)程中,各個(gè)節(jié)點(diǎn)分別計(jì)算梯度,然后通過(guò)通信機(jī)制將梯度進(jìn)行聚合,更新模型參數(shù)。例如,在一個(gè)有4個(gè)GPU的系統(tǒng)中,將數(shù)據(jù)集分成4份,每個(gè)GPU處理一份數(shù)據(jù),計(jì)算出梯度后進(jìn)行匯總平均,再更新模型參數(shù)。
? ? - **模型并行**:將深度學(xué)習(xí)模型劃分成多個(gè)部分,每個(gè)計(jì)算節(jié)點(diǎn)負(fù)責(zé)處理模型的不同部分。例如,對(duì)于一個(gè)具有多個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò),可以將不同的隱藏層分配到不同的GPU上進(jìn)行計(jì)算,數(shù)據(jù)在不同的節(jié)點(diǎn)之間傳遞,依次經(jīng)過(guò)各個(gè)節(jié)點(diǎn)上的模型部分進(jìn)行計(jì)算和處理。
? ? - **混合并行**:結(jié)合數(shù)據(jù)并行和模型并行的方法,在多個(gè)計(jì)算節(jié)點(diǎn)之間既對(duì)數(shù)據(jù)進(jìn)行劃分,又對(duì)模型進(jìn)行劃分,以充分利用計(jì)算資源和提高訓(xùn)練效率。
- **關(guān)鍵技術(shù)**
? ? - **通信機(jī)制**:為了保證各個(gè)計(jì)算節(jié)點(diǎn)之間的信息交互和同步,需要高效的通信機(jī)制,如使用MPI(Message Passing Interface)等通信庫(kù)來(lái)實(shí)現(xiàn)節(jié)點(diǎn)之間的梯度傳遞和模型參數(shù)更新。
? ? - **同步與異步訓(xùn)練**:同步訓(xùn)練時(shí),所有節(jié)點(diǎn)在每個(gè)訓(xùn)練步驟都等待彼此完成計(jì)算,然后進(jìn)行梯度聚合和參數(shù)更新;異步訓(xùn)練則允許節(jié)點(diǎn)在完成計(jì)算后立即更新參數(shù),不需要等待其他節(jié)點(diǎn),各節(jié)點(diǎn)之間的更新時(shí)間可能不同,能提高訓(xùn)練速度,但可能會(huì)影響收斂性。
### 混合精度訓(xùn)練
- **定義**:混合精度訓(xùn)練是指在深度學(xué)習(xí)訓(xùn)練過(guò)程中,同時(shí)使用不同精度的數(shù)據(jù)類(lèi)型來(lái)表示模型參數(shù)、梯度和中間計(jì)算結(jié)果,以提高訓(xùn)練效率并減少內(nèi)存占用,同時(shí)盡量保持模型的準(zhǔn)確性。
- **實(shí)現(xiàn)方式**
? ? - 通常是將傳統(tǒng)的單精度浮點(diǎn)數(shù)(float32)與半精度浮點(diǎn)數(shù)(float16)結(jié)合使用。在正向傳播和反向傳播計(jì)算中,大部分計(jì)算可以使用半精度浮點(diǎn)數(shù)來(lái)加速計(jì)算,因?yàn)榘刖雀↑c(diǎn)數(shù)的計(jì)算速度更快,占用內(nèi)存更少。
? ? - 對(duì)于一些對(duì)精度要求較高的操作,如某些復(fù)雜的數(shù)學(xué)運(yùn)算或?qū)δP蛥?shù)的更新操作,仍然使用單精度浮點(diǎn)數(shù),以確保計(jì)算的準(zhǔn)確性。
- **關(guān)鍵技術(shù)**
? ? - **動(dòng)態(tài)損失縮放**:由于半精度浮點(diǎn)數(shù)的表示范圍相對(duì)較小,在計(jì)算梯度時(shí)可能會(huì)出現(xiàn)下溢問(wèn)題,導(dǎo)致梯度消失。動(dòng)態(tài)損失縮放技術(shù)可以根據(jù)訓(xùn)練過(guò)程中的實(shí)際情況,自動(dòng)調(diào)整損失值的縮放因子,使得梯度在半精度計(jì)算中能夠正確表示,避免下溢,并在更新模型參數(shù)時(shí)再將梯度還原到正確的尺度。
? ? - **精度轉(zhuǎn)換與存儲(chǔ)**:需要合理地設(shè)計(jì)數(shù)據(jù)在不同精度之間的轉(zhuǎn)換策略,以及如何在內(nèi)存中高效地存儲(chǔ)不同精度的數(shù)據(jù)。例如,在將單精度參數(shù)轉(zhuǎn)換為半精度進(jìn)行計(jì)算時(shí),要確保數(shù)據(jù)的準(zhǔn)確性和一致性,計(jì)算完成后再正確地轉(zhuǎn)換回單精度進(jìn)行參數(shù)更新和存儲(chǔ)。
模型分布式訓(xùn)練和混合精度訓(xùn)練可以結(jié)合使用,進(jìn)一步提高深度學(xué)習(xí)模型的訓(xùn)練效率和性能,使訓(xùn)練能夠在更短的時(shí)間內(nèi)完成,同時(shí)減少對(duì)計(jì)算資源的需求。
(21)詞元化(Tokenization)是數(shù)據(jù)預(yù)處理中的一個(gè)關(guān)鍵步驟,旨在將原始文本分割成模型可識(shí)別和建模的【詞元序列】,作為大語(yǔ)言模型的輸入數(shù)據(jù)。例如:假設(shè)語(yǔ)料中包含了五個(gè)英文單詞:“l(fā)oop”,“pool”,“l(fā)oot”,“tool”,“l(fā)oots”?在這種情況下,BPE 假設(shè)的初始詞匯表即為:[“l(fā)”, “o”, “p”, “t”, “s”]
(22)Transformer 是由多層的多頭自注意力(Multi-head Self-attention)模塊堆疊而成的神經(jīng)網(wǎng)絡(luò)模型。
(23)多頭自注意力是 Transformer 模型的核心創(chuàng)新技術(shù)。相比于循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)等傳統(tǒng)神經(jīng)網(wǎng)絡(luò),多頭自注意力機(jī)制能夠直接建?!救我饩嚯x的詞元】之間的交互關(guān)系。
(24)*在 Transformer 模型中,編碼器(Encoder)(圖 5.1 (a))的作用是將每個(gè)輸入詞元都編碼成一個(gè)上下文語(yǔ)義相關(guān)的表示向量。編碼器結(jié)構(gòu)由多個(gè)相同的層堆疊而成,其中每一層都包含多頭自注意力模塊和前饋網(wǎng)絡(luò)模塊。在注意力和前饋網(wǎng)絡(luò)后,模型使用層歸一化和殘差連接來(lái)加強(qiáng)模型的訓(xùn)練穩(wěn)定度。其中,殘差連接(Residual Connection)將輸入與該層的輸出相加,實(shí)現(xiàn)了信息在不同層的跳躍傳遞,從而緩解梯度爆炸和消失的問(wèn)題。

(25)Transformer 架構(gòu)中的解碼器(圖 5.1 (b))基于來(lái)自編碼器編碼后的最后一層的【輸出表示】以及已經(jīng)由【模型生成的詞元序列】,執(zhí)行后續(xù)的序列生成任務(wù)。
備注:與編碼器不同,解碼器需要引入掩碼自注意力(Masked Self-attention)模塊,用來(lái)在計(jì)算注意力分?jǐn)?shù)的時(shí)候掩蓋當(dāng)前位置之后的詞,以保證生成目標(biāo)序列時(shí)不依賴于未來(lái)的信息。這里的輸出:就是我們對(duì)LLM的輸入數(shù)據(jù)。
(26)注意力機(jī)制是 Transformer 架構(gòu)中的核心技術(shù),它能夠針對(duì)序列中的【詞元對(duì)】構(gòu)建交互關(guān)系,聚合來(lái)自于不同位置的語(yǔ)義信息。下面介紹四種常見(jiàn)的注意力機(jī)制的設(shè)計(jì)方法。
備注;解碼器架構(gòu)還可以細(xì)分為兩個(gè)變種架構(gòu),包括因果解碼器(Causal Decoder)架構(gòu)和前綴解碼器(Prefix Decoder)架構(gòu)。值得注意的是,學(xué)術(shù)界所提到解碼器架構(gòu)時(shí),通常指的都是因果解碼器架構(gòu)。
(27)然而,Transformer 的自注意力機(jī)制在計(jì)算每個(gè)詞元時(shí)都需要利用到序列中所有詞元的信息,這導(dǎo)致計(jì)算和存儲(chǔ)復(fù)雜度隨輸入序列長(zhǎng)度的平方級(jí)別增長(zhǎng)。在處理長(zhǎng)序列時(shí),這種復(fù)雜性會(huì)消耗大量的計(jì)算資源與存儲(chǔ)空間。為了解決這個(gè)問(wèn)題,研究人員致力于新型模型架構(gòu)的設(shè)計(jì)。這些新型模型大多基于參數(shù)化狀態(tài)空間模型(State Space Model, SSM)進(jìn)行設(shè)計(jì),在長(zhǎng)文本建模效率方面相比 Transformer 有了大幅改進(jìn),同時(shí)也保持了較好的序列建模能力。

(28)?狀態(tài)空間模型是一種動(dòng)態(tài)時(shí)域模型,在控制系統(tǒng)、經(jīng)濟(jì)學(xué)等多個(gè)領(lǐng)域都有著廣泛應(yīng)用。
(29)與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的優(yōu)化類(lèi)似,通常使用批次梯度下降算法來(lái)進(jìn)行模型參數(shù)的調(diào)優(yōu)。同時(shí),通過(guò)調(diào)整學(xué)習(xí)率以及優(yōu)化器中的梯度修正策略,可以進(jìn)一步提升訓(xùn)練的穩(wěn)定性。為了防止模型對(duì)數(shù)據(jù)產(chǎn)生過(guò)度擬合,訓(xùn)練中還需要引入一系列正則化方法。下面將詳細(xì)介紹適用于大模型場(chǎng)景的訓(xùn)練優(yōu)化設(shè)置。

備注:在已有的工作中,大語(yǔ)言模型的訓(xùn)練通常采用Adam [195] 及其變種AdamW [196]作為優(yōu)化器。Adam 優(yōu)化器使用梯度的“動(dòng)量”作為參數(shù)的更新方向,它使用歷史更新步驟中的梯度加權(quán)平均值來(lái)代替當(dāng)前時(shí)刻的梯度,從而緩解樣本隨機(jī)性帶來(lái)的損失震蕩。進(jìn)一步,Adam 使用自適應(yīng)的學(xué)習(xí)率方法,通過(guò)梯度的加權(quán)“二階矩”對(duì)梯度進(jìn)行修正(可以看做使用“標(biāo)準(zhǔn)差”進(jìn)行“歸一化”),從而防止梯度過(guò)小導(dǎo)致模型難以優(yōu)化。
(30)?指令微調(diào)(Instruction Tuning)是指使用自然語(yǔ)言形式的數(shù)據(jù)對(duì)預(yù)訓(xùn)練后的大語(yǔ)言模型進(jìn)行參數(shù)微調(diào)。就是監(jiān)督微調(diào)。指令微調(diào)過(guò)程需要首先收集或構(gòu)建指令化的實(shí)例,然后通過(guò)有監(jiān)督的方式對(duì)大語(yǔ)言模型的參數(shù)進(jìn)行微調(diào)。經(jīng)過(guò)指令微調(diào)后,大語(yǔ)言模型能夠展現(xiàn)出較強(qiáng)的指令遵循能力,可以通過(guò)零樣本學(xué)習(xí)的方式解決多種下游任務(wù)。
(31)*一般來(lái)說(shuō),一個(gè)經(jīng)過(guò)指令格式化的數(shù)據(jù)實(shí)例包括【任務(wù)描述】(也稱(chēng)為指令)、【任務(wù)輸入-任務(wù)輸出】以及【可選的示例】。例如:例如“請(qǐng)把這個(gè)中文句子翻譯成英文”,輸入是“大語(yǔ)言模型已經(jīng)成為機(jī)器學(xué)習(xí)的一個(gè)重要研究方向”,而相應(yīng)的輸出則是“Large language models have become one important research direction for machine learning”。
(32)相關(guān)研究表明在現(xiàn)有 NLP 數(shù)據(jù)集的輸入-輸出數(shù)據(jù)中添加合適的【任務(wù)描述】是提升大模型指令跟隨能力的關(guān)鍵因素;如果去除了這些任務(wù)描述,僅使用輸入-輸出數(shù)據(jù)對(duì)模型進(jìn)行微調(diào),模型的性能會(huì)出現(xiàn)顯著下降
(33)在訓(xùn)練方式上,指令微調(diào)與預(yù)訓(xùn)練較為相似,很多設(shè)置包括數(shù)據(jù)組織形式都可以預(yù)訓(xùn)練階段所采用的技術(shù)。本節(jié)主要介紹指令微調(diào)所特有的一些訓(xùn)練策略。
(34)首先介紹常用于 Transformer 架構(gòu)的參數(shù)高效微調(diào)方法,然后以 LoRA 微調(diào)方法為例介紹參數(shù)高效微調(diào)的代碼實(shí)現(xiàn)?!炯纫忠浚罕苊馊康膮?shù)調(diào)整,又需要達(dá)到模型能力。



(33)?在自回歸架構(gòu)中,模型針對(duì)輸入內(nèi)容(即提示文本,詳見(jiàn)第 10 章)逐個(gè)單詞生成輸出內(nèi)容的文本。這個(gè)過(guò)程一般被稱(chēng)為【解碼】。在本章的內(nèi)容中,我們將首先介紹常見(jiàn)的解碼策略(第 9.1 節(jié))以及相應(yīng)的優(yōu)化加速算法。大語(yǔ)言模型的生成方式本質(zhì)上是一個(gè)概率采樣過(guò)程,需要合適的解碼策略來(lái)生成合適的輸出內(nèi)容。
(34)模型壓縮的三張方法:量化、蒸餾和剪枝(Pruning)也是一種常用的方法。
剪枝(Pruning):剪枝技術(shù)通過(guò)移除神經(jīng)網(wǎng)絡(luò)中不重要或冗余的權(quán)重或神經(jīng)元,來(lái)減少模型的大小和計(jì)算量。這可以通過(guò)分析權(quán)重的重要性,刪除對(duì)模型性能影響較小的部分,從而實(shí)現(xiàn)模型的壓縮和加速。
模型蒸餾(Model Distillation)的目標(biāo)是將復(fù)雜模型(稱(chēng)為教師模型)包含的知識(shí)遷移到簡(jiǎn)單模型(稱(chēng)為學(xué)生模型)中,從而實(shí)現(xiàn)復(fù)雜模型的壓縮。一般來(lái)說(shuō),通常會(huì)使用教師模型的輸出來(lái)訓(xùn)練學(xué)生模型,以此來(lái)傳遞模型知識(shí)。

(35)*一般而言,針對(duì)大語(yǔ)言模型的提示設(shè)計(jì)需要考慮四個(gè)關(guān)鍵要素,即任務(wù)描述、輸入數(shù)據(jù)、上下文信息和提示策略。

(36)輸入數(shù)據(jù). 通常情況下,用戶可以直接使用自然語(yǔ)言描述輸入數(shù)據(jù)的內(nèi)容。對(duì)于特殊形式的輸入數(shù)據(jù),則需要采用合適的方法使其能夠被大語(yǔ)言模型讀取與理解。例如,對(duì)于結(jié)構(gòu)化數(shù)據(jù)(如知識(shí)圖譜、表格等),通常使用線性化方法將其轉(zhuǎn)換為易于處理的文本序列

(37)上下文信息. 除了任務(wù)描述和輸入數(shù)據(jù)外,上下文信息對(duì)某些特定任務(wù)也非常重要。例如,搜索引擎可以為開(kāi)放問(wèn)答任務(wù)提供參考文檔,可以通過(guò)將檢索到的參考文檔以上下文信息的形式引入提示作為大語(yǔ)言模型的輸入。

(38)提示策略. 針對(duì)不同的大語(yǔ)言模型設(shè)計(jì)合適的提示策略對(duì)于激發(fā)模型解決特定任務(wù)的能力非常重要。在某些情況下,添加特定的前綴或后綴有助于引導(dǎo)大語(yǔ)言模型解決復(fù)雜任務(wù)。例如,使用前綴“讓我們一步一步地思考”可以激發(fā)大語(yǔ)言模型的逐步推理能力,而使用前綴“你是這項(xiàng)任務(wù)(或這個(gè)領(lǐng)域)的專(zhuān)家”可以提高大語(yǔ)言模型在某些特定任務(wù)(或領(lǐng)域)中的表現(xiàn)。

(39)思維鏈:思維鏈提示 [25, 282] 是一種高級(jí)提示策略,旨在增強(qiáng)大語(yǔ)言模型在各類(lèi)復(fù)雜推理任務(wù)上的表現(xiàn)。常見(jiàn)的推理任務(wù)包括算術(shù)推理 [283]、常識(shí)推理 [284] 以及符號(hào)推理 [25] 等多種任務(wù)。與上下文學(xué)習(xí)方法僅使用 ? 輸入,輸出 ? 二元組來(lái)構(gòu)造提示不同,思維鏈提示進(jìn)一步融合了中間的推理步驟來(lái)指導(dǎo)從輸入到輸出的推理過(guò)程。


(40)如圖 11.1 所示,基于大語(yǔ)言模型的規(guī)劃方法主要由三個(gè)組件構(gòu)成,包括【任務(wù)規(guī)劃器(Task Planner)】、【規(guī)劃執(zhí)行器(Plan Executor)】以及【環(huán)境(Environment)】1。具體來(lái)說(shuō),大語(yǔ)言模型作為任務(wù)規(guī)劃器,其主要職責(zé)是生成目標(biāo)任務(wù)的解決方案。該方案包含一系列執(zhí)行動(dòng)作,每個(gè)動(dòng)作通過(guò)合適的形式進(jìn)行表達(dá),例如自然語(yǔ)言描述或代碼片段。




