nlp|微調大語言模型初探索(1),LLaMA-Factory

前言

??微調模型通常比從零開始訓練一個模型的技術要求低。公司不需要擁有大量的深度學習專家,利用現有的開源工具和庫(如Hugging Face的Transformers等),中小型公司可以輕松地使用和微調大型模型,從而快速實現AI能力的集成。因此,學會微調大模型就很有必要。

1.微調方法

1.1 全參數微調

全參數微調是指預訓練模型的所有參數進行調整和優化,以使模型能夠適應特定任務。具體來說,就是通過訓練數據對預訓練模型的所有參數(包括權重和偏置等)進行微調,使其更好地執行目標任務。

1.2 部分參數微調

1.2.1 低秩適配(Low-Rank Adaptation, LoRA)

??LoRA方法通過引入低秩矩陣來代替全連接層中的權重更新。它通過對模型中的部分權重矩陣進行低秩分解,從而減少需要微調的參數量。

1.2.2 適配器方法(Adapters)

??適配器方法通過在預訓練模型中插入小型的適配器模塊,保持大部分原始模型的參數不變,只微調適配器模塊。這種方法顯著減少了需要微調的參數數量,同時保持了遷移能力。

1.2.3 Prompt Tuning(提示微調)

Prompt Tuning是通過優化輸入的“提示”或“前綴”來適應新任務,而不是微調模型的所有參數。這種方法特別適用于自然語言處理任務,在不修改模型本身的情況下,通過改變輸入格式來提高模型的任務適應性。
具體部分參數微調方法還有很多,感興趣的可以自己去探索。

2.實踐!!

網上得來終覺淺,絕知此事要躬行,光看理論不實踐,這不是耍流氓嗎??!!
推薦實踐項目:LLaMA-Factory
按照官網教程去安裝:

2.1 安裝環境

官網推薦的環境:
在這里插入圖片描述

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
conda create -n llama-lora python=3.10
conda activate llama-lora
pip install -e ".[torch,metrics]"

如果嫌太慢的話,可以換源去安裝。
安裝完成后,可以去校驗校驗教程網址

3. 注意事項

3.1.這里我llamafactory-cli train -h校驗的時候,報錯:

在這里插入圖片描述
搜索發現是環境優先級問題:

sudo vim  /etc/profile
# 將你的conda環境放到profile里面
export PATH="/home/hxgk/anaconda3/envs/lora-llama/bin:$PATH"
source /etc/profile

3.2 yaml文件配置

1.將LLaMA-Factory/examples/accelerate/fsdp_config.yaml第19行的num_processes設置成你的顯卡個數。
2.將LLaMA-Factory/examples/train_lora/llama3_lora_sft.yaml中的eval全部注釋掉,如圖所示:
在這里插入圖片描述
兩個有一個沒設置都有可能出現:
sys.exit(load_entry_point(‘torch==2.5.1’, ‘console_scripts’, ‘torchrun’)())

torch.distributed.elastic.multiprocessing.errors.ChildFailedError:
這樣的報錯。

3.2 具體微調模型的顯存大小不能全信官網

官網數據:
在這里插入圖片描述
我剛開始使用Llama3-8B,使用lora方法去微調模型(8張8g顯存顯卡),理論上只會使用16g-32g顯存,我64g顯存綽綽有余,結果直接報OOM,結果氣的我直接下載了llama-1B才成功微調。

總結

整體來說,LLaMA-Factory這個項目的坑不少,需要仔細一點,我現在也剛剛跑通,后續考慮制作自己的數據集,然后微調一個chatbox試試。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70058.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70058.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70058.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件定義汽車時代的功能安全和信息安全

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 簡單,單純,喜歡獨處,獨來獨往,不易合同頻過著接地氣的生活…

內容中臺驅動企業數字化內容管理高效協同架構

內容概要 在數字化轉型加速的背景下,企業對內容管理的需求從單一存儲向全鏈路協同演進。內容中臺作為核心支撐架構,通過統一的內容資源池與智能化管理工具,重塑了內容生產、存儲、分發及迭代的流程。其核心價值在于打破部門壁壘,…

【探商寶】:大數據與AI賦能,助力中小企業精準拓客引

引言:在數據洪流中,如何精準鎖定商機? 在競爭激烈的商業環境中,中小企業如何從海量信息中快速篩選出高價值客戶?如何避免無效溝通,精準觸達目標企業? 探商寶——一款基于大數據與AI技術的企業信…

springboot接入ShardingJDBC

ShardingJDBC 是 Apache ShardingSphere 的一個子項目,它是一個開源的分庫分表中間件,提供了透明化的數據分片、分布式事務和數據庫治理等功能。ShardingJDBC 以 JDBC Driver 的形式提供,支持任何基于 JDBC 的 ORM 框架、持久層框架和數據庫連…

Dify平臺搭建面試機器人

無代碼搭建面試機器人 什么是Dify 什么是Dify Dify 是一款開源的大語言模型(LLM) 應用開發平臺。它融合了后端即服務(Backend as Service)和 LLMOps 的理念,使開發者可以快速搭建生產級的生成式 AI 應用。即使你是非技術人員,也能…

Django創建一個非前后端分離平臺

1.pub_blog前端創立 1.blog/pub路由 注意兩個路由的區別 2.完善頁面 用表單實現 3.加載wangeditor的幾個文件 4.配置樣式 5.配置js代碼,單獨放在js文件夾中,js文件夾pub_blog onload事件,加載完成后會再加載 5.提交按鈕

什么情況下索引會失效

一、索引創建的原則 1、針對數據量較大,且查詢比較頻繁的表建立索引。 單表超過10萬數據,即可增加索引 2、使用經常作為查詢條件(where)、排序(order by)、分組(group by)操作的字…

內容中臺重構企業內容管理流程驅動智能協作升級

內容概要 內容中臺作為企業數字化轉型的核心基礎設施,通過技術架構革新與功能模塊整合,重構了傳統內容管理流程的底層邏輯。其核心價值在于構建動態化、智能化的內容生產與流轉體系,將分散的創作、存儲、審核及分發環節納入統一平臺管理。基…

用deepseek學大模型04-模型可視化與數據可視化

deepseek.com: pytorch可視化工具 生成神經網絡圖 在 PyTorch 中,可視化神經網絡結構的常用工具和方法有以下幾種,以下將詳細介紹它們的用法: 1. TensorBoard (PyTorch 官方集成) PyTorch 通過 torch.utils.tensorboard 支持 TensorBoard&a…

JavaScript設計模式 -- 外觀模式

在實際開發中,往往會遇到多個子系統協同工作時,直接操作各個子系統不僅接口繁瑣,還容易導致客戶端與內部實現緊密耦合。**外觀模式(Facade Pattern)**通過為多個子系統提供一個統一的高層接口,將復雜性隱藏…

【性能測試】如何理解“10個線程且10次循環“的請求和“100線程且1次循環“的請求

在性能測試中,我們常常會見到不同的并發配置:比如“10個線程且10次循環”與“100線程且1次循環”。乍一看,這兩個設置的總請求數都是100次,但它們對系統的壓力和測試場景卻截然不同。了解其中的區別,能幫助你更精準地模…

Spring Boot 實戰:輕松實現文件上傳與下載功能

目錄 一、引言 二、Spring Boot 文件上傳基礎 (一)依賴引入 (二)配置文件設置 (三)文件上傳接口編寫 (一)文件類型限制 (二)文件大小驗證 &#xff0…

【Golang】GC探秘/寫屏障是什么?

之前寫了 一篇【Golang】內存管理 ,有了很多的閱讀量,那么我就接著分享一下Golang的GC相關的學習。 由于Golang的GC機制一直在持續迭代,本文敘述的主要是Go1.9版本及以后的GC機制,該版本中Golang引入了 混合寫屏障大幅度地優化了S…

DeepSeek教unity------MessagePack-03

數據契約兼容性 你可以使用 [DataContract] 注解代替 [MessagePackObject]。如果類型用 DataContract 進行注解,可以使用 [DataMember] 注解代替 [Key],并使用 [IgnoreDataMember] 代替 [IgnoreMember]。 然后,[DataMember(Order int)] 的…

【對比】Pandas 和 Polars 的區別

Pandas vs Polars 對比表 特性PandasPolars開發語言Python(Cython 實現核心部分)Rust(高性能系統編程語言)性能較慢,尤其在大數據集上(內存占用高,計算效率低)極快,利用…

百度千帆平臺對接DeepSeek官方文檔

目錄 第一步:注冊賬號,開通千帆服務 第二步:創建應用,獲取調用秘鑰 第三步:調用模型,開啟AI對話 方式一:通過API直接調用 方式二:使用SDK快速調用 方式三:在千帆大模…

49. c++計時器

為了測試某段特定代碼的執行時間&#xff0c;體現代碼的性能&#xff0c;可以使用計時器對代碼段計時。下面使用std::chrono中的api編寫簡單案例&#xff1a; // // main.cpp // HelloWorld // // Created by on 2024/11/28. //#include <iostream> #include <vec…

Natural Language Processing NLP

NLP 清晰版本查看 Sentence segmentation (split)Tokenisation (split)Named entity recognition (combine) 概念主要內容典型方法Distributional Semantics&#xff08;分佈式語義&#xff09;&#xff08;分銷語義&#xff08;分佈式語義&#xff09;單詞的語義來自於它的…

Linux中線程創建,線程退出,線程接合

線程的簡單了解 之前我們了解過 task_struct 是用于描述進程的核心數據結構。它包含了一個進程的所有重要信息&#xff0c;并且在進程的生命周期內保持更新。我們想要獲取進程相關信息往往從這里得到。 在Linux中&#xff0c;線程的實現方式與進程類似&#xff0c;每個線程都…

HarmonyOS:使用List實現分組列表(包含粘性標題)

一、支持分組列表 在列表中支持數據的分組展示&#xff0c;可以使列表顯示結構清晰&#xff0c;查找方便&#xff0c;從而提高使用效率。分組列表在實際應用中十分常見&#xff0c;如下圖所示聯系人列表。 聯系人分組列表 在List組件中使用ListItemGroup對項目進行分組&#…