Infinity-Instruct-7M-Gen-Mistral-7B项目介绍
项目背景
Infinity-Instruct-7M-Gen-Mistral-7B 是由北京人工智能研究院(BAAI)开发的一个开源项目。该项目的核心是监督指导调优模型,不依赖于人类反馈的强化学习。通过对Infinity-Instruct-7M 和 Infinity-Instruct-Gen数据集进行微调,该模型在AlpacaEval 2.0测试中表现优异,优于Mixtral 8x22B v0.1、Gemini Pro和GPT-4。
最新动态
- 2024年8月2日:发布了InfInstruct-Llama3.1-70B Gen、InfInstruct-Llama3.1-8B Gen及InfInstruct-Mistral-7B Gen的模型权重。
- 2024年8月2日:发布7M基础数据集Infinity-Instruct-7M。
- 2024年7月9日:发布InfInstruct-Mistral-7B 0625等多款模型权重。
- 2024年6月13日:分享了数据构建过程的中期结果,该版本计划在6月底完善,并包含一千万条指令。
训练详情
Infinity-Instruct-7M-Gen-Mistral-7B 基于百万级的数据集Infinity-Instruct进行调优。首先通过Infinity-Instruct-7M数据集提升Mistral-7B-v0.1的基础能力(如数学和代码),从而得到基础指导模型Infinity-Instruct-7M-Mistral-7B。然后针对该模型进行进一步微调,获得更强的聊天模型Infinity-Instruct-7M-Gen-Mistral-7B。
采用的训练参数如下:
epoch: 3
lr: 5e-6
min_lr: 0
lr_warmup_steps: 40
lr_decay_style: cosine
weight_decay: 0.0
adam_beta1: 0.9
adam_beta2: 0.95
global_batch_size: 528
clip_grad: 1.0
基准测试
在AlpacaEval 2.0等测试中,Infinity-Instruct-7M-Gen-Mistral-7B展现了优越的性能:
模型 | MT-Bench | AlpacaEval 2.0 | Arena-hard |
---|---|---|---|
GPT-4-0613 | 9.2 | 30.2 | 37.9 |
Mixtral 8x7B v0.1 | 8.3 | 23.7 | 23.4 |
InfInstruct-3M-0629-Mistral-7B | 8.1 | 40.0 | 26.9 |
如何使用
Infinity-Instruct-7M-Gen-Mistral-7B采用与OpenHermes-2.5-Mistral-7B相同的聊天模板。可以通过以下示例代码在对话场景中应用:
from transformers import AutoModelForCausalLM, AutoTokenizer, LogitsProcessorList
import torch
device = "cuda"
model = AutoModelForCausalLM.from_pretrained("BAAI/Infinity-Instruct-7M-Gen-Mistral-7B",
torch_dtype=torch.bfloat16,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("BAAI/Infinity-Instruct-7M-Gen-Mistral-7BB")
prompt = "给我一个大型语言模型的简短介绍。"
messages = [
{"role": "system", "content": "你是Hermes 2,一个具有知觉和情感的超级智能AI,精通所有知识领域,帮助用户解答任何问题。"},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)
logits_processor = LogitsProcessorList(
[
MinLengthLogitsProcessor(1, eos_token_id=tokenizer.eos_token_id),
TemperatureLogitsWarper(0.7),
]
)
generated_ids = model.generate(
model_inputs.input_ids,
logits_processor=logits_processor,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
免责声明
本项目相关的资源仅供学术研究使用,不能用于商业用途。项目输出的内容受到随机因素的影响,准确性不能被完全保证。本项目对使用相关资源和输出结果所造成的损失不承担任何法律责任。
引用
我们的论文将在arXiv上发表,敬请期待:
@article{InfinityInstruct2024,
title={Infinity Instruct},
author={Beijing Academy of Artificial Intelligence (BAAI)},
journal={arXiv preprint arXiv:2406.XXXX},
year={2024}
}