LLMBox
LLMBox 是一个专为大语言模型(LLM)打造的综合性开源库,旨在为研究人员和开发者提供从模型训练到实际部署的一站式解决方案。面对当前大模型生态中训练流程复杂、评估标准分散的挑战,LLMBox 通过高度统一的架构设计,显著提升了开发效率与灵活性。
在核心功能上,LLMBox 不仅支持监督微调(SFT)、预训练、PPO 及 DPO 等多种训练策略,还集成了 LoRA、QLoRA 等参数高效微调技术,并兼容 Flash Attention 和 DeepSpeed 以优化训练速度。对于模型应用环节,它利用 vLLM 和 KV Cache 管理实现最高 6 倍的推理加速,同时内置了超过 59 种主流数据集和基准测试,覆盖思维链(CoT)、上下文学习(ICL)等多种评估维度。
此外,LLMBox 还支持词表合并与量化技术,帮助用户在控制成本的同时获得更优的性能表现。无论你是希望复现论文结果的研究者,还是需要快速迭代模型的工程师,LLMBox 都能提供详细的文档支持和便捷的调试接口,助力你更高效地探索大模型技术的边界。
使用场景
某电商技术团队计划基于开源模型微调专属客服问答系统,并需在两周内完成验证上线。
没有 LLMBox 时
- 训练与推理环境割裂,需维护多套脚本,依赖冲突导致部署失败率高。
- 实现 LoRA 微调需从零编写数据加载与优化器逻辑,调试周期长达数周。
- 本地推理延迟高,无法支撑大促期间的高并发用户咨询请求。
- 缺乏标准化评测体系,难以客观对比不同版本模型的业务表现。
使用 LLMBox 后
- LLMBox 提供统一训练管线,一键支持 SFT、LoRA 及 QLoRA 等多种策略。
- 集成 vLLM 与 Flash Attention,本地推理速度提升 6 倍,响应更流畅。
- 内置 59+ 主流评测数据集,可直接复现 OpenAI 等权威模型的基准结果。
- 支持 BitsAndBytes 量化方案,显著降低显存占用,加速生产环境迁移。
LLMBox 通过一体化设计,将大模型从训练到评估的复杂工程门槛大幅降低。
运行环境要求
- 未说明
需要 NVIDIA GPU,CUDA 环境,具体型号及显存大小未说明
未说明

快速开始
LLMBox
LLMBox 是一个全面的库,用于实现大语言模型 (LLMs),包括统一的训练流程和全面的模型评估。LLMBox 旨在成为训练和利用 LLMs 的一站式解决方案。通过实用的库设计,我们在训练和利用阶段都实现了高水平的灵活性和效率。
主要特性
训练
- 多样化的训练策略: 我们支持多种训练策略,包括监督微调 (
SFT)、预训练 (PT)、PPO(近端策略优化) 和DPO(直接偏好优化)。 - 全面的 SFT 数据集: 我们支持 9 个 SFT 数据集作为训练输入。
- 分词器词汇表合并: 我们支持分词器 (Tokenizer) 合并功能以扩展词汇表。
- 数据构建策略: 目前我们支持合并多个数据集进行训练。
Self-Instruct和Evol-Instruct也可用于处理数据集。 - 参数高效微调:
LoRA(低秩适应) 和QLoRA(量化低秩适应) 在 SFT 或 PT 中受支持。 - 高效训练: 我们支持
Flash Attention(高效注意力机制) 和Deepspeed(分布式训练框架) 以实现高效训练。
利用
- 极速运行: 通过管理前缀的 KV Cache (键值缓存) 或使用
vLLM(高性能推理引擎),我们可以将本地推理速度提高多达 6 倍 🚀。 - 全面评估: 评估 LLMs 时包含 59+ 个常用 数据集 和基准测试。
- 评估方法: 📏 准确复现 OpenAI、LLaMA、Mistral 及其他模型的原始论文结果。
- 上下文学习: 我们支持各种 ICL (上下文学习) 策略,包括
KATE、GlobalE和APE。 - 思维链: 对于某些数据集,我们支持三种类型的 CoT (思维链) 评估:
base、least-to-most和pal。 - 量化: 支持 BitsAndBytes 和 GPTQ 量化。
- 易于使用:提供详细结果供用户调试或集成新模型/数据集/cot。
文档
详见 文档 了解更多细节。
快速开始
安装
git clone https://github.com/RUCAIBox/LLMBox.git && cd LLMBox
pip install -r requirements.txt
如果您仅评估 OpenAI(或兼容 OpenAI 如 DeepSeek, Perplexity)模型,可以安装最小化需求 requirements-openai.txt。
关于安装问题,请查看 故障排查。
更新 LLMBox
目前,您可以直接从 GitHub 拉取最新仓库来更新 LLMBox。
git pull
如果您遇到合并冲突,请尝试先丢弃、暂存或提交您的本地更改。
git checkout local_changes && git add -p && git commit -m "local changes"
git checkout main
git pull
上述命令展示了如何将您的本地更改提交到新分支,然后更新 LLMBox。
训练快速开始
您可以基于 LLaMA-2 (7B) 并使用 deepspeed3 开始训练一个 SFT 模型:
cd training
bash download.sh
bash bash/run_ds3.sh
利用快速开始
要利用您的模型,或评估现有模型,您可以运行以下命令:
python inference.py -m gpt-3.5-turbo -d copa # --num_shot 0 --model_type chat
这默认以 zero-shot (零样本) 方式在 CoPA 数据集上运行 OpenAI GPT 3.5 turbo 模型。
训练
LLMBox 训练支持各种训练策略和数据集构建策略,以及一些提高效率的模块。您可以使用以下命令训练您的模型:
python train.py \
--model_name_or_path meta-llama/Llama-2-7b-hf \
--data_path data/ \
--dataset alpaca_data_1k.json \
--output_dir $OUTPUT_DIR \
--num_train_epochs 2 \
--per_device_train_batch_size 8 \
--gradient_accumulation_steps 2 \
--save_strategy "epoch" \
--save_steps 2 \
--save_total_limit 2 \
--learning_rate 1e-5 \
--lr_scheduler_type "constant"
或者,您可以使用以下预设 bash 脚本来训练您的模型:
合并分词器
如果您想在原始语言模型(例如 LLaMA)支持不佳的语言或 token 语料库上预训练模型,我们提供分词器合并功能,通过使用 sentencepiece 基于语料库扩展词汇表。您可以查看 merge_tokenizer.py 获取详细信息。请遵循 Pre-train 中的指南。
bash bash/run_7b_pt.sh
合并数据集
如果您想使用混合多个数据集来训练模型,您可以向 LLMBox 传递一个数据集文件或名称列表。LLMBox 会将每个文件或名称转换为 PTDataset 或 SFTDataset,并将它们合并在一起以构建组合数据集。您也可以通过向 LLMBox 传递一个浮点数列表来设置每个数据集的合并比例。请遵循 Merge Dataset 中的指南。
bash bash/run_7b_hybrid.sh
Self-Instruct 和 Evol-Instruct
由于手动创建高质量指令数据以训练模型非常耗时且费力,提出了 Self-Instruct 和 Evol-Instruct,以便使用 LLM 而非人类创建大量具有不同复杂程度的指令数据。LLMBox 支持 Self-Instruct 和 Evol-Instruct 来增强或扩充输入数据文件。请遵循 Self-Insturct and Evol-Instruct 中的指南。
python self_instruct/self_instruct.py --seed_tasks_path=seed_tasks.jsonl
更多详情,请查看 训练 文档。
利用
我们广泛支持 Huggingface 模型(例如 LLaMA-3, Mistral, 或您构建的模型)、OpenAI、Anthropic、QWen 以及其他 OpenAI 兼容模型,以便进一步利用。完整的模型后端 (model backends) 列表:此处。
目前共支持 59+ 个常用数据集 (datasets),包括:HellaSwag, MMLU, GSM8K, GPQA, AGIEval, CEval, 和 CMMLU。完整数据集列表:此处。
CUDA_VISIBLE_DEVICES=0 python inference.py \
-m llama-2-7b-hf \
-d mmlu agieval:[English] \
--model_type chat \
--num_shot 5 \
--ranking_type ppl_no_option
🔥 最近支持的数据集:
imbue_code,imbue_public, 和imbue_private。🔥 查看 LLaMA3 基准测试 获取更多示例。
| 性能 | |||
| 模型 | get_ppl |
get_prob |
generation |
| Hellaswag (0-shot) | MMLU (5-shot) | GSM (8-shot) | |
| GPT-3.5 Turbo | 79.98 | 69.25 | 75.13 |
| LLaMA-2 (7B) | 76 | 45.95 | 14.63 |
高效评估
我们默认启用前缀缓存 (prefix caching) 以实现高效评估。同时也支持 vLLM。
| 时间 | |||||
| 模型 | 高效方法 | get_ppl |
get_prob |
generation |
|
| Hellaswag (0-shot) | MMLU (5-shot) | GSM (8-shot) | |||
| LLaMA-2 (7B) | 基础版 (Vanilla) | 0:05:32 | 0:18:30 | 2:10:27 | |
| vLLM | 0:06:37 | 0:14:55 | 0:03:36 | ||
| 前缀缓存 | 0:05:48 | 0:05:51 | 0:17:13 | ||
您也可以使用以下命令来使用 vllm:
python inference.py -m ../Llama-2-7b-hf -d mmlu:abstract_algebra,anatomy --vllm True # --prefix_caching False --flash_attention False
若要使用量化 (quantization) 进行评估,您可以使用以下命令:
python inference.py -m model -d dataset --load_in_4bits # --load_in_8_bits or --gptq
评估方法
支持多种类型的评估方法:
| 数据集 | 评估方法 | 指令 |
生成 |
基于源文本生成 示例:ARC-Challenge(从模型生成中提取选择字符如 A, B, C, D),GSM8K,HumanEval 注意: |
|
多项选择 |
计算选项文本的困惑度(即计算后缀的对数似然) 示例:WinoGrande,BoolQ 注意:某些数据集,如 ARC、OpenbookQA 和 RACE,在使用 |
|
|
||
获取每个选项标签的概率(即针对选择字符) |
|
您可以在 支持的数据集 中找到每个数据集的更多评估详情。
您可以使用 --instruction 传递一个 Jinja 模板以覆盖默认指令。
默认情况下,我们对 MultipleChoiceDataset 使用带有 ppl_no_option 排序类型的 get_ppl 方法,对 GenerationDataset 使用 generation 方法。您也可以使用以下命令为 MultipleChoiceDataset 使用 get_prob 方法或 get_ppl 的 ppl 变体:
python inference.py -m model -d dataset --ranking_type prob # or ppl
我们还支持部分数据集的上下文学习(In-Context Learning)和思维链(Chain-of-Thought)评估:
python inference.py -m model -d dataset --kate # --globale or --ape
python inference.py -m model -d dataset --cot least_to_most # --base or --pal
关于模型利用的更详细指令,请查看 utilization 文档。
有关评估结果的完整列表,请参阅我们的论文 LLMBox: A Comprehensive Library for Large Language Models。
贡献
如果您遇到错误 (Bug) 或有任何建议,请通过 提交问题 告知我们。
我们欢迎所有贡献,从错误修复到新功能和扩展。
我们期望所有贡献都在问题跟踪器中讨论并通过 Pull Requests (PRs) 进行。
更多详情,请查看 CONTRIBUTING 文档。
我们要感谢以下为 LLMBox 做出贡献的贡献者:
- @xansar 修复了多个复杂问题,如 batch sampler 和 self-consistency。
团队
LLMBox 由 AI Box 开发和维护。更多详情见 变更日志
许可证
LLMBox 使用 MIT 许可证。
引用
如果您发现 LLMBox 对您的研究或开发有用,请引用以下论文:
@inproceedings{tang2024llmbox,
title={LLMBox: A Comprehensive Library for Large Language Models},
author={Tang, Tianyi and Yiwen, Hu and Li, Bingqian and Luo, Wenyang and Qin, ZiJing and Sun, Haoxiang and Wang, Jiapeng and Xu, Shiyi and Cheng, Xiaoxue and Guo, Geyang and others},
booktitle={Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 3: System Demonstrations)},
pages={388--399},
year={2024}
}
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。