浅谈宇宙最强开源大模型Llama3如何应用
北京时间4月19日凌晨,Meta公司通过其官网正式发布了Llama系列的最新一代开源大模型——Llama 3。

继Llama-1、Llama-2以及Code-Llama之后,Llama 3作为第三代模型,在关键基准测试上实现了全面领先,性能在当前同类开源模型中处于头部位置。
Llama大模型家族概述
Llama系列模型由Meta开发,核心思路是借助大参数规模和先进的Transformer架构,来应对复杂的语言任务。简单回顾一下这个家族的迭代路径:
- (2023年2月发布):包含7B、13B、30B和65B四个版本,是当时开源模型中性能最亮眼的产品之一。
Llama-1系列
- (2023年7月发布):推出7B、13B、34B和70B四个版本。
Llama-2系列
- (2023年8月发布):同样覆盖7B、13B、34B和70B四个版本,聚焦代码生成场景。
Code-Llama
- (2024年4月发布):率先推出8B和70B两个版本,而400B的超大版本还在训练中,性能表现极为出色。
Llama-3系列
从Llama-1到Llama-3,每一代都在性能和应用边界上实现了显著跨越。
Llama 3技术特性
作为Meta在2024年推出的最新开源大模型,Llama 3继承了前代的技术优势,同时在模型架构、预训练数据、扩展预训练和指令微调四个方面做了关键升级。
模型架构
Llama 3沿用了一种相对传统的纯解码器架构,也就是基于Transformer的设计。但与Llama 2相比,它在几个关键点上做了优化:
- :引入了128K标记的分词器,词汇表规模大幅增加,这让模型能更精准地编码语言信息,性能提升显著。
分词器和词汇表
- :8B和70B两个版本都应用了GQA机制。这是对自注意力的一种优化,能有效提升处理长距离依赖时的推理效率。
分组查询注意力(GQA)
- :模型在8192个令牌的序列上进行训练,并通过掩码机制确保自注意力不会跨越文档边界,这样在长文本处理上表现更佳。
序列长度与自注意力
预训练数据
顶尖语言模型离不开高质量的海量数据。Llama 3的预训练基于超过15万亿令牌的数据,全部来自公开渠道,数据规模是上一代的7倍。
数据构成上,超过5%是非英语内容,覆盖了30多种语言。为了确保数据质量,Meta打造了一套严格的过滤流程,包括启发式过滤器、NSFW内容过滤器、语义去重技术,以及用于预判数据质量的文本分类器。有趣的是,这些文本质量分类器的训练数据,本身就是用Llama 2生成的。
在数据融合策略上,Llama 3对不同来源的数据做了最优化组合,确保在琐事问答、STEM、编程、历史知识等各种场景下都能稳定发挥。
扩展预训练
一个值得注意的现象是:Llama 3在训练数据量增加后,性能依然持续提升,甚至超越了Chinchilla法则所推荐的最优训练数据量。
在并行化策略上,它结合了数据并行、模型并行和流水线并行三种方式。训练框架和存储系统的优化使得GPU利用率大幅提高,训练效率比前代提升了三倍,同时也保证了训练的稳定性。
指令微调
在微调方法上,Llama 3采用了多种技术的组合:监督微调(SFT)、拒绝抽样、近端策略优化(PPO)和直接偏好优化(DPO),从而让模型更好地遵循指令。
Llama 3大模型微调
LlamaFactory已经原生支持Llama 3,并发布了基于Colab的微调实战案例。项目主页在GitHub上,核心流程如下:
安装LLaMA Factory依赖
%cd /content/ %rm -rf LLaMA-Factory !git clone https://github.com/hiyouga/LLaMA-Factory.git %cd LLaMA-Factory %ls !pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git" !pip install --no-deps xformers==0.0.25 !pip install .[bitsandbytes]
检查GPU环境
import torch
try:
assert torch.cuda.is_a vailable() is True
except AssertionError:
print("ERROR, 需要 GPU 环境")
更新自我认知数据集
import json
%cd /content/LLaMA-Factory/
NAME = "Llama-Chinese"
AUTHOR = "LLaMA Factory"
with open("data/identity.json", "r", encoding="utf-8") as f:
dataset = json.load(f)
for sample in dataset:
sample["output"] = sample["output"].replace("NAME", NAME).replace("AUTHOR", AUTHOR)
with open("data/identity.json", "w", encoding="utf-8") as f:
json.dump(dataset, f, indent=2, ensure_ascii=False)
模型训练
from llmtuner import run_exp
from llmtuner.extras.misc import torch_gc
%cd /content/LLaMA-Factory/
run_exp(dict(
stage="sft",
do_train=True,
model_name_or_path="unsloth/llama-3-8b-Instruct-bnb-4bit",
dataset="identity,alpaca_gpt4_en,alpaca_gpt4_zh",
template="llama3",
finetuning_type="lora",
lora_target="all",
output_dir="llama3_lora",
per_device_train_batch_size=2,
gradient_accumulation_steps=4,
lr_scheduler_type="cosine",
logging_steps=10,
warmup_ratio=0.1,
sa ve_steps=1000,
learning_rate=5e-5,
num_train_epochs=3.0,
max_samples=300,
max_grad_norm=1.0,
quantization_bit=4,
loraplus_lr_ratio=16.0,
use_unsloth=True,
fp16=True,
))
torch_gc()
模型推理
from llmtuner import ChatModel
from llmtuner.extras.misc import torch_gc
%cd /content/LLaMA-Factory/
chat_model = ChatModel(dict(
model_name_or_path="unsloth/llama-3-8b-Instruct-bnb-4bit",
adapter_name_or_path="llama3_lora",
finetuning_type="lora",
template="llama3",
quantization_bit=4,
use_unsloth=True,
))
messages = []
while True:
query = input("nUser: ")
if query.strip() == "exit":
break
if query.strip() == "clear":
messages = []
torch_gc()
print("History has been removed.")
continue
messages.append({"role": "user", "content": query})
print("Assistant: ", end="", flush=True)
response = ""
for new_text in chat_model.stream_chat(messages):
print(new_text, end="", flush=True)
response += new_text
print()
messages.append({"role": "assistant", "content": response})
torch_gc()
Llama 3的大模型测评
Llama 3的8B和70B参数版本,相比Llama 2是一个巨大飞跃,在这两个规模上建立了新的技术标杆。无论是预训练模型还是指令微调模型,它都是当前8B和70B尺度下表现最好的选择。
在多个基准测试中,Llama 3展现了卓越性能。Meta公司在研究标准基准测试的同时,也针对真实场景做了针对性优化,开发了一套新的高质量人工评估集。这套评估集包含1800个提示,覆盖12个关键用例:寻求建议、头脑风暴、分类、封闭式问答、编码、创意写作、提取、角色扮演、开放式问答、推理、重写和总结。
在与Claude Sonnet、Mistral Medium和GPT-3.5的人工评估对比中,Llama 3的预训练模型表现领先。尤其是70B指令遵循模型,在人类评估中的偏好得分非常突出,同体量竞品几乎难以匹敌。此外,Llama 3在推理、代码生成等任务上的改进也相当明显,让模型变得更可控、更可靠。
基础预训练模型在多个评测基准上的表现,相较Llama 2和早期Llama系列,性能大幅提升。指令微调模型的评测表现同样可圈可点。
Llama 3部署与应用
Meta AI:基于Llama 3构建
Meta AI现在是可以免费使用的最智能的AI助手,适用于各种场景。你可以在Feed、聊天、搜索等应用中使用它来完成工作、获取实时信息。图像生成速度也更快,比如为乐队做专辑插图、公寓装饰灵感、自定义GIF动画等。
在线体验
体验地址如下:
- HuggingFace:https://huggingface.co/chat/
- Replicate:
- 8B模型:https://replicate.com/meta/meta-llama-3-8b
- 70B模型:https://replicate.com/meta/meta-llama-3-70b
本地部署
Ollama是一个开源的大模型服务工具,可以让用户在本地运行和部署模型。Llama 3的本地部署可以通过Ollama轻松实现。基本步骤如下:
- :从官网(https://ollama.com/download)获取命令或脚本安装。
安装Ollama
- :运行
下载Llama 3模型
ollama pull llama3:8b拉取权重。 - :通过Ollama启动,输入指令测试,例如“你好!请中文回复”。
运行模型
- :为获得更好的交互体验,可结合open-webui构建用户友好的界面:
Web UI集成
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
未来展望
Meta计划发布更多具有新功能的模型,包括多模态能力、支持多种语言对话、更长的上下文窗口,以及更强大的整体性能。先一睹为快——Llama 3的发布,只是一个开始。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名