ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

大模型本地部署全指南:从Ollama到vLLM的选型与实战

大模型本地部署全指南:从Ollama到vLLM的选型与实战 2026年再回头看本地部署已经不是什么“极客玩具”了。开源模型的能力曲线一直在往上走而推理工具经过这两年的迭代也成熟到了一个很务实的阶段普通人用 8GB 显卡也能跑 7B 模型企业用 24GB 到 48GB 显存就能私有化部署一个可用性相当不错的服务。这篇文章我尽量把“怎么选工具”和“怎么跑起来”两件事讲透结合我自己的实测和踩坑经历覆盖 Ollama、llama.cpp、vLLM 这几条主流路线并把显存计算、量化选择、微调框架选型、Dify 接入这些实操细节一起说清楚。如果你正准备开始本地部署大模型或者已经在跑但总觉得卡、慢、不稳定这篇就是给你写的。1. 先想明白你为什么要本地部署大模型很多人上来就问“哪个工具最好”但实话实说工具的好坏完全取决于你的场景。我见过有人在 4090 上装了 Ollama跑得好好的后来上了生产环境才发现并发扛不住也见过团队一开始就用 vLLM结果为了处理一个需求把部署复杂度拉满最后自己维护得很痛苦。所以选型第一步是先把需求想清楚。1.1 三种典型场景对应三种完全不同的部署方式第一种是数据敏感场景。企业内部文档、客户资料、代码仓库这些内容不适合传到云端的商业模型。这时候本地部署的核心价值不是“性能”而是数据不出内网。对这种场景我一般推荐 Ollama 或 llama.cpp因为它们简单、可控模型跑在物理机上没有多余的中间链路如果请求量大再考虑上 vLLM。第二种是高频推理的成本控制场景。团队要调 API 做大量业务调用公有云按 token 计费一个月下来账单可能比发工资还扎眼。本地部署的意义是把边际成本压到近乎为零——显卡是固定的电费可以忽略不计。这种场景需要关注吞吐量和并发能力我会偏向 vLLM 或 SGLang 这种生产级推理引擎。第三种是个人学习或离线工作场景。比如你在高铁上、在客户现场、在完全没有外网的环境里需要一个大模型随手用。这时候 Ollama 的小体积、低延迟优势就体现出来了它甚至不用 GPU纯 CPU 也能用只是慢一点。这三种场景没有优劣之分但如果你拿处理“个人玩具”的心态去跑生产服务或者拿生产级部署的复杂度去做个人测试都会很难受。1.2 本地部署能跑多大模型先记住两条原则原则一模型参数量决定权重的下限。一个 7B 参数的模型FP16 精度下光权重就是大概 14GBINT4 量化后大概 3.5GB。但你还要算上 KV Cache、CUDA context、并发请求的中间数据实际占用永远比“纯权重”高不少。原则二不要只看总显存还要看单卡还是多卡。24GB 的显卡想跑 32B 模型INT4 量化后权重约 16GB看起来余量很大但如果上下文长度开到 8192 甚至 32768KV Cache 可能吃掉 4GB 甚至更多。再叠加多个并发请求爆显存是分分钟的事。我建议你先把目标模型的量化等级和上下文长度定下来再回头选工具否则很容易出现“模型拉下来了卡上跑不动”的尴尬。2. 2026 主流工具全家桶从 Ollama 到 vLLM现在市面上能用的推理工具不少但真正值得花时间研究的就那几个。我按“从简单到复杂、从个人到生产”的顺序给你拆开讲。2.1 Ollama入门首选但别指望它扛高并发Ollama 应该是过去两年普及度最高的本地推理工具没有之一。它把模型下载、量化管理、推理服务打包成了一个非常友好的体验。你要做的事无非三条命令ollama pull、ollama run、ollama list。Ollama 底层用的是 llama.cpp所以它对 GGUF 格式支持很好量化模型直接拉下来就能跑。它还会自动做显存加载、上下文窗口管理对新手极其友好。我自己给朋友推荐入门都是一句话先装 Ollama跑通再说。但它的短板也很明显吞吐量和并发调度并不算强。单请求、短对话它的延迟表现不错一旦要同时服务很多用户或者需要流式输出大量 token它的排队和控制能力就会露怯。所以我的建议是个人使用、内部小范围测试、边缘设备部署用 Ollama 很好生产环境高并发还是看 vLLM。2.2 llama.cpp / GGUF硬件不够时的救命稻草llama.cpp 是纯 C/C 实现设计目标就是低资源跑大模型。它最拿手的是 CPU 推理、旧显卡、显存不足时把一部分层 offload 到内存。你现在看到的各种 GGUF 量化格式基本就是围绕它发展出来的生态。如果你手里是一台没有 NVIDIA 显卡的机器或者只有一张 4GB 的入门卡llama.cpp 通常比你硬上 PyTorch Transformers 要顺畅得多。它自己也带了一个llama-server能提供 OpenAI 兼容接口所以不是只能跑命令行。缺点是配置和编译需要一些动手能力编译时还要针对自己的 CPU / GPU 做优化比如是否启用 CUDA、Metal 还是 RoCM。如果不想折腾直接用 Ollama(它内置了 llama.cpp)就好。2.3 vLLM / SGLang生产级推理的正确打开方式一旦你要把本地模型当线上 API 用Ollama 就不太够用了。vLLM 的核心优势是 PagedAttention 和 Continuous Batching简单说就是能让一批请求共享显存、动态插队把 GPU 的吞吐压榨得更狠。我在实测定长文本生成时vLLM 的吞吐量通常能比直接跑 Transformers 翻几倍。它启动后直接提供 OpenAI 兼容的/v1/chat/completions接口下游应用几乎不用改代码就能接。SGLang 是后起之秀它在结构化输出、多轮记忆、RadixAttention 上有一些独到优化如果你主要做 Agent 或者复杂 workflow可以重点关注。但整体生态和文档成熟度vLLM 目前还是更稳。2.4 LM Studio / GPT4All不想敲命令行的桌面派如果你就是想在笔记本上装个 GUI点鼠标跑模型LM Studio 和 GPT4All 都很合适。LM Studio 对 GGUF 模型的管理非常直观可以下载、加载、聊天、开一个本地服务给其他应用用GPT4All 更轻量适合随时打开问两句。这类工具的好处是零门槛坏处是性能和定制能力都有限。它们更适合体验不适合做重型服务。2.5 微调工具框架选型跑起来之后绕不开的话题推理只是本地化的第一步。真正要让模型贴合自己的数据微调迟早绕不开。2026 年最主流的微调框架我列一下我的实际体感框架适合谁优势缺点LLaMA-Factory中文社区用户、刚入门微调的新手一体化 UI支持 LoRA/QLoRA/Full数据集格式友好重度场景下灵活性不够Unsloth消费级显卡用户训练速度快显存占用低量化 LoRA 效果好对非主流模型适配可能慢半拍Axolotl有经验的研究者YAML 配置灵活可做深度定制学习曲线陡配置复杂Transformers TRL深度学习工程师与 HuggingFace 生态无缝衔接可控性最强自己写代码工程量大我目前个人最常用的组合是数据整理阶段用 LLaMA-Factory 快速验证正式训练时用 Unsloth 的 QLoRA 跑小批量实验。如果你的显存只有 8GB 左右别去碰全参微调QLoRA 4bit 才是你的朋友。3. 硬件与量化一张显卡到底能跑多大的模型工具选完之后最现实的约束来了你的硬件到底能跑什么模型很多人栽在“模型下载了结果显存不够”这一步。这里我把计算方法和选择思路给你讲透。3.1 先算显存账量化等级与模型参数的换算先记住一个基础换算公式权重显存 ≈ 参数量十亿 × 每参数字节数不同精度对应关系如下精度每参数字节7B 模型权重14B 模型权重32B 模型权重FP162 字节约 14GB约 28GB约 64GBINT81 字节约 7GB约 14GB约 32GBINT40.5 字节约 3.5GB约 7GB约 16GB这只是权重。真正跑起来你还需要算 KV Cache。KV Cache 的大小大致和“序列长度 × 层数 × 注意力头数”有关实操经验是7B 模型在 8K 上下文下KV Cache 大约 1GB 到 2GB再叠加 CUDA context、激活值、碎片我建议实际留出 20% 的余量。举个例子一张 8GB 显卡跑 7B Q4 模型权重 3.5GBKV Cache 和运行时额外占用 2GB 左右总共 5.5GB 上下能跑但如果把上下文开到 32K再加多个并发8GB 就非常危险。而一张 24GB 显卡跑 32B Q4权重 16GB余量 8GB日常使用完全没问题但想上 70B 就基本不可能了。3.2 CPU 与边缘设备路线Jetson Orin 这类设备怎么玩不是所有部署都非得有高端显卡。Jetson Orin 这类边缘设备在工业现场、机器人、嵌入式场景用得越来越多。它的显存和内存是共享的跑大模型的原则是“选小模型上重度量化”。如果你要在 Jetson Orin 上部署 DeepSeek 这类模型的蒸馏小版本比如 1.5B、3B、7B 的 INT4 版本体验会好很多。原因是这类设备的内存带宽虽然比笔记本好但和真正的显卡还是有差距模型越大推理越容易变成内存带宽瓶颈。建议优先用 llama.cpp 的 CUDA 版本并搭配 Q4_K_M 量化效果比直接用 PyTorch 要好一个量级。CPU 路线的话关键看内存带宽。同样一个 7B Q4 模型在 DDR5 双通道的笔记本上可能只有 2 到 3 tok/s在服务器 DDR5 八通道上能到 10 tok/s 以上。能用 GPU 还是尽量用 GPUCPU 只是“有胜于无”的兜底方案。3.3 显存不够的软出路量化、投机采样和 KV Cache 优化如果你评估之后发现显存差一点不是只有“换卡”一条路。2026 年有几个常见手段换更狠的量化。从 Q8 降到 Q4再从 Q4_K_M 降到 Q4_K_S模型体积能再压缩 20% 到 30%但精度和效果会有轻微下降。启用 FlashAttention。它能显著减少显存占用同时加速推理。收紧 KV Cache。长度限制短一点或者开启 KV Cache 量化能省出不少空间。投机采样Speculative Decoding。用一个小的 draft model 做初稿大模型做校验实际加速明显。这些手段优先级要看工具支持情况Ollama 里能调的部分不多但 vLLM 和 llama.cpp 都有相关参数。你先跑一次观察日志里的显存占用再决定优化方向。4. 实操流程从下载模型到对外提供服务全链路聊完理论直接上实操。这一节我会把从零到可用 API 的完整链路走一遍涵盖 Ollama、vLLM 和 Dify 三种典型用法。4.1 环境准备先把地基打好系统层面如果你是 Linux 服务器推荐 Ubuntu 22.04 或 24.04。NVIDIA 驱动需要提前装好CUDA 版本尽量用 12.x。Python 环境我建议用 conda 或 uv 隔离不要一股脑装到系统 Python 里否则后面依赖冲突会想砸键盘。模型下载方面推荐用 Hugging Face 官方 CLIpip install -U huggingface_hub huggingface-cli download Qwen/Qwen2.5-7B-Instruct-GGUF --local-dir ./models/qwen2.5-7b-instruct-gguf如果网络环境不好可以换国内镜像具体地址不同阶段有变化核心思路是下载带断点续传不要用浏览器下载几十 GB 的大文件。目录规划也重要我习惯把所有模型放在一个独立磁盘目录下比如/data/models避免和系统盘抢空间。4.2 用 Ollama 十分钟跑通第一个对话Ollama 的安装很简单官方脚本一键完成curl -fsSL https://ollama.com/install.sh | sh装完后拉模型ollama pull qwen2.5:7b ollama run qwen2.5:7b看到命令行进入对话状态输入“你好”能正常回复就算跑通了。如果你想要自定义系统提示词可以用 ModelfileFROM qwen2.5:7b SYSTEM 你是一个严谨的文档助手回答尽量简洁并给出来源依据。然后创建模型ollama create my-assistant -f Modelfile ollama run my-assistantOllama 默认在localhost:11434提供 API你可以很快验证curl http://localhost:11434/api/chat -H Content-Type: application/json -d \ {model:qwen2.5:7b,messages:[{role:user,content:介绍一下你自己}]}到这一步你已经完成了本地部署的最小闭环。但要注意这个服务默认没有鉴权生产环境至少要加一层反向代理和 Token 校验。4.3 生产级部署vLLM OpenAI 兼容 API如果你需要稳定并发、高吞吐直接用 vLLM 部署。先安装pip install vllm然后启动服务vllm serve Qwen/Qwen2.5-7B-Instruct \ --host 0.0.0.0 \ --port 8000 \ --max-model-len 8192 \ --gpu-memory-utilization 0.90这里--max-model-len 8192限制最大上下文避免显存被吃满--gpu-memory-utilization 0.90表示允许模型最多占用九成显存留一点余量给系统和调度。启动日志出现“Application startup complete”之后就能用 OpenAI SDK 直接请求curl http://localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -d {model:Qwen/Qwen2.5-7B-Instruct,messages:[{role:user,content:你好}],stream:true}模型名要跟启动时参数一致一般默认是完整的 Hugging Face repo 名称。下游代码把base_url改成http://localhost:8000/v1API key 随便填一个占位符即可。4.4 接入 Dify 这类应用编排平台本地模型跑通后真正落地往往要接到应用。Dify 是我目前用得最多的开源 LLM 应用平台它可以把知识库、工作流、Agent 和模型层组合起来。Dify 本地部署一般用 Docker Compose模型接入方式选“OpenAI-API-compatible”这一类。要注意 Docker 容器访问宿主机端口时不能直接写localhost需要写http://host.docker.internal:8000/v1如果是 Linux 容器有时候要写网关地址http://172.17.0.1:8000/v1。填上之后再设置模型名称对应 vLLM 启动时的模型 IDAPI key 随便填保存后就能在应用里选到这个本地模型。这一步踩坑的人特别多表面上看起来是“模型连不上”其实八成是容器的网络命名空间和宿主机不互通导致的。先说结论Docker 里访问宿主机服务首选host.docker.internal。5. 实测对比同一台机器上不同工具的真实差距理论讲再多不如一组实测数据来得直观。我在一台 RTX 4090 24G 上做过一轮非严格 benchmark模型是 Qwen2.5-14B-Instruct 的 INT4 版本上下文 8192。数据仅供你感受工具之间的差异趋势具体数字会因驱动、模型量化、输入长度不同而波动。工具单请求速度4 并发8 并发显存占用首字延迟Ollama35 tok/s18 tok/s8 tok/s约 10GB约 0.5sllama.cpp server38 tok/s21 tok/s10 tok/s约 10GB约 0.5svLLM32 tok/s28 tok/s22 tok/s约 14GB约 1s单个请求时Ollama 和 llama.cpp 的生成速度甚至比 vLLM 还高因为 vLLM 在低负载下会有一些调度开销。但并发一上来vLLM 的优势立刻显现它能把多个请求塞进同一个 batch共享 KV Cache 和计算资源所以 8 并发时仍然能稳定在 20 tok/s 以上而 Ollama 在 8 并发时已经明显排队。这个对比说明一个核心问题单看“谁跑得快”没有意义要看“谁在什么负载下跑得快”。一个人自己聊天Ollama 很爽一个应用有几十个人同时用vLLM 才是真正能扛事的那个。5.1 不同规模模型的推荐组合根据我的实际经验给你一套可抄作业的组合硬件条件推荐模型规模推荐工具理由8GB 显卡或纯 CPU1.5B ~ 7B Q4llama.cpp / Ollama体积小量化后内存可控12GB 显卡7B ~ 14B Q4Ollama / llama.cpp单机低并发性价比最好24GB 显卡14B ~ 32B Q4vLLM / SGLang可以跑出接近生产的吞吐48GB 及以上32B ~ 70B Q4vLLM 多卡适合高并发和长文本Jetson Orin 边缘设备1.5B ~ 7B Q4llama.cpp / Ollama显存共享模型越小越稳这套组合不是绝对标准但能帮你快速划定选型范围。预算有限的个人用户直接把目标投到“7B 模型 Ollama”这组上效果和性价比最均衡。6. 避坑清单我从踩坑里总结的六条经验最后这部分我不想写“你应当注意以下几点”这种空话直接把踩过的坑和对应的处理办法列出来每一条都是真金白银换来的。6.1 显存账少算 KV Cache爆显存后怀疑人生我第一次部署 13B 模型时算了一下权重差不多 7GB放进 8GB 显卡绰绰有余。结果一跑长对话直接 OOM。原因就是没算 KV Cache。尤其是上下文长度一拉开KV Cache 的增长非常快。现在我的习惯是启动前先用ollama list查看已占显存并把num_ctx或者max_model_len限制在一个合理值比如 8K。宁可损失一些长文本能力也要保稳定。6.2 混淆 GGUF 和 SafeTensor导致下载两次Ollama 用 GGUFvLLM 用 SafeTensor(AWQ/GPTQ 是量化版)。如果先下载了一堆 GGUF想换 vLLM 跑才发现用不了又要重新下载几十 GB很痛苦。建议一开始就定好路线个人日常用 GGUF生产服务用 SafeTensor 或 AWQ。如果追求通用有些工具比如 llama.cpp 也能加载部分 SafeTensor但转换过程并不平滑。6.3 生产服务忘记加鉴权被外面打到资源耗尽本地部署的 API 默认监听所有网络接口时没有任何鉴权。如果你直接把它暴露在公网基本等于送菜。至少要做两件事内网部署不对外暴露端口必须外网访问时前面加 Nginx 并开启基本鉴权或 Token 校验。这个坑我见过不止一次希望大家引以为鉴。6.4 Python 环境互相污染CUDA 版本暗坑不断要跑 vLLM、ComfyUI、MinerU、CosyVoice 这些周边工具时对 CUDA 和 PyTorch 版本要求各不相同。我一开始喜欢把所有东西装进一个 conda 环境结果 vLLM 要求 PyTorch 2.5ComfyUI 又跟着不同插件走最后冲突到怀疑人生。现在我会针对每个项目建独立虚拟环境并固定核心依赖版本。这个习惯能省下大量排查时间。6.5 在 Docker 里访问宿主机端口local 是永远连不上的Dify 容器要连 vLLM 服务最典型的错误就是写http://localhost:8000。容器内的 localhost 是容器自己不是宿主机。改成http://host.docker.internal:8000或网关 IP 之后基本都能通。封装成配置项时我会把“宿主机地址”通过环境变量注入避免不同环境的差异让人懵。6.6 微调不是玄学数据准备比框架重要如果你已经进入微调阶段你会发现框架不是瓶颈数据才是。同样用 LLaMA-Factory有人做出来的模型效果不错有人一塌糊涂区别主要在于数据清洗和 prompt 格式。建议先做一个“小数据实验”拿 1000 条高质量样本把 LoRA rank 调到 16跑通流程后观察 loss没问题再放大到全量数据。不要一上来就全量微调浪费显卡不说出了问题还很难排查。我个人实际用下来2026 年本地部署大模型的门槛已经低到“一台普通游戏笔记本就能玩 7B 模型”的程度。真正难的不是跑起来而是根据需求选对工具、算好显存、处理好周边依赖。把上面这几条路走一遍你就不会再被“选什么工具”“怎么部署”“为什么跑不起来”这种问题卡住。最后提醒一句生产环境别贪新稳定优先先把一条链路完全跑通再扩容。
返回列表