LLaMA Board: 通过一站式网页界面快速上手 LLaMA Factory

这篇具有很好参考价值的文章主要介绍了LLaMA Board: 通过一站式网页界面快速上手 LLaMA Factory。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文:https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md

llama-factory可视化界面,aigc,大模型,llama,AIGC,chatgpt

 👋 加入我们的微信群。

[ English | 中文 ]

LLaMA Board: 通过一站式网页界面快速上手 LLaMA Factory

通过 🤗 Spaces 或 ModelScope 预览 LLaMA Board。

使用 CUDA_VISIBLE_DEVICES=0 python src/train_web.py 启动 LLaMA Board。(该模式目前仅支持单卡训练)

下面是使用单张 GPU 在 10 分钟内更改对话式大型语言模型自我认知的示例。

llama-factory可视化界面,aigc,大模型,llama,AIGC,chatgpt

 tutorial.mp4 

目录

  • 性能指标
  • 更新日志
  • 模型
  • 训练方法
  • 数据集
  • 软硬件依赖
  • 如何使用
  • 使用了 LLaMA Factory 的项目
  • 协议
  • 引用
  • 致谢

性能指标

与 ChatGLM 官方的 P-Tuning 微调相比,LLaMA-Factory 的 LoRA 微调提供了 3.7 倍的加速比,同时在广告文案生成任务上取得了更高的 Rouge 分数。结合 4 比特量化技术,LLaMA-Factory 的 QLoRA 微调进一步降低了 GPU 显存消耗。

llama-factory可视化界面,aigc,大模型,llama,AIGC,chatgpt

变量定义

更新日志

[23/12/23] 我们针对 LLaMA, Mistral 和 Yi 模型支持了 unsloth 的 LoRA 训练加速。请使用 --use_unsloth 参数启用 unsloth 优化。该方法可提供 1.7 倍的训练速度,详情请查阅此页面。

[23/12/12] 我们支持了微调最新的混合专家模型 Mixtral 8x7B。硬件需求请查阅此处。

[23/12/01] 我们支持了从 魔搭社区 下载预训练模型和数据集。详细用法请参照 此教程。

展开日志

模型

模型名 模型大小 默认模块 Template
Baichuan 7B/13B W_pack baichuan
Baichuan2 7B/13B W_pack baichuan2
BLOOM 560M/1.1B/1.7B/3B/7.1B/176B query_key_value -
BLOOMZ 560M/1.1B/1.7B/3B/7.1B/176B query_key_value -
ChatGLM3 6B query_key_value chatglm3
Falcon 7B/40B/180B query_key_value falcon
InternLM 7B/20B q_proj,v_proj intern
LLaMA 7B/13B/33B/65B q_proj,v_proj -
LLaMA-2 7B/13B/70B q_proj,v_proj llama2
Mistral 7B q_proj,v_proj mistral
Mixtral 8x7B q_proj,v_proj mistral
Phi-1.5/2 1.3B/2.7B Wqkv -
Qwen 1.8B/7B/14B/72B c_attn qwen
XVERSE 7B/13B/65B q_proj,v_proj xverse
Yi 6B/34B q_proj,v_proj yi
Yuan 2B/51B/102B q_proj,v_proj yuan

Note

默认模块应作为 --lora_target 参数的默认值,可使用 --lora_target all 参数指定全部模块。

对于所有“基座”(Base)模型,--template 参数可以是 defaultalpacavicuna 等任意值。但“对话”(Chat)模型请务必使用对应的模板

项目所支持模型的完整列表请参阅 constants.py。

训练方法

方法 全参数训练 部分参数训练 LoRA QLoRA
预训练
指令监督微调
奖励模型训练
PPO 训练
DPO 训练

Note

请使用 --quantization_bit 4 参数来启用 QLoRA 训练。

数据集

预训练数据集

指令微调数据集

偏好数据集

使用方法请参考 data/README_zh.md 文件。

部分数据集的使用需要确认,我们推荐使用下述命令登录您的 Hugging Face 账户。

pip install --upgrade huggingface_hub
huggingface-cli login

软硬件依赖

  • Python 3.8+ 和 PyTorch 1.13.1+
  • 🤗Transformers, Datasets, Accelerate, PEFT 和 TRL
  • sentencepiece, protobuf 和 tiktoken
  • jieba, rouge-chinese 和 nltk (用于评估及预测)
  • gradio 和 matplotlib (用于网页端交互)
  • uvicorn, fastapi 和 sse-starlette (用于 API)

硬件依赖

训练方法 精度 7B 13B 30B 65B 8x7B
全参数 16 160GB 320GB 600GB 1200GB 900GB
部分参数 16 20GB 40GB 120GB 240GB 200GB
LoRA 16 16GB 32GB 80GB 160GB 120GB
QLoRA 8 10GB 16GB 40GB 80GB 80GB
QLoRA 4 6GB 12GB 24GB 48GB 32GB

如何使用

数据准备(可跳过)

关于数据集文件的格式,请参考 data/README_zh.md 的内容。构建自定义数据集时,既可以使用单个 .json 文件,也可以使用一个数据加载脚本和多个文件。

Note

使用自定义数据集时,请更新 data/dataset_info.json 文件,该文件的格式请参考 data/README_zh.md

环境搭建(可跳过)

git clone https://github.com/hiyouga/LLaMA-Factory.git
conda create -n llama_factory python=3.10
conda activate llama_factory
cd LLaMA-Factory
pip install -r requirements.txt

如果要在 Windows 平台上开启量化 LoRA(QLoRA),需要安装预编译的 bitsandbytes 库, 支持 CUDA 11.1 到 12.1.

pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.39.1-py3-none-win_amd64.whl

使用魔搭社区(可跳过)

如果您在 Hugging Face 模型和数据集的下载中遇到了问题,可以通过下述方法使用魔搭社区。

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

接着即可通过指定模型名称来训练对应的模型。(在魔搭社区查看所有可用的模型)

CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --model_name_or_path modelscope/Llama-2-7b-ms \
    ... # 参数同上

LLaMA Board 同样支持魔搭社区的模型和数据集下载。

CUDA_VISIBLE_DEVICES=0 USE_MODELSCOPE_HUB=1 python src/train_web.py

单 GPU 训练

Important

如果您使用多张 GPU 训练模型,请移步多 GPU 分布式训练部分。

预训练
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --stage pt \
    --do_train \
    --model_name_or_path path_to_llama_model \
    --dataset wiki_demo \
    --finetuning_type lora \
    --lora_target q_proj,v_proj \
    --output_dir path_to_pt_checkpoint \
    --overwrite_cache \
    --per_device_train_batch_size 4 \
    --gradient_accumulation_steps 4 \
    --lr_scheduler_type cosine \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate 5e-5 \
    --num_train_epochs 3.0 \
    --plot_loss \
    --fp16
指令监督微调
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --stage sft \
    --do_train \
    --model_name_or_path path_to_llama_model \
    --dataset alpaca_gpt4_zh \
    --template default \
    --finetuning_type lora \
    --lora_target q_proj,v_proj \
    --output_dir path_to_sft_checkpoint \
    --overwrite_cache \
    --per_device_train_batch_size 4 \
    --gradient_accumulation_steps 4 \
    --lr_scheduler_type cosine \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate 5e-5 \
    --num_train_epochs 3.0 \
    --plot_loss \
    --fp16
奖励模型训练
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --stage rm \
    --do_train \
    --model_name_or_path path_to_llama_model \
    --adapter_name_or_path path_to_sft_checkpoint \
    --create_new_adapter \
    --dataset comparison_gpt4_zh \
    --template default \
    --finetuning_type lora \
    --lora_target q_proj,v_proj \
    --output_dir path_to_rm_checkpoint \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 4 \
    --lr_scheduler_type cosine \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate 1e-6 \
    --num_train_epochs 1.0 \
    --plot_loss \
    --fp16
PPO 训练
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --stage ppo \
    --do_train \
    --model_name_or_path path_to_llama_model \
    --adapter_name_or_path path_to_sft_checkpoint \
    --create_new_adapter \
    --dataset alpaca_gpt4_zh \
    --template default \
    --finetuning_type lora \
    --lora_target q_proj,v_proj \
    --reward_model path_to_rm_checkpoint \
    --output_dir path_to_ppo_checkpoint \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 4 \
    --lr_scheduler_type cosine \
    --top_k 0 \
    --top_p 0.9 \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate 1e-5 \
    --num_train_epochs 1.0 \
    --plot_loss \
    --fp16

Warning

如果使用 fp16 精度进行 LLaMA-2 模型的 PPO 训练,请使用 --per_device_train_batch_size=1

DPO 训练
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --stage dpo \
    --do_train \
    --model_name_or_path path_to_llama_model \
    --adapter_name_or_path path_to_sft_checkpoint \
    --create_new_adapter \
    --dataset comparison_gpt4_zh \
    --template default \
    --finetuning_type lora \
    --lora_target q_proj,v_proj \
    --output_dir path_to_dpo_checkpoint \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 4 \
    --lr_scheduler_type cosine \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate 1e-5 \
    --num_train_epochs 1.0 \
    --plot_loss \
    --fp16

多 GPU 分布式训练

使用 Huggingface Accelerate
accelerate config # 首先配置分布式环境
accelerate launch src/train_bash.py # 参数同上

LoRA 训练的 Accelerate 配置示例

使用 DeepSpeed
deepspeed --num_gpus 8 --master_port=9901 src/train_bash.py \
    --deepspeed ds_config.json \
    ... # 参数同上

使用 DeepSpeed ZeRO-2 进行全参数训练的 DeepSpeed 配置示例

合并 LoRA 权重并导出模型

python src/export_model.py \
    --model_name_or_path path_to_llama_model \
    --adapter_name_or_path path_to_checkpoint \
    --template default \
    --finetuning_type lora \
    --export_dir path_to_export \
    --export_size 2 \
    --export_legacy_format False

Warning

尚不支持量化模型的 LoRA 权重合并及导出。

Tip

合并 LoRA 权重之后可再次使用 --export_quantization_bit 4 和 --export_quantization_dataset data/c4_demo.json 量化模型。

API 服务

python src/api_demo.py \
    --model_name_or_path path_to_llama_model \
    --adapter_name_or_path path_to_checkpoint \
    --template default \
    --finetuning_type lora

Tip

关于 API 文档请见 http://localhost:8000/docs

命令行测试

python src/cli_demo.py \
    --model_name_or_path path_to_llama_model \
    --adapter_name_or_path path_to_checkpoint \
    --template default \
    --finetuning_type lora

浏览器测试

python src/web_demo.py \
    --model_name_or_path path_to_llama_model \
    --adapter_name_or_path path_to_checkpoint \
    --template default \
    --finetuning_type lora

模型评估

CUDA_VISIBLE_DEVICES=0 python src/evaluate.py \
    --model_name_or_path path_to_llama_model \
    --adapter_name_or_path path_to_checkpoint \
    --template vanilla \
    --finetuning_type lora \
    --task ceval \
    --split validation \
    --lang zh \
    --n_shot 5 \
    --batch_size 4

模型预测

CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --stage sft \
    --do_predict \
    --model_name_or_path path_to_llama_model \
    --adapter_name_or_path path_to_checkpoint \
    --dataset alpaca_gpt4_zh \
    --template default \
    --finetuning_type lora \
    --output_dir path_to_predict_result \
    --per_device_eval_batch_size 8 \
    --max_samples 100 \
    --predict_with_generate \
    --fp16

Warning

如果使用 fp16 精度进行 LLaMA-2 模型的预测,请使用 --per_device_eval_batch_size=1

Tip

我们建议在量化模型的预测中使用 --per_device_eval_batch_size=1 和 --max_target_length 128

使用了 LLaMA Factory 的项目

  • StarWhisper: 天文大模型 StarWhisper,基于 ChatGLM2-6B 和 Qwen-14B 在天文数据上微调而得。
  • DISC-LawLLM: 中文法律领域大模型 DISC-LawLLM,基于 Baichuan-13B 微调而得,具有法律推理和知识检索能力。
  • Sunsimiao: 孙思邈中文医疗大模型 Sumsimiao,基于 Baichuan-7B 和 ChatGLM-6B 在中文医疗数据上微调而得。
  • CareGPT: 医疗大模型项目 CareGPT,基于 LLaMA2-7B 和 Baichuan-13B 在中文医疗数据上微调而得。

Tip

如果您有项目希望添加至上述列表,请通过邮件联系或者创建一个 PR。

协议

本仓库的代码依照 Apache-2.0 协议开源。

使用模型权重时,请遵循对应的模型协议:Baichuan / Baichuan2 / BLOOM / ChatGLM3 / Falcon / InternLM / LLaMA / LLaMA-2 / Mistral / Phi-1.5 / Qwen / XVERSE / Yi / Yuan

引用

如果您觉得此项目有帮助,请考虑以下列格式引用

@Misc{llama-factory,
  title = {LLaMA Factory},
  author = {hiyouga},
  howpublished = {\url{https://github.com/hiyouga/LLaMA-Factory}},
  year = {2023}
}

致谢

本项目受益于 PEFT、QLoRA 和 FastChat,感谢以上诸位作者的付出。

Star History

llama-factory可视化界面,aigc,大模型,llama,AIGC,chatgpt

相关资料:

模型微调图文教程:
https://zhuanlan.zhihu.com/p/645010851 
非官方视频教程:https://www.bilibili.com/video/BV1Hw411B75j

在线预览网页微调界面 LLaMA Board:https://www.modelscope.cn/studios/hiyouga/LLaMA-Board
 文章来源地址https://www.toymoban.com/news/detail-788044.html

到了这里,关于LLaMA Board: 通过一站式网页界面快速上手 LLaMA Factory的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 实用便捷!一站式BI系统推荐

    在企业数字化转型过程中,BI系统可以建立业务、数据的双驱引擎,形成业务、数据的互补作用,通过建立数字化技术架构,明确企业的战略定位和业务目标,从而支撑实现这个目标。而一站式BI系统,则是指可以轻松从数据采集进行到数据可视化分析环节的BI系统。拥有一个

    2024年02月16日
    浏览(53)
  • 布谷鸟配音:一站式配音软件

    这是一款智能语音合成软件,可以快速将文字转换成语音,拥有多种真人模拟发音,可以选择不同男声、女声、童声,以及四川话、粤语等中文方言和外语配音,并且可对语速、语调、节奏、数字读法、多音字、背景音等进行全方位设置,可以自动合成语音,无需专人录制和

    2024年02月13日
    浏览(55)
  • AllData一站式大数据平台【二】

    AllData科学护城河:一种在数据驱动的科学和研究领域中, 保护和维护数据的竞争优势和独特性的解决方案。 AllData通过汇聚大数据与AI领域生态组件,提供自定义化数据中台。 包括大数据生态方案,人工智能生态方案, 大数据组件运维方案,大数据开发治理方案, 机器学习方案,大

    2024年02月02日
    浏览(61)
  • 【STL】 string类使用一站式攻略

    目录 一,STL 1. 简介 2. STL的版本 3. STL 六大组件   4.  学习STL, 三境界 5. 学会查看C++文档  二, string类 1. 相对于C语言,我们为什么还需要学习C++的string? 2. 头文件 3.  常见构造函数 4.  operator=    5.  operator[]    at函数 6. string容量方面 1. 关于  size 与 length  的选择 2. 关

    2024年02月09日
    浏览(57)
  • springboot minio 工具类,一站式解决

    注意 minio 新版本有9000和9090两个端口,web访问是9000,但走api上传和访问都是9090端口 引入pom controller

    2024年01月20日
    浏览(59)
  • k8s一站式使用笔记

            细节太多,建议零碎时间多遍看,k8s版本低于1.24,需要对接docker容器 2.1.关闭防火墙和selinux 2.2. 关闭swap分区 2.3.修改hosts文件 设置主机名(不设置也可以,但是要保证主机名不相同) 修改本地hosts文件 2.4.修改内核参数 2.5.安装docker 配置yum源(这里使用阿里云的源)

    2024年02月15日
    浏览(48)
  • Elasticsearch从结构到集群一站式学习

    elasticsearch结合kibana、Logstash、Beats,也就是elastic stack (ELK)。被广泛应用在日志数据分析、实时监控等领域。 什么是elasticsearch? 一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析系统监控等功能 什么是elastic stack (ELK) ? 是以elasticsearch为核心的技术栈,包括beats、

    2023年04月11日
    浏览(49)
  • 一站式自动化测试平台-Autotestplat

    3.1 自动化平台开发方案 3.1.1 功能需求 3.1.3 开发时间计划 如果是刚入门、但有一点代码基础的测试人员,大概 3 个月能做出演示版(Demo)进行自动化测试,6 个月内胜任开展工作中项目的自动化测试。 如果是有自动化测试基础的测试人员,大概 1 个月能做出演示版(Demo)进行自动

    2024年02月13日
    浏览(52)
  • 提升技能,挑战自我——一站式在线题库小程序

    在这个信息爆炸的时代,我们总是在寻找一种方式,让自己在众多的知识海洋中快速提升技能,挑战自我。今天,我要向大家推荐一款全新的在线题库小程序 KD蝌蚪阿坤 ,它将帮助你实现这个目标。 KD蝌蚪阿坤 是一款全面的在线题库类应用,涵盖了 阿里云认证 、 华为云认

    2024年02月08日
    浏览(39)
  • 一站式低代码开发平台iVX初探

           在数字化时代的浪潮中,低代码已经逐渐成为一种趋势和潮流。作为国内首个图形化通用无代码编程平台,iVX提供了一款强大、高效、易学的零代码开发语言和全生命周期一站式云原生应用开发工具,无疑为低代码界带来了一场革命。        低代码(Low-Code)是一种

    2024年02月10日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包