衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

從原理到代碼理解語(yǔ)言模型訓(xùn)練和推理,通俗易懂,快速修煉LLM

深度學(xué)習(xí)自然語(yǔ)言處理 ? 來(lái)源:深度學(xué)習(xí)自然語(yǔ)言處理 ? 2023-09-19 16:25 ? 次閱讀

今天分享一篇博客,介紹語(yǔ)言模型的訓(xùn)練和推理,通俗易懂且抓住本質(zhì)核心,強(qiáng)烈推薦閱讀。

標(biāo)題:Language Model Training and Inference: From Concept to Code
作者:CAMERON R. WOLFE
原文:
https://cameronrwolfe.substack.com/p/language-model-training-and-inference

要理解大語(yǔ)言模型(LLM),首先要理解它的本質(zhì),無(wú)論預(yù)訓(xùn)練、微調(diào)還是在推理階段,核心都是next token prediction,也就是以自回歸的方式從左到右逐步生成文本。

什么是token?

token是指文本中的一個(gè)詞或者子詞,給定一句文本,送入語(yǔ)言模型前首先要做的是對(duì)原始文本進(jìn)行tokenize,也就是把一個(gè)文本序列拆分為離散的token序列

340537bc-56c3-11ee-939d-92fbcf53809c.png

其中,tokenizer是在無(wú)標(biāo)簽的語(yǔ)料上訓(xùn)練得到的一個(gè)token數(shù)量固定且唯一的分詞器,這里的token數(shù)量就是大家常說(shuō)的詞表,也就是語(yǔ)言模型知道的所有tokens。

當(dāng)我們對(duì)文本進(jìn)行分詞后,每個(gè)token可以對(duì)應(yīng)一個(gè)embedding,這也就是語(yǔ)言模型中的embedding層,獲得某個(gè)token的embedding就類(lèi)似一個(gè)查表的過(guò)程

3416725c-56c3-11ee-939d-92fbcf53809c.png

我們知道文本序列是有順序的,而常見(jiàn)的語(yǔ)言模型都是基于注意力機(jī)制的transformer結(jié)構(gòu),無(wú)法自動(dòng)考慮文本的前后順序,因此需要手動(dòng)加上位置編碼,也就是每個(gè)位置有一個(gè)位置embedding,然后和對(duì)應(yīng)位置的token embedding進(jìn)行相加

3426a866-56c3-11ee-939d-92fbcf53809c.png

在模型訓(xùn)練或推理階段大家經(jīng)常會(huì)聽(tīng)到上下文長(zhǎng)度這個(gè)詞,它指的是模型訓(xùn)練時(shí)接收的token訓(xùn)練的最大長(zhǎng)度,如果在訓(xùn)練階段只學(xué)習(xí)了一個(gè)較短長(zhǎng)度的位置embedding,那模型在推理階段就不能夠適用于較長(zhǎng)文本(因?yàn)樗鼪](méi)見(jiàn)過(guò)長(zhǎng)文本的位置編碼)

34357954-56c3-11ee-939d-92fbcf53809c.png

語(yǔ)言模型的預(yù)訓(xùn)練

當(dāng)我們有了token embedding和位置embedding后,將它們送入一個(gè)decoder-only的transofrmer模型,它會(huì)在每個(gè)token的位置輸出一個(gè)對(duì)應(yīng)的embedding(可以理解為就像是做了個(gè)特征加工)

34423e6e-56c3-11ee-939d-92fbcf53809c.png

有了每個(gè)token的一個(gè)輸出embedding后,我們就可以拿它來(lái)做next token prediction了,其實(shí)就是當(dāng)作一個(gè)分類(lèi)問(wèn)題來(lái)看待:

首先我們把輸出embedding送入一個(gè)線性層,輸出的維度是詞表的大小,就是讓預(yù)測(cè)這個(gè)token的下一個(gè)token屬于詞表的“哪一類(lèi)”

為了將輸出概率歸一化,需要再進(jìn)行一個(gè)softmax變換

訓(xùn)練時(shí)就是最大化這個(gè)概率使得它能夠預(yù)測(cè)真實(shí)的下一個(gè)token

推理時(shí)就是從這個(gè)概率分布中采樣下一個(gè)token

3456930a-56c3-11ee-939d-92fbcf53809c.png

訓(xùn)練階段:因?yàn)橛衏ausal自注意力的存在,我們可以一次性對(duì)一整個(gè)句子每個(gè)token進(jìn)行下一個(gè)token的預(yù)測(cè),并計(jì)算所有位置token的loss,因此只需要一forward

推理階段:以自回歸的方式進(jìn)行預(yù)測(cè)

每次預(yù)測(cè)下一個(gè)token

將預(yù)測(cè)的token拼接到當(dāng)前已經(jīng)生成的句子上

再基于拼接后的句子進(jìn)行預(yù)測(cè)下一個(gè)token

不斷重復(fù)直到結(jié)束

其中,在預(yù)測(cè)下一個(gè)token時(shí),每次我們都有一個(gè)概率分布用于采樣,根據(jù)不同場(chǎng)景選擇采樣策略會(huì)略有不同,不然有貪婪策略、核采樣、Top-k采樣等,另外經(jīng)常會(huì)看到Temperature這個(gè)概念,它是用來(lái)控制生成的隨機(jī)性的,溫度系數(shù)越小越穩(wěn)定。

3471acb2-56c3-11ee-939d-92fbcf53809c.png

代碼實(shí)現(xiàn)

下面代碼來(lái)自項(xiàng)目https://github.com/karpathy/nanoGPT/tree/master,同樣是一個(gè)很好的項(xiàng)目,推薦初學(xué)者可以看看。

對(duì)于各種基于Transformer的模型,它們都是由很多個(gè)Block堆起來(lái)的,每個(gè)Block主要有兩個(gè)部分組成:

Multi-headed Causal Self-Attention

Feed-forward Neural Network結(jié)構(gòu)的示意圖如下:

348137fe-56c3-11ee-939d-92fbcf53809c.png

看圖搭一下單個(gè)Block

348f6e5a-56c3-11ee-939d-92fbcf53809c.png

然后看下一整個(gè)GPT的結(jié)構(gòu)

349c3c70-56c3-11ee-939d-92fbcf53809c.png

主要就是兩個(gè)embedding層(token、位置)、多個(gè)block、一些額外的dropout和LayerNorm層,以及最后用來(lái)預(yù)測(cè)下一個(gè)token的線性層。說(shuō)破了就是這么簡(jiǎn)單。

這邊還用到了weight tying的技巧,就是最后一層用來(lái)分類(lèi)的線性層的權(quán)重和token embedding層的權(quán)重共享。

接下來(lái)重點(diǎn)來(lái)關(guān)注一下訓(xùn)練和推理的forward是如何進(jìn)行的,這能幫助大家更好的理解原理。

首先需要構(gòu)建token embedding和位置embedding,把它們疊加起來(lái)后過(guò)一個(gè)dropout,然后就可以送入transformer的block中了。

34ac7e8c-56c3-11ee-939d-92fbcf53809c.png

需要注意的是經(jīng)過(guò)transforemr block后出來(lái)的tensor的維度跟之前是一樣的。拿到每個(gè)token位置對(duì)應(yīng)的輸出embedding后,就可以通過(guò)最后的先行層進(jìn)行分類(lèi),然后用交叉熵?fù)p失來(lái)進(jìn)行優(yōu)化。

34c3aa94-56c3-11ee-939d-92fbcf53809c.png

再看一下完整的過(guò)程,其中只需要將輸入左移一個(gè)位置就可以作為target了

34d55122-56c3-11ee-939d-92fbcf53809c.png

接下來(lái)看推理階段:

根據(jù)當(dāng)前輸入序列進(jìn)行一次前向傳播

利用溫度系數(shù)對(duì)輸出概率分布進(jìn)行調(diào)整

通過(guò)softmax進(jìn)行歸一化

從概率分布進(jìn)行采樣下一個(gè)token

拼接到當(dāng)前句子并再進(jìn)入下一輪循環(huán)

34ea1436-56c3-11ee-939d-92fbcf53809c.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 語(yǔ)言模型
    +關(guān)注

    關(guān)注

    0

    文章

    538

    瀏覽量

    10341
  • LLM
    LLM
    +關(guān)注

    關(guān)注

    0

    文章

    299

    瀏覽量

    400

原文標(biāo)題:從原理到代碼理解語(yǔ)言模型訓(xùn)練和推理,通俗易懂,快速修煉LLM

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    通俗易懂的PID教程

    本帖最后由 Calvin248 于 2013-5-5 15:31 編輯 幫助大家更好的理解PID算法,講解的很通俗易懂,并且附有程序,幫助大家理解掌握!
    發(fā)表于 05-05 15:30

    通俗易懂的PID算法

    發(fā)幾個(gè)通俗易懂的PID算法,需要的拿走
    發(fā)表于 01-26 00:54

    通俗易懂系列整合—電源基礎(chǔ)知識(shí)講解

    之前發(fā)表了六篇用通俗易懂的話講解電源知識(shí)的文章,分別是關(guān)于三極管、電阻、電容、電感、二極管和場(chǎng)效應(yīng)管的講解。怕想學(xué)習(xí)的壇友找不到內(nèi)容,所以這邊整合一下,給大家分享文章的鏈接。用通俗易懂的話讓你明白
    發(fā)表于 02-17 09:43

    PID通俗易懂

    PID通俗易懂.....................
    發(fā)表于 06-30 18:54

    通俗易懂之電子稱開(kāi)發(fā)導(dǎo)航篇

    通俗易懂之電子稱開(kāi)發(fā)立項(xiàng)篇https://bbs.elecfans.com/jishu_919726_1_1.html通俗易懂之電子稱開(kāi)發(fā)硬件篇https://bbs.elecfans.com
    發(fā)表于 07-18 21:22

    通俗易懂的單片機(jī)教程

    通俗易懂的單片機(jī)教程
    發(fā)表于 09-29 15:45 ?637次下載
    <b class='flag-5'>通俗易懂</b>的單片機(jī)教程

    卡爾曼濾波的原理說(shuō)明(通俗易懂)

    通俗易懂的 卡爾曼濾波原理 由淺入深不光是公式的介紹
    發(fā)表于 12-08 18:13 ?37次下載

    卡爾曼濾波的原理說(shuō)明(通俗易懂)

    這是關(guān)于卡爾曼濾波的原理說(shuō)明(通俗易懂),適合初學(xué)者
    發(fā)表于 03-16 14:40 ?0次下載

    PID通俗易懂

    PID通俗易懂PID通俗易懂PID通俗易懂PID通俗易懂PID通俗易懂PID通俗易懂
    發(fā)表于 04-19 09:54 ?21次下載

    卡爾曼濾波器[附帶例程]通俗易懂

    卡爾曼濾波器[附帶例程] 通俗易懂 附上工程代碼 C語(yǔ)言 c++ 以及matlab
    發(fā)表于 09-27 16:34 ?17次下載

    步進(jìn)電機(jī)基本原理(通俗易懂)

    步進(jìn)電機(jī)基本原理(通俗易懂)
    發(fā)表于 11-30 11:55 ?0次下載

    通俗易懂的講解FFT的讓你快速了解FFT

    相信網(wǎng)上現(xiàn)在有很多關(guān)于FFT的教程,我曾經(jīng)也參閱了很多網(wǎng)上的教程,感覺(jué)都不怎么通俗易懂。在基本上的研究FFT,并且通過(guò)編程的形式實(shí)現(xiàn)之后。我決定寫(xiě)一篇通俗易懂的關(guān)于FFT的講解。因此我在接下來(lái)的敘述中盡量非常通俗細(xì)致的講解。
    的頭像 發(fā)表于 03-24 11:52 ?3.6w次閱讀
    <b class='flag-5'>通俗易懂</b>的講解FFT的讓你<b class='flag-5'>快速</b>了解FFT

    大型語(yǔ)言模型LLM)的自定義訓(xùn)練:包含代碼示例的詳細(xì)指南

    近年來(lái),像 GPT-4 這樣的大型語(yǔ)言模型LLM) 因其在自然語(yǔ)言理解和生成方面的驚人能力而受到廣泛關(guān)注。但是,要根據(jù)特定任務(wù)或領(lǐng)域定制
    發(fā)表于 06-12 09:35 ?2889次閱讀

    通俗易懂的ArkTS語(yǔ)言入門(mén)指南

    本文為我整理出來(lái)最通俗易懂的 ArkTS 語(yǔ)言入門(mén)指南。
    的頭像 發(fā)表于 06-18 15:12 ?2.3w次閱讀
    最<b class='flag-5'>通俗易懂</b>的ArkTS<b class='flag-5'>語(yǔ)言</b>入門(mén)指南

    語(yǔ)言模型(LLM)快速理解

    自2022年,ChatGPT發(fā)布之后,大語(yǔ)言模型(LargeLanguageModel),簡(jiǎn)稱LLM掀起了一波狂潮。作為學(xué)習(xí)理解LLM的開(kāi)始
    的頭像 發(fā)表于 06-04 08:27 ?1138次閱讀
    大<b class='flag-5'>語(yǔ)言</b><b class='flag-5'>模型</b>(<b class='flag-5'>LLM</b>)<b class='flag-5'>快速</b><b class='flag-5'>理解</b>
    免费百家乐官网计划软件| 大发888在线娱乐城| 百家乐官网庄闲必胜手段| 玩百家乐技巧博客| 鼎龙娱乐城开户| 百家乐官网旺门打| 娱网棋牌游戏大厅下载| 百家乐官网博弈指| 大世界娱乐城真人娱乐| 百家乐官网必胜打| 菲彩娱乐| 澳门百家乐下注最低| 太阳城在线娱乐网| 百家乐视频麻将下载| 满洲里市| 百家乐送现金| 百家乐官网视频下载地址| 贵宾百家乐的玩法技巧和规则| 百家乐官网开户百家乐官网技巧 | 澳门百家乐官网在线| 威尼斯人娱乐网可信吗| 长春百家乐官网的玩法技巧和规则 | 东营区百家乐艺术团| 塑料百家乐官网筹码| 威尼斯人娱乐场cqsscgw88| 泰山百家乐官网的玩法技巧和规则 | 百家乐投注哪个信誉好| 百家乐官网招商用语| 百家乐备用网址| 伯爵百家乐官网赌场娱乐网规则 | 网上百家乐官网赢钱公式| 威尼斯人娱乐城是骗子| 百家乐官网棋牌游戏币| 百家乐官网破解视频| 百家乐都是什么人玩的| 大连百家乐官网商场| 广州市| 百家乐游戏试| 百家乐官网博乐城| 平昌县| 威尼斯人娱乐城代理加盟|