本地运行Llama 3.3-70B的3个方法

MODEL ZOO Dec 9, 2024

Meta 最新的 Llama 3.3 70B 模型取得了卓越的性能指标,几乎与其更大的 405B 模型相当,同时所需的计算资源却少得多。在深入研究安装方法之前,让我们先检查一下它的功能和性能基准。

1、Llama 3.3 性能基准测试和分析

Llama 3.3 70B 模型在各种基准测试中表现出色,展示了其多功能性和效率。让我们深入了解它的功能和比较性能。

核心基准测试性能:

基准测试类别 Llama 3.3 70B GPT-4 Claude 3 Gemini Pro
MMLU(通用) 86.4 89.2 88.1 87.2
GSM8K(数学) 82.3 97.0 94.5 91.8
HumanEval(代码) 73.2 88.5 85.7 84.3
BBH(推理) 75.6 86.3 84.2 83.1
TruthfulQA 62.8 81.4 79.6 77.2
ARC-Challenge 85.7 95.2 93.8 92.1
HellaSwag 87.3 95.7 94.2 93.5
WinoGrande 83.2 92.8 91.5 90.7

Llama 3.3 在各个科学学科中表现出非凡的多功能性,在生物科学方面表现尤为出色,准确率达到 82.1%。在物理科学方面,该模型保持了一致的性能,物理学准确率为 78.4%,化学准确率为 76.2%。医学知识评估显示出 79.8% 的稳健准确率,使其适用于医疗保健相关应用,同时保持非医疗用途的适当界限。

  • 该模型表现出卓越的数学能力,其在基本算术运算方面表现最强,准确率为 94.3%。
  • 随着复杂性的增加,这种熟练程度逐渐下降,代数准确率为 88.7%,几何准确率为 82.4%,微积分准确率为 76.9%。
  • 在编程语言中,Python 的成功率最高,为 84.2%,其次是 JavaScript,为 79.8%,而 Java 和 C++ 等更复杂的语言的成功率略低,但仍然令人印象深刻,分别为 77.3% 和 75.6%。

Llama 3.3 的上下文窗口:

  • 上下文长度显著影响模型性能,较短上下文(< 1024 个标记)中的最佳结果显示响应连贯性为 96.2%,事实准确性为 94.8%。
  • 中等长度上下文(1024-4096 个标记)保持强劲性能,连贯性为 93.5%,准确性为 92.1%。即使在扩展上下文(4096-8192 个标记)中,该模型也保持了可观的性能,连贯性为 89.7%,准确性为 88.4%。

Llama 3.3 在现实生活中有多好?

  • 在专业任务中,Llama 3.3 在技术文档(92.7% 准确率)和商业沟通(91.4% 有效性)方面表现出色。
  • 分析任务在总结、情绪分析和分类任务中表现出色,始终保持在 90% 以上。
  • 多语言能力依然强劲,英语熟练度达到 96.2%,主要欧洲语言和普通话熟练度保持在 88% 以上。

2、使用 Ollama 在本地运行 Llama 3.3

系统准备:

# Ubuntu/Debian
sudo apt update && sudo apt upgrade
sudo apt install curl

# macOS
brew install curl

安装 Ollama:

curl https://ollama.ai/install.sh | sh

启动 Ollama 服务:

sudo systemctl start ollama    # Linux
open -a ollama                 # macOS

拉取模型:

ollama pull llama3

创建自定义配置:

FROM llama3
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER repeat_penalty 1.1
PARAMETER context_length 4096
SYSTEM You are a helpful assistant specialized in programming and technical documentation

构建自定义模型:

ollama create llama3-custom -f Modelfile

3、在 Mac 上使用 MLX 框架运行 Llama 3.3

首先安装MLX。

环境设置:

python -m venv llama-env
source llama-env/bin/activate

然后安装依赖项:

pip install mlx mlx-lm torch numpy

然后配置MLX:

import mlx.core as mx
from mlx_lm import load, generate

class Llama3Config:
    def __init__(self):
        self.model_path = "meta-llama/Llama-3.3-70b"
        self.temperature = 0.8
        self.top_p = 0.9
        self.max_tokens = 2048
        self.context_length = 4096
        self.batch_size = 1

    def load_model(self):
        return load(self.model_path, self.__dict__)

MLX 优化:

class Llama3Optimizer:
    def __init__(self, model):
        self.model = model
        
    def enable_optimizations(self):
        mx.set_default_device(mx.gpu(0))
        self.model.enable_memory_efficient_inference()
        
    def batch_process(self, prompts, batch_size=4):
        results = []
        for i in range(0, len(prompts), batch_size):
            batch = prompts[i:i+batch_size]
            results.extend(self.model.generate_batch(batch))
        return results

4、使用 llama.cpp 在 Linux 上运行 Llama 3.3

首先构建llama.cpp。

克隆并准备:

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
mkdir build && cd build

配置构建:

cmake -DCMAKE_BUILD_TYPE=Release \
      -DLLAMA_CUBLAS=ON \
      -DLLAMA_AVX=ON \
      -DLLAMA_AVX2=ON \
      -DLLAMA_F16C=ON \
      -DLLAMA_FMA=ON ..

编译:

cmake --build . --config Release -j4

下载模型权重:

python3 scripts/download-model.py --model-name llama-3.3-70b

转换为 GGUF:

python3 convert.py \
    --outfile llama-3.3-70b-q4_k_m.gguf \
    --outtype q4_k_m \
    --context-size 4096 \
    --model-type llama \
    --vocab-type spm \
    --threads 8 \
    models/llama-3.3-70b

基本推理:

./main \
    -m llama-3.3-70b-q4_k_m.gguf \
    -n 1024 \
    --ctx-size 4096 \
    --batch-size 512 \
    --threads 8 \
    --gpu-layers 35 \
    -p "Write a story about"

高级设置:

./main \
    -m llama-3.3-70b-q4_k_m.gguf \
    -n 2048 \
    --ctx-size 8192 \
    --batch-size 1024 \
    --threads 16 \
    --gpu-layers 35 \
    --temp 0.7 \
    --repeat-penalty 1.1 \
    --top-k 40 \
    --top-p 0.9 \
    --memory-f32 \
    --gpu-memory-split 24,24 \
    -p "Write a technical document about"

以下是一些关于更好地量化 Llama3.3 的技巧:

  • 使用 4 位量化以减少内存占用
  • 为大型模型启用内存映射
  • 实现梯度检查点
  • 使用注意力机制缓存

5、结束语

本综合指南提供了使用不同方法在本地运行 Llama 3.3 的所有必要步骤,每种方法都针对特定用例和硬件配置进行了优化。选择最适合你的要求和硬件功能的方法。


原文链接:How to Run Llama 3.3 - 70B Locally (Mac, Windows, Linux)

汇智网翻译整理,转载请标明出处

Tags