LLM/MLLM的快速便捷推理方法笔记
本文最后更新于:2025年7月9日 上午
LLM/MLLM的快速便捷推理方法笔记
在做科研的时候经常需要用到LLM或MLLM来处理数据,大量的数据往往会花费太多的时间,同时我又不想花费太多时间在处理报错、环境配置或理解模型架构上,所以这篇笔记提供两种快捷的方式进行快速又便捷的推理方法。
本笔记不涉及低算力下的推理优化,且只关注大模型运行环境为Linux+CUDA的情况。
Ollama
Ollama是一个开源的本地LLM运行应用,支持多个系统,设计十分简洁,对用户来说基本能够一键运行,对大陆用户来说下载模型速度很快、没有墙。Ollama内部提供了对模型的优化(包括量化和Cache优化等)。
目前网络上有很多相关资料,我就介绍我使用的方式。
官方安装指南:https://github.com/ollama/ollama/blob/main/docs/linux.md
官方网址:https://ollama.com/
安装方法:
官网给的Linux安装方法是脚本自动安装,这里提供无需sudo权限的手动安装方法:
- 系统中安装好CUDA(版本我尝试11.x和12.x都没关系)
- 从这个网址下载安装包并解压(随便怎么下载,随便解压到什么地方):
https://ollama.com/download/ollama-linux-amd64.tgz
- 找到ollama的二进制可执行文件,运行
./ollama serve
即可运行。这是ollama的服务端,一定要开启之后,才能进行模型下载、发送推理请求的操作。
配置和功能:
-
下载模型:在确保后台
ollama serve
运行的情况下,打开另一个terminal,输入ollama pull <tag>
即可下载,此处的<tag>
在ollama官网可以查询,注意这个tag和模型官方给出的模型名会有差异(例如qwen3:8b
vsQwen/Qwen3-8B
)。由于模型过大,默认下载到系统盘可能吃不消,所以在运行
ollama serve
时可以指定安装位置的环境变量:export OLLAMA_MODELS=/data/ollama_models
。 -
多卡均衡:ollama默认只使用一张卡,要使用多卡则需要设置
export OLLAMA_SCHED_SPREAD=1
,则会默认平均到CUDA_VISIBLE_DEVICES
环境变量指定的可见卡上。 -
并行:为了充分利用显存和IO,可以让ollama并行处理多个请求,同样只需要设置环境变量
export OLLAMA_NUM_PARALLEL=4
,其中数字为并行量。 -
多模型提供服务:假如同一台机器上,有的同学想跑模型A,有的同学想跑模型B,在服务器资源充足的情况下,只需开启一个ollama,它会自动加载和卸载模型。
推理方法:
ollama支持openai兼容的API,所以用openai的python SDK就可以,并且类似instructor之类的结构化输出的库也没有问题。
下面是一个代码的示例,注意对应端口是11434,API key随便写,model name是ollama对应的tag。
1 |
|
vLLM
vLLM是一个开源的本地LLM运行库,相较于ollama来说专业性/可定制性更强,更偏向是一个library而非application。vLLM同样通过PagedAttention、FlashAttention、FlashInfer等库提供了充分的优化,且支持各种量化模型。此外,vLLM兼容HuggingFace上的模型,这个范围比ollama大多了。
官网:https://docs.vllm.ai/en/stable/
GitHub:https://github.com/vllm-project/vllm
安装方法(官方教程):
- 系统驱动支持最新的CUDA。写稿时,最新的CUDA版本是12.x,假如系统无法装12.x的CUDA的话,跑起来会相当麻烦。
- 创建conda虚拟环境,使用较新的python版本。官方好像不推荐conda,但是我一直用都没遇到什么问题。vLLM为了实现极致优化,一直跟进最新的pytorch、cuda、python版本,所以什么都用最新的就行。
- 安装:
pip install vllm --extra-index-url https://download.pytorch.org/whl/cu128
。这一步会使用pre-built whells,所以安装不需要编译各种算子,过程会十分顺利。
模型下载:
vLLM不host模型仓库,直接从Hugging Face Hub下载即可。你可以使用huggingface-cli
下载:huggingface-cli download HuggingFaceH4/zephyr-7b-beta --cache-dir ./path/to/cache
。
然而,HF被墙,而且大模型耗流量很多,所以我经常使用国内的ModelScope(魔搭)下载,这个平台基本就是阿里做的HuggingFace的翻版,里面的模型完全兼容,格式一模一样,不过下载源是国内的,十分快。在使用pip安装好pip install modelscope
之后,即可下载:modelscope download --model Qwen/Qwen2.5-VL-72B-Instruct-AWQ --local_dir ./dir
在模型命名上,使用的是通用的HF风格的名称,例如Qwen/Qwen2.5-VL-72B-Instruct-AWQ
。
模型推理:
vLLM有offline模式和online模式,其中online模式和Ollama类似,通过vllm serve
加载模型之后使用兼容openai的接口进行推理;但是我一般使用offline模式,通过类似HF的方式在python代码里加载模型然后推理,这样自由度更高。
MLLM经常涉及对多张图像以及视频进行推理,对视觉内容的预处理经常需要根据需求来做,而vLLM的offline模式有足够的自由度,对MLLM各种功能的支持更好。
在处理大批量数据的时候,我经常使用这套思路:
- 使用vLLM的offline模式
- 使用PyTorch的Dataloader来多线程加载图像/视频,减少IO性能损耗
- 处理过程中实时保存预测数据,并能够从中断处恢复
- 假如显存充足,进行batch推理
- 运行过程中注意加载时vLLM的报告,假如有哪些优化库没装,可以根据提示装上
下面是我使用Qwen2.5-VL进行视频描述的一个实际代码:
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!