TextBrewer
TextBrewer 是一款基于 PyTorch 构建的自然语言处理知识蒸馏工具包,旨在帮助开发者轻松压缩大型预训练模型。在深度学习应用中,庞大的模型往往导致推理速度慢、内存占用高,难以在资源受限的设备上部署。TextBrewer 通过“知识蒸馏”技术,让一个小巧的“学生模型”向强大的“教师模型”学习,从而在几乎不牺牲性能的前提下,显著提升推理速度并降低显存消耗。
该工具特别适合 NLP 领域的研究人员和工程开发者使用。它整合了来自自然语言处理和计算机视觉领域的多种先进蒸馏算法,提供了一个灵活易用的框架,让用户能快速复现前沿方法。TextBrewer 的独特亮点在于其高度的灵活性:支持为学生和教师模型输入不同的数据批次,这意味着它可以处理词汇表不同的模型间蒸馏(例如从 RoBERTa 蒸馏到 BERT);同时支持预计算并缓存教师模型的输出,进一步加速训练过程。此外,它还提供了如 BERT-EMD 等自适应层匹配机制,无需人工指定复杂的层级对应关系。无论是希望优化模型部署的工程师,还是探索蒸馏新算法的研究者,TextBrewer 都能提供高效、专业的技术支持。
使用场景
某电商公司的算法团队需要将高精度的 BERT 大模型部署到移动端客服机器人中,以实时回答用户咨询,但受限于手机端的算力和内存资源。
没有 TextBrewer 时
- 手动实现成本极高:工程师需从零编写知识蒸馏代码,复现复杂的中间层特征匹配或注意力矩阵对齐逻辑,开发周期长达数周。
- 模型压缩效果难调优:缺乏统一的框架支持多种蒸馏策略(如 BERT-EMD),难以快速实验不同方案,导致小模型在精度上损失过大。
- 训练效率低下:每次迭代都需同时前向传播教师和学生模型,且无法缓存教师输出,导致显存占用高、训练速度缓慢。
- 跨架构迁移困难:若教师模型与学生模型词表不一致(如从 RoBERTa 蒸馏到 BERT),需自行处理数据对齐问题,极易出错。
使用 TextBrewer 后
- 开箱即用的蒸馏框架:直接调用内置的 Distiller 模块,几行代码即可配置先进的蒸馏算法,将开发时间缩短至几天内。
- 性能与体积完美平衡:利用自适应层匹配等技术,在模型体积缩小 70% 的情况下,仅牺牲不到 2% 的意图识别准确率。
- 推理加速显著:通过预计算并缓存教师模型输出,大幅减少重复计算,训练速度提升 40%,显存占用降低 50%。
- 灵活适配异构模型:原生支持向学生和教师输入不同批次的数据,轻松实现跨词表、跨架构的模型迁移,无需额外数据处理。
TextBrewer 让团队以极低的工程成本,成功将庞大的语言模型“瘦身”并高效部署到端侧设备,实现了用户体验与资源消耗的双赢。
运行环境要求
- 未说明
未说明 (依赖 PyTorch,支持混合精度训练需安装 Apex)
未说明

快速开始
TextBrewer 是一个基于 PyTorch 的自然语言处理模型蒸馏工具包。它整合了来自自然语言处理和计算机视觉领域的多种蒸馏技术,并提供了一个易于使用的蒸馏框架,使用户能够快速尝试最先进的蒸馏方法,在性能损失较小的情况下压缩模型,从而提升推理速度并降低内存占用。
您可以通过 ACL Anthology 或 arXiv 预印本查看我们的论文。
新闻
2021年12月17日
- 我们发布了模型剪枝工具包 TextPruner。详情请见:https://github.com/airaria/TextPruner
2021年10月24日
- 我们提出了首个专门针对中国少数民族语言的预训练语言模型。详情请见:https://github.com/ymcui/Chinese-Minority-PLM
2021年7月8日
- 新增使用 Transformers 4 的示例
- 目前的示例(exmaples/)是基于旧版本的 Transformers 编写的,可能会引起一些混淆和错误。我们使用 Transformers 4 在 Jupyter Notebook 中重写了这些示例,更加易于理解和学习。
- 新的示例可以在 examples/notebook_examples 中找到。详细信息请参阅 示例。
2021年3月1日
BERT-EMD 和自定义蒸馏器
- 我们在 MNLI 示例 中添加了 BERT-EMD 的实验。BERT-EMD 允许每个中间层的学生模型根据优化地球移动距离的原则,自适应地从任意中间层的教师模型中学习,因此无需指定匹配方案。
- 我们编写了一个新的 EMDDistiller,用于执行 BERT-EMD。它展示了如何编写自定义蒸馏器。
更新了 MNLI 示例
- 我们移除了 pretrained_pytorch_bert,并在所有 MNLI 示例中改用 transformers 库。
点击此处查看旧版新闻
2020年11月11日
更新至 0.2.1:
更灵活的蒸馏:支持为学生模型和教师模型输入不同的批次数据。这意味着学生和教师的批次数据不再需要相同,可用于蒸馏具有不同词汇表的模型(例如从 RoBERTa 到 BERT)。
更快的蒸馏:用户现在可以预先计算并缓存教师模型的输出,然后将缓存的数据输入蒸馏器,以节省教师模型的前向传播时间。
关于上述功能的详细信息,请参阅 为学生和教师输入不同批次数据、输入缓存值。
MultiTaskDistiller现在支持中间特征匹配损失。TensorBoard 现在会记录更详细的损失(知识蒸馏损失、硬标签损失、匹配损失等)。
详细信息请参阅 发布记录。
2020年8月27日
我们很高兴地宣布,我们的模型在 GLUE 基准测试中名列前茅,请查看 排行榜。
2020年8月24日
- 更新至 0.2.0.1:
- 修复了
MultiTaskDistiller和训练循环中的 bug。
- 修复了
2020年7月29日
- 更新至 0.2.0:
- 添加了对分布式数据并行训练的支持,通过
DistributedDataParallel实现:TrainingConfig现在接受local_rank参数。详细信息请参阅TrainingConfig的文档。 - 添加了一个关于中文 NER 任务蒸馏的示例,用于演示分布式数据并行训练。详情请参阅 examples/msra_ner_example。
- 添加了对分布式数据并行训练的支持,通过
2020年7月14日
- 更新至 0.1.10:
- 现在支持使用 Apex 进行混合精度训练!只需在
TrainingConfig中将fp16设置为True即可。详细信息请参阅TrainingConfig的文档。 - 在
TrainingConfig中增加了data_parallel选项,以实现数据并行训练与混合精度训练的同时进行。
- 现在支持使用 Apex 进行混合精度训练!只需在
2020年4月26日
- 添加了中文 NER 任务(MSRA NER)的结果。
- 添加了蒸馏至 T12-nano 模型的结果,该模型结构类似于 Electra-small。
- 更新了 CoNLL-2003、CMRC 2018 和 DRCD 的部分结果。
2020年4月22日
- 更新至 0.1.9(增加了缓存选项,加快蒸馏速度;修复了一些 bug)。详细信息请参阅 发布记录。
- 添加了在中文任务上将 Electra-base 蒸馏至 Electra-small 的实验结果。
- TextBrewer 已被 ACL 2020 接受为演示论文,请使用我们的新 引用条目。
2020年3月17日
- 添加了 CoNLL-2003 英文 NER 蒸馏示例。详情请参阅 examples/conll2003_example。
2020年3月11日
- 更新至 0.1.8(对 TrainingConfig 和训练方法进行了改进)。详细信息请参阅 发布记录。
2020年3月2日
- 初始公开版本 0.1.7 发布。详细信息请参阅 发布记录。
目录
| 章节 | 内容 |
|---|---|
| 简介 | TextBrewer 简介 |
| 安装 | 如何安装 |
| 工作流程 | TextBrewer 工作流程的两个阶段 |
| 快速入门 | 示例:将 BERT-base 蒸馏为 3 层 BERT |
| 实验 | 典型英汉数据集上的蒸馏实验 |
| 核心概念 | TextBrewer 核心概念简要说明 |
| 常见问题 | 常见问题解答 |
| 已知问题 | 已知问题 |
| 引用 | TextBrewer 的引用方式 |
| 关注我们 | - |
简介

Textbrewer 是专为自然语言处理模型的知识蒸馏设计的工具。它提供了多种蒸馏方法,并构建了一个快速搭建实验的蒸馏框架。
TextBrewer 的主要特点包括:
- 广泛支持:支持多种模型架构(尤其是基于 Transformer 的模型)。
- 灵活性:用户可以通过组合不同的技术来自定义蒸馏方案;同时支持自定义损失函数、模块等。
- 易用性:用户无需修改模型架构。
- 专为 NLP 设计:适用于多种 NLP 任务,如文本分类、机器阅读理解、序列标注等。
目前,TextBrewer 提供了以下蒸馏技术:
- 混合软标签与硬标签训练
- 动态调整损失权重和温度
- 多种蒸馏损失函数:隐藏层状态均方误差、基于注意力矩阵的损失、神经元选择性迁移等。
- 自由添加中间特征匹配损失
- 多教师蒸馏
- ...
TextBrewer 包含以下内容:
- Distillers:蒸馏的核心组件。不同的蒸馏器执行不同的蒸馏模式,例如 GeneralDistiller、MultiTeacherDistiller 和 BasicTrainer 等。
- 配置与预设:用于训练和蒸馏的配置类,以及预定义的蒸馏损失函数和策略。
- Utilities:辅助工具,如模型参数分析等。
要开始蒸馏,用户需要提供:
- 模型(已训练好的 教师 模型和未训练的 学生 模型)。
- 数据集和实验配置。
TextBrewer 在多个典型的 NLP 任务上取得了显著的效果。详情请参阅 Experiments。
详细用法请参阅 完整文档。
架构

安装
需求
- Python >= 3.6
- PyTorch >= 1.1.0
- TensorboardX 或 Tensorboard
- NumPy
- tqdm
- Transformers >= 2.0(可选,部分示例会用到)
- Apex == 0.1.0(可选,混合精度训练)
从 PyPI 安装
pip install textbrewer从 Github 源码安装
git clone https://github.com/airaria/TextBrewer.git pip install ./textbrewer
工作流程


阶段 1:准备工作:
- 训练教师模型。
- 定义并初始化学生模型。
- 构建数据加载器、优化器和学习率调度器。
阶段 2:使用 TextBrewer 进行蒸馏:
- 构建 TrainingConfig 和 DistillationConfig,并初始化一个 distiller。
- 定义一个 adaptor 和一个 callback。adaptor 用于适配模型的输入和输出,而 callback 则会在训练过程中被 distiller 调用。
- 调用 distiller 的 train 方法。
快速入门
下面我们将通过将 BERT-base 蒸馏到一个 3 层的 BERT 模型来展示 TextBrewer 的使用方法。
在蒸馏之前,我们假设用户已经准备好了:
- 一个已训练好的教师模型
teacher_model(BERT-base)和一个待训练的学生模型student_model(3 层 BERT)。 - 数据集的数据加载器
dataloader、优化器以及学习率调度器的类scheduler_class和其参数字典scheduler_dict。
使用 TextBrewer 进行蒸馏:
import textbrewer
from textbrewer import GeneralDistiller
from textbrewer import TrainingConfig, DistillationConfig
# 显示模型参数统计信息
print("\nteacher_model's parametrers:")
result, _ = textbrewer.utils.display_parameters(teacher_model,max_level=3)
print (result)
print("student_model's parametrers:")
result, _ = textbrewer.utils.display_parameters(student_model,max_level=3)
print (result)
# 定义一个适配器来解释模型的输入和输出
def simple_adaptor(batch, model_outputs):
# 模型输出的第二和第三项分别是 logits 和隐藏层状态
return {'logits': model_outputs[1],
'hidden': model_outputs[2]}
# 训练配置
train_config = TrainingConfig()
# 蒸馏配置
# 匹配学生和教师模型的不同层
distill_config = DistillationConfig(
intermediate_matches=[
{'layer_T':0, 'layer_S':0, 'feature':'hidden', 'loss': 'hidden_mse','weight' : 1},
{'layer_T':8, 'layer_S':2, 'feature':'hidden', 'loss': 'hidden_mse','weight' : 1}])
# 构建蒸馏器
distiller = GeneralDistiller(
train_config=train_config, distill_config = distill_config,
model_T = teacher_model, model_S = student_model,
adaptor_T = simple_adaptor, adaptor_S = simple_adaptor)
# 开始!
with distiller:
distiller.train(optimizer, dataloader, num_epochs=1, scheduler_class=scheduler_class, scheduler_args = scheduler_args, callback=None)
示例
带有 Transformers 4 的 Notebook 示例
- examples/notebook_examples/sst2.ipynb(英语):在 SST-2 数据集上训练并蒸馏 BERT,该数据集是一个英语句子分类任务。
- examples/notebook_examples/msra_ner.ipynb(中文):在 MSRA NER 数据集上训练并蒸馏 BERT,该数据集是一个中文序列标注任务。
- examples/notebook_examples/sqaudv1.1.ipynb(英语):在 SQuAD 1.1 数据集上训练并蒸馏 BERT,该数据集是一个英语机器阅读理解任务。
examples/random_token_example:一个简单的可运行玩具示例,展示了 TextBrewer 的用法。该示例以随机标记作为输入,在文本分类任务上进行蒸馏。
examples/cmrc2018_example(中文):使用 DRCD 作为数据增强,在 CMRC 2018 数据集上进行蒸馏,该数据集是一个中文机器阅读理解任务。
examples/mnli_example(英语):在 MNLI 数据集上进行蒸馏,该数据集是一个英语句子对分类任务。该示例还展示了如何进行多教师蒸馏。
examples/conll2003_example(英语):在 CoNLL-2003 英文 NER 数据集上进行蒸馏,该任务属于序列标注类型。
examples/msra_ner_example(中文):本示例在一个单节点多 GPU 的分布式数据并行训练环境中,将 Chinese-ELECTRA-base 模型蒸馏到 MSRA NER 任务上。
实验
我们在多个典型的英汉 NLP 数据集上进行了蒸馏实验。以下是具体的设置和配置。
模型
- 对于英文任务,教师模型是 BERT-base-cased。
- 对于中文任务,教师模型是哈工大与科大讯飞联合实验室发布的 RoBERTa-wwm-ext 和 Electra-base。
我们测试了不同的学生模型。为了与公开结果进行对比,学生模型均采用标准的 Transformer 块构建,除了 BiGRU 是单层双向 GRU。以下是各模型的架构说明。需要注意的是,参数量包括嵌入层,但不包括每个具体任务的输出层。
英文模型
| 模型 | 层数 | 隐藏层大小 | 前馈网络大小 | 参数量 | 相对大小 |
|---|---|---|---|---|---|
| BERT-base-cased(教师) | 12 | 768 | 3072 | 1.08亿 | 100% |
| T6(学生) | 6 | 768 | 3072 | 6500万 | 60% |
| T3(学生) | 3 | 768 | 3072 | 4400万 | 41% |
| T3-small(学生) | 3 | 384 | 1536 | 1700万 | 16% |
| T4-Tiny(学生) | 4 | 312 | 1200 | 1400万 | 13% |
| T12-nano(学生) | 12 | 256 | 1024 | 1700万 | 16% |
| BiGRU(学生) | - | 768 | - | 3100万 | 29% |
中文模型
| 模型 | 层数 | 隐藏层大小 | 前馈网络大小 | 参数量 | 相对大小 |
|---|---|---|---|---|---|
| RoBERTa-wwm-ext(教师) | 12 | 768 | 3072 | 1.02亿 | 100% |
| Electra-base(教师) | 12 | 768 | 3072 | 1.02亿 | 100% |
| T3(学生) | 3 | 768 | 3072 | 3800万 | 37% |
| T3-small(学生) | 3 | 384 | 1536 | 1400万 | 14% |
| T4-Tiny(学生) | 4 | 312 | 1200 | 1100万 | 11% |
| Electra-small(学生) | 12 | 256 | 1024 | 1200万 | 12% |
- T6 架构与 DistilBERT[1]、BERT6-PKD[2] 和 BERT-of-Theseus[3] 相同。
- T4-tiny 架构与 TinyBERT[4] 相同。
- T3 架构与 BERT3-PKD[2] 相同。
蒸馏配置
distill_config = DistillationConfig(temperature = 8, intermediate_matches = matches)
# 其他参数使用默认值
matches 根据不同模型有所不同:
| 模型 | matches |
|---|---|
| BiGRU | 无 |
| T6 | L6_hidden_mse + L6_hidden_smmd |
| T3 | L3_hidden_mse + L3_hidden_smmd |
| T3-small | L3n_hidden_mse + L3_hidden_smmd |
| T4-Tiny | L4t_hidden_mse + L4_hidden_smmd |
| T12-nano | small_hidden_mse + small_hidden_smmd |
| Electra-small | small_hidden_mse + small_hidden_smmd |
matches 的定义见 examples/matches/matches.py。
我们在所有蒸馏实验中均使用 GeneralDistiller。
训练配置
- 学习率均为 1e-4(除非另有说明)。
- 我们对所有模型训练 30~60 个 epoch。
英文数据集上的结果
我们在以下典型的英文数据集上进行了实验:
| 数据集 | 任务类型 | 指标 | 训练样本数 | 验证样本数 | 备注 |
|---|---|---|---|---|---|
| MNLI | 文本分类 | m/mm Acc | 39.3万 | 2万 | 句子对三分类 |
| SQuAD 1.1 | 阅读理解 | EM/F1 | 8.8万 | 1.1万 | 跨度抽取式机器阅读理解 |
| CoNLL-2003 | 序列标注 | F1 | 2.3万 | 6千 | 命名实体识别 |
我们将 DistilBERT、BERT-PKD、BERT-of-Theseus、TinyBERT 的公开结果以及我们的结果列在下表中以便比较。
公开结果:
| 模型(公开) | MNLI | SQuAD | CoNLL-2003 |
|---|---|---|---|
| DistilBERT(T6) | 81.6 / 81.1 | 78.1 / 86.2 | - |
| BERT6-PKD(T6) | 81.5 / 81.0 | 77.1 / 85.3 | - |
| BERT-of-Theseus(T6) | 82.4/ 82.1 | - | - |
| BERT3-PKD(T3) | 76.7 / 76.3 | - | - |
| TinyBERT(T4-tiny) | 82.8 / 82.9 | 72.7 / 82.1 | - |
我们的结果:
| 模型(我们) | MNLI | SQuAD | CoNLL-2003 |
|---|---|---|---|
| BERT-base-cased(教师) | 83.7 / 84.0 | 81.5 / 88.6 | 91.1 |
| BiGRU | - | - | 85.3 |
| T6 | 83.5 / 84.0 | 80.8 / 88.1 | 90.7 |
| T3 | 81.8 / 82.7 | 76.4 / 84.9 | 87.5 |
| T3-small | 81.3 / 81.7 | 72.3 / 81.4 | 78.6 |
| T4-tiny | 82.0 / 82.6 | 75.2 / 84.0 | 89.1 |
| T12-nano | 83.2 / 83.9 | 79.0 / 86.6 | 89.6 |
备注:
- 公开模型的等效结构已在名称后的括号中注明。
- 在蒸馏至 T4-tiny 时,SQuAD 使用 NewsQA 进行数据增强,CoNLL-2003 则使用 HotpotQA 进行数据增强。
- 在蒸馏至 T12-nano 时,CoNLL-2003 使用 HotpotQA 进行数据增强。
中文数据集上的结果
我们在以下典型的中文数据集上进行了实验:
| 数据集 | 任务类型 | 指标 | 训练样本数 | 验证样本数 | 备注 |
|---|---|---|---|---|---|
| XNLI | 文本分类 | 准确率 | 39.3万 | 2.5千 | MNLI 的中文翻译版本 |
| LCQMC | 文本分类 | 准确率 | 23.9万 | 8.8千 | 句子对匹配,二分类 |
| CMRC 2018 | 阅读理解 | EM/F1 | 1万 | 3.4千 | 跨度抽取式机器阅读理解 |
| DRCD | 阅读理解 | EM/F1 | 2.7万 | 3.5千 | 跨度抽取式机器阅读理解(繁体中文) |
| MSRA NER | 序列标注 | F1 | 4.5万 | 3.4千 (#测试) | 中文命名实体识别 |
结果如下所示。
| 模型 | XNLI | LCQMC | CMRC 2018 | DRCD |
|---|---|---|---|---|
| RoBERTa-wwm-ext (教师模型) | 79.9 | 89.4 | 68.8 / 86.4 | 86.5 / 92.5 |
| T3 | 78.4 | 89.0 | 66.4 / 84.2 | 78.2 / 86.4 |
| T3-small | 76.0 | 88.1 | 58.0 / 79.3 | 75.8 / 84.8 |
| T4-tiny | 76.2 | 88.4 | 61.8 / 81.8 | 77.3 / 86.1 |
| 模型 | XNLI | LCQMC | CMRC 2018 | DRCD | MSRA NER |
|---|---|---|---|---|---|
| Electra-base (教师模型) | 77.8 | 89.8 | 65.6 / 84.7 | 86.9 / 92.3 | 95.14 |
| Electra-small | 77.7 | 89.3 | 66.5 / 84.9 | 85.5 / 91.3 | 93.48 |
注:
- 在 CMRC 2018 和 DRCD 的蒸馏中未使用学习率衰减。
- CMRC 2018 和 DRCD 在蒸馏过程中互为增强数据集。
- Electra-base 教师模型的训练设置可在 Chinese-ELECTRA 中找到。
- Electra-small 学生模型使用 预训练权重 进行初始化。
核心概念
配置
TrainingConfig: 与通用深度学习模型训练相关的配置DistillationConfig: 与蒸馏方法相关的配置
蒸馏器
蒸馏器负责执行实际的实验。可用的蒸馏器如下:
BasicDistiller: 单教师单任务蒸馏,提供基本的蒸馏策略。GeneralDistiller(推荐): 单教师单任务蒸馏,支持中间特征匹配。大多数情况下推荐使用。MultiTeacherDistiller: 多教师蒸馏,将多个教师模型(同一任务)蒸馏到一个学生模型中。此类不支持中间特征匹配。MultiTaskDistiller: 多任务蒸馏,将多个教师模型(不同任务)蒸馏到一个学生模型中。BasicTrainer: 监督式训练单个模型于有标签数据集,不用于蒸馏。可用于训练教师模型。
用户自定义函数
在 TextBrewer 中,有两个需要用户实现的函数:回调函数和适配器。
回调函数
在每个检查点,保存学生模型之后,回调函数将由蒸馏器调用。回调函数可用于评估学生模型在每个检查点的表现。
适配器
它将模型的输入和输出转换为指定格式,以便蒸馏器能够识别,并计算蒸馏损失。在每个训练步骤中,批次和模型输出都会传递给适配器;适配器会重新组织数据并返回一个字典。
更多详细信息,请参阅 完整文档 中的说明。
常见问题解答
问: 如何初始化学生模型?
答: 学生模型可以随机初始化(即无先验知识),也可以使用预训练权重进行初始化。 例如,在将 BERT-base 模型蒸馏到 3 层 BERT 时,为了避免冷启动问题,可以使用 RBT3(针对中文任务)或 BERT 的前三层(针对英文任务)来初始化学生模型。 我们建议用户尽可能使用预训练的学生模型,以充分利用大规模预训练的优势。
问: 如何设置蒸馏实验的训练超参数?
答: 知识蒸馏通常比在有标签数据集上训练需要更多的训练轮次和更大的学习率。例如,使用 BERT-base 训练 SQuAD 通常需要 3 个轮次,学习率为 3e-5;而蒸馏则需要 30~50 个轮次,学习率为 1e-4。这些结论基于我们的实验,建议您根据自己的数据自行尝试。
问: 我的教师模型和学生模型输入不同(词汇表不一致),那我该如何进行蒸馏?
答: 您需要分别向教师和学生模型输入不同的批次数据。请参阅完整文档中的[为学生和教师输入不同批次数据,使用缓存值]部分。
问: 我已经存储了教师模型的 logits,能否在蒸馏中直接使用它们来节省前向传播时间?
答: 是的,请参阅完整文档中的[为学生和教师输入不同批次数据,使用缓存值]部分。
已知问题
目前多 GPU 训练仅通过DataParallel支持。- 不支持多标签分类。
引用
如果您觉得 TextBrewer 很有帮助,请引用我们的论文:
@InProceedings{textbrewer-acl2020-demo,
title = "{T}ext{B}rewer: {A}n {O}pen-{S}ource {K}nowledge {D}istillation {T}oolkit for {N}atural {L}anguage {P}rocessing",
author = "Yang, Ziqing and Cui, Yiming and Chen, Zhipeng and Che, Wanxiang and Liu, Ting and Wang, Shijin and Hu, Guoping",
booktitle = "Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics: System Demonstrations",
year = "2020",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2020.acl-demos.2",
pages = "9--16",
}
关注我们
关注我们的官方微信公众号,及时获取最新技术动态!

版本历史
v0.2.1.post12020/11/11v0.2.0.12020/08/24v0.2.02020/07/30v0.1.102020/07/16v0.1.92020/04/21v0.1.82020/03/11v0.1.72020/03/03常见问题
相似工具推荐
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 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。