llama factory
llama factory,部署,推理,訓练,微调教程單机多卡,100+语言模型的統一高效微调框架
标签:ai工具集2llama factory llama factory官网 llama factory微调 llama factory推理 llama factory訓练 llama factory部署 llama_factoryllama factory官网,部署,推理,訓练,微调教程單机多卡,100+语言模型的統一高效微调框架
简介
Efficient fine-tuning對于將大型语言模型(LLMs)调整到下遊任務中至關重要。然而要在不同模型上實现这些方法需要付出相当大的努力。LLaMA-Factory是一个統一的框架,集成了一套先进的高效訓练方法。它允許用户透過内置的Web UI靈活定制100多个LLMs的微调,而無需编寫代碼。LlamaFactory 是一个封装比較完善的LLM微调工具,它能够帮助用户快速地訓练和微调大多數LLM模型。LlamaFactory主要透過Trainer类来實现訓练流程,透過設置資料集、模型選型、訓练类型、微调超参、模型保存,以及訓练状態监控等信息,来開启訓练。
llama factory官网: https://github.com/hiyouga/LLaMA-Factory

来自北航和北大的論文“LLAMA-FACTORY: Unified Efficient Fine-Tuning of 100+ Language Models”。
高效的微调對于將大语言模型 (LLM) 适应下遊任務至關重要。然而,在不同模型上實施这些方法需要付出不小的努力。LLAMA-FACTORY是一个集成一套高效訓练方法的統一框架。它允許用户透過内置的 Web UI LLAMA-BOARD 靈活地客製化 100 多个 LLM 的微调,無需编碼。經验验證该框架在语言建模和文本生成任務上的效率和有效性。
開源發布在 GitHub – hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100+ LLMs
LLAMA-FACTORY是一个使 LLM 微调民主化的框架。它透過可擴展的模块統一了各种高效的微调方法,从而能够以最少的資源和高吞吐量對數百个 LLM 进行微调。此外,它还简化了常用的訓练方法,包括生成式预訓练(Radford,2018)、监督微调 (SFT)(Wei,2022)、人类反馈中强化学習 (RLHF)(Ouyang,2022)和直接偏好優化 (DPO)(Rafailov,2023)。用户可以利用命令行或 Web 界面以最少或無需编碼工作量来定制和微调LLM。

LlamaFactory基于PEFT和TRL进行二次封装,从而可以快速開始SFT和RLHF微调。同时,引入GaLore和Unsloth等方案,能降低訓练顯存占用。
主要功能和特色
LLaMA-Factory 是一个国内北航開源的低代碼大模型訓练框架,專為大型语言模型(LLMs)的微调而設计。其主要功能特点包括:
- 高效且低成本:能够高效且低成本地支持對100多个模型进行微调,简化了模型微调的过程。
- 易于訪問和使用:提供了友好的用户界面,用户無需编寫代碼即可轻松定制和微调LLMs。
- 丰富的資料集選项:支持多个資料集選项,用户可以選择自帶的資料集或自己生成資料集进行微调。
- 多样化的算法支持:集成了業界最广泛使用的微调方法和優化技術,如LoRA、GaLore、DoRA等。
- 實时监控和評估:支持集成TensorBoard、VanDB和MLflow等监控工具,便于實时监控訓练过程和評估模型性能。
- 极速推理:提供了基于vLLM的OpenAI風格API、浏览器界面和命令行接口,實现快速推理。
部署安装教程
LLaMA-Factory 的安装相對简單,以下是一般的安装步驟(以conda環境為例):
- 創建Python環境:
使用conda創建一个新的Python環境,并安装必要的依賴库,如PyTorch等。 - 克隆LLaMA-Factory專案:
透過Git克隆LLaMA-Factory的源代碼到本地。git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git - 安装依賴:
进入專案目錄,安装必要的Python依賴库。cd LLaMA-Factory pip install -e ".[torch,metrics]" - 启动服務:
在專案目錄中運行python src/train_web.py启动服務,然后在浏览器中訪問相应的端口(默认可能是7860)以訪問訓练界面。

支持的算法
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 顯存消耗。

GPU现存消耗:

五、微调例子
以下是一个使用LLaMA-Factory對Yuan2.0模型进行LoRA微调的例子:
- 准備資料集:
准備客製化的資料集,可以是JSON格式,包含指令、输入和输出等信息。 - 注册資料集:
在LLaMA-Factory的資料集管理文件中注册客製化的資料集。 - 启动Web UI服務:
運行python src/train_web.py启动Web UI服務,并在浏览器中打開相应的地址。 - 配置微调参數:
在Web界面上配置模型路徑、微调方法(選择LoRA)、資料集等参數。 -
開始微调:
点擊“開始”按鈕開始微调过程,可以在界面中查看訓练进度和損失函數等信息。 -
評估模型:
微调完成后,使用LLaMA-Factory提供的評估工具對模型进行評估,检查模型性能是否有所提升。
透過以上步驟,用户可以利用LLaMA-Factory轻松實现LLMs的微调,提升模型在特定任務上的性能。
更多微调
- https://github.com/hiyouga/LLaMA-Factory/blob/main/examples/README_zh.md
1.2 特性
- • 各种模型: LLaMA, LLaVA, Mistral, Mixtral-MoE, Qwen, Yi, Gemma, Baichuan, ChatGLM, Phi, etc.
- • 集成訓练方法: (Continuous) pre-training, (multimodal) supervised fine-tuning, reward modeling, PPO, DPO and ORPO.
- • Scalable resources: 32-bit full-tuning, 16-bit freeze-tuning, 16-bit LoRA and 2/4/8-bit QLoRA via AQLM/AWQ/GPTQ/LLM.int8.
- • Advanced algorithms: GaLore, BAdam, DoRA, LongLoRA, LLaMA Pro, Mixture-of-Depths, LoRA+, LoftQ and Agent tuning.
- • 實用tricks: FlashAttention-2, Unsloth, RoPE scaling, NEFTune and rsLoRA.
- • 實验监控:LlamaBoard, TensorBoard, Wandb, MLflow, etc.
- • 推理集成: OpenAI-style API, Gradio UI and CLI with vLLM worker.
LlamaFactory支持單机單卡,同时整合了accelerate和deepseed的單机多卡、多机多卡分布式訓练。
支持的模型
模型名 模型大小 Template
Baichuan2[1] 7B/13B baichuan2
BLOOM[2] 560M/1.1B/1.7B/3B/7.1B/176B –
BLOOMZ[3] 560M/1.1B/1.7B/3B/7.1B/176B –
ChatGLM3[4] 6B chatglm3
Command-R[5] 35B/104B cohere
DeepSeek (MoE)[6] 7B/16B/67B/236B deepseek
Falcon[7] 7B/11B/40B/180B falcon
Gemma/CodeGemma[8] 2B/7B gemma
GLM4[9] 9B glm4
InternLM2[10] 7B/20B intern2
LLaMA[11] 7B/13B/33B/65B –
LLaMA-2[12] 7B/13B/70B llama2
LLaMA-3[13] 8B/70B llama3
LLaVA-1.5[14] 7B/13B vicuna
Mistral/Mixtral[15] 7B/8x7B/8x22B mistral
OLMo[16] 1B/7B –
PaliGemma[17] 3B gemma
Phi-1.5/2[18] 1.3B/2.7B –
Phi-3[19] 4B/7B/14B phi
Qwen[20] 1.8B/7B/14B/72B qwen
Qwen1.5 (Code/MoE)[21] 0.5B/1.8B/4B/7B/14B/32B/72B/110B qwen
Qwen2 (MoE)[22] 0.5B/1.5B/7B/57B/72B qwen
StarCoder2[23] 3B/7B/15B –
XVERSE[24] 7B/13B/65B xverse
Yi (1/1.5)[25] 6B/9B/34B yi
Yi-VL[26] 6B/34B yi_vl
Yuan[27] 2B/51B/102B yuan
预訓练資料集
- • Wiki Demo (en)[28]
- • RefinedWeb (en)[29]
- • RedPajama V2 (en)[30]
- • Wikipedia (en)[31]
- • Wikipedia (zh)[32]
- • Pile (en)[33]
- • SkyPile (zh)[34]
- • FineWeb (en)[35]
- • FineWeb-Edu (en)[36]
- • The Stack (en)[37]
- • StarCoder (en)[38]
指令微调資料集
- • Identity (en&zh)[39]
- • Stanford Alpaca (en)[40]
- • Stanford Alpaca (zh)[41]
- • Alpaca GPT4 (en&zh)[42]
- • Glaive Function Calling V2 (en&zh)[43]
- • LIMA (en)[44]
- • Guanaco Dataset (multilingual)[45]
- • BELLE 2M (zh)[46]
- • BELLE 1M (zh)[47]
- • BELLE 0.5M (zh)[48]
- • BELLE Dialogue 0.4M (zh)[49]
- • BELLE School Math 0.25M (zh)[50]
- • BELLE Multiturn Chat 0.8M (zh)[51]
- • UltraChat (en)[52]
- • OpenPlatypus (en)[53]
- • CodeAlpaca 20k (en)[54]
- • Alpaca CoT (multilingual)[55]
- • OpenOrca (en)[56]
- • SlimOrca (en)[57]
- • MathInstruct (en)[58]
- • Firefly 1.1M (zh)[59]
- • Wiki QA (en)[60]
- • Web QA (zh)[61]
- • WebNovel (zh)[62]
- • Nectar (en)[63]
- • deepctrl (en&zh)[64]
- • Advertise Generating (zh)[65]
- • ShareGPT Hyperfiltered (en)[66]
- • ShareGPT4 (en&zh)[67]
- • UltraChat 200k (en)[68]
- • AgentInstruct (en)[69]
- • LMSYS Chat 1M (en)[70]
- • Evol Instruct V2 (en)[71]
- • Cosmopedia (en)[72]
- • STEM (zh)[73]
- • Ruozhiba (zh)[74]
- • LLaVA mixed (en&zh)[75]
- • Open Assistant (de)[76]
- • Dolly 15k (de)[77]
- • Alpaca GPT4 (de)[78]
- • OpenSchnabeltier (de)[79]
- • Evol Instruct (de)[80]
- • Dolphin (de)[81]
- • Booksum (de)[82]
- • Airoboros (de)[83]
- • Ultrachat (de)[84]
偏好資料集
- • DPO mixed (en&zh)[85]
- • UltraFeedback (en)[86]
- • Orca DPO Pairs (en)[87]
- • HH-RLHF (en)[88]
- • Nectar (en)[89]
- • Orca DPO (de)[90]
- • KTO mixed (en)[91]
LLaMA-Factory是基于LLaMA模型(由Meta AI開發的大型语言模型)的一个擴展,旨在提供更靈活的模型訓练和微调。本文介绍了一种在Windows環境下使用LLaMA-Factory进行模型訓练的一般步驟:
部署教程
一、系統要求
-
硬體要求:确保你的计算机有足够的CPU和GPU資源。NVIDIA GPU通常需要支持CUDA。 -
軟體要求:安装以下軟體: -
Python(推荐使用Anaconda環境管理) -
Git -
CUDA(如果使用NVIDIA GPU) -
cuDNN(针對CUDA的深度学習库)
-
二、安装前的准備
-
安装Anaconda: -
訪問Anaconda官网,下载并安装适合Windows系統的Anaconda版本。 -
安装完成后,打開Anaconda Prompt。
-
-
創建新的conda環境: conda create -n llama-factory python=3.8 conda activate llama-factory -
安装Git: -
如果还没有安装Git,可以从Git官网下载并安装。
-
-
安装CUDA和cuDNN(如果使用NVIDIA GPU): -
訪問NVIDIA官网下载CUDA Toolkit。 -
訪問NVIDIA cuDNN官网下载對应的cuDNN库。 -
安装完成后,將CUDA和cuDNN的路徑添加到系統環境變數。
-
三、安装LLaMA-Factory
-
克隆LLaMA-Factory仓库: git clone https://github.com/your-username/LLaMA-Factory.git cd LLaMA-Factory -
安装依賴: pip install -r requirements.txt-
使用pip安装所需的Python库。
-
四、准備資料集
-
-
資料集格式: -
确保你的資料集格式符合LLaMA-Factory的要求。通常資料集需要是文本文件,每行一个样本。
-
-
資料集位置: -
將資料集放置在合适的位置,例如 data/train.txt。
-
-
五、配置訓练参數
-
编輯配置文件: -
在LLaMA-Factory目錄中找到配置文件模板,例如 config_template.yaml。 -
复制模板并重命名為 your_config.yaml。 -
编輯 your_config.yaml,設置資料路徑、模型参數、優化器参數等。
-
六、開始訓练模型
-
启动訓练: python train.py --config your_config.yaml-
使用以下命令開始訓练模型:
-
七、监控訓练过程
-
在訓练过程中,你可以透過以下方式监控进度: -
查看控制台输出。 -
查看日志文件,通常是 train.log。
-
八、故障排除
-
如果遇到错誤,可以按照以下步驟进行故障排除: -
检查错誤信息:仔細阅讀控制台输出的错誤信息。 -
查看日志文件:日志文件可能包含更详細的错誤信息。 -
搜索解决方案:使用搜索引擎查找错誤信息,看是否有其他用户遇到过类似問题。 -
检查資料集:确保資料集格式正确,没有損坏的文件。 -
调整資源分配:如果資源不足,尝試減少批量大小或模型大小。
-
九、注意事项
-
版本兼容性:确保所有安装的库和工具的版本都是兼容的。 -
系統權限:在Windows上,某些操作可能需要管理员權限。 -
備份配置:在開始訓练之前,備份你的配置文件。
数据评估
本站快摸魚導航提供的llama factory都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由快摸魚導航实际控制,在2024年7月24日 下午5:00收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,快摸魚導航不承担任何责任。

