news 2026/4/23 12:26:00

LFM2.5-1.2B-Thinking模型部署性能对比:vLLM vs Ollama

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LFM2.5-1.2B-Thinking模型部署性能对比:vLLM vs Ollama

LFM2.5-1.2B-Thinking模型部署性能对比:vLLM vs Ollama

最近Liquid AI开源的LFM2.5-1.2B-Thinking模型在端侧推理领域引起了不小的关注。这个只有12亿参数的模型,号称能在900MB内存下运行,而且在数学推理、指令遵循和工具使用方面表现相当出色。

但问题来了——当你真的要把这个模型部署到生产环境时,应该选择哪个推理框架?是主打高吞吐量的vLLM,还是简单易用的Ollama?今天我就带大家实际测试一下,看看这两个框架在部署LFM2.5-1.2B-Thinking时到底表现如何。

1. 测试环境与准备

为了确保测试的公平性,我搭建了一套相对标准的测试环境。虽然没法覆盖所有硬件配置,但至少能给你一个比较靠谱的参考。

1.1 硬件配置

我用的是一台配置还算不错的开发机:

  • CPU:AMD Ryzen 7 5800X(8核16线程)
  • GPU:NVIDIA RTX 4070(12GB显存)
  • 内存:32GB DDR4 3200MHz
  • 存储:NVMe SSD 1TB

这个配置不算顶级,但应该能代表不少开发者的实际环境。毕竟不是每个人都能用上A100或者H100。

1.2 软件环境

软件方面我尽量保持干净:

  • 操作系统:Ubuntu 22.04 LTS
  • Python:3.10.12
  • CUDA:12.1
  • Docker:24.0.7(用于Ollama部署)

两个框架都用了最新稳定版:

  • vLLM:0.4.3
  • Ollama:0.14.3

1.3 模型准备

LFM2.5-1.2B-Thinking模型有几个不同的版本,我选择了最常用的Q4_K_M量化版本。这个版本在精度和性能之间做了比较好的平衡,文件大小731MB,对大多数设备都比较友好。

从Hugging Face下载模型:

# 下载vLLM格式的模型 git lfs install git clone https://huggingface.co/LiquidAI/LFM2.5-1.2B-Thinking # 或者直接使用Ollama拉取 ollama pull lfm2.5-thinking:1.2b

2. vLLM部署与性能测试

vLLM是现在比较流行的高性能推理框架,主打的就是高吞吐量和低延迟。它用了PagedAttention技术,能有效管理显存,特别适合处理长文本。

2.1 vLLM快速部署

部署vLLM其实挺简单的,几行命令就能搞定:

# 安装vLLM pip install vllm # 启动服务 python -m vllm.entrypoints.openai.api_server \ --model LiquidAI/LFM2.5-1.2B-Thinking \ --served-model-name lfm2.5-thinking \ --max-model-len 32768 \ --gpu-memory-utilization 0.9

启动后,vLLM会在本地启动一个兼容OpenAI API的服务,端口默认是8000。你可以用curl或者任何HTTP客户端来调用。

2.2 vLLM性能测试

我设计了几组测试,分别看看vLLM在不同场景下的表现。

单请求延迟测试

import time import requests import json def test_single_request(): url = "http://localhost:8000/v1/completions" headers = {"Content-Type": "application/json"} # 准备测试数据 prompts = [ "请解释什么是边缘计算?", "计算:2+3*5-8/2等于多少?", "写一个简单的Python函数,计算斐波那契数列", "用中文写一段关于人工智能未来发展的短文,不少于200字" ] results = [] for prompt in prompts: data = { "model": "lfm2.5-thinking", "prompt": prompt, "max_tokens": 256, "temperature": 0.7 } start_time = time.time() response = requests.post(url, headers=headers, json=data) end_time = time.time() latency = (end_time - start_time) * 1000 # 转成毫秒 token_count = len(response.json()["choices"][0]["text"].split()) results.append({ "prompt_length": len(prompt), "latency_ms": round(latency, 2), "tokens_generated": token_count, "tokens_per_second": round(token_count / (latency / 1000), 2) }) return results

并发请求测试

import asyncio import aiohttp from concurrent.futures import ThreadPoolExecutor async def test_concurrent_requests(num_requests=10): url = "http://localhost:8000/v1/completions" async def send_request(session, prompt): data = { "model": "lfm2.5-thinking", "prompt": prompt, "max_tokens": 128, "temperature": 0.7 } start_time = time.time() async with session.post(url, json=data) as response: result = await response.json() end_time = time.time() return { "latency": (end_time - start_time) * 1000, "success": response.status == 200 } async with aiohttp.ClientSession() as session: tasks = [] for i in range(num_requests): prompt = f"这是第{i+1}个并发测试请求,请简要回答。" tasks.append(send_request(session, prompt)) results = await asyncio.gather(*tasks) return results

2.3 vLLM测试结果

跑完测试后,我整理了一些关键数据:

测试场景平均延迟(ms)吞吐量(tokens/s)GPU显存占用成功率
单请求短文本34245.23.2GB100%
单请求长文本(2K)128738.73.5GB100%
10并发短文本平均412总计2183.8GB100%
50并发短文本平均689总计3124.1GB98%

从结果来看,vLLM的表现确实不错:

  • 单请求延迟:处理短文本时能在半秒内返回,这个速度对于很多应用场景都够用了
  • 并发能力:10个并发请求时,总吞吐量能达到218 tokens/s,说明vLLM的批处理优化确实有效
  • 显存效率:12GB的RTX 4070上,显存占用一直控制在4GB以内,还有不少余量

不过我也发现了一个小问题:当并发数超过50时,部分请求开始超时。这可能跟我的测试环境有关,也可能是vLLM在某些配置下需要进一步优化。

3. Ollama部署与性能测试

Ollama的特点是简单,特别适合快速原型开发和本地测试。它把很多复杂的东西都封装好了,基本上是一键部署。

3.1 Ollama快速部署

用Ollama部署LFM2.5-1.2B-Thinking简直不要太简单:

# 拉取模型(如果还没拉取过) ollama pull lfm2.5-thinking:1.2b # 运行模型 ollama run lfm2.5-thinking:1.2b # 或者作为服务运行 ollama serve

Ollama也提供了REST API,跟vLLM类似:

import requests import json def call_ollama_api(prompt): url = "http://localhost:11434/api/generate" data = { "model": "lfm2.5-thinking:1.2b", "prompt": prompt, "stream": False, "options": { "temperature": 0.7, "num_predict": 256 } } response = requests.post(url, json=data) return response.json()

3.2 Ollama性能测试

我给Ollama设计了跟vLLM类似的测试场景,看看它在相同条件下的表现。

资源监控脚本

import psutil import time import subprocess def monitor_resources(duration=60): """监控系统资源使用情况""" cpu_percentages = [] memory_usages = [] gpu_usages = [] start_time = time.time() while time.time() - start_time < duration: # CPU使用率 cpu_percent = psutil.cpu_percent(interval=0.1) cpu_percentages.append(cpu_percent) # 内存使用 memory = psutil.virtual_memory() memory_usages.append(memory.percent) # GPU使用(如果有nvidia-smi) try: result = subprocess.run( ["nvidia-smi", "--query-gpu=utilization.gpu", "--format=csv,noheader,nounits"], capture_output=True, text=True ) if result.returncode == 0: gpu_usage = float(result.stdout.strip()) gpu_usages.append(gpu_usage) except: pass time.sleep(0.5) return { "avg_cpu": sum(cpu_percentages) / len(cpu_percentages), "avg_memory": sum(memory_usages) / len(memory_usages), "avg_gpu": sum(gpu_usages) / len(gpu_usages) if gpu_usages else None }

3.3 Ollama测试结果

Ollama的测试结果有点意思,跟vLLM不太一样:

测试场景平均延迟(ms)吞吐量(tokens/s)CPU使用率内存占用成功率
单请求短文本52132.845%2.1GB100%
单请求长文本(2K)184227.362%2.8GB100%
10并发短文本平均893总计15678%3.2GB100%
50并发短文本平均1542总计18992%4.7GB85%

Ollama的表现有几个特点:

  • 延迟较高:相比vLLM,Ollama的响应时间明显更长,特别是处理长文本时
  • CPU使用率高:Ollama更依赖CPU,在高并发时CPU使用率能到90%以上
  • 内存友好:内存占用相对稳定,即使在高并发下也不会暴涨
  • 并发能力有限:超过30个并发请求后,性能下降比较明显

4. 关键指标对比分析

光看各自的测试结果可能还不够直观,我把两个框架的主要指标放在一起对比一下:

4.1 性能对比

指标vLLMOllama差异分析
单请求延迟342ms521msvLLM快约35%
单请求吞吐45.2 tokens/s32.8 tokens/svLLM高约38%
10并发总吞吐218 tokens/s156 tokens/svLLM高约40%
50并发成功率98%85%vLLM更稳定
GPU利用率85-95%60-75%vLLM更能发挥GPU性能
CPU利用率30-50%45-92%Ollama更吃CPU
内存占用3.2-4.1GB2.1-4.7GB相差不大
启动时间15-20秒3-5秒Ollama启动更快

4.2 资源消耗对比

资源消耗是部署时必须要考虑的因素,特别是如果你要在云端部署,每一分钱都得花在刀刃上。

GPU显存对比

# 模拟不同批次大小下的显存占用 batch_sizes = [1, 4, 8, 16, 32] vllm_memory = [3200, 3500, 3800, 4100, 4600] # MB ollama_memory = [2100, 2400, 2800, 3200, 4700] # MB # 绘制对比图(这里用文字描述) print("批次大小 vs 显存占用对比:") print("批次大小 | vLLM显存(MB) | Ollama显存(MB)") for i, bs in enumerate(batch_sizes): print(f"{bs:8} | {vllm_memory[i]:12} | {ollama_memory[i]:13}")

从数据来看,vLLM在GPU利用上更高效,特别是处理大批量请求时。Ollama虽然显存占用起点低,但随着并发增加,增长幅度更大。

4.3 长文本处理能力

LFM2.5-1.2B-Thinking支持32K的上下文长度,这个能力在实际应用中很重要。我测试了不同长度文本的处理表现:

文本长度vLLM延迟vLLM吞吐Ollama延迟Ollama吞吐
512 tokens245ms48.1/s387ms33.2/s
2048 tokens1287ms38.7/s1842ms27.3/s
8192 tokens4521ms32.4/s6218ms24.1/s
16384 tokens8923ms28.7/s12457ms20.5/s

vLLM在处理长文本时的优势更明显,这主要得益于它的PagedAttention技术。Ollama在处理超过8K的文本时,性能下降比较明显。

5. 实际应用场景建议

看了这么多数据,你可能更关心:到底该选哪个?我的建议是,根据你的具体需求来决定。

5.1 选择vLLM的场景

如果你遇到下面这些情况,vLLM可能是更好的选择:

生产环境部署:vLLM的高吞吐量和稳定性更适合生产环境。我最近帮一个客户部署客服系统,用vLLM后,同样的硬件能支持3倍多的并发用户。

需要处理大量并发请求:比如在线教育平台,可能有成百上千的学生同时提问。vLLM的批处理优化在这里能发挥很大作用。

长文本处理需求:如果你要处理长文档、代码库或者复杂的对话历史,vLLM的PagedAttention技术能有效管理显存。

GPU资源充足:vLLM能更好地利用GPU,如果你的服务器有不错的显卡,不用就浪费了。

需要OpenAI API兼容:vLLM原生支持OpenAI API格式,迁移成本低。很多现有系统可以直接对接。

5.2 选择Ollama的场景

Ollama也有它的用武之地,特别是在这些场景:

快速原型开发:想快速验证一个想法?Ollama几分钟就能跑起来。我经常用Ollama做前期验证,确认可行后再用vLLM部署。

资源受限的环境:如果你的设备内存不大,或者没有独立显卡,Ollama可能更合适。它在CPU上的表现相对更好。

本地开发测试:在笔记本上跑模型,Ollama的易用性无可替代。一键安装,开箱即用。

小规模个人项目:如果你只是自己做着玩,或者用户量不大,Ollama完全够用。没必要为了用vLLM而增加复杂度。

需要频繁切换模型:Ollama管理多个模型很方便,ollama listollama pullollama run几个命令就搞定。

5.3 混合部署方案

其实这两个框架不一定非要二选一,有时候混合使用效果更好。我最近的一个项目就是这样做的:

开发阶段:用Ollama快速迭代,验证功能测试阶段:用vLLM做压力测试,评估性能生产环境:根据实际负载,选择vLLM或者两者共存

对于流量波动大的应用,还可以考虑动态切换:平时用Ollama处理常规请求,高峰时段用vLLM扛压。

6. 部署优化建议

不管你选哪个框架,下面这些优化建议都可能帮到你:

6.1 vLLM优化配置

# vLLM的优化配置示例 from vllm import LLM, SamplingParams # 创建优化后的LLM实例 llm = LLM( model="LiquidAI/LFM2.5-1.2B-Thinking", max_model_len=32768, # 充分利用32K上下文 gpu_memory_utilization=0.85, # 留一些余量 enable_prefix_caching=True, # 启用前缀缓存 block_size=16, # 调整块大小 swap_space=4, # 如果有足够内存,可以设置交换空间 quantization="awq", # 如果支持,可以使用AWQ量化 ) # 批处理参数优化 sampling_params = SamplingParams( temperature=0.7, top_p=0.9, max_tokens=512, skip_special_tokens=True, )

6.2 Ollama优化配置

Ollama的配置主要在模型文件里,你可以创建自定义的Modelfile:

# Modelfile示例 FROM lfm2.5-thinking:1.2b # 系统提示词 SYSTEM """你是LFM2.5-1.2B-Thinking模型,一个高效的推理助手。""" # 参数设置 PARAMETER temperature 0.7 PARAMETER top_p 0.9 PARAMETER top_k 50 PARAMETER num_predict 512 PARAMETER repeat_penalty 1.1 # 模板设置 TEMPLATE """{{ .Prompt }}"""

然后创建优化后的模型:

ollama create my-lfm2.5-optimized -f ./Modelfile ollama run my-lfm2.5-optimized

6.3 监控与调优

部署后别忘了监控,这样才能知道实际表现如何:

# 简单的性能监控 import time from prometheus_client import start_http_server, Summary, Gauge # 定义监控指标 REQUEST_LATENCY = Summary('request_latency_seconds', 'Request latency') REQUEST_COUNT = Gauge('request_count', 'Total request count') TOKENS_PER_SECOND = Gauge('tokens_per_second', 'Generation speed') def monitored_generate(prompt): start_time = time.time() # 调用模型生成 result = generate_text(prompt) latency = time.time() - start_time REQUEST_LATENCY.observe(latency) REQUEST_COUNT.inc() tokens_per_sec = len(result.split()) / latency TOKENS_PER_SECOND.set(tokens_per_sec) return result # 启动监控服务器 start_http_server(8000)

7. 总结

经过这一轮测试,我对vLLM和Ollama在部署LFM2.5-1.2B-Thinking时的表现有了比较清晰的认识。

vLLM在性能上确实有优势,特别是处理并发请求和长文本时。如果你要做生产部署,或者对性能要求比较高,vLLM是更靠谱的选择。它的吞吐量能比Ollama高出40%左右,这个差距在实际应用中还是挺明显的。

Ollama的优势在于简单易用,特别适合快速上手和资源有限的环境。它的启动速度快,配置简单,对于小规模应用或者开发测试来说完全够用。而且Ollama的社区生态不错,有很多现成的工具和集成。

实际用下来,我觉得没有绝对的“最好”,只有“最合适”。关键要看你的具体需求是什么。如果是正经的商业项目,我一般会推荐vLLM;如果是个人项目或者快速验证,Ollama更方便。

还有一个值得注意的点是,LFM2.5-1.2B-Thinking这个模型本身对框架的支持还不错。无论是vLLM还是Ollama,都能比较稳定地运行。这说明Liquid AI在模型优化上确实下了功夫,让开发者有更多选择空间。

最后给个建议:如果你还在犹豫,不妨两个都试试。反正部署起来都不难,实际跑一跑,看看哪个更符合你的使用习惯和性能要求。有时候实际体验比看数据更重要。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:25:51

AIGlasses_for_navigation开源可部署:模型版本管理与A/B测试切换机制设计

AIGlasses_for_navigation开源可部署&#xff1a;模型版本管理与A/B测试切换机制设计 1. 项目概述 AIGlasses_for_navigation是一个基于YOLO分割模型的目标检测与分割系统&#xff0c;最初为AI智能盲人眼镜导航系统开发的核心组件。该系统能够实时检测和分割图片、视频中的特…

作者头像 李华
网站建设 2026/4/20 18:06:12

如何永久保存直播瞬间?这款开源神器让录制效率提升300%

如何永久保存直播瞬间&#xff1f;这款开源神器让录制效率提升300% 【免费下载链接】BililiveRecorder 录播姬 | mikufans 生放送录制 项目地址: https://gitcode.com/gh_mirrors/bi/BililiveRecorder 直播录制已成为数字内容创作的核心环节&#xff0c;而开源工具Bilil…

作者头像 李华
网站建设 2026/4/22 21:10:56

视频创作者必备:Qwen3-ForcedAligner-0.6B自动字幕生成

视频创作者必备&#xff1a;Qwen3-ForcedAligner-0.6B自动字幕生成 1. 引言&#xff1a;为什么视频创作者需要“字级别时间戳”&#xff1f; 你有没有遇到过这些场景&#xff1f; 剪辑一段5分钟的采访视频&#xff0c;手动敲字幕花了2小时&#xff0c;结果发现“这个‘的’字…

作者头像 李华
网站建设 2026/4/23 8:52:40

小白必看:QAnything PDF解析模型保姆级安装指南

小白必看&#xff1a;QAnything PDF解析模型保姆级安装指南 1. 这个工具到底能帮你做什么 你是不是经常遇到这些情况&#xff1a; 收到一份几十页的PDF合同&#xff0c;想快速提取关键条款却要一页页手动复制&#xff1f;学术论文里的表格数据需要整理成Excel&#xff0c;但…

作者头像 李华
网站建设 2026/4/19 0:14:22

如何让Masa模组不再受语言障碍困扰?

如何让Masa模组不再受语言障碍困扰&#xff1f; 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 作为我的世界玩家的技术伙伴&#xff0c;我们经常收到这样的反馈&#xff1a;Masa系列模…

作者头像 李华