LLaMA-Factory的5种推理方式总结
LLaMA-Factory 作为一款开源的大语言模型微调与推理框架,提供了 5 种核心推理方式,覆盖从本地调试到生产部署的全流程需求。以下是具体方式及示例:
1. 交互式命令行推理
适用场景:快速测试模型效果或进行简单对话。
示例命令:
# 使用原始模型推理
llamafactory-cli chat examples/inference/llama3.yaml# 使用微调后的LoRA模型推理(需指定适配器路径)
llamafactory-cli chat examples/inference/llama3_lora_sft.yaml
操作流程:
- 直接输入文本(如
你是谁
),模型实时生成回复。 - 支持多轮对话,历史记录自动保留。
2. Web可视化界面推理
适用场景:需要图形化交互或演示的场景。
启动命令:
# 启动Web聊天界面(支持多模态模型如LLaVA)
llamafactory-cli webchat examples/inference/llava1_5.yaml
功能亮点:
- 浏览器访问
http://localhost:7860
即可使用。 - 支持图片输入(需多模态模型)和文本交互。
- 界面可自定义模板(如切换为
vicuna
风格对话)。
3. 批量任务推理(vLLM引擎)
适用场景:处理大规模数据集或需要高性能推理的场景。
示例脚本:
# 使用vLLM引擎批量推理
python scripts/vllm_infer.py \--model_name_or_path path_to_merged_model \--dataset alpaca_en_demo \--infer_backend vllm
性能优势:
- 相比Hugging Face引擎,vLLM可提升吞吐量3-5倍。
- 支持动态Batching和显存优化(如
flash_attn: true
)。
4. API服务化推理
适用场景:将模型集成到其他应用(如网站、移动端)。
部署命令:
# 启动API服务(默认端口8000)
llamafactory-cli api examples/inference/llama3_lora_sft.yaml
调用示例(Python):
from openai import OpenAI
client = OpenAI(api_key="0", base_url="http://localhost:8000/v1")
response = client.chat.completions.create(model="llama3",messages=[{"role": "user", "content": "用Python实现快速排序"}]
)
print(response.choices[0].message.content)
5. 量化推理优化
适用场景:显存不足或需要降低成本时。
配置示例(YAML):
load_in_4bit: true # 启用4位量化
bnb_4bit_compute_dtype: "float16" # 计算精度
flash_attn: true # 加速注意力机制
use_cache: false # 禁用KV缓存节省显存
效果对比:
- 7B模型显存占用从24GB降至6GB。
- 推理速度下降约10-20%(可通过
use_cache: true
缓解)。
附加功能:多模态推理
支持模型:如LLaVA(文本+图像联合推理)。
配置示例:
model_name_or_path: "llava-hf/llava-1.5-7b-hf"
template: "vicuna" # 需与模型匹配的提示模板
使用场景:
- 图像描述生成(输入图片路径,输出描述文本)。
- 视觉问答(如
图中有什么动物?
)。
总结建议
- 调试优先:交互式命令行 → Web界面。
- 生产部署:API服务 → 批量推理(vLLM)。
- 资源受限:启用量化 + 关闭
use_cache
。 - 多模态任务:选择专用模型(如LLaVA)并配置对应模板。
参考
https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/inference.html