首页
/ 使用Llama-recipes进行本地推理的完整指南

使用Llama-recipes进行本地推理的完整指南

2025-07-05 08:16:50作者:彭桢灵Jeremy

概述

Llama-recipes项目提供了一套完整的工具集,用于在本地环境中运行Llama系列大语言模型的推理任务。本文将详细介绍如何进行多模态推理、纯文本推理以及聊天补全等功能的本地部署与使用。

准备工作

Hugging Face认证设置

在开始之前,需要完成Hugging Face的认证设置:

  1. 获取Hugging Face访问令牌
  2. 在终端运行huggingface-cli login命令
  3. 粘贴访问令牌完成登录认证

这一步骤确保了脚本能够正常下载所需的Hugging Face模型。

多模态推理功能

模型基础信息

项目支持的多模态模型基于meta-llama/Llama-3.2-11B-Vision-Instruct,这是一个具有视觉-语言任务处理能力的指令微调模型。项目使用PEFT库(v0.13.1)来实现高效的参数高效微调。

三种运行模式

多模态推理脚本multi_modal_infer.py提供了三种主要运行模式:

  1. 基础推理模式
python multi_modal_infer.py \
    --image_path "图片路径" \
    --prompt_text "描述这张图片" \
    --model_name "meta-llama/Llama-3.2-11B-Vision-Instruct"
  1. Gradio交互界面模式
python multi_modal_infer.py \
    --model_name "meta-llama/Llama-3.2-11B-Vision-Instruct" \
    --gradio_ui
  1. LoRA微调权重集成模式
python multi_modal_infer.py \
    --image_path "图片路径" \
    --prompt_text "描述这张图片" \
    --model_name "meta-llama/Llama-3.2-11B-Vision-Instruct" \
    --finetuning_path "LoRA权重路径"

纯文本推理功能

推理脚本使用说明

纯文本推理脚本inference.py根据训练时采用的微调方法不同,需要提供不同的参数:

  1. 全参数微调模式
cat 测试提示文件 | python inference.py --model_name 训练输出目录 --use_auditnlg
  1. 参数高效微调(PEFT)模式
cat 测试提示文件 | python inference.py --model_name 基础模型名称 --peft_model 训练输出目录 --use_auditnlg
  1. 文件输入模式
python inference.py --model_name 训练输出目录 --prompt_file 测试提示文件 --use_auditnlg

内容安全检查

推理脚本支持对用户提示和模型输出的安全检查,集成了以下两种安全检测工具:

  • AuditNLG:用于内容安全检测
  • Azure内容安全:需要设置环境变量CONTENT_SAFETY_ENDPOINTCONTENT_SAFETY_KEY

特殊标记处理

对于Llama 3.1以下版本,需要注意填充标记的处理。默认情况下HuggingFace Tokenizer没有设置填充标记,如需批量推理,需要手动添加填充标记并调整token嵌入大小:

tokenizer.add_special_tokens({"pad_token": "<PAD>"})
model.resize_token_embeddings(model.config.vocab_size + 1)

Llama 3.1版本应使用特殊标记<|finetune_right_pad_id|> (128004)进行填充。

聊天补全功能

项目提供了聊天补全示例,为微调模型添加了内置的安全特性:

python chat_completion/chat_completion.py \
    --model_name "模型路径" \
    --prompt_file chat_completion/chats.json \
    --quantization 8bit \
    --use_auditnlg

性能优化技术

快速注意力内核

设置use_fast_kernels参数可以启用Flash Attention或Xformer内存高效内核,显著提升批量输入时的推理速度:

python chat_completion/chat_completion.py \
    --model_name "模型路径" \
    --prompt_file chat_completion/chats.json \
    --quantization 8bit \
    --use_auditnlg \
    --use_fast_kernels

FSDP检查点推理

对于使用纯FSDP微调并保存为"SHARDED_STATE_DICT"格式的模型,需要先将FSDP分片检查点转换为HuggingFace格式:

  1. 转换检查点
python -m llama_cookbook.inference.checkpoint_converter_fsdp_hf \
    --fsdp_checkpoint_path FSDP检查点路径 \
    --consolidated_model_path 保存路径 \
    --HF_model_path_or_name HF模型名称或路径
  1. 运行推理
python inference.py \
    --model_name 训练输出目录 \
    --prompt_file 测试提示文件

大型模型推理

对于Meta Llama 405B等超大规模模型:

  1. FP8量化版本:可在单节点8x80GB H100上运行
  2. 非量化版本:需要多节点设置,目前llama-cookbook不支持多节点推理,建议使用vLLM配合管道和张量并行技术

总结

Llama-recipes项目提供了全面的本地推理解决方案,从基础推理到高级功能如多模态处理、聊天补全和大型模型支持。通过合理配置参数和利用性能优化技术,用户可以在各种硬件环境下高效运行Llama系列模型的推理任务。