简介
LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)练习与微调平台。通过 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。
- 加速算子:FlashAttention-2 和 Unsloth。
- 推理引擎:Transformers 和 vLLM。
- 实行面板:LlamaBoard、TensorBoard、Wandb、MLflow 等等。
GitHub项目地址
GitHub文档堆栈
不想通过GitHub跳转到文档,可以通过下面的链接直接访问LLama-Factory官方文档
文档地址
软硬件依靠
必需项至少保举python3.83.11torch1.13.12.4.0transformers4.41.24.43.4datasets2.16.02.20.0accelerate0.30.10.32.0peft0.11.10.12.0trl0.8.60.9.6 可选项至少保举CUDA11.612.2deepspeed0.10.00.14.0bitsandbytes0.39.00.43.1vllm0.4.30.5.0flash-attn2.3.02.6.3 硬件依靠
* 估算值
方法精度7B13B30B70B110B8x7B8x22BFullAMP120GB240GB600GB1200GB2000GB900GB2400GBFull1660GB120GB300GB600GB900GB400GB1200GBFreeze1620GB40GB80GB200GB360GB160GB400GBLoRA/GaLore/BAdam1616GB32GB64GB160GB240GB120GB320GBQLoRA810GB20GB40GB80GB140GB60GB160GBQLoRA46GB12GB24GB48GB72GB30GB96GBQLoRA24GB8GB16GB24GB48GB18GB48GB 安装
- 安装CUDA
下载链接
选择操作体系后进行下载
打开cmd输入nvcc -V出现下图类似内容则表明安装成功
否则,必要设置体系变量
- 下载LLama-Factory
git clone https://github.com/hiyouga/LLaMA-Factory.git
- 设置python环境
我们使用conda设置,如果不知道conda怎么使用可以参考这篇博客:链接
- conda create --prefix D:\python_env\llama_factory python=3.11 # 创建虚拟环境
- conda config --add envs_dirs D:\python_env # 给新建的虚拟环境添加名称
- conda activate llama_factory # 激活环境
复制代码 - 安装LLama-Factory
- cd LLaMA-Factory
- pip install -e ".[torch,metrics]"
复制代码 输入llamafactory-cli version出现下图内容表现安装成功
- 量化环境安装
一般环境,我们微调出来的模型会很大,这个时间必要量化。
量化方式有两种QLoRA和FlashAttention-2,我们使用第一种。
在 Windows 上启用量化 LoRA(QLoRA),请根据 CUDA 版本选择适当的 bitsandbytes 发行版本。
我安装的CUDA是12.2版本,以是我使用0.39.1+
pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.2.post2-py3-none-win_amd64.whl
使用
- 数据处理
dataset_info.json 包含了所有颠末预处理的 本地数据集以及在线数据集。如果您盼望使用自界说数据集,请务必在 dataset_info.json 文件中添加对数据集及其内容的形貌,并通过修改 dataset: 数据集名称 设置来使用数据集。
例如:指令监视微调数据集
指令监视微调(Instruct Tuning)通过让模型学习详细的指令以及对应的答复来优化模型在特定指令下的表现。
instruction 列对应的内容为人类指令, input 列对应的内容为人类输入, output 列对应的内容为模型答复。下面是一个例子
- "alpaca_zh_demo.json"
- {
- "instruction": "计算这些物品的总费用。 ",
- "input": "输入:汽车 - $3000,衣服 - $100,书 - $20。",
- "output": "汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。
- "
- },
复制代码 在进行指令监视微调时, instruction 列对应的内容会与 input 列对应的内容拼接后作为最终的人类输入,即人类输入为 instruction\ninput。而 output 列对应的内容为模型答复。 在上面的例子中,人类的最终输入是:
- 计算这些物品的总费用。
- 输入:汽车 - $3000,衣服 - $100,书 - $20。
复制代码 模型的答复是:
- 汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。
复制代码 更多数据格式参考数据处理
- 启用WebUI
- cd LLaMA-Factory
- llamafactory-cli webui
复制代码
- Hugging Face
Hugging Face
如果Hugging Face无法访问,可以尝试使用国内镜像网站Hugging Face国内镜像网站
安装git-lfsgit lfs install
git clone https://huggingface.co/shenzhi-wang/Llama3.1-8B-Chinese-Chat
我的电脑显存有限,为了防止爆显存,这里选了一个1.8B的小模型。
OK,点击开始就可以开始练习了。练习过程中,背景会显示过程,左下角也会显示练习时间。我已经练习好了,这里可以看到练习完毕以及损失值。这里请记住模型输出目次,等一会测试时选择加载的模型。
本次练习loss虽然有收敛,但是值还是有点大。
看结果之前先看下练习使用的数据集,等一会同样的问题问下原模型和练习出来的模型,对比下结果:
加载原模型,提问辨认并表明给定列表中的两个科学理论:细胞理论和日心说。,原模型给出的答复是:
加载练习出来的模型,同样的问题,答复更接近练习集中的内容:
模型体验
中文社区GitHub
中文社区官网
Llama3在线体验
开源中文LLaMA模型和指令精调的Alpaca大模型
实用小工具
Hugging Face Model Memory Calculator
LLM Check
FAQs
- 未检测到CUDA环境
问题:开始练习模型时出现警告信息“未检测到CUDA环境”
解决方法:
- 运行如下代码,发现安装的torch是CPU版本
- import torch
- print(torch.cuda.is_available()) # 是否可以用gpu False不能,True可以
- print(torch.cuda.device_count()) # gpu数量, 0就是没有,1就是检测到了
- print(torch.__version__) #结果X.X.X+cpu不行
复制代码
- 重新安装torch
PyTorch官网选择合适的安装方式:链接
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
也可以从这里找相应的torch版本torch
- 重装后发现可以了
- WebUI微调时没有任何信息
背景检察日志:
例如这个问题就是无法访问Hugging Face报的错误
- 开始微调后出现无法毗连https://huggingface.co
解决方法-1:使用魔搭社区
export USE_MODELSCOPE_HUB=1 # Windows 使用 set USE_MODELSCOPE_HUB=1
Windows设置set MODELSCOPE_CACHE=D:\SoftWare\AI\MODELSCOPE修改模型下载路径,否则默认下载在C:\Users\<user_name>\.cache目次下
留意:必须先实行此命令后实行llamafactory-cli webui启用WebUI
或者直接设置环境变量,一劳永逸
解决方法-2:设置国内hugging face镜像源
huggingface-cli env检察当前设置
添加环境变量
再次检察设置
- 练习时出现“CUDA out of memory”
问题:爆显存
解决方法:
- 将batch size调小一点
- 使用更小的模型进行练习
- 优化硬件,例如:增大显存
- 算力租赁,可参考这篇文章整理的内容【AI】人工智能、LLM学习资源汇总
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |