LLaMA-Factory

在這里插入圖片描述


文章目錄

    • 一、關于 LLaMA-Factory
      • 項目特色
      • 性能指標
    • 二、如何使用
      • 1、安裝 LLaMA Factory
      • 2、數據準備
      • 3、快速開始
      • 4、LLaMA Board 可視化微調
      • 5、構建 Docker
        • CUDA 用戶:
        • 昇騰 NPU 用戶:
        • 不使用 Docker Compose 構建
          • CUDA 用戶:
          • 昇騰 NPU 用戶:
        • 數據卷詳情
      • 6、利用 vLLM 部署 OpenAI API
      • 7、從魔搭社區下載
      • 8、使用 W&B 面板
    • 三、支持
      • 1、模型
      • 2、訓練方法
      • 3、數據集
        • 預訓練數據集
        • 指令微調數據集
        • 偏好數據集
      • 4、軟硬件依賴
        • 硬件依賴


一、關于 LLaMA-Factory

A WebUI for Efficient Fine-Tuning of 100+ LLMs

  • github : https://github.com/hiyouga/LLaMA-Factory

Demo 視頻

其他打開方式

  • Colab:https://colab.research.google.com/drive/1d5KQtbemerlSDSxZIfAaWXhKr30QypiK?usp=sharing
  • PAI-DSW: https://gallery.pai-ml.com/#/preview/deepLearning/nlp/llama_factory
  • 本地機器:請見如何使用

項目特色

  • 多種模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。
  • 集成方法:(增量)預訓練、(多模態)指令監督微調、獎勵模型訓練、PPO 訓練、DPO 訓練、KTO 訓練、ORPO 訓練等等。
  • 多種精度:16 比特全參數微調、凍結微調、LoRA 微調和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微調。
  • 先進算法:GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ、PiSSA 和 Agent 微調。
  • 實用技巧:FlashAttention-2、Unsloth、RoPE scaling、NEFTune 和 rsLoRA。
  • 實驗監控:LlamaBoard、TensorBoard、Wandb、MLflow 等等。
  • 極速推理:基于 vLLM 的 OpenAI 風格 API、瀏覽器界面和命令行接口。

性能指標

與 ChatGLM 官方的 P-Tuning 微調相比,LLaMA Factory 的 LoRA 微調提供了 3.7 倍的加速比,同時在廣告文案生成任務上取得了更高的 Rouge 分數。結合 4 比特量化技術,LLaMA Factory 的 QLoRA 微調進一步降低了 GPU 顯存消耗。

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳


二、如何使用


1、安裝 LLaMA Factory

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

可選的額外依賴項:torch、torch-npu、metrics、deepspeed、bitsandbytes、hqq、eetq、gptq、awq、aqlm、vllm、galore、badam、qwen、modelscope、quality

Tip : 遇到包沖突時,可使用 pip install --no-deps -e . 解決。

Windows 和 昇騰 NPU 用戶指南 詳見:https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md


2、數據準備

關于數據集文件的格式,請參考 data/README_zh.md 的內容。你可以使用 HuggingFace / ModelScope 上的數據集或加載本地數據集。

Note:使用自定義數據集時,請更新 data/dataset_info.json 文件。


3、快速開始

下面三行命令分別對 Llama3-8B-Instruct 模型進行 LoRA 微調推理合并

llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
llamafactory-cli chat examples/inference/llama3_lora_sft.yaml
llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml

高級用法請參考 examples/README_zh.md(包括多 GPU 微調)。

Tip: 使用 llamafactory-cli help 顯示幫助信息。


4、LLaMA Board 可視化微調

由 Gradio 驅動

llamafactory-cli webui

5、構建 Docker


CUDA 用戶:
cd docker/docker-cuda/
docker-compose up -d
docker-compose exec llamafactory bash

昇騰 NPU 用戶:
cd docker/docker-npu/
docker-compose up -d
docker-compose exec llamafactory bash

不使用 Docker Compose 構建

CUDA 用戶:
docker build -f ./docker/docker-cuda/Dockerfile \--build-arg INSTALL_BNB=false \--build-arg INSTALL_VLLM=false \--build-arg INSTALL_DEEPSPEED=false \--build-arg INSTALL_FLASHATTN=false \--build-arg PIP_INDEX=https://pypi.org/simple \-t llamafactory:latest .docker run -dit --gpus=all \-v ./hf_cache:/root/.cache/huggingface \-v ./ms_cache:/root/.cache/modelscope \-v ./data:/app/data \-v ./output:/app/output \-p 7860:7860 \-p 8000:8000 \--shm-size 16G \--name llamafactory \llamafactory:latestdocker exec -it llamafactory bash

昇騰 NPU 用戶:
# 根據您的環境選擇鏡像
docker build -f ./docker/docker-npu/Dockerfile \--build-arg INSTALL_DEEPSPEED=false \--build-arg PIP_INDEX=https://pypi.org/simple \-t llamafactory:latest .# 根據您的資源更改 `device`
docker run -dit \-v ./hf_cache:/root/.cache/huggingface \-v ./ms_cache:/root/.cache/modelscope \-v ./data:/app/data \-v ./output:/app/output \-v /usr/local/dcmi:/usr/local/dcmi \-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \-v /etc/ascend_install.info:/etc/ascend_install.info \-p 7860:7860 \-p 8000:8000 \--device /dev/davinci0 \--device /dev/davinci_manager \--device /dev/devmm_svm \--device /dev/hisi_hdc \--shm-size 16G \--name llamafactory \llamafactory:latestdocker exec -it llamafactory bash

數據卷詳情
  • hf_cache:使用宿主機的 Hugging Face 緩存文件夾,允許更改為新的目錄。
  • data:宿主機中存放數據集的文件夾路徑。
  • output:將導出目錄設置為該路徑后,即可在宿主機中訪問導出后的模型。

6、利用 vLLM 部署 OpenAI API

API_PORT=8000 llamafactory-cli api examples/inference/llama3_vllm.yaml

Tip : API 文檔請查閱 https://platform.openai.com/docs/api-reference/chat/create。


7、從魔搭社區下載

如果您在 Hugging Face 模型和數據集的下載中遇到了問題,可以通過下述方法使用魔搭社區。

export USE_MODELSCOPE_HUB=1 # Windows 使用 `set USE_MODELSCOPE_HUB=1`

model_name_or_path 設置為模型 ID 來加載對應的模型。在魔搭社區查看所有可用的模型,例如 LLM-Research/Meta-Llama-3-8B-Instruct


8、使用 W&B 面板

若要使用 Weights & Biases 記錄實驗數據,請在 yaml 文件中添加下面的參數。

report_to: wandb
run_name: test_run # 可選

在啟動訓練任務時,將 WANDB_API_KEY 設置為密鑰來登錄 W&B 賬戶。


三、支持


1、模型

模型名模型大小Template
Baichuan 27B/13Bbaichuan2
BLOOM/BLOOMZ560M/1.1B/1.7B/3B/7.1B/176B-
ChatGLM36Bchatglm3
Command R35B/104Bcohere
DeepSeek (Code/MoE)7B/16B/67B/236Bdeepseek
Falcon7B/11B/40B/180Bfalcon
Gemma/Gemma 2/CodeGemma2B/7B/9B/27Bgemma
GLM-49Bglm4
InternLM27B/20Bintern2
Llama7B/13B/33B/65B-
Llama 27B/13B/70Bllama2
Llama 38B/70Bllama3
LLaVA-1.57B/13Bvicuna
Mistral/Mixtral7B/8x7B/8x22Bmistral
OLMo1B/7B-
PaliGemma3Bgemma
Phi-1.5/Phi-21.3B/2.7B-
Phi-34B/7B/14Bphi
Qwen/Qwen1.5/Qwen2 (Code/MoE)0.5B/1.5B/4B/7B/14B/32B/72B/110Bqwen
StarCoder 23B/7B/15B-
XVERSE7B/13B/65Bxverse
Yi/Yi-1.56B/9B/34Byi
Yi-VL6B/34Byi_vl
Yuan 22B/51B/102Byuan

Note : 對于所有“基座”(Base)模型,template 參數可以是 default, alpaca, vicuna 等任意值。但“對話”(Instruct/Chat)模型請務必使用對應的模板

請務必在訓練和推理時采用完全一致的模板。

項目所支持模型的完整列表請參閱 constants.py。

您也可以在 template.py 中添加自己的對話模板。


2、訓練方法

方法全參數訓練部分參數訓練LoRAQLoRA
預訓練????
指令監督微調????
獎勵模型訓練????
PPO 訓練????
DPO 訓練????
KTO 訓練????
ORPO 訓練????
SimPO 訓練????

3、數據集


預訓練數據集
  • Wiki Demo (en)
  • RefinedWeb (en)
  • RedPajama V2 (en)
  • Wikipedia (en)
  • Wikipedia (zh)
  • Pile (en)
  • SkyPile (zh)
  • FineWeb (en)
  • FineWeb-Edu (en)
  • The Stack (en)
  • StarCoder (en)

指令微調數據集
  • Identity (en&zh)
  • Stanford Alpaca (en)
  • Stanford Alpaca (zh)
  • Alpaca GPT4 (en&zh)
  • Glaive Function Calling V2 (en&zh)
  • LIMA (en)
  • Guanaco Dataset (multilingual)
  • BELLE 2M (zh)
  • BELLE 1M (zh)
  • BELLE 0.5M (zh)
  • BELLE Dialogue 0.4M (zh)
  • BELLE School Math 0.25M (zh)
  • BELLE Multiturn Chat 0.8M (zh)
  • UltraChat (en)
  • OpenPlatypus (en)
  • CodeAlpaca 20k (en)
  • Alpaca CoT (multilingual)
  • OpenOrca (en)
  • SlimOrca (en)
  • MathInstruct (en)
  • Firefly 1.1M (zh)
  • Wiki QA (en)
  • Web QA (zh)
  • WebNovel (zh)
  • Nectar (en)
  • deepctrl (en&zh)
  • Advertise Generating (zh)
  • ShareGPT Hyperfiltered (en)
  • ShareGPT4 (en&zh)
  • UltraChat 200k (en)
  • AgentInstruct (en)
  • LMSYS Chat 1M (en)
  • Evol Instruct V2 (en)
  • Cosmopedia (en)
  • STEM (zh)
  • Ruozhiba (zh)
  • Neo-sft (zh)
  • WebInstructSub (en)
  • Magpie-Pro-300K-Filtered (en)
  • LLaVA mixed (en&zh)
  • Open Assistant (de)
  • Dolly 15k (de)
  • Alpaca GPT4 (de)
  • OpenSchnabeltier (de)
  • Evol Instruct (de)
  • Dolphin (de)
  • Booksum (de)
  • Airoboros (de)
  • Ultrachat (de)

偏好數據集
  • DPO mixed (en&zh)
  • UltraFeedback (en)
  • Orca DPO Pairs (en)
  • HH-RLHF (en)
  • Nectar (en)
  • Orca DPO (de)
  • KTO mixed (en)

部分數據集的使用需要確認,我們推薦使用下述命令登錄您的 Hugging Face 賬戶。

pip install --upgrade huggingface_hub
huggingface-cli login

4、軟硬件依賴

必需項至少推薦
python3.83.11
torch1.13.12.3.0
transformers4.41.24.41.2
datasets2.16.02.19.2
accelerate0.30.10.30.1
peft0.11.10.11.1
trl0.8.60.9.4
可選項至少推薦
CUDA11.612.2
deepspeed0.10.00.14.0
bitsandbytes0.39.00.43.1
vllm0.4.30.4.3
flash-attn2.3.02.5.9

硬件依賴

* 估算值

方法精度7B13B30B70B110B8x7B8x22B
FullAMP120GB240GB600GB1200GB2000GB900GB2400GB
Full1660GB120GB300GB600GB900GB400GB1200GB
Freeze1620GB40GB80GB200GB360GB160GB400GB
LoRA/GaLore/BAdam1616GB32GB64GB160GB240GB120GB320GB
QLoRA810GB20GB40GB80GB140GB60GB160GB
QLoRA46GB12GB24GB48GB72GB30GB96GB
QLoRA24GB8GB16GB24GB48GB18GB48GB

2024-07-17(三)

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

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

相關文章

【Java項目筆記】01項目介紹

一、技術框架 1.后端服務 Spring Boot為主體框架 Spring MVC為Web框架 MyBatis、MyBatis Plus為持久層框架,負責數據庫的讀寫 阿里云短信服務 2.存儲服務 MySql redis緩存數據 MinIO為對象存儲,存儲非結構化數據(圖片、視頻、音頻&a…

推薦一款處理TCP數據的架構--EasyTcp4Net

EasyTcp4Net是一個基于c# Pipe,ReadonlySequence的高性能Tcp通信庫,旨在提供穩定,高效,可靠的tcp通訊服務。 基礎的消息通訊 重試機制 超時機制 SSL加密通信支持 KeepAlive 流量背壓控制 粘包和斷包處理 (支持固定頭處理,固定長度處理,固定字符處理) 日志支持Pipe &…

Spring MVC 的常用注解

RequestMapping 和 RestController注解 上面兩個注解,是Spring MCV最常用的注解。 RequestMapping , 他是用來注冊接口的路由映射。 路由映射:當一個用戶訪問url時,將用戶的請求對應到某個方法或類的過程叫做路由映射。 Reques…

定制QCustomPlot 帶有ListView的QCustomPlot 全網唯一份

定制QCustomPlot 帶有ListView的QCustomPlot 文章目錄 定制QCustomPlot 帶有ListView的QCustomPlot摘要需求描述實現關鍵字: Qt、 QCustomPlot、 魔改、 定制、 控件 摘要 先上效果,是你想要的,再看下面的分解,順便點贊搜藏一下;不是直接右上角。 QCustomPlot是一款…

基于springboot+vue+uniapp的駕校預約平臺小程序

開發語言:Java框架:springbootuniappJDK版本:JDK1.8服務器:tomcat7數據庫:mysql 5.7(一定要5.7版本)數據庫工具:Navicat11開發軟件:eclipse/myeclipse/ideaMaven包&#…

認識AOP--小白可看

AOP(Aspect-Oriented Programming,面向切面編程)是一種軟件開發范式,旨在通過橫切關注點(cross-cutting concerns)的方式來解耦系統中的各個模塊。橫切關注點指的是那些不屬于業務邏輯本身,但是…

Apache Sqoop

Apache Sqoop是一個開源工具,用于在Apache Hadoop和關系型數據庫(如MySQL、Oracle、PostgreSQL等)之間進行數據的批量傳輸。其主要功能包括: 1. 數據導入:從關系型數據庫(如MySQL、Oracle等)中將…

WPF設置歡迎屏幕,程序啟動過度動畫

當主窗體加載時間過長,這時候基本都會想添加一個等待操作來響應用戶點擊,提高用戶體驗。下面我記錄兩個方法,一點拙見,僅供參考。 方法1:在App類中使用SplashScreen類。 protected override void OnStartup(StartupEventArgs e)…

35.UART(通用異步收發傳輸器)-RS232(2)

(1)RS232接收模塊visio框圖: (2)接收模塊Verilog代碼編寫: /* 常見波特率: 4800、9600、14400、115200 在系統時鐘為50MHz時,對應計數為: (1/4800) * 10^9 /20 -1 10416 …

【作業】 貪心算法1

Tips:三題尚未完成。 #include <iostream> #include <algorithm> using namespace std; int a[110]; int main(){int n,r,sum0;cin>>n>>r;for(int i0;i<n;i){cin>>a[i];}sort(a0,an);for(int i0;i<n;i){if(i>r){a[i]a[i-r]a[i];}suma[…

[USACO18JAN] Cow at Large P

題解都說了&#xff0c;當統計 u u u為根節點的時候&#xff0c;答案就是滿足以下條件的 i i i的數量&#xff1a; d i ≥ g i d_i≥g_i di?≥gi?且 d f a i < g f a i d_{fa_i}<g_{fa_i} dfai??<gfai??&#xff0c;設這個數量為 a n s ans ans。以下嚴格證明 …

Solana開發資源都有哪些

Solana是一個高性能的區塊鏈平臺&#xff0c;吸引了大量開發者構建去中心化應用&#xff08;dApps&#xff09;。以下是一些有用的Solana開發教程和資源&#xff1a; 官方資源 Solana 官方文檔&#xff1a; Solana Documentation: 這是最全面的資源&#xff0c;包括快速入門、…

[實踐篇]13.29 QNX下的系統性能監控工具 - sysMonAppQNX(二)

2.7 getinfo: 獲取 DSP 的詳細信息 getinfo 可用選項 (如果沒有參數,則使用默認值) --q6 (默認選擇處理器: ADSP): adsp - 選擇的處理器為 ADSPsdsp - 選擇的處理器為傳感器 DSPcdsp - 選擇的處理器為計算 DSP示例: ./sysMonApp getinfo --q6 cdsp - 獲取計算 DSP 的詳細信…

大氣熱力學(8)——熱力學圖的應用之一(氣象要素求解)

本篇文章源自我在 2021 年暑假自學大氣物理相關知識時手寫的筆記&#xff0c;現轉化為電子版本以作存檔。相較于手寫筆記&#xff0c;電子版的部分內容有補充和修改。筆記內容大部分為公式的推導過程。 文章目錄 8.1 復習斜 T-lnP 圖上的幾種線8.1.1 等溫線和等壓線8.1.2 干絕熱…

連鎖零售門店分析思路-人貨場 數據分析

連鎖零售門店分析思路 以下是一個連鎖零售門店的分析思路&#xff1a; 一、市場與競爭分析 二、門店運營分析&#xff08;銷售分析&#xff09; 三、銷售與財務分析 四、客戶分析 五、數字化與營銷分析 最近幫一個大學生培訓&#xff0c;就門店銷售分析 &#xff0c;說到門店…

使用windows批量解壓和布局ImageNet ISLVRC2012數據集

使用的系統是windows&#xff0c;找到的解壓命令很多都linux系統中的&#xff0c;為了能在windows系統下使用&#xff0c;因此下載Git這個軟件&#xff0c;在其中的Git Bash中使用以下命令&#xff0c;因為Git Bash集成了很多linux的命令&#xff0c;方便我們的使用。 ImageNe…

[iOS]類和對象的底層原探索

[iOS]類和對象的底層探索 文章目錄 [iOS]類和對象的底層探索繼承鏈&#xff08;類&#xff0c;父類&#xff0c;元類&#xff09;instance 實例對象class 類對象meta-class 元類對象 對對象、類、元類和分類的探索instance 實例對象class 類對象meta-class 元類對象分類(catego…

react項目使用EventBus實現登錄攔截

關于EventBus EventBus是一個事件發布/訂閱模式的實現&#xff0c;它允許不同的組件或模塊之間進行通信&#xff0c;而不需要直接引用對方。這種模式特別適用于那些需要跨組件傳遞信息&#xff0c;但又不想引入復雜依賴關系的場景。 實現思路 利用axios中間件&#xff0c;在…

防火墻之帶寬管理篇

核心思想 1.帶寬限制&#xff1a;限制非關鍵業務流量占用帶寬的比例 2.帶寬保證&#xff1a;保證關鍵的業務流量傳輸不受影響。業務繁忙時&#xff0c;確保業務不受影響。 3.限制連接數&#xff1a;可以針對某些業務進行連接數的限制&#xff0c;首先可以降低該業務占用帶寬…

基于UltraFace的人臉檢測在地平線旭日X3派上的部署和測試(Python版本和C++版本)

電腦端的測試環境搭建 如果不想再搭建環境和測試代碼bug上浪費更多的時間可以直接獲取本人的測試虛擬機&#xff0c;所有的測試代碼、虛擬環境和板端測試工程以全部打包到了虛擬機&#xff0c;需要的可以通過網盤獲取&#xff1a; 代碼和虛擬機百度網盤鏈接&#xff1a; 鏈接…