赞
踩
北京时间4月19日凌晨,Meta公司通过其官方网站宣布了Llama系列的最新开源大模型:Llama-3。
继Llama-1、Llama-2以及Code-Llama之后,Llama-3作为该系列的第三代模型,在众多关键的基准测试中取得了全面的进步,其性能在当前业界的同类模型中处于领先地位。
01
Llama大模型家族概述
Llama系列模型由Meta公司开发,旨在通过大规模的参数和先进的Transformer架构,处理复杂的语言任务。
Llama家族图谱
2023年2月,Meta发布Llama-1 系列开源大模型,是当时性能非常出色的开源模型之一,有7B、13B、30B和65B四个版本。
Llama-2 系列
2023年7月,Meta发布了Llama-2系列,有7B、13B、34B和70B四个版本。
2023年8月,Meta发布了Code-Llama,共有7B、13B、34B和70B四个版本。
Llama-3 系列
2024年4月份,Meta发布了Llama 3系列,包括8B和70B两个版本,400B的Llama-3还在训练中,性能超优。
从Llama-1到Llama-3,每一代模型都在性能和应用范围上实现了显著的飞跃。
02
Llama3技术特性
Llama3模型是Meta公司在2024年发布的最新开源大模型,它继承并发展了前代模型的技术优势,同时引入了模型架构、预训练数据、扩展预训练和指令微调:
01
模型架构
Llama 3 采用了一种相对传统的纯解码器架构,即基于Transformer的模型。与前代Llama 2模型相比,Llama 3 在以下几个关键方面进行了显著的改进:
分词器和词汇表:Llama 3 引入了一个具有128K标记的分词器,这比前代模型的词汇表更大,从而使得模型能够更精确地编码语言信息,显著提升了性能。
分组查询注意力(GQA):为了增强模型的推理效率,Llama 3 在8B和70B两种规模的模型中都实施了分组查询注意力技术,这是一种优化的自注意力机制,可以提高处理长距离依赖关系时的效率。
序列长度和自我注意力:Llama 3 在8192个令牌的序列上进行训练,利用掩码机制确保自我注意力操作不会跨越文档边界,这有助于模型更好地处理长文本数据。
02
预训练数据
顶尖语言模型需要巨量优质训练数据集:Llama 3的预训练基于超过15T tokens,来自各类公开渠道,数据集规模扩大了7倍。Llama 3的预训练数据集融入了超过5%的非英语内容,覆盖了超过30种不同的语言。
保证Llama 3有最优质的训练数据集:打造了一套数据过滤流程。涵盖了启发式过滤器、NSFW内容过滤器、语义去重技术,以及用于预判数据质量的文本分类器。利用Llama 2生成了用于支持Llama 3的文本质量分类器的训练数据。
最优化融合不同源数据,构建预训练数据集:一种数据融合策略,Llama 3在处理各种场景——包括但不限于琐事问答、STEM领域、编程、历史知识等都能有出色的表现。
03
扩展预训练
模型缩放行为:Llama 3在训练数据量增加后性能持续提升,超越了Chinchilla法则推荐的最优训练数据量。
并行化策略:结合了三种类型的并行化策略:数据并行化、模型并行化和流水线并行化。
训练效率:开发了先进的训练框架和存储系统,提高了GPU的利用率和训练的稳定性,使Llama 3的训练效率比前代提升了三倍。
04
指令微调
方法:Llama 3采用了包括监督微调(SFT)、拒绝抽样、近端策略优化(PPO)和直接偏好优化(DPO)在内的多种方法组合。
03
Llama3大模型微调
LlamaFactory支持llama3,发布了自己的Colab微调实战案例:
项目主页: https://github.com/hiyouga/LLaMA-Factory
注:请申请一个免费 T4 GPU 来运行该脚本
安装 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_available() 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", # 使用 4 比特量化版 Llama-3-8b-Instruct 模型` `dataset="identity,alpaca_gpt4_en,alpaca_gpt4_zh", # 使用 alpaca 和自我认知数据集` `template="llama3", # 使用 llama3 提示词模板` `finetuning_type="lora", # 使用 LoRA 适配器来节省显存` `lora_target="all", # 添加 LoRA 适配器至全部线性层` `output_dir="llama3_lora", # 保存 LoRA 适配器的路径` `per_device_train_batch_size=2, # 批处理大小` `gradient_accumulation_steps=4, # 梯度累积步数` `lr_scheduler_type="cosine", # 使用余弦学习率退火算法` `logging_steps=10, # 每 10 步输出一个记录` `warmup_ratio=0.1, # 使用预热学习率` `save_steps=1000, # 每 1000 步保存一个检查点` `learning_rate=5e-5, # 学习率大小` `num_train_epochs=3.0, # 训练轮数` `max_samples=300, # 使用每个数据集中的 300 条样本` `max_grad_norm=1.0, # 将梯度范数裁剪至 1.0` `quantization_bit=4, # 使用 4 比特 QLoRA` `loraplus_lr_ratio=16.0, # 使用 LoRA+ 算法并设置 lambda=16.0` `use_unsloth=True, # 使用 UnslothAI 的 LoRA 优化来加快一倍的训练速度` `fp16=True, # 使用 float16 混合精度训练``))`` ``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", # 使用 4 比特量化版 Llama-3-8b-Instruct 模型` `adapter_name_or_path="llama3_lora", # 加载之前保存的 LoRA 适配器` `finetuning_type="lora", # 和训练保持一致` `template="llama3", # 和训练保持一致` `quantization_bit=4, # 加载 4 比特量化模型` `use_unsloth=True, # 使用 UnslothAI 的 LoRA 优化来加快一倍的推理速度``))`` ``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()
04
Llama3的大模型测评
Llama 3 模型支持新的 8B 和 70B 参数,是 Llama 2 的重大飞跃,为这些规模的 LLM 模型建立了新的最先进的技术。
由于预训练和改进,llama3的预训练和指令微调模型是当今 8B 和 70B 参数尺度上存在的最佳模型。
Llama3在多个基准测试中展现了卓越的性能,如下图。
Meta公司研究了标准基准测试下的模型性能,并试图针对真实场景的性能进行优化。为此开发了一套新的高质量人工评估集。该评估集包含 1,800 个提示,涵盖 12 个关键用例:寻求建议、头脑风暴、分类、封闭式问答、编码、创意写作、提取、扮演角色、开放式问答、推理、重写和总结。
针对 Claude Sonnet、Mistral Medium 和 GPT-3.5 的人工评估
预训练模型为 LLM 模型建立了最先进的技术。
在比较测评中,Llama3的70B指令遵循模型在人类评估中的偏好得分突出,显示出其在同体量竞品模型中的强劲表现。此外,Llama3在推理、代码生成等任务上的表现也得到了极大的改进,使其更加可控和可靠。
Llama3系列的基础预训练模型在多个评测基准的性能表现,相较于上一代的Llama2和Llama系列,性能得到了很大提升。
指令微调模型的评测表现也是卓有成效。
05
Llama3部署与应用
01
Meta AI,使用 Llama 3 构建
更好的助手:Meta AI 现在是可以免费使用的最智能的 AI 助手,可以应用在各种场景。
更多信息:可以在应用程序中将 Meta AI 用于 Feed、聊天、搜索等功能,以完成工作并访问实时信息。
更快的图像生成速度:Meta AI 的图像生成速度更快,可以生成图像,可以为乐队创建专辑插图、公寓装饰灵感、自定义 GIF 动画等。
02
在线体验
在线体验地址:
huggingface:https://huggingface.co/chat/
Replicate:
8B 模型:hat/https://replicate.com/meta/meta-llama-3-8b
70B 模型:https://replicate.com/meta/meta-llama-3-70b
03
本地部署
Ollama 是一个开源的大型语言模型(LLM)服务工具,它允许用户在本地机器上运行和部署大型语言模型。
Llama3的本地部署可以通过Ollama工具实现,该工具简化了大型语言模型的部署过程。
以下是部署Llama3的基本步骤:
地址:https://ollama.com/download
ollama pull llama3:8b
输入:你好!请中文回复
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
06
未来展望
Meta将发布多个具有新功能的模型,包括多模态、使用多种语言交谈的能力、更长的上下文窗口和更强大的整体功能。先一睹为快~
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
保证100%免费
】123?spm=1001.2014.3001.5501)这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。