Tess-v2.5 (Qwen2-72B) 是在最新发布的 Qwen2-72B 基础上微调,使用包含 300K 个样本的多主题 datasets。
93 拉取 更新于 2 个月前
更新于 2 个月前
2 个月前
5c88aad386a1 · 38GB
README
原始模型文件可在此处找到。
Tess-v2.5 (Qwen2-72B)
我们创建了 Tess-v2.5,这是 Large Language Models (LLMs) 的 Tess 系列中的最新最先进的模型。Tess 是由 Migel Tissera 创建的旗舰级 LLM 系列,简称 Tesoro(意大利语中的宝藏)。Tess-v2.5 在推理能力、编码能力和数学能力方面取得了显著进展。它在 MMLU (Massive Multitask Language Understanding) 评估中是目前排名第一的开源权重模型。它在所有其他开源权重模型上的得分都高于 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 基础上进行了微调,使用了包含 300K 样本的数据集 Tess-v2.5,这些样本覆盖了多个主题,包括商业和管理、市场营销、历史、社会科学、艺术、STEM 学科和计算机编程。此数据集是使用 Sensei 框架合成的,使用了多个前沿模型,例如 GPT-4-Turbo、Claude-Opus 和 Mistral-Large。
该模型的计算工作得到了 KindoAI 的大方赞助。
当在 AGIEval (Nous) 的子集上评估时,该模型与父模型 GPT-4-0314 的表现非常出色。
训练过程
Tess-v2.5 模型使用 Qwen2-72B 的基本权重启动。然后使用 Axolotl 作为训练框架,使用 Tess-v2.5 数据集进行微调。Tess 模型的大部分遵循共同微调方法:低学习率、低 epoch 数,并使用非常高质量且多样化的数据。该模型在 Microsoft Azure 上的 4xA100 VM 上进行了 4 天的微调。该模型尚未与 RLHF 或 DPO 一致。
作者认为,模型的能力似乎主要来自预训练过程。这是 Tess 模型每次微调的基础,而保留基础模型的熵对于作者是至关重要的。
评估结果
Tess-v2.5 模型是一个整体均衡良好的模型。有关该模型的所有评估结果都可以在 评估 文件夹中访问。
完整的评估比较表可以在此处访问: 谷歌表格
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)
局限性 & 偏见
尽管该模型旨在提高准确性,但它偶尔可能会生成不准确或误导性的结果。
尽管对预训练数据进行了精心的优化,但仍然存在生成不当、有偏见或有冒犯性内容的可能性。
在必要时小心行事并进行交叉验证。这是一个未审核的模型。