Tess-v2.5 (Qwen2-72B) 是基于新发布的 Qwen2-72B 基础调整,使用了包含 30 万个样本的 Tess-v2.5 数据集,这些样本涉及多个主题。
93 次拉取请求 更新于 2 个月前
更新于 2 个月前
2 个月前
e4d7302b81bd · 47GB
README
原始模型文件可在此处找到。
Tess-v2.5 (Qwen2-72B)
我们创建了 Tess-v2.5,这是 Tesoro 系列大型语言模型 (LLM) 中的最新最先进模型。Tesoro 是意大利语中的“宝藏”,是 Migel Tissera 创建的旗舰 LLM 系列。Tess-v2.5 在推理能力、编码能力和数学方面带来了显著的改进。目前,在 MMLU(大量多任务语言理解)评估中,它是排名第一的开源权重模型。它在 Qwen2-72B-Instruct、Llama3-70B-Instruct、Mixtral-8x22B-Instruct 和 DBRX-Instruct 等其他所有开源权重模型上都得分更高。此外,在 MMLU 评估中,Tess-v2.5 (Qwen2-72B) 模型甚至优于前沿的闭源模型 Gemini-1.0-Ultra、Gemini-1.5-Pro、Mistral-Large 和 Claude-3-Sonnet。
Tess-v2.5 (Qwen2-72B) 是在新发布的 Qwen2-72B 基础上微调的,使用了包含 30 万个样本的 Tess-v2.5 数据集,这些样本涉及包括商业和管理、市场营销、历史、社会科学、艺术、STEM 学科和计算机编程在内的多个主题。该数据集使用 Sensei 框架和多个前沿模型(如 GPT-4-Turbo、Claude-Opus 和 Mistral-Large)合成生成。
在 AGIEval(Nous)子集上的评估中,此模型与首席之父 GPT-4-0314 模型相比也表现非常出色。
训练过程
通过使用Qwen2-72B的基础权重启动Tess-v2.5模型,随后使用Tess-v2.5数据集进行微调,其中Axolotl作为训练框架。大多数Tess模型遵循一个常见的微调方法:低学习率、低迭代次数和采用极高质量和多样化的数据。该模型在微软Azure的4xA100 VM上进行了4天的训练。该模型尚未与RLHF或DPO对齐。
作者认为,模型的能力似乎主要来自于预训练过程。这是Tess模型每次微调的基础,作者认为保持基础模型的熵非常重要。
评估结果
Tess-v2.5模型是一个整体平衡良好的模型。与该模型相关的所有评估结果均可通过Evals文件夹访问。
完整的评估比较表可以在以下位置访问:Google Spreadsheet
MMLU(大规模多任务语言理解)
AGIEval
运行推理的示例代码
请注意,此模型使用ChatML提示格式。
import torch, json
from transformers import AutoModelForCausalLM, AutoTokenizer
from stop_word import StopWordCriteria
model_path = "migtissera/Tess-v2.5-Qwen2-72B"
output_file_path = "/home/migel/conversations.jsonl"
model = AutoModelForCausalLM.from_pretrained(
model_path,
torch_dtype=torch.float16,
device_map="auto",
load_in_4bit=False,
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
terminators = [
tokenizer.convert_tokens_to_ids("<|im_end|>")
]
def generate_text(instruction):
tokens = tokenizer.encode(instruction)
tokens = torch.LongTensor(tokens).unsqueeze(0)
tokens = tokens.to("cuda")
instance = {
"input_ids": tokens,
"top_p": 1.0,
"temperature": 0.75,
"generate_len": 1024,
"top_k": 50,
}
length = len(tokens[0])
with torch.no_grad():
rest = model.generate(
input_ids=tokens,
max_length=length + instance["generate_len"],
use_cache=True,
do_sample=True,
top_p=instance["top_p"],
temperature=instance["temperature"],
top_k=instance["top_k"],
num_return_sequences=1,
pad_token_id=tokenizer.eos_token_id,
eos_token_id=terminators,
)
output = rest[0][length:]
string = tokenizer.decode(output, skip_special_tokens=True)
return f"{string}"
conversation = f"""<|im_start|>system\nYou are Tesoro, a helful AI assitant. You always provide detailed answers without hesitation.<|im_end|>\n<|im_start|>user\n"""
while True:
user_input = input("You: ")
llm_prompt = f"{conversation}{user_input}<|im_end|>\n<|im_start|>assistant\n"
answer = generate_text(llm_prompt)
print(answer)
conversation = f"{llm_prompt}{answer}\n"
json_data = {"prompt": user_input, "answer": answer}
with open(output_file_path, "a") as output_file:
output_file.write(json.dumps(json_data) + "\n")
加入我的通用人工智能Discord(NeuroLattice)
限制与偏差
虽然这个模型旨在提高精度,但它有时可能会产生不准确或误导性结果。
尽管对预训练数据进行过仔细的优化,仍有可能生成不适当、有偏见或冒犯性内容。
在必要时请谨慎并交叉验证信息。这是一个未经审查的模型。