Meta 开源大模型 LLaMA2 的本地部署与运行指南
Meta 开源大模型 LLaMA2 的本地部署涉及权限申请、环境配置、模型下载及运行测试等关键步骤。文章详细说明了通过官方脚本获取模型文件的方法,包括 7B 版本的选择与下载过程。随后介绍了在 Conda 环境中安装依赖包,并使用 torchrun 启动文本补全和聊天对话任务的具体命令参数。此外,还提供了基于 Python 的自定义推理脚本示例,以及关于 Web UI 部署的替代方案建议,帮助开发者快速搭建本地大模型服务。

Meta 开源大模型 LLaMA2 的本地部署涉及权限申请、环境配置、模型下载及运行测试等关键步骤。文章详细说明了通过官方脚本获取模型文件的方法,包括 7B 版本的选择与下载过程。随后介绍了在 Conda 环境中安装依赖包,并使用 torchrun 启动文本补全和聊天对话任务的具体命令参数。此外,还提供了基于 Python 的自定义推理脚本示例,以及关于 Web UI 部署的替代方案建议,帮助开发者快速搭建本地大模型服务。


微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
在开始部署之前,请确保您的开发环境满足以下要求:
LLaMA2 模型并非完全公开,需要申请访问权限。
访问 Meta 官方模型申请页面提交申请。注意申请时有地区限制,建议选择非受限国家/地区以提高通过率。申请成功后,您将收到一封包含下载 URL 的邮件。
使用 Git 克隆官方提供的推理仓库:
git clone https://github.com/facebookresearch/llama
进入项目目录并赋予下载脚本执行权限:
cd llama
chmod +x download.sh
运行 download.sh 脚本,输入邮件中收到的 URL,并根据提示选择要下载的模型版本(如 7B, 13B, 70B)。
./download.sh
脚本将自动下载 License、Policy、Tokenizer 以及模型权重文件。下载完成后,目录结构应包含 llama-2-7b 文件夹及 tokenizer.model 等文件。
确保处于具有 PyTorch 和 CUDA 支持的 Conda 环境中。进入 llama 目录安装依赖包:
pip install -e .
此命令会读取 requirements.txt 并安装必要的依赖库。
使用 torchrun 启动分布式训练脚本进行文本补全测试。假设模型文件位于 models/llama-2-7b 目录下:
torchrun --nproc_per_node 1 ./example_text_completion.py \
--ckpt_dir ../models/llama-2-7b/ \
--tokenizer_path ../models/llama-2-7b/tokenizer.model \
--max_seq_len 512 \
--max_batch_size 6
参数说明:
--ckpt_dir:模型检查点目录路径。--tokenizer_path:分词器模型路径。--max_seq_len:最大序列长度,影响上下文窗口大小。--max_batch_size:批处理大小,根据显存大小调整。示例输出:
> initializing model parallel with size 1
> initializing ddp with size 1
> initializing pipeline with size 1
Loaded in 12.00 seconds
I believe the meaning of life is
> to be happy. I believe we are all born with the potential to be happy...
LLaMA2 提供了专门的聊天对话脚本,适合多轮对话场景:
torchrun --nproc_per_node 1 ./example_chat_completion.py \
--ckpt_dir ../models/llama-2-7b/ \
--tokenizer_path ../models/llama-2-7b/tokenizer.model \
--max_seq_len 512 \
--max_batch_size 6
示例交互:
User: what is the recipe of mayonnaise?
Assistant: [INST] what is the recipe of mayonnaise? [/INST]
By: Nitro-Nerd... (此处省略部分生成内容)
User: I am going to Paris, what should I see?
Assistant: Paris, the capital of France, is known for its stunning architecture...
除了官方示例,您可以编写自定义 Python 脚本调用 Llama 类进行推理。以下是一个简单的文本补全示例:
import fire
from llama import Llama
def main(
ckpt_dir: str,
tokenizer_path: str,
temperature: float = 0.6,
top_p: float = 0.9,
max_seq_len: int = 128,
max_gen_len: int = 64,
max_batch_size: int = 4,
):
generator = Llama.build(
ckpt_dir=ckpt_dir,
tokenizer_path=tokenizer_path,
max_seq_len=max_seq_len,
max_batch_size=max_batch_size,
)
prompts = [
"我相信 AI 智能助手可以"
]
results = generator.text_completion(
prompts,
max_gen_len=max_gen_len,
temperature=temperature,
top_p=top_p,
)
for prompt, result in zip(prompts, results):
print(prompt)
print(f"> {result['generation']}")
print("\n==================================\n")
if __name__ == "__main__":
fire.Fire(main)
运行方式与官方脚本类似,需配合 torchrun 或直接调用(视具体实现而定)。
官方仓库未直接提供 Web UI 界面。若需图形化操作,通常有以下两种方案:
.pth 模型转换为 HuggingFace 格式,再结合 text-generation-webui 等工具部署。但需注意官方脚本对 LLaMA2 的支持情况可能有限。text-generation-webui 项目中,这是目前最稳定的 Web 端方案。--max_batch_size 或尝试量化版本(如 GGUF 格式配合 llama.cpp)。ckpt_dir 和 tokenizer_path 指向正确的绝对路径或相对路径。通过上述步骤,您可以成功在本地部署并运行 Meta 开源的 LLaMA2 大模型。这为后续的微调、私有知识库构建及垂直领域应用开发奠定了坚实基础。