LLama 3.2 1B 和 3B:体型虽小,但威力强大!

MetaAI 刚刚推出了 Llama-3.2,这是一套新的模型,其中包括两个令人印象深刻的轻量级大型语言模型 (LLM),分别具有 10 亿 (1B) 和 30 亿 (3B) 个参数,以及更大的视觉语言模型 (VLM),分别具有 11B 和 90B 个参数。

取决于你问的是谁,这可能被视为人工智能领域向前迈出的突破性一步——而其他人,也许对层出不穷的模型发布感到厌倦,甚至可能不会停下来看一眼。

但这个版本真正有趣的地方在于:这些轻量级的 LLM 专门针对边缘设备进行了优化。它们提供总结、指令跟踪和重写等功能,同时尽管尺寸较小,但仍保持了稳定的性能——尤其是当你考虑像 Llama-3.1 这样的模型时,其参数高达 405B。这引出了一个问题:这些较小的模型是否值得你关注,特别是如果你没有丰富的 GPU 资源?

如果您想知道更小、更高效的模型是否可以处理您关心的任务(无需服务器场),那么本文适合您。我们将逐步介绍如何使用 LlamaCPP 在本地设置 Llama-3.2,并探索这些模型在各种任务中的表现。从推理到总结、处理长上下文输入和多语言功能,我们将对这些模型进行测试。我们还将深入探讨安全注意事项,检查它们是否容易受到对抗性或恶意提示的攻击。

准备好了解这些模型的真正能力了吗?让我们开始吧。

Llama-3.2 1B 和 3B 型号

它们虽然体型小巧,但功能强大,能够为各种任务提供出色的性能。以下是它们脱颖而出的原因:

高上下文窗口:两种模型都支持最多128,000 个标记的上下文长度,使它们能够管理更复杂的任务,如总结大型文档、参与扩展对话或重写内容 - 同时跟踪冗长的上下文。

高效性能:尽管规模相对较小,但 1B 和 3B 模型在计算效率方面却表现出色。3B 版本在 MMLU 5 次测试基准测试中的得分为 63.4。

修剪和知识提炼:MetaAI 使用修剪来修剪不必要的部分以减小模型的尺寸,并使用知识提炼使它们从更大的兄弟模型(LLama-3.1-8B 和 70B)中“学习”,从而增强其能力。

多功能任务处理:这些模型不仅仅注重效率——它们是为总结、重写或长篇对话等高需求任务而设计的。

实时交互:通过超快的处理,这些模型的响应是即时的 - 非常适合需要实时参与的应用程序。

在这里插入图片描述

现在让我们深入部署这些模型并评估其性能。

使用 LLamaCPP 运行 LLama-3.2

为了进行实际评估,我们将使用LlamaCPP运行Llama-3.2 模型的量化版本。

为什么选择 LlamaCPP?

它很简单:它降低了硬件要求,允许您在甚至适度的设置上运行这些模型,同时保持大部分性能并提高速度。

安装 LlamaCPP

要安装支持 GPU 的 LlamaCPP,首先从支持的后端中选择适合您硬件的选项。例如,如果您使用 CUDA,以下命令将使用 GPU 加速进行安装:

CMAKE\_ARGS =”-DGGML\_CUDA= on ” pip install — no -cache-dir llama-cpp-python

从 HuggingFace 下载模型

接下来,您需要从 Hugging Face 获取 Llama-3.2 模型文件。只需前往 Hugging Face 并在搜索栏中输入“Llama-3.2”即可。您将看到弹出几个GGUF 版本。

在本实验中,我们将使用Bartowski 的Hugging Face 页面中的Q4_K_M 量化版本。这种特殊的量化格式在大小和性能之间实现了良好的平衡。

提示模型

现在一切都已安装完毕,是时候让 Llama-3.2 开始工作了!通过 LlamaCPP 运行提示非常简单,但由于我们还想构建一个用于交互的聊天机器人,因此我们将更进一步。

为了让事情变得更加顺利,安装llama-cpp-agent以便轻松地使用您的 Llama-3.2 模型设置聊天机器人界面:

pip install llama-cpp-agent

安装后,您将能够与模特聊天并管理对话历史记录。



  

  

  

  

  

  

  

from llama\_cpp import Llama  
from llama\_cpp\_agent import LlamaCppAgent, MessagesFormatterType  
from llama\_cpp\_agent.providers import LlamaCppPythonProvider  
from llama\_cpp\_agent.chat\_history import BasicChatHistory  
from llama\_cpp\_agent.chat\_history.messages import Roles  
  
SYSTEM\_PROMPT = "You are a useful chatbot" #Customize system prompt to fit your need  
CHAT\_TEMPLATE = MessagesFormatterType.LLAMA\_3  #Prompt format to use  
MODEL\_PATH = "Llama-3.2-1B-Instruct-Q4\_K\_M.gguf"   
TEMPERATURE=0.3  #For small models, low temperature is often better  
MAX\_NEW\_TOKENS = 1024  #Max tokens to output  
CONTEXT\_WINDOW=8000 #Max context window. Up to 128k. The higher the value, the more GPU memory you will need  
N\_GPU\_LAYERS=-1  #Number of layers to put on GPU. -1 = all  
N\_BATCH=1024  #Increase if long prompts and you need faster inference.  
  
llm = Llama(  
    model\_path=MODEL\_PATH,  
    n\_gpu\_layers=N\_GPU\_LAYERS,  
    n\_batch=N\_BATCH,  
    n\_ctx=CONTEXT\_WINDOW  
  
)  
  
provider = LlamaCppPythonProvider(llm)  
settings = provider.get\_provider\_default\_settings()  
settings.temperature = TEMPERATURE  
settings.max\_tokens = MAX\_NEW\_TOKENS  
settings.stream = True  
  
agent = LlamaCppAgent(  
    provider,  
    system\_prompt=SYSTEM\_PROMPT,  
    predefined\_messages\_formatter\_type=CHAT\_TEMPLATE,  
    debug\_output=False  
)  
  
prompt = "Hello. What is the capital of France?"  
  
response = agent.get\_chat\_response(  
    prompt,  
    llm\_sampling\_settings=settings,  
    #chat\_history=chat\_history, Not useful here but to be used if you want to keep track of previous prompts  
    returns\_streaming\_generator=True,  
    print\_output=False  
)  
  
  
for chunk in response:  
    print(chunk)pyt  

有了这个,我们现在就可以测试他们的能力了.

对 LLama-3.2 进行基准测试

现在 Llama-3.2 已经启动并运行,让我们使用量化版本来评估其性能并将其与其兄弟 3.1-8B 型号进行比较。

GPU 内存使用情况

Llama-3.2 的模型在内存消耗方面非常高效,尤其是在 8k 上下文窗口的情况下:

  • Llama-3.2 (1B):需要1.8 GB的 GPU 内存。

  • Llama-3.2 (3B):需要3.4 GB的 GPU 内存。

  • Llama-3.1 (8B):消耗的GPU 内存明显更多,为7.6 GB 。

这种差异使得 1B 和 3B 型号非常适合 GPU 容量有限的设备,同时仍提供高性能。

速度比较

我们在 Llama-3.2 1B、3B 和 Llama-3.1 8B 型号上运行了一组基准提示,以了解它们处理提示评估和令牌生成的速度有多快。结果如下:

在这里插入图片描述

平均而言,人类每分钟读取 200 到 300 个 token。Llama -3.2–1B 只需一秒钟就能读取这么多 token,而 3B 只需两秒钟就能读取这么多 token。速度简直是闪电!

推理能力

在广受认可的MMLU(大规模多任务语言理解)基准上,该基准测试了从基础数学到法律和物理等高级主题的 57 个任务中的模型,Llama-3.2 模型和 LLama-3.1–8B 的表现如下(使用 5 次提示):

  • 骆驼-3.2–1B:49.3

  • 骆驼-3.2–3B:63.4

  • 骆驼-3.1–8B:66.7

虽然 Llama-3.2–3B 模型的推理能力比 1B 版本有了显著提升,但仍略逊于更大的 Llama-3.1–8B。不过,考虑到其尺寸小得多,对于优先考虑速度和效率的人来说,这是一个值得称赞的权衡。

为了进行更严格的测试,我们采用了MMLU-Pro基准。这是原始 MMLU 的扩展,旨在更具挑战性,专注于不同领域的复杂、细微的推理。以下是模型在 MMLU-Pro 上的表现:

  • 骆驼-3.2–1B:7.58

  • 骆驼-3.2–3B:24.39

  • 骆驼-3.1–8B:30.68

正如预期的那样,1B 型号在执行这些复杂任务时遇到了困难,尽管它保持了其标志性的速度。另一方面,3B 型号则有了显著的改进,尽管尺寸明显较小且执行速度更快,但缩小了与体型更大的 Llama-3.1–8B 之间的差距。

长上下文:使用 BABILong 数据集测试 Llama-3.2

Llama-3.2 模型号称能够处理多达128k 个上下文标记。但在实际场景中,容量问题并不只在于它,而在于它们能够多好地筛选大量信息并提取相关细节。为了测试这一点,我们使用了BABILong数据集。

BABILong 数据集

BABILong 旨在用从0k 到 128k 个 token的提示来挑战模型。随着上下文大小的增加,复杂性也会增加,支持事实也会增多,周围的“噪音”也会增多。目的是什么?看看模型能否找到所谓的“大海捞针”。

  • 目的:测试模型在提示长度增加时如何保持准确性。

  • 挑战:提示中的事实数量随着上下文长度而增加,模拟长文档包含关键和不相关信息的任务。

欲了解更多详细信息,可以探索BABILong的github页面。

Llama-3.2 的表现如何?

我们测试了 1B 和 3B 模型,以了解它们如何处理长上下文场景。由于资源限制,我们专注于0k 到 8k 个标记的提示,使用qa1(2 到 10 个事实和 1 个支持事实)和qa2(10 到 68 个事实和 2 个支持事实)集。

在这里插入图片描述
在这里插入图片描述

结果:

  • Llama-3.2 1B:随着提示长度的增加开始变得困难,特别是在更复杂的qa2集上,在4k-token提示上仅实现11% 的准确率。

  • Llama-3.2 3B:在 qa1 和 qa2 组中表现出更好的一致性,随着提示变得越来越长和越来越复杂,性能逐渐下降。

关键要点:

  • 虽然该模型的理论上下文限制为 128k 个标记,但1B 版本在处理长而复杂的提示时很快就会失败,尤其是那些充满大量不相关事实的提示。

  • 3B 版本表现出了更强的弹性,但我们可以预计,这两种模型在执行具有密集或扩展提示的检索增强生成 (RAG) 等任务时都会面临限制。

  • 虽然这些模型重量轻、速度极快,但在处理大量信息时却面临挑战。它们的体积小是一个缺点——非常适合中等复杂度的快速任务,但在处理要求高精度的密集、长上下文场景时可能会遇到困难。

多语言能力

为了评估 Llama-3.2 模型的多语言能力,我们使用来自维基百科的各种语言的文本摘录测试了 1B 和 3B 版本。任务是生成简明的英文摘要,以便我们评估这些小型模型处理非英文内容的能力。

测试语言:法语、西班牙语、意大利语、俄语、中文、罗马尼亚语和日语。

两种模型在这些语言中都表现良好,表现出对内容的良好理解并有效地总结信息。

虽然我们承认更全面的评估将产生更深入的见解——理想情况下是利用像 GPT-4 这样的更大的模型作为判断输出质量的依据——但我们可以自信地说,即使是这些轻量级模型在处理多语言内容时也表现出了值得称赞的能力。

安全评估

为了评估 Llama-3.2 模型的安全性,我们采用了ALERT 框架(有关方法和代码的更多详细信息,请查看此链接)。为了优化资源使用,我们将测试限制为100 个恶意提示,分为四类:对抗前缀、对抗后缀、令牌操纵和越狱,每种攻击类型有25 个提示。

结果:96% 的提示对于 LLama-3.2–1B 来说是安全的,98% 的提示对于其 3B 版本来说是安全的。

结论

综上所述,Llama-3.2 型号在尺寸和效率之间实现了令人印象深刻的平衡,证明其能够出色地完成各种任务。尽管占用空间很小,但它们的速度和性能却非常出色,因此对于需要考虑资源限制的特定应用而言,它们无疑是极佳的选择。不过,需要注意的是,我们的部分测试受到可用资源和时间的限制,这可能会影响我们评估的深度。

它们为渴望利用高效、轻量级 AI 解决方案(根据特定需求定制)的开发人员提供了有趣的可能性。总而言之,它们是现代 AI 领域中高效的竞争者,证明了小也可以很强大。

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

Llama3.2 是一款软件,但没有提供足够的上下文来确定它是哪种类型的软件(例如,是一个数据库、网络服务还是某种特定的开发工具)。不过,假设你想连接的是一个本地的 Llama3.2 应用或数据库,一般情况下,连接过程可能包括以下几个步骤: 1. **确认协议**:首先,你需要知道 Llama3.2 使用的是什么类型的数据通信协议,如 TCP/IP、Unix Socket 或者是本地文件系统。 2. **端口信息**:如果是基于网络的服务,查找其运行的端口号。默认可能是 8080 或者文档中指定的其他值。 3. **地址路径**:如果是在同一台机器上,通常直接使用 `localhost` 或者本机 IP 地址;如果是文件系统,可能会有具体的文件夹路径。 4. **API/SDK**:如果是通过 API 进行连接,查看官方提供的客户端库或文档,了解如何创建连接实例并设置必要的参数。 5. **连接代码示例**: - 如果是编程语言如 Python,可能会类似这样: ```python import llama32_client client = llama32_client.Client('localhost', 8080) client.connect() ``` - 如果是命令行工具,可能有类似 `llama32 connect [host] [port]` 的命令格式。 6. **身份验证**:有些服务可能需要用户名密码或者认证令牌,请确保在连接时提供正确的凭据。 7. **错误处理**:务必检查连接尝试是否成功,如果失败,请检查日志错误消息以便定位问题。 如果你能提供更具体的信息,我可以给出更详细的指导。如果你要连接的是某个特定的开源项目,请告诉我项目的名称或URL。如果没有相关的软件包或文档,通用的建议可能不太适用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值