Ollama vs VLLM:大模型推理性能全面测评!

news2025/3/12 10:18:55

最近在用本地大模型跑实验,一开始选择了ollama,分别部署了Qwen2.5-14B和Qwen2.5-32B,发现最后跑出来的实验效果很差,一开始一直以为prompt的问题,尝试了不同的prompt,最后效果还是一直不好。随后尝试了vllm部署Qwen2.5-14B,竟然发现指标提升了好多【不太清楚为什么最终效果能差这么多】…也有点迷惑,所以这篇文章就分析一下ollama和vllm有什么不同

Ollama

基本介绍

Ollama是一个支持在Windows、Linux和MacOS上本地运行大语言模型的工具。它允许用户非常方便地运行和使用各种大语言模型,比如Qwen模型等。用户只需一行命令就可以启动模型。

主要特点

  1. 跨平台支持Windows、Linux、MacOS系统。
  2. 提供了丰富的模型库,包括Qwen、Llama等1700+大语言模型,可以在官网model library中直接下载使用。
  3. 支持用户上传自己的模型。用户可以将huggingface等地方的ggml格式模型导入到ollama中使用。也可以将基于pytorch等格式的模型转换为ggml格式后导入。
  4. 允许用户通过编写modelfile配置文件来自定义模型的推理参数,如temperature、top_p等,从而调节模型生成效果。
  5. 支持多GPU并行推理加速。在多卡环境下,可以设置环境变量来指定特定GPU。

总的来说Ollama降低了普通开发者使用大语言模型的门槛,使得本地部署体验大模型变得简单易行。对于想要搭建自己的AI应用,或者针对特定任务调优模型的开发者来说,是一个非常有用的工具。它的一些特性,如允许用户自定义模型参数,对模型进行个性化适配提供了支持。

官网

  • Ollama 下载:https://ollama.com/download

  • Ollama 官方主页:https://ollama.com

  • Ollama 官方 GitHub 源代码仓库:https://github.com/ollama/ollama/

安装

安装方法官网已经说的很详细了

  • Linux 安装

Ollama提供了一键安装脚本,可以快速在Linux系统上安装Ollama。
安装步骤如下:

打开终端,执行以下命令下载安装脚本:

curl -fsSL https://ollama.com/install.sh | sh   

等待安装完成。安装脚本会自动下载所需的组件,并完成Ollama的安装与配置。

安装完成后,可以通过以下命令启动Ollama:

ollama serve   

下载模型

ollama下载模型很简单,直接一行命令完成了,比如我下载qwen:14b,直接运行

ollama run qwen2.5:14b

Vllm

vLLM(virtual Large Language Model)是一个专门为大规模语言模型设计的高效推理框架,它通过多种技术手段显著提高了推理性能和可扩展性。vLLM对Linux系统兼容性相对来说更好一点。

基本介绍

主要特点

  1. 效内存管理:采用了高效的内存管理策略,能够在有限的硬件资源上运行更大规模的模型。利用分布式内存管理技术和优化的数据流处理,有效降低了内存占用。
  2. 并行计算:借助并行计算技术,vLLM 可以在多 GPU、多节点的环境下进行高效的模型推理,大幅提高了处理大规模数据集的速度。
  3. 动态批处理:支持动态批处理,能够根据输入数据的不同自动调整批处理大小和计算资源的分配,从而优化推理效率。
  4. 模型压缩:为进一步提高效率,vLLM 还支持多种模型压缩技术,如量化、剪枝等。这些技术在不显著降低模型性能的前提下,减少了模型的计算复杂度和内存占用。

官网

  • vLLM 官方主页:https://docs.vllm.ai/en/latest/
  • vLLM 源码地址:https://github.com/vllm-project/vllm/stargazers

安装

# (Recommended) Create a new conda environment.
conda create -n myenv python=3.10 -y
conda activate myenv

# Install vLLM with CUDA 12.1.
pip install vllm

ollama vs vllm

特性OllamaVLLM
安装配置使用 Docker 容器进行部署,简化安装流程。推荐 Python 安装,需要安装 Python 环境和相关依赖,对技术要求较高。
模型支持支持多种大模型,包括 Qwen2.5 等,支持从 huggingface/modelscope 等平台下载的模型文件。
性能GPU 环境下推理速度优于 CPU,支持接入 OneAPI 提升性能。采用 PagedAttention 技术,提高内存利用率,支持高并发处理。
资源占用显存占用相对较低,例如 Qwen2.5:7b 模型仅需 6GB 显存。显存占用相对较高,例如单卡 16GB 显存可能不足以运行 Qwen2.5:7b 模型。
成本本地部署,需要本地硬件支持,成本取决于硬件配置。
应用场景更适合高并发、多检索点的复杂企业场景,在需要大量推理、并发任务处理以及复杂模型适配的场景中表现更为突出。采用的是一种高效的 Token-Level 并行(Token Swapping)机制,使其在处理生成任务时达到更低的延迟,尤其是在需要处理较长文本生成的 RAG 场景中具有明显优势。
易用性提供统一的 API 接口,支持多种编程语言 SDK,易于集成至业务应用。需要一定的 Python 编程基础
扩展性设计上考虑了未来模型的扩展性,易于添加新模型或更新现有模型。支持多种并行推理方式和多种硬件平台。

显存占用对比

ollama

  • ollama qwen2.5:14b 模型权重大小 9GB,运行需要 11G 显存。

vllm

vllm我运行使用的命令是

CUDA_VISIBLE_DEVICES=1 nohup python -m vllm.entrypoints.openai.api_server --model Qwen2.5-14B --max-model-len 20000 --trust-remote-code --api-key tcc123 > output.log 2>&1 &
  • vllm qwen2.5:14b 模型权重大小 9GB,运行竟然需要 39G 显存。竟然差别这么大!

推理速度对比

我们来看下ollama和vllm部署的qwen2.5:14b在执行相同代码下的推理速度的差异

vllm 第0次的执行时间为:6.737669229507446s
vllm 第1次的执行时间为:2.704115152359009s
vllm 第2次的执行时间为:6.883824110031128s
vllm 第3次的执行时间为:6.743424654006958s
vllm 第4次的执行时间为:6.750691890716553s
ollma 第0次的执行时间为:3.759061336517334s
ollma 第1次的执行时间为:3.660386323928833s
ollma 第2次的执行时间为:3.1638340950012207s
ollma 第3次的执行时间为:3.298168420791626s
ollma 第4次的执行时间为:3.5439224243164062s

ollama相对来说更快一点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2246756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.NET9 - 新功能体验(一)

被微软形容为“迄今为止最高效、最现代、最安全、最智能、性能最高的.NET版本”——.NET 9已经发布有一周了,今天想和大家一起体验一下新功能。 此次.NET 9在性能、安全性和功能等方面进行了大量改进,包含了数千项的修改,今天主要和大家一起体…

LeetCode 144.二叉树的前序遍历

题目:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 思路:根 左 右 代码: /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNod…

【论文阅读】WGSR

0. 摘要 0.1. 问题提出 1.超分辨率(SR)是一个不适定逆问题,可行解众多。 2.超分辨率(SR)算法在可行解中寻找一个在保真度和感知质量之间取得平衡的“良好”解。 3.现有的方法重建高频细节时会产生伪影和幻觉,模型区分图像细节与伪影仍是难题。 0.2. …

游戏引擎学习第21天

虽然没有上一节的难但是内容也很多 关于实现和使用脚本语言 以下是详细复述: 许多人经常问一个问题,反复问过好几次,那就是:是否会在项目中实现脚本语言。这个问题的具体形式通常是:你们会使用脚本语言吗&#xff1…

NVR接入录像回放平台EasyCVR视频融合平台加油站监控应用场景与实际功能

在现代社会中,加油站作为重要的能源供应点,面临着安全监管与风险管理的双重挑战。为应对这些问题,安防监控平台EasyCVR推出了一套全面的加油站监控方案。该方案结合了智能分析网关V4的先进识别技术和EasyCVR视频监控平台的强大监控功能&#…

springboot vue工资管理系统源码和答辩PPT论文

人类现已迈入二十一世纪,科学技术日新月异,经济、资讯等各方面都有了非常大的进步,尤其是资讯与网络技术的飞速发展,对政治、经济、军事、文化等各方面都有了极大的影响。 利用电脑网络的这些便利,发展一套工资管理系统…

部署实战(二)--修改jar中的文件并重新打包成jar文件

一.jar文件 JAR 文件就是 Java Archive ( Java 档案文件),它是 Java 的一种文档格式JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,多出了一个META-INF/MANIFEST.MF 文件META-INF/MANIFEST.MF 文件在生成 JAR 文件的时候…

RabbitMQ4:work模型

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

SpringMVC——简介及入门

SpringMVC简介 看到SpringMVC这个名字,我们会发现其中包含Spring,那么SpringMVC和Spring之间有怎样的关系呢? SpringMVC隶属于Spring,是Spring技术中的一部分。 那么SpringMVC是用来做什么的呢? 回想web阶段&#x…

鸿蒙开发-文件与分享

文件分类 按所有者: 应用文件:所有者为应用,包括应用安装文件、应用资源文件、应用缓存文件等。 用户文件:所有者是登录到该终端设备的用户,包括用户私有的图片、视频、音频、文档等。 系统文件:与应用和…

内存级文件原理——Linux

目录 进程与文件 Linux下的文件系统 文件操作,及文件流 C语言函数 文件流 文件描述符 系统调用操作 系统调用参数 重定向与文件描述符 输出重定向 输入重定向 文件内容属性 Linux下一切皆文件 进程与文件 当我们对文件进行操作时,文件必…

KubeSphere 最佳实战:K8s 构建高可用、高性能 Redis 集群实战指南

首发:运维有术。 本指南将逐步引导您完成以下关键任务: 安装 Redis:使用 StatefulSet 部署 Redis。自动或手动配置 Redis 集群:使用命令行工具初始化 Redis 集群。Redis 性能测试:使用 Redis 自带的 Benchmark 工具进…

apr共享内存

下载: Download - The Apache Portable Runtime Project 编译: 使用cmake-gui生成库: apr-1.lib aprapp-1.lib libapr-1.lib libaprapp-1.lib libapr-1.dll 在Developer PowerShell for VS 2019中: 执行nmake -f Makefile.win来…

Javaweb前端HTML css 整体布局

最后一个是线条颜色 盒子,整体还是300,400

5.STM32之通信接口《精讲》之USART通信---实验串口接收程序

根据上节,我们一已经完成了串口发送程序的代码,并且深入的解析探索了串口的原理,接下来,Whappy小编将带领大家进入串口接收程序的探索与实验,并将结合上一节串口发送一起来完成串口的发送和接收实验。 上来两张图 上图…

借助算力云跑模型

算力平台:FunHPC | 算力简单易用 AI乐趣丛生 该文章只讲述了最基本的使用步骤(因为我也不熟练)。 【注】:进入平台,注册登录账号后,才能租用。学生认证+实名认证会有免费的算力资源&#xff0…

SpringMVC 执行流程详解

目录 前言1. SpringMVC 的核心组件概述1.1 DispatcherServlet1.2 HandlerMapping1.3 HandlerAdapter1.4 拦截器(HandlerInterceptor)1.5 ViewResolver 2. SpringMVC 的执行流程详解2.1 接收请求并分发2.2 获取 HandlerExecutionChain2.3 获取 HandlerAda…

安卓应用安装过程学习

声明:此文章来自http://shuwoom.com/?p60的学习记录 启动式安装 public static final IPackageManager main(Context context, Installer installer,boolean factoryTest, boolean onlyCore) {PackageManagerService m new PackageManagerService(context, inst…

如何通过OpenSSL来创建自签名的CA证书?

通过创建自签名CA证书可以让我们在没有商业支持的情况下学习与研究PKI(公钥基础设施)和SSL/TLS技术,本文将详细介绍如何通过OpenSSL来创建自签名的CA证书。 1. 初衷:为什么需要创建自签名CA证书? 除了开篇引言中提到的…

mac安装Pytest、Allure、brew

安装环境 安装pytest 命令 pip3 install pytest 安装allure 命令:brew install allure 好吧 那我们在安装allure之前 我们先安装brew 安装brew 去了官网复制了命令 还是无法下载 如果你们也和我一样可以用这个方法哦 使用国内的代码仓库来执行brew的安装脚本…