最近,隨著大語言模型和AI的興起,我們看到了自然語言處理方面的無數進步。文本,代碼和圖像/視頻生成等域中的模型具有歸檔的人類的推理和性能。這些模型在基於知識的問題中表現出色。 GPT-4O,Llama 2,Claude和Gemini之類的模型在公開可用的數據集上進行了培訓。他們未能回答可能對各種組織任務更有用的領域或特定於主題的問題。
微觀調整可幫助開發人員和企業適應並訓練預培訓的模型,以適用於特定於域的數據集,該數據集對與域相關的查詢進行了高度準確性和相干性。微調可以增強模型的性能,而無需大量的計算資源,因為預訓練的模型已經從廣泛的公共數據中學到了一般文本。
該博客將研究為什麼我們必須使用Lamini平台微調預訓練的模型。這使我們可以在不使用大量計算資源的情況下微調和評估模型。
所以,讓我們開始吧!
學習目標
- 探索使用tofine-tune開源LLM的需求
- 找出使用拉米尼的使用以及在微調模型上的指示下
- 為了動手了解微調模型的端到端過程。
本文作為Thedata Science Blogathon的一部分發表。
目錄
- 學習目標
- 為什麼要一種微型語言模型?
- 如何使用Lamini微調開源LLM?
- 數據準備
- 標記數據集
- 微調過程
- 設置環境
- 加載數據集
- 設置培訓進行微調,模型
- 結論
- 常見問題
為什麼要一種微型語言模型?
預先訓練的模型主要是對龐大的一般數據進行培訓的,並且很有可能缺乏上下文或特定領域知識。預訓練的模型也可能導致幻覺以及不准確和不連貫的輸出。最受歡迎的大型語言模型基於聊天機器人,例如Chatgpt,Gemini和Bingchat,它反复表明,預訓練的模型容易出現這種不准確性。這是救援進行微調的地方,這可以有助於有效地適應特定於主題的任務和問題。將模型與您的目標保持一致的其他方法包括及時的工程和少量及時工程。
儘管如此,在性能指標方面,微調仍然表現優於表現。諸如參數有效的微調和低自適應排名諸如諸如模型的微調和低自適應排名的方法之類的方法進一步改進了模型,並幫助開發人員生成了更好的模型。讓我們看一下微調在大型語言模型上下文中的適合程度。
#加載微調數據集 文件名=“ lamini_docs.json” conterction_dataset_df = pd.read_json(文件名,lines = true) 指令_dataset_df #將其加載到Python的詞典中 示例=指令_dataset_df.to_dict() #準備樣品以進行微調 如果在示例中“問題”和示例中的“答案”: text =示例[“問題”] [0]示例[“答案”] [0] 示例中的elif“指示”和“響應”示例: text =示例[“指令”] [0]示例[“響應”] [0] 示例中的elif“輸入”和示例中的“輸出”: text =示例[“輸入”] [0]示例[“輸出”] [0] 別的: text =示例[“ text”] [0] #使用提示模板創建指令調諧數據集進行微調 提示_template_qa =“” ###問題: {問題} ### 回答: {回答}”””
上面的代碼顯示,指令調整使用提示模板來準備數據集進行指令調整併微調特定數據集的模型。我們可以使用此類自定義數據集將預訓練的模型調整為特定的用例。
下一節將研究Lamini如何為自定義數據集提供微型語言模型(LLM)。
如何使用Lamini微調開源LLM?
Lamini平台使用戶可以無縫地進行微調和部署模型,而無需太多的成本和硬件設置要求。 Lamini提供了一個端到端的堆棧,可在用戶方便和模型要求下開發,訓練,調整,E和部署模型。 Lamini提供了自己的託管GPU計算網絡,以經濟有效地培訓模型。
Lamini內存調整工具和計算優化有助於訓練和調整模型,同時控製成本。模型可以在任何地方,私有云或通過Lamini的GPU網絡託管。接下來,我們將看到一份逐步指南,使用Lamini平台準備數據以微調大語言模型(LLMS)。
數據準備
通常,我們需要選擇一個特定領域的數據集進行數據清潔,促銷,令牌化和存儲,以準備任何微調任務的數據。加載數據集後,我們將其進行預處理以將其轉換為指令調整的數據集。我們將每個樣本從數據集格式化為指令,問和答案格式,以更好地為我們的用例微調。使用此處給出的鏈接查看數據集的來源。讓我們看一下使用Lamini平台進行訓練的代幣化調整的代碼示例說明。
導入大熊貓作為pd #加載數據集並將其作為指令數據集存儲 文件名=“ lamini_docs.json” conterction_dataset_df = pd.read_json(文件名,lines = true) 示例=指令_dataset_df.to_dict() 如果在示例中“問題”和示例中的“答案”: text =示例[“問題”] [0]示例[“答案”] [0] 示例中的elif“指示”和“響應”示例: text =示例[“指令”] [0]示例[“響應”] [0] 示例中的elif“輸入”和示例中的“輸出”: text =示例[“輸入”] [0]示例[“輸出”] [0] 別的: text =示例[“ text”] [0] 提示_template =“” ###問題: {問題} ### 回答:””” #存儲微調示例作為指令格式 num_examples = len(示例[“問題”]) finetuning_dataset = [] 對於我的範圍(num_examples): 問題=示例[“問題”] [i] 答案=示例[“答案”] [i] text_with_prompt_template = strump_template.format(Question = Question) finetuning_dataset.append({“問題”:text_with_prompt_template, “答案”:答案})
在上面的示例中,我們在及時的模板中格式化了“問題”和“答案”,並將它們存儲在訓練LLM之前的單獨文件中以進行令牌化和填充。
標記數據集
#帶有填充和截斷的數據集的象徵化 def tokenize_function(示例): 如果在示例中“問題”和示例中的“答案”: text =示例[“問題”] [0]示例[“答案”] [0] 示例中的elif“輸入”和示例中的“輸出”: text =示例[“輸入”] [0]示例[“輸出”] [0] 別的: text =示例[“ text”] [0] #填充 tokenizer.pad_token = tokenizer.eos_token tokenized_inputs = tokenizer( 文字, return_tensors =“ np”, 填充= true, ) max_length = min(min tokenized_inputs [“ input_ids”]。形狀[1], 2048 ) #文本的截斷 tokenizer.truncation_side =“左” tokenized_inputs = tokenizer( 文字, return_tensors =“ np”, 截斷= true, max_length = max_length ) 返回tokenized_inputs
上面的代碼將數據集樣本作為填充和截斷的輸入,並使用令牌化來生成預處理的令牌化數據集樣本,可用於微調預培訓的模型。現在,數據集已經準備好了,我們將使用Lamini平台研究模型的培訓和評估。
微調過程
現在,我們已經有一個以指令調整格式準備的數據集,我們將使用Lamini的易於使用的培訓技巧將數據集加載到環境中,並對預訓練的LLM模型進行微調。
設置環境
為了開始使用Lamini進行微調開放式旅行,我們必須首先確保我們的代碼環境安裝了合適的資源和庫。我們必須確保您擁有具有足夠GPU資源的合適機器,並安裝必要的庫,例如變形金剛,數據集,火炬和熊貓。您必須安全地加載環境變量,例如API_URL和API_KEY,通常來自環境文件。您可以使用Dotenv之類的軟件包來加載這些變量。準備環境後,加載數據集和培訓模型。
導入操作系統 來自拉米尼進口蘭米尼 lamini.api_url = os.getEnv(“ powerml__production__url”) lamini.api_key = os.getEnv(“ powerml__production __key”) #導入必要的庫並加載環境文件 導入數據集 導入tempfile 導入記錄 導入隨機 導入config 導入操作系統 導入山藥 進口時間 導入火炬 導入變壓器 導入大熊貓作為pd 導入jsonlines #加載變壓器體系結構和[[ 從公用事業導入 * 從變形金剛導入自動源 從變形金剛導入AutomoDelforCausAllm 從變形金剛進口培訓 從變形金剛導入AutomoDelforCausAllm 來自Llama Import Basic Modelrunner logger = logging.getLogger(__名稱__) global_config =無
加載數據集
設置監視和調試的日誌記錄後,請使用數據集或其他數據處理庫(例如JSONLINES和PANDAS)準備數據集。加載數據集後,我們將設置一個用於培訓過程的培訓配置的令牌和模型。
#從您的本地系統或HF雲中加載數據集 dataset_name =“ lamini_docs.jsonl” dataset_path = f“/content/{dataset_name}” use_hf = false #數據集路徑 dataset_path =“ lamini/lamini_docs”
設置型號,培訓配置和令牌器
接下來,我們選擇使用lamlamini,“ eleutherai/pythia-70m”進行微調開放式的模型,並在triagn_config下定義其配置,指定預訓練的模型名稱和數據集路徑。我們使用模型的令牌將自動攝影劑初始化,並將填充設置為序列令牌。然後,我們使用自定義功能Tokenize_and_split_data將數據歸為數據並將其分為培訓和測試數據集。最後,我們使用AutoModelForCausAllm實例化基礎模型,使其能夠執行因果語言建模任務。此外,以下代碼設置了我們的模型微調過程的計算要求。
#模型名稱 model_name =“ eleutherai/pythia-70m” #培訓配置 triending_config = { “模型”: { “ Pretrained_name”:model_name, “ max_length”:2048 },, “數據集”:{ “ use_hf”:use_hf, “路徑”:dataset_path },, “冗長”:是的 } #設置自動令牌 tokenizer = autotokenizer.from_pretaining(model_name) tokenizer.pad_token = tokenizer.eos_token train_dataset,test_dataset = tokenize_and_split_data(triending_config,tokenizer) #從Lamini設置基線型號 base_model = lamini(model_name) #GPU排位 device_count = torch.cuda.device_count() 如果device_count> 0: logger.debug(“選擇GPU設備”) 設備= TORCH.DEVICE(“ CUDA”) 別的: logger.debug(“選擇CPU設備”) 設備= TORCH.DEVICE(“ CPU”)
設置培訓進行微調,模型
最後,我們使用超參數設置培訓參數參數。它包括學習率,時期,批處理大小,輸出目錄,評估步驟,SAV,熱身步驟,評估和記錄策略等,以微調自定義培訓數據集。
max_steps = 3 #受過訓練的型號名稱 Trained_model_name = f“ lamini_docs_ {max_steps} _steps” output_dir = trained_model_name triending_args = triencharguments( #學習率 Learning_rate = 1.0e-5, #訓練時期的數量 num_train_epochs = 1, #最大訓練步驟(每個步驟都是一批數據) #覆蓋num_train_epochs,如果不是-1 max_steps = max_steps, #培訓的批量尺寸 per_device_train_batch_size = 1, #要保存模型檢查點的目錄 output_dir = output_dir, #其他參數 operwrite_output_dir = false,#覆蓋輸出目錄的內容 disable_tqdm = false,#禁用進度欄 eval_steps = 120,#兩個評估之間的更新步驟數 save_steps = 120,#在保存#步驟模型之後 熱身_STEPS = 1,#學習率調度程序的熱身步驟數 per_device_eval_batch_size = 1,#批次大小進行評估 evaluation_strategy =“ step”, logging_strategy =“ step”, logging_steps = 1, optim =“ adafactor”, gradient_accumulation_steps = 4, gradient_checkpointing = false, #早期停止的參數 load_best_model_at_end = true, save_total_limit = 1, metric_for_best_model =“ eval_loss”, 大_is_better = false )
設置訓練參數後,系統根據輸入大小和梯度累積步驟計算模型每秒的浮點操作(FLOP)。從而深入了解計算負載。它還評估記憶使用情況,估計模型在千兆字節中的佔地面積。一旦完成這些計算,培訓師將初始化基本模型,失敗,總培訓步驟以及準備好的培訓和評估數據集。該設置優化了訓練過程並啟用資源利用率監控,對於有效處理大規模模型微調至關重要。在培訓結束時,微型模型準備在雲上部署,以將用戶作為API服務。
#模型參數 model_flops =(( base_model.floating_point_ops( { “ input_ids”:torch.zeros( (1,triending_config [“模型”] [“ max_length”]) ) } ) *訓練_args.gradient_accumulation_steps ) 打印(base_model) print(“內存足跡”,base_model.get_memory_footprint() / 1E9,“ GB”) 打印(“ Flops”,model_flops / 1e9,“ gflops”) #設立教練 培訓師=教練( 型號= base_model, model_flops = model_flops, total_steps = max_steps, args =訓練_args, train_dataset = train_dataset, eval_dataset = test_dataset, )
結論
總之,本文提供了深入的指南,以了解使用Lamini平台微調LLM的需求。它全面概述了為什麼我們必須為自定義數據集和業務用例以及使用Lamini工具的好處微調模型。我們還看到了使用Lamini的工具使用自定義數據集和LLM微調模型的分步指南。讓我們總結一下博客的關鍵要點。
關鍵要點
- 針對迅速工程和檢索增強生成方法的微調模型需要學習。
- 諸如Lamini之類的平台的Uutilization for易用使用的硬件設置和部署技術,以滿足用戶需求的微調模型
- 我們正在為微調任務準備數據,並設置管道使用各種超參數訓練基本模型。
探索GitHub上本文背後的代碼。
本文所示的媒體不由Analytics Vidhya擁有,並由作者酌情使用。
常見問題
Q1。如何微調我的模型?答:微調過程始於理解特定於上下文的要求,數據集準備,代幣化以及設置培訓設置,例如硬件要求,培訓配置和培訓參數。最終,進行模型開發的培訓工作。
Q2。 LLM的微調是什麼意思?答:對LLM進行微調意味著在特定自定義數據集上訓練基本模型。每個用例都會為特定查詢生成準確且相關的輸出。
Q3。 LLM微調中的Lamini是什麼?A. Lamini為LLMS的無縫,高效且具有成本效益的開發提供了綜合語言模型,推理和GPU設置。
以上是使用Lamini-Analytics Vidhya微調開源LLM的詳細內容。更多資訊請關注PHP中文網其他相關文章!

利用“設備” AI的力量:建立個人聊天機器人CLI 在最近的過去,個人AI助手的概念似乎是科幻小說。 想像一下科技愛好者亞歷克斯(Alex)夢見一個聰明的本地AI同伴 - 不依賴

他們的首屆AI4MH發射於2025年4月15日舉行,著名的精神科醫生兼神經科學家湯姆·因斯爾(Tom Insel)博士曾擔任開幕式演講者。 Insel博士因其在心理健康研究和技術方面的傑出工作而聞名

恩格伯特說:“我們要確保WNBA仍然是每個人,球員,粉絲和公司合作夥伴,感到安全,重視和授權的空間。” anno

介紹 Python擅長使用編程語言,尤其是在數據科學和生成AI中。 在處理大型數據集時,有效的數據操作(存儲,管理和訪問)至關重要。 我們以前涵蓋了數字和ST

潛水之前,一個重要的警告:AI性能是非確定性的,並且特定於高度用法。簡而言之,您的里程可能會有所不同。不要將此文章(或任何其他)文章作為最後一句話 - 目的是在您自己的情況下測試這些模型

建立杰出的AI/ML投資組合:初學者和專業人士指南 創建引人注目的投資組合對於確保在人工智能(AI)和機器學習(ML)中的角色至關重要。 本指南為建立投資組合提供了建議

結果?倦怠,效率低下以及檢測和作用之間的差距擴大。這一切都不應該令任何從事網絡安全工作的人感到震驚。 不過,代理AI的承諾已成為一個潛在的轉折點。這個新課

直接影響與長期夥伴關係? 兩週前,Openai提出了強大的短期優惠,在2025年5月底之前授予美國和加拿大大學生免費訪問Chatgpt Plus。此工具包括GPT-4O,A A A A A


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)