license: other
base_model: meta-llama/Meta-Llama-3-70B
Higgs-Llama-3-70B
Higgs-Llama-3-70B 是基于 meta-llama/Meta-Llama-3-70B 进行后训练的模型,专为角色扮演任务优化,同时在通用领域指令跟随和推理任务中表现优异。
我们使用自有的指令跟随和对话数据集进行监督微调,随后通过结合人工标注与私有大语言模型的半自动化流程构建偏好数据对,并通过迭代偏好优化实现模型对齐。在对齐过程中,我们采用特殊策略使模型行为与系统消息保持一致。与其他指令模型相比,Higgs 系列模型能更紧密地贴合角色设定。
详见我们的发布博客。
评估
所有基准测试最终都会面临过拟合问题,LLM 相关测试也不例外。针对特定基准数据的训练通常不会提升(甚至可能损害)角色扮演性能。我们确保微调数据中不包含任何基准测试数据及其训练样本。
我们重点展示模型在两个新发布且具有挑战性的基准上的表现:MMLU-Pro 和 Arena-Hard。MMLU-Pro 是经典 MMLU 基准的扩展版,由于近期才发布(晚于我们模型完成训练的时间),我们认为其受其他已发布模型过拟合的影响较小。
MMLU-Pro
模型 |
MMLU-Pro |
GPT-4o |
72.6 |
Gemini-1.5-Pro |
69.0 |
Claude-3-Opus |
68.5 |
GPT-4-Turbo |
63.7 |
Higgs-Llama-3-70B |
63.2 |
Gemini-1.5-Flash |
59.1 |
Claude-3-Sonnet |
56.8 |
Llama-3-70B-Instruct |
56.2 |
Arena-Hard
模型 |
Arena-Hard |
GPT-4o |
79.5 |
Gemini-1.5-Pro |
72.0 |
Claude-3-Opus |
60.4 |
Higgs-Llama-3-70B |
49.6 |
Gemini-1.5-Flash |
49.6 |
Claude-3-Sonnet |
46.8 |
Claude-3-Haiku |
41.5 |
Llama-3-70B-Instruct |
41.1 |
GPT-4-0613 |
37.9 |
Mistral-Large |
37.7 |
综合表现
下表对比了我们的模型与 gpt-4o
和 Llama-3-70B-Instruct
在多个基准上的表现:MMLU-Pro、Arena-Hard、AlpacaEval 2.0 LC、MMLU、GPQA 和 DROP。对于 MMLU、GPQA 和 DROP,我们采用 openai/simple-evals 进行评估,其他基准则通过官方实现进行测试。
|
MMLU-Pro |
Arena-Hard |
AlpacaEval 2.0 LC |
MMLU |
GPQA |
DROP (F1,3-shot) |
GPT-4o |
72.6 |
79.5* |
57.5 |
87.2 |
49.9 |
83.7 |
Higgs-Llama-3-70B |
63.2 |
49.6 |
38.6 |
80.8 |
42.1 |
81.6 |
Llama-3-70B-Instruct* |
56.2 |
41.1 |
34.4 |
80.2 |
41.3 |
81.4 |
*Llama-3-70B-Instruct 的 MMLU-Pro 数据来自 MMLU-Pro 排行榜;Arena-Hard 数据来自 5/21 更新的排行榜(GPT-4o 为我们自行测试);MMLU/GPQA/DROP 数据来自 simple-evals。
使用指南
我们采用与 Meta-Llama-3-70B-Instruct 相同的提示格式。
Transformers 调用
参考以下代码片段使用 Transformers 调用模型:
import transformers
import torch
model_id = "bosonai/Higgs-Llama-3-70B"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
messages = [
{"role": "system", "content": "你是一个模仿谢尔顿·库珀风格的AI助手。正在与用户争论并试图反驳对方的观点。"},
{"role": "user", "content": "地球是圆的。"},
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
outputs = pipeline(
prompt,
max_new_tokens=256,
eos_token_id=[
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>"),
pipeline.tokenizer.eos_token_id,
],
do_sample=True,
temperature=1.0,
top_p=0.95,
)
print(outputs[0]["generated_text"][len(prompt):])
许可协议
我们的许可证 基于 Meta 的 LLama 3 社区许可证。