大模型部署该选谁?Ollama、vLLM 和 LMDeploy,各有千秋!

一、Ollama、vLLM 和 LMDeploy介绍

Ollama、vLLM 和 LMDeploy 都是与大语言模型相关的工具或框架,以下是它们的具体介绍:

Ollama

  • 简介:一个轻量级的模型托管框架,可在本地环境中运行和管理 LLM 模型。基于 Go 语言开发,集成了模型管理与交互界面,采用 MIT 许可。

  • 适用场景:适用于个人开发者测试、教育场景以及轻量应用,比如在 MacBook Pro(M3 芯片)等移动设备上调试,快速构建原型应用,或者在树莓派 5 + 外置 GPU 扩展坞等低功耗场景下使用。

vLLM

  • 简介4:高效的大型语言模型推理和部署框架,由加州大学伯克利分校开发,采用 Apache 2.0 许可,以 Python/PyTorch 为基础,优化了显存管理与批处理。

  • 适用场景:适用于高并发在线服务,如智能客服、批量生成等场景,以及单节点多 GPU 推理或中小规模云原生部署,对社区模型(如 LLaMA 系列)兼容性更优。

LMDeploy

LMDeploy 是一个高效且友好的 LLMs 模型部署工具箱,功能涵盖了量化、推理和服务。上海一家企业开发。LMDeploy 工具箱提供以下核心功能:

  • 高效的推理: LMDeploy 开发了 Persistent Batch(即 Continuous Batch),Blocked K/V Cache,动态拆分和融合,张量并行,高效的计算 kernel等重要特性。推理性能是 vLLM 的 1.8 倍

  • 可靠的量化: LMDeploy 支持权重量化和 k/v 量化。4bit 模型推理效率是 FP16 下的 2.4 倍。量化模型的可靠性已通过 OpenCompass 评测得到充分验证。

  • 便捷的服务: 通过请求分发服务,LMDeploy 支持多模型在多机、多卡上的推理服务。

  • 有状态推理: 通过缓存多轮对话过程中 attention 的 k/v,记住对话历史,从而避免重复处理历史会话。显著提升长文本多轮对话场景中的效率。

  • 卓越的兼容性: LMDeploy 支持 KV Cache 量化, AWQ 和 Automatic Prefix Caching 同时使用。

二、Ollama部署大模型

ollama一般是在个人电脑、服务器显存等配置较低的环境中,部署量化后的大模型。部署简单,但大模型都是量化后的(阉割版),其效果不怎么好。所以,一般来说,企业中不会采用Ollama部署大模型。

下载和安装

下载地址:https://ollama.com/

服务器环境:支持windows,Linux,MacOS 。Linux服务器首推 Ubuntu 。

windows环境的部署方法请看文章《DeepSeek本地安装太简单了,人人都会操作》

三、vLLM部署大模型

vLLM和LMDeploy是企业级部署大模型最常用的。 社区都很活跃。vLLM对服务器显存版本有很高的要求。

picture.image

官网文档:

https://docs.vllm.ai/en/latest/

中文文档(非官方):

https://vllm.hyper.ai/docs/getting-started/installation

cuda要求

vLLM contains pre-compiled C++ and CUDA (12.1) binaries.

软件环境要求

  • OS: Linux

  • Python: 3.9 – 3.12

  • GPU: compute capability 7.0 or higher (e.g., V100, T4, RTX20xx, A100, L4, H100, etc.)

创建Python环境

  
#Create a new conda environment.  
conda create -n vllm python=3.12 -y  
conda activate vllm

安装vLLM

  
#Install vLLM with CUDA 12.4.  
pip install vllm # If you are using pip.  
 

运行本地大模型

1、下载NLP大模型。

推荐大模型 qwen,llama,glm 。我们拿qwen2.5-0.5b来做测试。使用python语言调用模塔社区的大模型。

大模型网址:

https://modelscope.cn/models/Qwen/Qwen2.5-0.5B-Instruct/

  
# pip install modelscope  
#模型下载到本地。  
from modelscope import snapshot_download  
model_dir = snapshot_download('Qwen/Qwen2.5-0.5B-Instruct',cache_dir="/root/autodl-tmp/llm")

cache_dir一定要指定绝对路径。

2、vLLM运行大模型

sh命令:

  
vllm serve /root/autodl-tmp/llm/Qwen/Qwen2.5-0.5B-Instruct

测试:

  
from openai import OpenAI  
client = OpenAI(  
    base_url="http://localhost:8000/v1",  
    api_key="token-abc123",  
)  
completion = client.chat.completions.create(  
  model="/root/autodl-tmp/llm/Qwen/Qwen2.5-0.5B-Instruct",  
  messages=[  
    {"role": "user", "content": "请使用java编写冒泡排序!"}  
  ]  
)  
print(completion.choices[0].message)

其中vLLM的端口号是8000,model的值为模型的绝对路径。

四、LMDeploy部署大模型

LMDeploy是后起之秀,个人非常推荐这款软件。功能全面强大,符合国人使用习惯。对硬件的要求比vLLM低。

picture.image

github地址:

https://github.com/InternLM/lmdeploy

官方文档:

https://lmdeploy.readthedocs.io/zh-cn/latest/

picture.image

安装LMDeploy

  
conda create -n lmdeploy python=3.8 -y  
conda activate lmdeploy  
pip install lmdeploy

运行本地大模型

sh命令:

  
pip install partial\_json\_parser
  
lmdeploy serve api\_server /root/autodl-tmp/llm/Qwen/Qwen2.5-0.5B-Instruct --server-port 23333

--server-port 23333 指明端口号是23333 ,大模型路径要是绝对路径。

api_server 启动时的参数可以通过命令行lmdeploy serve api_server -h查看。 比如,--tp 设置张量并行,--session-len 设置推理的最大上下文窗口长度,--cache-max-entry-count 调整 k/v cache 的内存使用比例等等。

五、使用远程算力服务器

一般来说,我们都会使用算力云服务器进行部署大模型,以及训练、微调大模型。而本地的开发工具一般推荐使用VSCode 。VSCode有一个特强好用的端口转发功能,方便将服务器上的端口映射到本地。

picture.image

0
0
0
0
评论
未登录
暂无评论