清众大模型训推平台
📖 目录
📝 简介
🍲 本平台提供的大模型与多模态大模型微调部署框架,现已支持500+大模型与200+多模态大模型的训练(预训练、微调、人类对齐)、推理、评测、量化与部署。其中大模型包括:Qwen3、Qwen3-MoE、Qwen2.5、InternLM3、GLM4.5、Mistral、DeepSeek-R1、Yi1.5、TeleChat2、Baichuan2、Gemma2等模型,多模态大模型包括:Qwen2.5-VL、Qwen2-Audio、Llama4、Llava、InternVL3、MiniCPM-V-4、Ovis2.5、GLM4v、Xcomposer2.5、Yi-VL、DeepSeek-VL2、Phi3.5-Vision、GOT-OCR2等模型。
🍔 除此之外,清众大模型训推平台汇集了最新的训练技术,包括LoRA、QLoRA、Llama-Pro、LongLoRA、GaLore、Q-GaLore、LoRA+、LISA、DoRA、FourierFt、ReFT、UnSloth、和Liger等轻量化训练技术,以及DPO、GRPO、RM、PPO、GKD、KTO、CPO、SimPO、ORPO等人类对齐训练方法。清众大模型训推平台支持使用vLLM、SGLang和LMDeploy对推理、评测和部署模块进行加速,并支持使用GPTQ、AWQ、BNB等技术对大模型进行量化。清众大模型训推平台还提供了基于Gradio的Web-UI界面及丰富的最佳实践。
为什么选择清众大模型训推平台?
- 🍎 模型类型:支持500+纯文本大模型、200+多模态大模型以及All-to-All全模态模型、序列分类模型、Embedding模型训练到部署全流程。
- 数据集类型:内置150+预训练、微调、人类对齐、多模态等各种类型的数据集,并支持自定义数据集。
- 硬件支持:CPU、RTX系列、T4/V100、A10/A100/H100、Ascend NPU、MPS等。
- 轻量训练:支持了LoRA、QLoRA、DoRA、LoRA+、ReFT、RS-LoRA、LLaMAPro、Adapter、GaLore、Q-Galore、LISA、UnSloth、Liger-Kernel等轻量微调方式。
- 分布式训练:支持分布式数据并行(DDP)、device_map简易模型并行、DeepSpeed ZeRO2 ZeRO3、FSDP、Megatron等分布式训练技术。
- 量化训练:支持对BNB、AWQ、GPTQ、AQLM、HQQ、EETQ量化模型进行训练。
- 🍊 RLHF训练:支持纯文本大模型和多模态大模型的DPO、GRPO、RM、PPO、GKD、KTO、CPO、SimPO、ORPO等人类对齐训练方法。
- 🍓 多模态训练:支持对图像、视频和语音不同模态模型进行训练,支持VQA、Caption、OCR、Grounding任务的训练。
- 🥥 Megatron并行技术:支持使用Megatron并行技术对CPT/SFT/DPO进行加速,现支持200+大语言模型。
- 界面训练:以界面的方式提供训练、推理、评测、量化的能力,完成大模型的全链路。
- 插件化与拓展:支持自定义模型和数据集拓展,支持对loss、metric、trainer、loss-scale、callback、optimizer等组件进行自定义。
- 🍉 工具箱能力:不仅提供大模型和多模态大模型的训练支持,还涵盖其推理、评测、量化和部署全流程。
- 推理加速:支持PyTorch、vLLM、SGLang和LmDeploy推理加速引擎,并提供OpenAI接口,为推理、部署和评测模块提供加速。
- 模型评测:以EvalScope作为评测后端,支持100+评测数据集对纯文本和多模态模型进行评测。
- 模型量化:支持AWQ、GPTQ、FP8和BNB的量化导出,导出的模型支持使用vLLM/SGLang/LmDeploy推理加速,并支持继续训练。
🛠️ 安装
从源代码安装:
git clone https://gitee.com/jbcode_git/qingzhong.git
cd qingzhong
pip install -e .
运行环境:
范围 | 推荐 | 备注 | |
---|---|---|---|
python | >=3.9 | 3.10 | |
cuda | cuda12 | 使用cpu、npu、mps则无需安装 | |
torch | >=2.0 | 2.7.1 | |
transformers | >=4.33 | 4.54.1 | |
modelscope | >=1.23 | ||
peft | >=0.11,<0.18 | ||
flash_attn | 2.7.4.post1/3.0.0b1 | ||
trl | >=0.15,<0.21 | 0.20.0 | RLHF |
deepspeed | >=0.14 | 0.16.9 | 训练 |
vllm | >=0.5.1 | 0.10 | 推理/部署 |
sglang | >=0.4.6 | 0.4.9.post6 | 推理/部署 |
lmdeploy | >=0.5 | 0.9.2 | 推理/部署 |
evalscope | >=0.11 | 评测 | |
gradio | 5.32.1 | Web-UI/App |
🚀 快速开始
10分钟在单卡3090上对Qwen2.5-7B-Instruct进行自我认知微调:
命令行
# 22GB
CUDA_VISIBLE_DEVICES=0 \
qz sft \
--model Qwen/Qwen2.5-7B-Instruct \
--train_type lora \
--dataset 'AI-ModelScope/alpaca-gpt4-data-zh#500' \
'AI-ModelScope/alpaca-gpt4-data-en#500' \
'swift/self-cognition#500' \
--torch_dtype bfloat16 \
--num_train_epochs 1 \
--per_device_train_batch_size 1 \
--per_device_eval_batch_size 1 \
--learning_rate 1e-4 \
--lora_rank 8 \
--lora_alpha 32 \
--target_modules all-linear \
--gradient_accumulation_steps 16 \
--eval_steps 50 \
--save_steps 50 \
--save_total_limit 2 \
--logging_steps 5 \
--max_length 2048 \
--output_dir output \
--system 'You are a helpful assistant.' \
--warmup_ratio 0.05 \
--dataloader_num_workers 4 \
--model_author 山西清众科技 \
--model_name 清智
小贴士:
-
--model_author
和--model_name
参数只有当数据集中包含swift/self-cognition
时才生效。 - 如果要使用其他模型进行训练,你只需要修改
--model <model_id/model_path>
即可。 - 默认使用ModelScope进行模型和数据集的下载。如果要使用HuggingFace,指定
--use_hf true
即可。
训练完成后,使用以下命令对训练后的权重进行推理:
- 这里的
--adapters
需要替换成训练生成的last checkpoint文件夹。由于adapters文件夹中包含了训练的参数文件args.json
,因此不需要额外指定--model
,--system
,清众大模型训推平台会自动读取这些参数。如果要关闭此行为,可以设置--load_args false
。
# 使用交互式命令行进行推理
CUDA_VISIBLE_DEVICES=0 \
qz infer \
--adapters output/vx-xxx/checkpoint-xxx \
--stream true \
--temperature 0 \
--max_new_tokens 2048
# merge-lora并使用vLLM进行推理加速
CUDA_VISIBLE_DEVICES=0 \
qz infer \
--adapters output/vx-xxx/checkpoint-xxx \
--stream true \
--merge_lora true \
--infer_backend vllm \
--vllm_max_model_len 8192 \
--temperature 0 \
--max_new_tokens 2048
最后,使用以下命令将模型推送到ModelScope:
CUDA_VISIBLE_DEVICES=0 \
qz export \
--adapters output/vx-xxx/checkpoint-xxx \
--push_to_hub true \
--hub_model_id '<your-model-id>' \
--hub_token '<your-sdk-token>' \
--use_hf false
Web-UI
Web-UI是基于gradio界面技术的零门槛训练、部署界面方案。
qz web-ui
✨ 如何使用
- 若想使用其他模型或者数据集(含多模态模型和数据集),你只需要修改
--model
指定对应模型的id或者path,修改--dataset
指定对应数据集的id或者path即可。 - 默认使用ModelScope进行模型和数据集的下载。如果要使用HuggingFace,指定
--use_hf true
即可。
训练
支持的训练方法:
预训练:
# 8*A100
NPROC_PER_NODE=8 \
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
qz pt \
--model Qwen/Qwen2.5-7B \
--dataset swift/chinese-c4 \
--streaming true \
--train_type full \
--deepspeed zero2 \
--output_dir output \
--max_steps 10000 \
...
微调:
CUDA_VISIBLE_DEVICES=0 qz sft \
--model Qwen/Qwen2.5-7B-Instruct \
--dataset AI-ModelScope/alpaca-gpt4-data-zh \
--train_type lora \
--output_dir output \
...
RLHF:
CUDA_VISIBLE_DEVICES=0 qz rlhf \
--rlhf_type dpo \
--model Qwen/Qwen2.5-7B-Instruct \
--dataset hjh0119/shareAI-Llama3-DPO-zh-en-emoji \
--train_type lora \
--output_dir output \
...
推理
CUDA_VISIBLE_DEVICES=0 qz infer \
--model Qwen/Qwen2.5-7B-Instruct \
--stream true \
--infer_backend pt \
--max_new_tokens 2048
# LoRA
CUDA_VISIBLE_DEVICES=0 qz infer \
--model Qwen/Qwen2.5-7B-Instruct \
--adapters swift/test_lora \
--stream true \
--infer_backend pt \
--temperature 0 \
--max_new_tokens 2048
界面推理
CUDA_VISIBLE_DEVICES=0 qz app \
--model Qwen/Qwen2.5-7B-Instruct \
--stream true \
--infer_backend pt \
--max_new_tokens 2048 \
--lang zh
部署
CUDA_VISIBLE_DEVICES=0 qz deploy \
--model Qwen/Qwen2.5-7B-Instruct \
--infer_backend vllm
采样
CUDA_VISIBLE_DEVICES=0 qz sample \
--model LLM-Research/Meta-Llama-3.1-8B-Instruct \
--sampler_engine pt \
--num_return_sequences 5 \
--dataset AI-ModelScope/alpaca-gpt4-data-zh#5
评测
CUDA_VISIBLE_DEVICES=0 qz eval \
--model Qwen/Qwen2.5-7B-Instruct \
--infer_backend lmdeploy \
--eval_backend OpenCompass \
--eval_dataset ARC_c
量化
CUDA_VISIBLE_DEVICES=0 qz export \
--model Qwen/Qwen2.5-7B-Instruct \
--quant_bits 4 --quant_method awq \
--dataset AI-ModelScope/alpaca-gpt4-data-zh \
--output_dir Qwen2.5-7B-Instruct-AWQ
推送模型
qz export \
--model <model-path> \
--push_to_hub true \
--hub_model_id '<model-id>' \
--hub_token '<sdk-token>'