Bonito 项目介绍
Bonito 是一个开源项目,旨在生成用于指令微调的任务特定训练数据集。简单来说,它帮助我们将没有标注的文本转化为可以用来训练模型的数据集。这一特性对那些需要在大量任务之间转化的应用特别有用,比如问答系统、文本生成等。
项目背景
Bonito 建立在 Hugging Face 的 transformers
和 vllm
库的基础上,为用户提供了一个轻量级的库,可以轻松地创建合成数据集。这个项目的核心是一个名为 Bonito 的模型,具体详情可参考以下链接:
- 论文: 学习生成无监督任务适配的指令微调数据集
- 模型: bonito-v1
- 演示: Bonito 展示
- 数据集: ctga-v1
- 代码仓库: 实验复现可参考 nayak-aclfindings24-code
重要资讯
- 🐡 2024年8月,发布新 Bonito 模型 Llama-3.1-8B-bonito-v1。
- 🐟 2024年6月,Bonito 入选 ACL Findings 2024。
安装指南
用户可以通过以下命令创建环境并安装 Bonito 软件包:
conda create -n bonito python=3.9
conda activate bonito
pip install -e .
基本使用方法
Bonito 提供了一种简单的方法来生成合成指令微调数据集。以下代码演示了如何使用 Bonito:
from bonito import Bonito
from vllm import SamplingParams
from datasets import load_dataset
# 初始化 Bonito 模型
bonito = Bonito("BatsResearch/bonito-v1")
# 加载带有未标注文本的数据集
unannotated_text = load_dataset(
"BatsResearch/bonito-experiment",
"unannotated_contract_nli"
)["train"].select(range(10))
# 生成合成指令微调数据集
sampling_params = SamplingParams(max_tokens=256, top_p=0.95, temperature=0.5, n=1)
synthetic_dataset = bonito.generate_tasks(
unannotated_text,
context_col="input",
task_type="nli",
sampling_params=sampling_params
)
支持的任务类型
Bonito 支持多种任务类型,用户可以使用全名或缩写输入任务类型,包括但不限于:
- 抽取式问答(exqa)
- 多选问答(mcqa)
- 问题生成(qg)
- 无选择问答(qa)
- 是非问答(ynqa)
- 共指消解(coref)
- 意图生成(paraphrase)
- 意图识别(paraphrase_id)
- 句子完成(sent_comp)
- 情感分析(sentiment)
- 摘要生成(summarization)
- 文本生成(text_gen)
- 主题分类(topic_class)
- 词义消歧(wsd)
- 文本蕴涵(te)
- 自然语言推理(nli)
教程资源
为了帮助用户更好地使用 Bonito,我们提供了一些教程:
引用信息
如果在研究中使用 Bonito,请引用以下论文:
@inproceedings{bonito:aclfindings24,
title = {Learning to Generate Instruction Tuning Datasets for Zero-Shot Task Adaptation},
author = {Nayak, Nihal V. and Nan, Yiyang and Trost, Avi and Bach, Stephen H.},
booktitle = {Findings of the Association for Computational Linguistics: ACL 2024},
year = {2024}}
Bonito 项目为自然语言处理任务的自动化和高效生成提供了新的可能性,是数据科学家和工程师提升模型普适性的重要工具。