LLaMA-Factory的5种推理方式总结

发布于:2025-06-07 ⋅ 阅读:(17) ⋅ 点赞:(0)

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


网站公告

今日签到

点亮在社区的每一天
去签到