当前位置: 首页 > article >正文

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

http://www.lryc.cn/news/2402974.html

相关文章:

  • 链游技术破壁:NFT资产确权与Play-to-Earn经济模型实战
  • 为什么HDI叠孔比错孔设计难生产
  • 数据分析实战2(Tableau)
  • 游戏开发中的CI/CD优化案例:知名游戏公司Gearbox使用TeamCity简化CI/CD流程
  • Linux --TCP协议实现简单的网络通信(中英翻译)
  • LlamaIndex 工作流简介以及基础工作流
  • 如何利用Elastic Stack(ELK)进行安全日志分析
  • 创客匠人:以 AI 利器赋能创始人 IP 打造,加速知识变现新路径
  • Opencv中的copyto函数
  • TeamCity Agent 配置完整教程(配合 Docker Compose 快速部署)
  • 基于深度强化学习的Scrapy-Redis分布式爬虫动态调度策略研究
  • 在 Ubuntu 24.04 LTS 上安装 Jenkins 并配置全局工具(Git、JDK、Maven)
  • Tika Server:企业级文档内容解析的轻量级服务化方案
  • LMG1020YFFR 电子元器件详解
  • 防爆型断链保护器的应用场景有哪些?
  • leetcode_206 反转链表
  • OPenCV CUDA模块光流------高效地执行光流估计的类BroxOpticalFlow
  • 高考:如何合理选择学科、专业以及职业
  • K8S认证|CKS题库+答案| 3. 默认网络策略
  • HTTP、WebSocket、SSE 对比
  • Linux编程:1、文件编程
  • Kyosan K5BMC ELECTRONIC INTERLOCKING MANUAL 电子联锁
  • 【Spark征服之路-2.3-Spark运行架构】
  • PART 6 树莓派小车+QT (TCP控制)
  • 软珊瑚成分 CI-A:靶向口腔癌细胞的 “氧化利剑” 与 ERK 密码
  • Cilium动手实验室: 精通之旅---4.Cilium Gateway API - Lab
  • 【芯片设计- RTL 数字逻辑设计入门 4.2 -- 组合逻辑赋值 + 时序逻辑状态保持】
  • 如何使用索引和条件批量更改Series数据
  • Java转Go日记(六十):gin其他常用知识
  • 89.实现添加收藏的功能的后端实现