谷歌沒(méi)開(kāi)源的PaLM,網(wǎng)友給開(kāi)源了!千億參數(shù)微縮版:最大只有10億,8k上下文
谷歌未開(kāi)源的PaLM,網(wǎng)友竟給開(kāi)源了。
昨天,一位開(kāi)發(fā)者在GitHub上開(kāi)源了三種微縮版的PaLM模型:參數(shù)分別為1.5億(PalM-150m),4.1億(PalM-410m)和10億(PalM-1b)。
項(xiàng)目地址:https://github.com/conceptofmind/PaLM
這三種模型在谷歌C4數(shù)據(jù)集進(jìn)行了訓(xùn)練,上下文長(zhǎng)度為8k。未來(lái),還有20億參數(shù)的模型正在訓(xùn)練中。
谷歌C4數(shù)據(jù)集
開(kāi)源PaLM
使用4.1億參數(shù)模型生成的示例:
My dog is very cute, but not very good at socializing with other dogs. The dog loves all new people and he likes to hang out with other dogs. I do need to take him to the park with other dogs. He does have some bad puppy breath, but it is only when he runs off in a direction he doesn't want to go. currently my dog is being very naughty. He would like to say hi in the park, but would rather take great care of himself for a while. He also has bad breath. I am going to have to get him some oral braces. It's been 3 months. The dog has some biting pains around his mouth. The dog is very timid and scared. The dog gets aggressive towards people. The dog is very playful and they are a little spoiled. I am not sure if it's a dog thing or if he is spoiled. He loves his toys and just wants to play. He plays with his toys all the time and even goes on walks. He is a little picky, not very good with other dogs. The dog is just a little puppy that goes to the park. He is a super friendly dog. He has not had a bad mouth or bad breath
我的狗很可愛(ài),但是不善于和其他狗交際。這只狗喜歡所有新來(lái)的人,他喜歡和其他的狗一起玩。我確實(shí)需要帶他和其他狗一起去公園。他確實(shí)有點(diǎn)小狗的口臭,但只有當(dāng)他往不想去的方向跑的時(shí)候?,F(xiàn)在我的狗很淘氣。他想在公園里打個(gè)招呼,但寧愿好好照顧自己一段時(shí)間。他還有口臭。我得給他買個(gè)口腔矯正器,已經(jīng)過(guò)去三個(gè)月了。這條狗嘴邊有些咬痕疼痛。這只狗非常膽小和害怕。這條狗非常頑皮,他們有點(diǎn)被寵壞了。我不確定是狗的問(wèn)題還是他被寵壞了。他喜歡他的玩具,只是想玩。他總是玩他的玩具,甚至去散步。他有點(diǎn)挑剔,不太會(huì)和其他狗相處。那只狗只是一只去公園的小狗。它是一只超級(jí)友好的狗。他沒(méi)有口臭問(wèn)題了。
雖然參數(shù)確實(shí)有點(diǎn)少,但這生成的效果還是有些一言難盡……
這些模型兼容許多Lucidrain的流行倉(cāng)庫(kù),例如Toolformer-pytorch、PalM-rlhf-pytorch和PalM-pytorch。
最新開(kāi)源的三種模型都是基線模型,并將在更大規(guī)模數(shù)據(jù)集上進(jìn)行訓(xùn)練。
所有的模型將在FLAN上進(jìn)一步調(diào)整指令,以提供flan-PaLM模型。
開(kāi)源的PaLM模型通過(guò)Flash Attention、 Xpos Rotary Embeddings進(jìn)行訓(xùn)練,從而實(shí)現(xiàn)了更好的長(zhǎng)度外推,并使用多查詢單鍵值注意力機(jī)制進(jìn)行更高效的解碼。
在優(yōu)化算法方面,采用的則是解耦權(quán)重衰減Adam W,但也可以選擇使用Mitchell Wortsman的Stable Adam W。
目前,模型已經(jīng)上傳到Torch hub,文件也存儲(chǔ)在Huggingface hub中。
如果模型無(wú)法從Torch hub正確下載,請(qǐng)務(wù)必清除 .cache/torch/hub/ 中的檢查點(diǎn)和模型文件夾。如果問(wèn)題仍未解決,那么你可以從Huggingface的倉(cāng)庫(kù)下載文件。目前,Huggingface 的整合工作正在進(jìn)行中。
所有的訓(xùn)練數(shù)據(jù)都已經(jīng)用GPTNEOX標(biāo)記器進(jìn)行了預(yù)標(biāo)記,并且序列長(zhǎng)度被截止到8192。這將有助于節(jié)省預(yù)處理數(shù)據(jù)的大量成本。
這些數(shù)據(jù)集已經(jīng)以parquet格式存儲(chǔ)在Huggingface上,你可以在這里找到各個(gè)數(shù)據(jù)塊:C4 Chunk 1,C4 Chunk 2,C4 Chunk 3,C4 Chunk 4,以及C4 Chunk 5。
在分布式訓(xùn)練腳本中還有另一個(gè)選項(xiàng),不使用提供的預(yù)標(biāo)記C4數(shù)據(jù)集,而是加載和處理另一個(gè)數(shù)據(jù)集,如 openwebtext。
安裝
在嘗試運(yùn)行模型之前,需要先進(jìn)行一波安裝。
git clone https://github.com/conceptofmind/PaLM.git
cd PaLM/
pip3 install -r requirements.txt
使用
你可以通過(guò)使用Torch hub加載預(yù)訓(xùn)練的模型進(jìn)行額外的訓(xùn)練或微調(diào):
model = torch.hub.load("conceptofmind/PaLM", "palm_410m_8k_v0").cuda()
另外,你還可以通下面的方式直接加載PyTorch模型檢查點(diǎn):
from palm_rlhf_pytorch import PaLMmodel = PaLM(
num_tokens=50304, dim=1024, depth=24, dim_head=128, heads=8, flash_attn=True, qk_rmsnorm = False,
).cuda()
model.load('/palm_410m_8k_v0.pt')
要使用模型生成文本,可以使用命令行:
prompt-用于生成文本的提示。
seq _ len-生成文本的序列長(zhǎng)度,默認(rèn)值為256。
temperature-采樣溫度,默認(rèn)為0.8
filter_thres-用于采樣的過(guò)濾器閾值。默認(rèn)值為0.9。
model-用于生成的模型。有三種不同的參數(shù)(150m,410m,1b):palm_150m_8k_v0,palm_410m_8k_v0,palm_1b_8k_v0。
python3 inference.py "My dog is very cute" --seq_len 256 --temperature 0.8 --filter_thres 0.9 --model "palm_410m_8k_v0"
為了提高性能,推理使用torch.compile()、 Flash Attention和Hidet。
如果你想通過(guò)添加流處理或其他功能來(lái)擴(kuò)展生成,作者提供了一個(gè)通用的推理腳本「inference.py」。
訓(xùn)練
這幾個(gè)「開(kāi)源PalM」模型是在64個(gè)A100(80GB)GPU上完成訓(xùn)練的。
為了方便模型的訓(xùn)練,作者還提供了一個(gè)分布式訓(xùn)練腳本train_distributed.py。
你可以自由改變模型層和超參數(shù)配置以滿足硬件的要求,并且還可以加載模型的權(quán)重并改變訓(xùn)練腳本來(lái)微調(diào)模型。
最后,作者表示會(huì)在將來(lái)加入一個(gè)具體的微調(diào)腳本,并對(duì)LoRA進(jìn)行探索。
數(shù)據(jù)
可以通過(guò)運(yùn)行build_dataset.py腳本,以類似于訓(xùn)練期間使用的C4數(shù)據(jù)集的方式預(yù)處理不同的數(shù)據(jù)集。這將對(duì)數(shù)據(jù)進(jìn)行預(yù)標(biāo)記,將數(shù)據(jù)分成指定序列長(zhǎng)度的塊,并上傳到Huggingface hub。
比如:
python3 build_dataset.py --seed 42 --seq_len 8192 --hf_account "your_hf_account" --tokenizer "EleutherAI/gpt-neox-20b" --dataset_name "EleutherAI/the_pile_deduplicated"
PaLM 2要來(lái)了
2022年4月,谷歌首次官宣了5400億參數(shù)的PaLM。與其他LLM一樣,PaLM能執(zhí)行各種文本生成和編輯任務(wù)。
PaLM是谷歌首次大規(guī)模使用Pathways系統(tǒng)將訓(xùn)練擴(kuò)展到6144塊芯片,這是迄今為止用于訓(xùn)練的基于TPU的最大系統(tǒng)配置。
它的理解能力拔群,不僅連笑話都能看懂,還能給看不懂的你解釋笑點(diǎn)在哪。
就在3月中,谷歌首次開(kāi)放其PaLM大型語(yǔ)言模型API。
這意味著,人們可以用它來(lái)完成總結(jié)文本、編寫代碼等任務(wù),甚至是將PaLM訓(xùn)練成一個(gè)像ChatGPT一樣的對(duì)話聊天機(jī)器人。
在即將召開(kāi)的谷歌年度I/O大會(huì)上,劈柴將公布公司在AI領(lǐng)域的最新發(fā)展。
據(jù)稱,最新、最先進(jìn)的大型語(yǔ)言模型PaLM 2即將推出。
PaLM 2包含100多種語(yǔ)言,并一直在內(nèi)部代號(hào)「統(tǒng)一語(yǔ)言模型」(Unified Language Model)下運(yùn)行。它還進(jìn)行了廣泛的編碼和數(shù)學(xué)測(cè)試以及創(chuàng)意寫作。
上個(gè)月,谷歌表示,其醫(yī)學(xué)LLM「Med-PalM2」,可以回答醫(yī)學(xué)考試的問(wèn)題,在「專家醫(yī)生水平」,準(zhǔn)確率為85% 。
此外,谷歌還將發(fā)布大模型加持下的聊天機(jī)器人Bard,以及搜索的生成式體驗(yàn)。
最新AI發(fā)布能否讓谷歌挺直腰板,還得拭目以待。