首页 > 教程攻略 > ai资讯 >浅谈宇宙最强开源大模型Llama3如何应用

浅谈宇宙最强开源大模型Llama3如何应用

来源:互联网 时间:2026-08-03 13:54:19

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

浅谈宇宙最强开源大模型Llama3如何应用

继Llama-1、Llama-2以及Code-Llama之后,Llama 3作为第三代模型,在关键基准测试上实现了全面领先,性能在当前同类开源模型中处于头部位置。

Llama大模型家族概述

Llama系列模型由Meta开发,核心思路是借助大参数规模和先进的Transformer架构,来应对复杂的语言任务。简单回顾一下这个家族的迭代路径:

  • Llama-1系列

    (2023年2月发布):包含7B、13B、30B和65B四个版本,是当时开源模型中性能最亮眼的产品之一。
  • Llama-2系列

    (2023年7月发布):推出7B、13B、34B和70B四个版本。
  • Code-Llama

    (2023年8月发布):同样覆盖7B、13B、34B和70B四个版本,聚焦代码生成场景。
  • Llama-3系列

    (2024年4月发布):率先推出8B和70B两个版本,而400B的超大版本还在训练中,性能表现极为出色。

从Llama-1到Llama-3,每一代都在性能和应用边界上实现了显著跨越。

Llama 3技术特性

作为Meta在2024年推出的最新开源大模型,Llama 3继承了前代的技术优势,同时在模型架构、预训练数据、扩展预训练和指令微调四个方面做了关键升级。

模型架构

Llama 3沿用了一种相对传统的纯解码器架构,也就是基于Transformer的设计。但与Llama 2相比,它在几个关键点上做了优化:

  • 分词器和词汇表

    :引入了128K标记的分词器,词汇表规模大幅增加,这让模型能更精准地编码语言信息,性能提升显著。
  • 分组查询注意力(GQA)

    :8B和70B两个版本都应用了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 环境")

更新自我认知数据集

(可自由修改 NAME 和 AUTHOR)

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)

模型训练

(微调过程大约需要30分钟)

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轻松实现。基本步骤如下:

  1. 安装Ollama

    :从官网(https://ollama.com/download)获取命令或脚本安装。
  2. 下载Llama 3模型

    :运行 ollama pull llama3:8b 拉取权重。
  3. 运行模型

    :通过Ollama启动,输入指令测试,例如“你好!请中文回复”。
  4. Web UI集成

    :为获得更好的交互体验,可结合open-webui构建用户友好的界面: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的发布,只是一个开始。