项目介绍:Meta-Llama-3-8B-Instruct-llamafile
项目背景
Meta-Llama-3-8B-Instruct-llamafile项目由Meta公司开发,是一款预训练和指令调优的大型语言模型(LLM),具有生成文本和代码的能力。本项目重点是对话场景,优化了模型的帮助性和安全性。这一项目中的模型在许多开放源代码的聊天模型中表现优异,适用于商业及研究目的。
模型详情
- 开发者:Meta
- 模型版本:8B和70B两种型号
- 输入输出:输入仅为文本,输出为生成的文本和代码
- 模型架构:使用优化的自回归变压器架构,结合监督微调(SFT)和人类反馈的强化学习(RLHF)
模型训练
Llama 3系列模型是在型号为H100-80GB且功率消耗为700W的硬件上进行训练的。这些模型在公共数据上进行了超过15万亿个token的预训练,还进行了使用人类标注数据和公共指令数据进行的微调。训练期间所产生的二氧化碳排放量已经完全由Meta的可持续发展计划抵消。
llamafile介绍
llamafile是Mozilla Ocho于2023年11月20日推出的一种新文件格式,使用Cosmopolitan Libc将LLM权重转换为可运行的llama.cpp二进制文件。此二进制文件可以在多个系统(如Linux、MacOS、Windows等)上运行,支持AMD64和ARM64架构。
快速入门
Meta-Llama-3-8B-Instruct-llamafile支持多操作系统的运行。只需在桌面操作系统上运行以下命令即可启动聊天界面:
chmod +x Meta-Llama-3-8B-Instruct.Q4_0.llamafile
./Meta-Llama-3-8B-Instruct.Q4_0.llamafile -ngl 9999
使用方法
与Transformers一起使用
可以使用Transformers的流水线抽象进行对话推理,或者利用Auto类与generate()
函数结合使用。
以下是Transformers流水线的一段示例代码:
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device="auto",
)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
pipeline.tokenizer.eos_token_id,
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = pipeline(
prompt,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])
责任与安全
Meta致力于责任AI的开发,更新了《responsible use guide》,指导开发者如何在应用中实现系统级安全。针对指令调优的模型,Meta进行了广泛的风险评估,实施了多种安全缓解技术。
通过提供Meta Llama Guard 2等安全工具,Meta希望帮助开发者有效降低系统风险。开发者可以根据需要对这些安全工具进行调整和部署,并可以参考Meta提供的示例代码开始使用。
总结
Meta-Llama-3-8B-Instruct-llamafile项目展示了大型语言模型在生成文本和代码方面的强大能力,尤其是对话优化和安全特性。通过开放源代码和责任AI的原则,该项目不仅推动了技术的进步,也为开发者和研究人员提供了安全、可靠的工具。