使用Llama-recipes进行本地推理的完整指南
概述
Llama-recipes项目提供了一套完整的工具集,用于在本地环境中运行Llama系列大语言模型的推理任务。本文将详细介绍如何进行多模态推理、纯文本推理以及聊天补全等功能的本地部署与使用。
准备工作
Hugging Face认证设置
在开始之前,需要完成Hugging Face的认证设置:
- 获取Hugging Face访问令牌
- 在终端运行
huggingface-cli login
命令 - 粘贴访问令牌完成登录认证
这一步骤确保了脚本能够正常下载所需的Hugging Face模型。
多模态推理功能
模型基础信息
项目支持的多模态模型基于meta-llama/Llama-3.2-11B-Vision-Instruct
,这是一个具有视觉-语言任务处理能力的指令微调模型。项目使用PEFT库(v0.13.1)来实现高效的参数高效微调。
三种运行模式
多模态推理脚本multi_modal_infer.py
提供了三种主要运行模式:
- 基础推理模式
python multi_modal_infer.py \
--image_path "图片路径" \
--prompt_text "描述这张图片" \
--model_name "meta-llama/Llama-3.2-11B-Vision-Instruct"
- Gradio交互界面模式
python multi_modal_infer.py \
--model_name "meta-llama/Llama-3.2-11B-Vision-Instruct" \
--gradio_ui
- 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
根据训练时采用的微调方法不同,需要提供不同的参数:
- 全参数微调模式
cat 测试提示文件 | python inference.py --model_name 训练输出目录 --use_auditnlg
- 参数高效微调(PEFT)模式
cat 测试提示文件 | python inference.py --model_name 基础模型名称 --peft_model 训练输出目录 --use_auditnlg
- 文件输入模式
python inference.py --model_name 训练输出目录 --prompt_file 测试提示文件 --use_auditnlg
内容安全检查
推理脚本支持对用户提示和模型输出的安全检查,集成了以下两种安全检测工具:
- AuditNLG:用于内容安全检测
- Azure内容安全:需要设置环境变量
CONTENT_SAFETY_ENDPOINT
和CONTENT_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格式:
- 转换检查点
python -m llama_cookbook.inference.checkpoint_converter_fsdp_hf \
--fsdp_checkpoint_path FSDP检查点路径 \
--consolidated_model_path 保存路径 \
--HF_model_path_or_name HF模型名称或路径
- 运行推理
python inference.py \
--model_name 训练输出目录 \
--prompt_file 测试提示文件
大型模型推理
对于Meta Llama 405B等超大规模模型:
- FP8量化版本:可在单节点8x80GB H100上运行
- 非量化版本:需要多节点设置,目前llama-cookbook不支持多节点推理,建议使用vLLM配合管道和张量并行技术
总结
Llama-recipes项目提供了全面的本地推理解决方案,从基础推理到高级功能如多模态处理、聊天补全和大型模型支持。通过合理配置参数和利用性能优化技术,用户可以在各种硬件环境下高效运行Llama系列模型的推理任务。