[LLM Finetune 网页格式一键式大模型训练到服务的全流程平台,包括数据上传、微调训练、模型合并、模型部署服务等,无需python和shell开发]
平台用来给不了解研发、算法的人员使用的,所以平台的使用尽量简单,不需要用户了解太多的细节,只需要按照流程操作即可。
用最简的页面,包括首页资源查看、训练数据上传下载、大模型微调训练、大模型权重合并输出、大模型能力评估、大模型部署服务启动等功能。
最后的训练脚本页面,开发人员能够自由修改脚本,提供了更高级的使用方法。
本项目受益于 LLaMA-Efficient-Tuning
支持功能
[23/11/14]
配置进一步精简,基本0配置启动;
支持chatglm3, qwen, intern, xverse, mistral;
支持大模型评估,支持C-EVAL、MMLU、CMMLU;
训练和合并支持指定checkpoint路径;
系统监控增加gpu进程和docker匹配;
[23/10/28]
代码重构,支持整体代码整合到alita-trainer里;
yaml配置文件精简规整,多模型的训练、合并脚本合并统一;
模型部署服务bug修复;
支持大模型评估,支持BLEU-4、ROUGE-1/2/L;
支持微调训练后的大模型作为训练模型再训练;
系统监控除gpu,支持cpu、mem和disk监控;
[23/09/28]
支持baichuan、llama2、llama、glm2等大模型,支持QLoRA;
支持gpu预览、大模型微调训练、模型合并、部署服务(测试中);
支持api方式,微调训练、模型合并、模型发布;
增加数据管理,支持上传excel文件;
增加训练脚本管理,支持自定义脚本编辑和训练,支持pt/sft/rm/ppo/dpo训练阶段,支持train/eval/predict任务;
增加模型快速编辑能力,能够编辑指定问题的回答;
支持模型
模型名 | 模型大小 | 默认模块 | 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 |
Phi-1.5 | 1.3B | Wqkv | - |
Qwen | 7B/14B | c_attn | qwen |
XVERSE | 7B/13B/65B | q_proj,v_proj | xverse |
软件依赖
- Python 3.10 和 PyTorch 1.13.1
- 🤗Transformers, Datasets, Accelerate, PEFT 和 TRL
- sentencepiece, protobuf 和 tiktoken
- jieba, rouge-chinese 和 nltk (用于评估)
- gradio 和 matplotlib (用于网页端交互)
- uvicorn, fastapi 和 sse-starlette (用于 API)
llm_finetune服务,全新部署或历史版本升级
一、环境准备:
-
代码
git clone https://github.com/simonlisiyu/llm_finetune.git
cd llm_finetune
pip install -r requirements.txt
-
目录准备
cd llm_finetune
创建配置目录
mkdir config
,生成配置文件touch config/trainer.yaml
,关联配置文件ln -s /opt/llm_finetune/config/trainer.yaml scripts/src/llmtuner/
关联数据目录:
ln -s /data data
关联大模型目录:
ln -s /llm llm
-
修改配置
vi config/trainer.yaml
注意:
- 将
$IP
替换为本机ip;(如192.168.1.100) - 将
$BASE_DIR
替换为本机llm_finetune路径;
application: ip: '$IP' port: $PORT log_level: 'info' trainer: base_dir: '$BASE_DIR'
参考下面的例子:
application: ip: '192.168.1.100' port: 8000 log_level: 'info' trainer: base_dir: '/opt/llm_finetune/'
vi config/model_info.yaml
注意:(初始化的大模型需要手动编辑model_info.yaml,后续训练的大模型会自动更新到此文件内,无需再手动编辑)
- 将
$MODEL_NAME
替换为模型名称;(如chatglm2-6b) - 将
$MODEL_DIR
替换为基于BASE_DIR的模型相对路径;(如llm/ChatGLM2-6B) - 将
$TEMPLATE
和$SIZE
和$DATETIME
替换为对应的内容;
{ "$MODEL_NAME": { "model_path": "$MODEL_DIR", "template": "$TEMPLATE", "size": "$SIZE", "update_at": "$DATETIME" } }
参考下面的例子:
{ "chatglm2-6b": { "model_path": "llm/ChatGLM2-6B", "template": "chatglm2", "size": "6", "update_at": "2023-07-06_15:56:28" } }
- 将
-
启动服务
python main.py
查看页面
http://127.0.0.1:8000
使用介绍
首页
- GPU资源查看
- GPU卡进程使用情况
- CPU资源使用率
- MEM资源使用率
-
DISK资源使用率
数据管理
- 支持数据上传、下载、查看、删除
-
支持json、excel格式的sft数据集
微调训练
- 极简页面一键训练,支持模型选择、数据选择、训练参数(也可不填用默认值)
- 训练过程中支持查看日志
-
列表展示历史训练记录
模型合并
- 极简页面一键合并,支持基座模型选择、输出目录指定
- 合并过程中支持查看日志
-
列表展示历史合并记录
模型评估
- 极简页面一键评估,支持模型选择、数据选择、评估参数(也可不填用默认值)
- 支持BLEU&ROUGE、支持C-EVAL、MMLU、CMMLU等评估方式
- 评估过程中支持查看日志
-
列表展示历史评估记录
模型测试(修改测试中)
- 快速部署大模型服务(fastchat+docker),支持模型命名、模型选择、GPU卡、端口指定
- 部署过程中支持查看docker日志
-
列表展示docker部署情况,支持启动停止操作
训练脚本
- 高级开发用法,支持训练脚本在线编辑、运行
-
支持预训练pt、微调训练sft、奖励模型训练rm、强化学习ppo/dpo、模型合并merge等脚本