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

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.lqws.cn/news/179461.html

相关文章:

  • Window Server 2019--11 虚拟专用网络
  • 如何对Video视频进行SEO优化?
  • MySQL安装与配置
  • 分布式锁-Redisson实现
  • MySQL查询语句
  • C++11:原子操作与内存顺序:从理论到实践的无锁并发实现
  • table表格合并,循环渲染样式
  • React项目的状态管理:Redux Toolkit
  • kubeadm安装k8s
  • 黄晓明新剧《潜渊》定档 失忆三面间谍开启谍战新维度
  • 极空间z4pro配置gitea mysql,内网穿透
  • pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
  • 网页端 js 读取发票里的二维码信息(图片和PDF格式)
  • 32单片机——窗口看门狗
  • 五子棋测试用例
  • go语言学习 第6章:错误处理
  • 浏览器工作原理05 [#] 渲染流程(上):HTML、CSS和JavaScript是如何变成页面的
  • Java逻辑运算符常见错误分析与规避指南
  • 03 mysql 的环境搭建
  • 服务器磁盘空间被Docker容器日志占满处理方法
  • 服务器信任质询
  • 什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
  • 服务器出现故障怎么办?快速排查与解决方法
  • PostgreSQL 的扩展pg_freespacemap
  • Linux操作系统之进程(五):初识地址空间
  • Edge(Bing)自动领积分脚本部署——基于python和Selenium(附源码)
  • 七、数据库的完整性
  • Codeforces EDU Round 179 A~D
  • PDF转Markdown/JSON软件MinerU最新1.3.12版整合包下载
  • HarmonyOS运动语音开发:如何让运动开始时的语音播报更温暖