<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 如何使用PyTorch訓練LLM

如何使用PyTorch訓練LLM

發(fā)布人:ygtu 時(shí)間:2023-09-08 來(lái)源:工程師 發(fā)布文章
推薦:使用NSDT場(chǎng)景編輯器快速搭建3D應用場(chǎng)景

像LangChain這樣的庫促進(jìn)了上述端到端AI應用程序的實(shí)現。我們的教程介紹 LangChain for Data Engineering & Data Applications 概述了您可以使用 Langchain 做什么,包括 LangChain 解決的問(wèn)題,以及數據用例的示例。

本文將解釋訓練大型語(yǔ)言模型的所有過(guò)程,從設置工作區到使用 Pytorch 2.0.1 的最終實(shí)現,Pytorch <>.<>.<> 是一個(gè)動(dòng)態(tài)且靈活的深度學(xué)習框架,允許簡(jiǎn)單明了的模型實(shí)現。

先決條件

為了充分利用這些內容,重要的是要熟悉 Python 編程,對深度學(xué)習概念和轉換器有基本的了解,并熟悉 Pytorch 框架。完整的源代碼將在GitHub上提供。

在深入研究核心實(shí)現之前,我們需要安裝和導入相關(guān)庫。此外,重要的是要注意,訓練腳本的靈感來(lái)自 Hugging Face 中的這個(gè)存儲庫。

庫安裝

安裝過(guò)程詳述如下:

首先,我們使用語(yǔ)句在單個(gè)單元格中運行安裝命令作為 Jupyter 筆記本中的 bash 命令。%%bash

  • Trl:用于通過(guò)強化學(xué)習訓練轉換器語(yǔ)言模型。

  • Peft使用參數高效微調(PEFT)方法來(lái)有效地適應預訓練的模型。

  • Torch:一個(gè)廣泛使用的開(kāi)源機器學(xué)習庫。

  • 數據集:用于幫助下載和加載許多常見(jiàn)的機器學(xué)習數據集。

變形金剛:由Hugging Face開(kāi)發(fā)的庫,帶有數千個(gè)預訓練模型,用于各種基于文本的任務(wù),如分類(lèi),摘要和翻譯。

現在,可以按如下方式導入這些模塊:

數據加載和準備

羊駝數據集,在擁抱臉上免費提供,將用于此插圖。數據集有三個(gè)主要列:指令、輸入和輸出。這些列組合在一起以生成最終文本列。

加載數據集的指令在下面通過(guò)提供感興趣的數據集的名稱(chēng)給出,即:tatsu-lab/alpaca

我們可以看到,結果數據位于包含兩個(gè)鍵的字典中:

  • 特點(diǎn):包含主列數據

  • Num_rows:對應于數據中的總行數

train_dataset的結構

train_dataset的結構

可以使用以下說(shuō)明顯示前五行。首先,將字典轉換為熊貓數據幀,然后顯示行。

train_dataset的前五行

train_dataset的前五行

為了獲得更好的可視化效果,讓我們打印有關(guān)前三行的信息,但在此之前,我們需要安裝庫以將每行的最大字數設置為 50。第一個(gè) print 語(yǔ)句用 15 個(gè)短劃線(xiàn)分隔每個(gè)塊。textwrap

前三行的詳細信息

前三行的詳細信息

模型訓練

在繼續訓練模型之前,我們需要設置一些先決條件:

  • 預訓練模型:我們將使用預訓練模型Salesforce/xgen-7b-8k-base,該模型可在Hugging Face上使用。Salesforce 訓練了這一系列名為 XGen-7B 的 7B LLM,對高達 8K 的序列進(jìn)行了標準的密集關(guān)注,最多可獲得 1.5T 代幣。

  • 分詞器: 這是訓練數據上的標記化任務(wù)所必需的。加載預訓練模型和分詞器的代碼如下:

pretrained_model_name = "Salesforce/xgen-7b-8k-base"
model = AutoModelForCausalLM.from_pretrained(pretrained_model_name, torch_dtype=torch.bfloat16)
tokenizer = AutoTokenizer.from_pretrained(pretrained_model_name, trust_remote_code=True)

訓練配置

訓練需要一些訓練參數和配置,下面定義了兩個(gè)重要的配置對象,一個(gè)是 TrainingArguments 的實(shí)例,一個(gè)是 LoraConfig 模型的實(shí)例,最后是 SFTTrainer 模型。

訓練參數

這用于定義模型訓練的參數。

在此特定場(chǎng)景中,我們首先使用屬性定義存儲訓練模型的目標,然后再定義其他超參數,例如優(yōu)化方法、優(yōu)化方法、、 等。output_dirlearning ratenumber of epochs

洛拉康菲格

用于此方案的主要參數是 LoRA 中低秩轉換矩陣的秩, 設置為 16.然后, LoRA 中其他參數的比例因子設置為 32.

此外,輟學(xué)比率為 0.05,這意味著(zhù)在訓練期間將忽略 5% 的輸入單元。最后,由于我們正在處理一個(gè)普通語(yǔ)言建模,因此該任務(wù)使用屬性進(jìn)行初始化。CAUSAL_LM

SFTTrainer

這旨在使用訓練數據、分詞器和附加信息(如上述模型)來(lái)訓練模型。

由于我們使用訓練數據中的文本字段,因此查看分布以幫助設置給定序列中的最大令牌數非常重要。

文本列長(cháng)度的分布

文本列長(cháng)度的分布

基于上述觀(guān)察,我們可以看到大多數文本的長(cháng)度在 0 到 1000 之間。此外,我們可以在下面看到,只有 4.5% 的文本文檔的長(cháng)度大于 1024。

mask = pandas_format['text_length'] > 1024
percentage = (mask.sum() / pandas_format['text_length'].count()) * 100

print(f"The percentage of text documents with a length greater than 1024 is: {percentage}%")

圖像6.png

然后,我們將序列中的最大標記數設置為 1024,以便任何比此長(cháng)度的文本都被截斷。

培訓執行

滿(mǎn)足所有先決條件后,我們現在可以按如下方式運行模型的訓練過(guò)程:

值得一提的是,此培訓是在具有GPU的云環(huán)境中進(jìn)行的,這使得整個(gè)培訓過(guò)程更快。但是,在本地計算機上進(jìn)行培訓需要更多時(shí)間才能完成。

我們的博客,在云中使用LLM與在本地運行LLM的優(yōu)缺點(diǎn),提供了為L(cháng)LM選擇最佳部署策略的關(guān)鍵考慮因素

讓我們了解上面的代碼片段中發(fā)生了什么:

  • tokenizer.pad_token = tokenizer.eos_token:將填充標記設置為與句尾標記相同。

  • model.resize_token_embeddings(len(tokenizer)):調整模型的標記嵌入層的大小,以匹配分詞器詞匯表的長(cháng)度。

  • model = prepare_model_for_int8_training(model):準備模型以進(jìn)行 INT8 精度的訓練,可能執行量化。

  • model = get_peft_model(model, lora_peft_config):根據 PEFT 配置調整給定的模型。

  • training_args = model_training_args:將預定義的訓練參數分配給training_args。

  • trainer = SFT_trainer:將 SFTTrainer 實(shí)例分配給變量訓練器。

  • trainer.train():根據提供的規范觸發(fā)模型的訓練過(guò)程。

結論

本文提供了使用 PyTorch 訓練大型語(yǔ)言模型的明確指南。從數據集準備開(kāi)始,它演練了準備先決條件、設置訓練器以及最后運行訓練過(guò)程的步驟。

盡管它使用了特定的數據集和預先訓練的模型,但對于任何其他兼容選項,該過(guò)程應該大致相同?,F在您已經(jīng)了解如何訓練LLM,您可以利用這些知識為各種NLP任務(wù)訓練其他復雜的模型。

原文鏈接:如何使用PyTorch訓練LLM (mvrlink.com)


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。




相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>