[完結(jié)11章]從0到1訓(xùn)練私有大模型 ,企業(yè)急迫需求,搶占市場(chǎng)先機(jī)
網(wǎng)盤地址:https://pan.baidu.com/s/1yq9HyKjcb7wezj6xHl0BFA 提取碼: hrd5
騰訊微云下載地址:https://share.weiyun.com/BslQ4wFD 密碼:fb9fbn
《從0到1訓(xùn)練私有大模型 ,企業(yè)急迫需求,搶占市場(chǎng)先機(jī)》完結(jié)11章,深入企業(yè)需求,從Chat背后原理、技術(shù)、不同大模型知識(shí)開始,帶你從0到1訓(xùn)練出一個(gè)大模型,運(yùn)用PEFT技巧微調(diào)大模型解決場(chǎng)景需求,最后用LangChain+訓(xùn)練的大模型搭建知識(shí)庫(kù)問答。讓你掌握大模型LLM構(gòu)建的原理、技術(shù)、流程與實(shí)戰(zhàn),超越大多數(shù)競(jìng)爭(zhēng)者,搶占先機(jī),脫穎而出。
第1章 課程介紹
第2章訓(xùn)練模型與開發(fā)平臺(tái)環(huán)境
第3章 chatGPT初始技術(shù)詞向量原理剖析與實(shí)戰(zhàn)
第4章 chatGPT基石模型基于Transformer架構(gòu)的語(yǔ)言模型
第5章基于Transformer另一分支Bert系列分析與實(shí)戰(zhàn)
第6章 chatGPT的核心技術(shù)強(qiáng)化學(xué)習(xí)
第7章 chatGPT技術(shù)演變從GPT 1 開始的大模型發(fā)展與演化
第8章 RLHF訓(xùn)練類ChatGPT模型代碼實(shí)戰(zhàn)
第9章低成本微調(diào)大模型方法PEFT(LORA等)訓(xùn)練”ChatGLM2“項(xiàng)目
第10章 langchain+訓(xùn)練大模型ChatGLM2 構(gòu)建”知識(shí)庫(kù)問答
第11章 課程總結(jié)
字面量
一個(gè)值的字面形式稱為一個(gè)字面量,它表示此值在代碼中文字體現(xiàn)形式(和內(nèi)存中的表現(xiàn)形式相對(duì)應(yīng))。一個(gè)值可能會(huì)有很多種字面量形式。
比如數(shù)字1可以作為整型的字面量形式;1.11可以作為浮點(diǎn)類型的字面量形式。
整數(shù)類型值有四種字面量形式:十進(jìn)制形式(decimal)、八進(jìn)制形式(octal)、十六進(jìn)制形式(hex)和二進(jìn)制形式(binary)。
浮點(diǎn)數(shù)的完整十進(jìn)制字面量形式可能包含一個(gè)十進(jìn)制整數(shù)部分、一個(gè)小數(shù)點(diǎn)、一個(gè)十進(jìn)制小數(shù)部分和一個(gè)以10為底數(shù)的整數(shù)指數(shù)部分。 整數(shù)指數(shù)部分由字母e或者E帶一個(gè)十進(jìn)制的整數(shù)字。
比如:1.11 , 1.11e2 , 100.e+2
虛部字面量形式。由一個(gè)浮點(diǎn)數(shù)字面量或者一個(gè)整數(shù)字面量和其后跟隨的一個(gè)小寫的字母i組成。 在Go 1.13之前,如果虛部中i前的部分為一個(gè)整數(shù)字面量,則其必須為并且總是被視為十進(jìn)制形式。比如:
1.12i,1.12E2i,0x16i(0+22i)等等
rune的字面量形式,使用單引號(hào)或者八進(jìn)制,十六進(jìn)制表示:
比如: ‘a(chǎn)’ , '\141` , ‘\x61’ , ‘\u0061’ , ‘\U00000061’ 上面這些字符都表示字符a。
字符串的字面量形式。字符串的值都是UTF-8編碼的??梢允褂秒p引號(hào)和反引號(hào)聲明。比如:`hello`
函數(shù)字面量。函數(shù)類型的字面表示形式由一個(gè)func關(guān)鍵字和一個(gè)函數(shù)簽名字面表示表示形式組成。 一個(gè)函數(shù)簽名由一個(gè)輸入?yún)?shù)類型列表和一個(gè)返回值結(jié)果類型列表組成。
比如:
type person struct {
name string
age? int
}
//結(jié)構(gòu)體組合字面量的第一種形式
person{
name: "",
age:? 0,
}
//結(jié)構(gòu)體組合字面量的第二種形式
person{"", 0}
package main
import (
"fmt"
"sync"
)
func main() {
wg := sync.WaitGroup{}
for i := 0; i < 10; i++ {
//增加異步任務(wù)
wg.Add(1)
go func() {
task(i, wg)
}()
}
//等待全部goroutine完成
wg.Wait()
}
func task(i int, wg sync.WaitGroup) {
fmt.Println(i)
//標(biāo)記異步任務(wù)完成
wg.Done()
}
什么是同步?
同步是指多個(gè)線程之間按照一定的順序協(xié)調(diào)執(zhí)行的機(jī)制。比如在某些場(chǎng)景下,多個(gè) goroutine 可能會(huì)訪問同一塊內(nèi)存區(qū)域,需要確保正確的共享內(nèi)存,避免出現(xiàn)數(shù)據(jù)競(jìng)爭(zhēng)等問題。Go 提供了一些機(jī)制來(lái)保證內(nèi)存同步,比如鎖、通道、原子操作等。
比如下面的代碼,就會(huì)出現(xiàn)并發(fā)安全問題:
package main
import (
? ? "fmt"
? ? "sync"
)
func main() {
? ? counter1()
}
func counter1() {
? ? cnt := 0
? ? wg := sync.WaitGroup{}
? ? for i := 0; i < 1000; i++ {
? ? ? ? wg.Add(1)
? ? ? ? go func() {
? ? ? ? ? ? cnt++
? ? ? ? ? ? wg.Done()
? ? ? ? }()
? ? }
? ? wg.Wait()
? ? fmt.Println(cnt)
}
因?yàn)榱奶爝@個(gè)功能似乎“無(wú)所不能”。比方說(shuō):
問問題:某個(gè)主題的基本知識(shí)、某個(gè)問題的答案
提供建議:根據(jù)您的需求給出相關(guān)的建議和指導(dǎo),如健康、財(cái)務(wù)、職業(yè)等
語(yǔ)言翻譯:將語(yǔ)言翻譯成另一種語(yǔ)言
生成文章:生成符合您需求的文本
解題:理解題目,并給出解題過程和結(jié)果
寫代碼: 理解需求,產(chǎn)生一段計(jì)算機(jī)代碼
...
所以說(shuō)唯一限制我們使用場(chǎng)景的就是我們的想象力。
對(duì)于Decoder的隱藏層,就變成了st=f(st-1,yt-1,ct),其中ct指的是在t時(shí)刻encoder模塊的隱藏層ht加權(quán)平均的結(jié)果。
帶有Attention的Encoder-Decoder網(wǎng)絡(luò)的迭代過程就是如下幾步:
Encoder網(wǎng)絡(luò)按照原來(lái)的方法計(jì)算出h1,h2,...ht
計(jì)算Decoder網(wǎng)絡(luò),對(duì)于第k個(gè)輸出詞語(yǔ),計(jì)算出得到ck所需要的h1,h2,...ht的權(quán)重αk,由此得到ck
將sk-1,yk-1,ck帶入g(sk-1,yk-1,ck)得到sk,并帶入網(wǎng)絡(luò)得到輸出yk
重復(fù)直到網(wǎng)絡(luò)輸出<end>。
(如何計(jì)算權(quán)重:設(shè)計(jì)一個(gè)以si,hj為輸入的網(wǎng)絡(luò)用softmax算概率作為權(quán)重)
2.21 self-attention
Query、Value 、Key
attention函數(shù)可以理解為利用向量key和value將一次查詢進(jìn)行映射的過程
輸入層
encoder的輸入層和decoder的輸入層是一樣的結(jié)構(gòu),都是token embedding(詞向量)+ positional embedding(位置向量),得到最終的輸入向量。(為什么要用位置向量:因?yàn)?Transformer 不采用 RNN 的結(jié)構(gòu),而是使用全局信息,不能利用單詞的順序信息,而這部分信息對(duì)于 NLP 來(lái)說(shuō)非常重要。所以 Transformer 中使用位置 Embedding 保存單詞在序列中的相對(duì)或絕對(duì)位置。)
LLM涌現(xiàn)出的3大能力
In-context learning:在GPT-3中正式被提出。在不需要重新訓(xùn)練的情況下,通過自然語(yǔ)言指令,并帶幾個(gè)期望輸出的樣例,LLM就能夠?qū)W習(xí)到這種輸入輸出關(guān)系,新的指令輸入后,就能輸出期望的輸出。
Instruction following:通過在多種任務(wù)數(shù)據(jù)集上進(jìn)行指令微調(diào)(instruction tuning),LLM可以在沒有見過的任務(wù)上,通過指令的形式表現(xiàn)良好,因此具有較好的泛化能力。
Step-by-step reasoning:通過思維鏈(chain-of-thought)提示策略,即把大任務(wù)分解成一步一步小任務(wù),讓模型think step by step得到最終答案。
LLM的關(guān)鍵技術(shù)
Scaling:更多的模型參數(shù)、數(shù)據(jù)量和訓(xùn)練計(jì)算,可以有效提升模型效果。
Training:分布式訓(xùn)練策略及一些提升訓(xùn)練穩(wěn)定性和效果的優(yōu)化trick。另外還有GPT-4也提出去建立一些特殊的工程設(shè)施通過小模型的表現(xiàn)去預(yù)測(cè)大模型的表現(xiàn)(predictable scaling)。
Ability eliciting:能力引導(dǎo)。設(shè)計(jì)合適的任務(wù)指令或具體的上下文學(xué)習(xí)策略可以激發(fā)LLM在龐大預(yù)料上學(xué)習(xí)到的能力。
Alignment tuning:對(duì)齊微調(diào)。為了避免模型輸出一些不安全或者不符合人類正向價(jià)值觀的回復(fù),InstructGPT利用RLHF(reinforcement learning with human feedback)技術(shù)實(shí)現(xiàn)這一目的。
Tools manipulation:工具操作。為了彌補(bǔ)模型不擅長(zhǎng)非文本輸出任務(wù)和實(shí)時(shí)信息缺失的問題,讓模型可以使用計(jì)算器、搜索引擎或者給模型安裝插件等工具