deita
Deita 是一个专注于大语言模型(LLM)指令微调的开源项目,旨在通过“数据高效”的方式实现模型对齐。它核心解决了当前大模型训练中过度依赖海量标注数据的痛点,证明并实现了仅需极少量高质量数据即可训练出媲美主流顶尖模型的效果。
该项目主要面向 AI 研究人员和开发者,特别是那些受限于计算资源或标注成本,却希望快速构建高性能对话模型的团队。Deita 提供了一套自动化的数据选择工具包,能够智能地从庞杂数据集中筛选出最具价值的样本。其独特的技术亮点在于发布了仅含 6000 至 10000 条数据的轻量级高质量数据集。实验数据显示,基于 Deita 数据训练的模型,在仅使用其他最先进模型十分之一数据量的情况下,依然在 MT-Bench 和 AlpacaEval 等权威评测中取得了极具竞争力的分数。此外,其数据处理流程已被 Hugging Face 等机构采纳用于构建知名模型。对于希望以更低成本、更高效率优化大语言模型表现的用户而言,Deita 提供了一条经过验证的可行路径。
使用场景
某初创 AI 团队需要在有限的 GPU 预算下,快速为垂直领域的客服机器人构建一个高质量的对话模型。
没有 deita 时
- 数据筛选成本高昂:团队不得不人工从数十万条通用指令数据中抽样清洗,耗时数周仍难以保证数据的多样性和复杂度。
- 训练资源浪费严重:由于无法识别低质量样本,模型被迫在大量简单或重复数据上进行全量微调,导致显存占用高且训练周期漫长。
- 模型效果遭遇瓶颈:即便使用了超过 20 万条数据进行 SFT(监督微调),模型在复杂逻辑推理和多轮对话中的表现依然平平,MT-Bench 评分难以突破 6.5 分。
- 迭代试错困难:每次调整数据策略都需要重新进行大规模训练,反馈循环过长,严重拖慢了产品上线节奏。
使用 deita 后
- 自动化精准选材:利用 deita 的复杂度与质量评分模型,团队仅用一行代码就从海量数据中自动筛选出 6,000 条最具价值的高质指令。
- 训练效率显著提升:基于筛选后的轻量级数据集,模型训练时间缩短了 90% 以上,大幅降低了算力成本和碳排放。
- 小数据达成高性能:仅用 6k 数据训练的 DEITA-7B 模型,其 MT-Bench 得分高达 7.22,性能直接媲美甚至超越使用 20 万数据训练的 Zephyr-7B 等主流模型。
- 敏捷迭代成为常态:极低的数据门槛让团队能在一天内完成多次“筛选 - 训练 - 评估”闭环,迅速针对特定业务场景优化模型表现。
deita 通过“以质换量”的核心机制,证明了极少量的高质量数据足以驱动大模型实现卓越的对齐效果,让资源受限的团队也能轻松打造 SOTA 级应用。
运行环境要求
- 未说明
需要 NVIDIA GPU(用于运行 Llama Scorer 模型及可选的 vLLM 加速),具体显存需求取决于所选基座模型(如 Mistral-7B 或 LLaMA-13B),建议 8GB 以上以支持推理
未说明

快速开始
Deita
🤗 HF 仓库 📄 论文 📚 6K 数据集 📚 10K 数据集
欢迎来到 Deita(Data-Efficient Instruction Tuning for Alignment)项目!
我们将持续更新,敬请关注!
什么是 Deita?
Deita 是一个开源项目,旨在为大型语言模型(LLMs)的指令微调提供自动化数据选择支持。
它包括:
- 开源工具包:用于指令微调中的自动化数据选择
- Deita 数据集:一系列极其轻量级、高质量的对齐 SFT 数据。首次发布时,我们提供了 6k 和 10k 规模的数据集。
- Deita 模型:一系列性能强大、与当前最先进聊天模型相当的模型,同时采用极其高效的指令微调流程。使用 Deita 模型时,所需的指令微调数据仅为其他 SOTA LLM 的十分之一。
最新动态
- :fire: [2024年3月] 我们的数据集已被 Hugging Face 用于创建 Zephyr Gemma 模型。
- 📄 [2024年1月] Deita 论文《什么才是对齐任务中优质的数据?——指令微调中自动化数据选择的全面研究》(arXiv:2312.15685)已被 ICLR 2024 接受!
- :fire: [2024年1月] Deita 流水线 已发布!只需一行代码和配置,即可筛选出高质量的对齐数据子集。
- 📚 [2024年1月] 我们发布了评分数据集 deita-complexity-scorer-data 和 deita-quality-scorer-data。
- :fire: [2023年12月] 我们在此发布了 Deita 资源的第一批集合 这里,其中包括一系列极其轻量级且高效的 SFT 数据集、数据复杂度/质量评分模型,以及最终生成的 Deita 聊天模型。
性能表现
:bell: 仍然好奇少量高质量数据究竟能将 LLM 带向多远吗?
Deita 或许能为你解答:
🔦 亮点
| 模型 | 对齐方式 | 数据规模 | MT-Bench | AlpacaEval(%) |
|---|---|---|---|---|
| Zephyr-7B-sft | SFT | 20万 | 5.32 | 75.12 |
| $\text{Zephyr-7B-}\beta$ | SFT + DPO | 20万 SFT + 6万 DPO | 7.34 | 90.60 |
| OpenChat-3.5 | C-RLFT | >> 7万 C-RLFT | 7.81 | 88.51 |
| Starling-7B | C-RLFT + APA | >> 7万 C-RLFT + 18.3万 APA | 8.09 | 91.99 |
| Tulu-2-13B | SFT | 32.6万 | 6.70 | 78.90 |
| Tulu-2-13B+DPO | SFT + DPO | 32.6万 SFT + 6万 DPO | 7.00 | 89.50 |
| LLaMA2-13B-Chat | SFT + PPO | -- | 6.65 | 81.09 |
| WizardLM-13B-v1.2 | SFT | >7万 | 7.09 | 89.17 |
| Vicuna-13B-v1.5 | SFT | >12.5万 | 6.57 | 78.80 |
| DEITA-7B-v1.0 (6K) | SFT | 6千 | 7.22 | 80.78 |
| DEITA-7B-v1.0-sft | SFT | 1万 | 7.32 | 81.67 |
| DEITA-7B-v1.0 | SFT + DPO | 6千 SFT + 1万 DPO | 7.55 | 90.06 |
DEITA 模型基于 Mistral-7B-v0.1。:fire:
请参阅 这张表格 获取完整评估结果,其中也包含 Open LLM Leaderboard 的排名信息,涵盖了使用 LLaMA 基础模型的 DEITA 模型,以及与其他数据选择方法的对比。
:chart_with_upwards_trend: 完整评估
查看完整评估
| 模型 | 对齐方式 | 数据规模 | MT-Bench | AlpacaEval(%) | OpenLLM (平均) |
|---|---|---|---|---|---|
| 专有模型 | |||||
| GPT-4-Turbo | ? | -- | 9.32 | 97.70 | -- |
| GPT-4 | SFT + PPO | -- | 8.99 | 95.03 | -- |
| Claude-2 | SFT + PPO | -- | 8.06 | 91.36 | -- |
| GPT-3.5-turbo | SFT + PPO | -- | 7.94 | 89.37 | -- |
| 基于 LLaMA-1-13B 的开源模型 | |||||
| LIMA | SFT | 1K SFT | 4.29 | 41.98 | 59.82 |
| WizardLM-13B | SFT | 70K SFT | 6.35 | 75.31 | 58.96 |
| Vicuna-13B-v1.3 | SFT | 125K SFT | 6.39 | 82.11 | 60.01 |
| Random | SFT | 10K SFT | 6.03 | 71.52 | 60.14 |
| DEITA-LLaMA1-13B-v1.0-sft | SFT | 10K SFT | 6.60 | 78.01 | 64.27 |
| 基于 LLaMA-2-13B 的开源模型 | |||||
| Tulu-2-13B | SFT | 326K SFT | 6.70 | 78.90 | -- |
| Tulu-2-13B+DPO | SFT + DPO | 326K SFT + 60K DPO | 7.00 | 89.50 | -- |
| LLaMA2-13B-Chat | SFT + PPO | -- | 6.65 | 81.09 | -- |
| WizardLM-13B-v1.2 | SFT | >70K SFT | 7.09 | 89.17 | -- |
| Vicuna-13B-v1.5 | SFT | 125K SFT | 6.57 | 78.80 | 61.63 |
| Random | SFT | 10K SFT | 5.78 | 65.19 | 61.32 |
| DEITA-LLaMA2-13B-v1.0-sft | SFT | 10K SFT | 6.79 | 81.09 | 62.71 |
| 基于 Mistral-7B 的开源模型 | |||||
| Mistral-7B-Instruct-v0.1 | -- | -- | 6.84 | 69.65 | 60.45 |
| Zephyr-7B-sft | SFT | 200K SFT | 5.32 | 75.12 | 60.93 |
| $\text{Zephyr-7B-}\beta$ | SFT + DPO | 200K SFT + 60K DPO | 7.34 | 90.60 | 66.36 |
| OpenChat-3.5 | C-RLFT | >> 70K C-RLFT | 7.81 | 88.51 | -- |
| Starling-7B | C-RLFT + APA | >>70K C-RLFT + 183K APA | 8.09 | 91.99 | -- |
| Random | SFT | 10K SFT | 5.89 | 56.90 | 61.72 |
| DEITA-7B-v1.0-sft (6K) | SFT | 6K SFT | 7.22 | 80.78 | 64.94 |
| DEITA-7B-v1.0-sft (10K) | SFT | 10K SFT | 7.32 | 81.67 | 64.00 |
| DEITA-7B-v1.0 | SFT + DPO | 6K SFT + 10K DPO | 7.55 | 90.06 | 69.86 |
:rocket: Deita 资源
| 资源 | 链接 | 许可证 |
|---|---|---|
| Deita 数据集 | ||
| deita-6k-v0 | :hugs: HF 仓库 | MIT 许可证 |
| deita-10k-v0 | :hugs: HF 仓库 | MIT 许可证 |
| deita-complexity-scorer-data | :hugs: HF 仓库 | MIT 许可证 |
| deita-quality-scorer-data | :hugs: HF 仓库 | MIT 许可证 |
| deita-redundant-pool (100K) | :hugs: HF 仓库 | MIT 许可证 |
| deita-sota-pool (300K) | :hugs: HF 仓库 | MIT 许可证 |
| 评分器 | ||
| deita-complexity-scorer | :hugs: HF 仓库 | LLaMA 许可证 |
| deita-quality-scorer | :hugs: HF 仓库 | LLaMA 许可证 |
| Deita 模型 | ||
| DEITA-7B-v1.0-sft | :hugs: HF 仓库 | Apache-2.0 |
| DEITA-7B-v1.0 | :hugs: HF 仓库 | Apache-2.0 |
| DEITA-LLaMA2-13B-v1.0-sft | :hugs: HF 仓库 | LLaMA 2 许可证 |
| DEITA-LLaMA1-13B-v1.0-sft | :hugs: HF 仓库 | LLaMA 许可证 |
:running_man: 如何开始?
安装
git clone https://github.com/hkust-nlp/deita.git
cd deita
pip install -e .
数据样本评分
如果您希望评估单个样本的响应质量,可以按照以下步骤操作:
from deita.selection.scorer import Llama_Scorer
model_name_or_path = "hkust-nlp/deita-quality-scorer"
scorer = Llama_Scorer(model_name_or_path)
# 示例输入
input_text = "描述带有实用提示框的用户界面的词语" # 示例输入
output_text = "用户友好的或直观的用户界面" # 示例输出
quality_score = scorer.infer_quality(input_text, output_text)
print(quality_score)
# 2.0230105920381902
Deita 还支持 VLLM 以实现更快的推理。如果想使用 VLLM 进行推理,
pip install vllm
并在初始化评分器时设置 is_vllm = True:
scorer = Llama_Scorer(model_name_or_path, is_vllm = True)
如需评估数据样本的其他维度,请参阅 examples/scoring。
Deita 流水线
您可以通过 Deita 流水线,仅用一行代码和配置即可对数据集执行多种操作。
- 数据集评分
from deita.pipeline import Pipeline
pipeline = Pipeline("score_pipeline",
data_path = args.data_path, # 具有 ShareGPT 格式的 JSON 文件
scorer = args.scorer, # [mistral, llama]
scorer_name_or_path = args.scorer_name_or_path, # 评分器名称或路径,例如 hkust-nlp/deita-complexity-scorer
is_vllm = args.is_vllm, # 是否使用 VLLM 启动 [True, False]
score_type = args.score_type, # [复杂度, 质量]
output_path = args.output_path) # 输出路径(JSON 格式)
pipeline.run()
- 获取嵌入
我们使用 Hugging Face Accelerate 来提升效率:
from deita.pipeline import Pipeline
embed_pipeline = Pipeline("embed_pipeline",
data_path = args.data_path, # 具有 ShareGPT 格式的 JSON 文件
output_path = args.output_path, # 输出路径(Pickle 格式)
model_name_or_path = args.model_name_or_path, # 模型名称或路径,例如 mistralai/Mistral-7B-v0.1
max_length = args.max_length,
use_flash_attention = args.use_flash_attention,
batch_size_per_device = args.batch_size_per_device,
conv_template = args.conv_template,
only_answer = args.only_answer,
random_shuffle = args.random_shuffle,
bfloat16 = True
)
embed_pipeline.run()
CUDA_VISIBLE_DEVICES=$GPUIDX accelerate launch \
--mixed_precision bf16 \
--num_processes $NUMPROCESS \
--num_machines 1 \
examples/pipelines/embed_datasets.py \
--use_flash_attention true \
--data_path $DATAPATH \
--output_path $OUTPUTPATH \
--batch_size_per_device $BSZ
- 先评分、再多样性感知筛选
from deita.pipeline import Pipeline
filter_pipeline = Pipeline("filter_pipeline",
data_path = args.data_path, # 具有 ShareGPT 格式的 JSON 文件
other_data_path = args.other_data_path, # 嵌入文件路径(Pickle 格式)
threshold = args.threshold, # 筛选阈值,默认:0.9
data_size = args.data_size, # 选定数据的数量
chunk_size = args.chunk_size, # 用于更高效的 GPU 计算,默认:100000
sort_key = args.sort_key, # 默认:"complexity_scores,quality_scores"
output_path = args.output_path, # JSON 格式输出路径
distance_metric = args.distance_metric, # 默认:余弦距离
embedding_field = args.embedding_field, # 默认:embedding
is_compression = args.is_compression, # 默认:False
device = args.device # GPU 编号,默认:0
)
filter_pipeline.run()
更多详情请参阅 examples/pipelines。文档也将很快发布。
SFT 训练
请参考 examples/train/sft.sh:
deepspeed --include localhost:${DEVICES} --master_port 29501 src/deita/alignment/train.py \
--model_name_or_path ${MODELPATH} \
--data_path ${DATAPATH} \
--output_dir ${OUTPUTPATH}/${RUNNAME} \
--num_train_epochs 6 \
--per_device_train_batch_size ${BSZPERDEV} \
--per_device_eval_batch_size 1 \
--gradient_accumulation_steps ${GRADACC} \
--eval_steps 50 \
--save_strategy "no" \
--save_steps 100 \
--save_total_limit 10 \
--learning_rate 2e-5 \
--warmup_ratio 0.1 \
--lr_scheduler_type "cosine" \
--logging_steps 1 \
--do_eval False \
--evaluation_strategy "no" \
--model_max_length 2048 \
--lazy_preprocess True \
--conv_template "vicuna_v1.1" \
--mask_user True \
--report_to "wandb" \
--run_name ${RUNNAME} \
--bf16 True \
--deepspeed src/deita/ds_configs/deepspeed_config_zero2_no_offload.json
DPO 训练
请参考 examples/train/dpo.sh:
deepspeed --include localhost:${DEVICES} --master_port 29502 src/deita/alignment/dpo_train.py \
--model_name_or_path ${MODELPATH} \
--json_path ${JSONPATH} \
--data_split ${DATASPLIT} \
--output_dir ${OUTPUTPATH}/${RUNNAME} \
--num_train_epochs ${DPOEPOCH} \
--beta 0.1 \
--per_device_train_batch_size ${BSZPERDEV} \
--per_device_eval_batch_size 1 \
--gradient_accumulation_steps ${GRADACC} \
--save_global_steps False \
--eval_steps 50 \
--save_strategy "no" \
--save_steps 500 \
--save_total_limit 1 \
--learning_rate 5e-7 \
--warmup_ratio 0.1 \
--lr_scheduler_type "linear" \
--logging_steps 1 \
--do_eval False \
--evaluation_strategy "no" \
--model_max_length 2048 \
--conv_template "vicuna_v1.1" \
--report_to "wandb" \
--run_name ${RUNNAME} \
--bf16 True \
--gradient_checkpointing True \
--deepspeed src/deita/ds_configs/stage3_no_offloading_accelerate.json
评估
- 对于 MT-Bench,请参考 MT-Bench
- 对于 AlpacaEval,请参考 alpaca_eval
- 对于 Open LLM Benchmark,请参考 lm-evaluation-harness 并按照 HuggingFaceH4/open_llm_leaderboard 上的设置进行操作。
:muscle: 还有哪些亮点?
这是 Deita 项目的预览版本。我们将持续更新,包括:
- 发布高效实现的数据选择流水线
- 更多自动化的数据选择策略
- 支持 CLI 界面
- 在线演示
引用
如果您觉得本项目的内容有所帮助,请按以下格式引用我们的论文:
@inproceedings{
liu2024what,
title={对齐任务中优质数据的构成要素:指令微调中自动数据选择的全面研究},
author={刘伟、曾伟豪、何克清、蒋勇、何俊贤},
booktitle={第十二届国际学习表征会议},
year={2024},
url={https://openreview.net/forum?id=BTKAeLqLMw}
}
致谢
在训练代码方面,我们使用了 fastchat 的代码模板。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
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 真正成长为懂上
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
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 将是理想的起点。
funNLP
funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。