最近在搞本地部署,主要是想跑7B左右的模型做对话和文档摘要。之前一直用HuggingFace的transformers直接推理,但速度确实有点慢,显存占用也不理想。看社区里大家都在推vLLM,说吞吐量很高,但我试了一下,有些模型的算子支持还不太全,报错的时候有点懵。又看到TensorRT-LLM,感觉性能上限更高,但配置流程好复杂,要转engine,还要调batch size和精度,我这种半吊子选手有点hold不住。想问问大家日常生产或学习场景下更倾向于用哪个?有没有踩坑经验能分享一下?另外,如果只是自己玩,是不是干脆用llama.cpp或者Ollama这种更省心?
大家跑开源大模型都用什么框架?vLLM和TensorRT-LLM有点纠结
全部回复
共 86 条跟你情况差不多,7B模型我最后留了vLLM,吞吐确实香,但小算子报错直接看源码改配置太劝退。TensorRT-LLM我折腾了一周末,性能强归强,日常迭代真没那精力。自己玩强烈建议Ollama,一行命令跑起来,显存不够还能自动分片,省下的时间多调调prompt不香吗。
自己玩直接Ollama,别折腾,生产再上vLLM,TensorRT-LLM那配置真不是人干的。
自己玩直接Ollama,省心到飞起,折腾vLLM调参的时间够我跑完仨项目了。
vLLM的坑我也踩过,算子报错多半是版本没对齐,换新版本或者加个--dtype auto能解决不少。TensorRT-LLM确实性能猛,但调起来太吃经验了,我折腾一周直接放弃。自己玩的话Ollama真香,一条命令跑起来,显存不够还能自动压层,日常对话完全够用。要是想深入搞吞吐优化再回头啃vLLM也不迟。
说实话我跟你情况差不多,也是7B左右模型日常跑,vLLM和TensorRT-LLM都折腾过一阵。vLLM胜在开箱即用,社区活跃,报错搜一下基本有解,但你说的算子支持问题确实存在,尤其是一些新模型或者带自定义op的,得等版本更新或者自己改代码,挺磨人的。TensorRT-LLM性能确实猛,但那个engine转换和精度校准的流程,我每次搞都要翻半天文档,而且换一次模型就得重新来一遍,时间成本太高了,感觉更适合固定场景下的生产部署,不适合咱这种频繁试模型的场景。
我现在的做法是分情况用:如果只是自己调试对话或者做文档摘要,直接上Ollama或者llama.cpp,省心程度拉满,量化后显存占用也低,速度完全够用。真要测吞吐或者多路并发,再切到vLLM,把模型先跑通再说。至于TensorRT-LLM,我建议等哪天你有明确性能瓶颈、而且模型基本定下来了再去碰,不然前期折腾的时间都够你多跑几百轮测试了。
另外你提到的显存问题,如果用的是4090或者24G卡,7B模型用4bit量化在Ollama里也能跑得挺流畅,而且支持OpenAI API格式,写个小服务对接也方便。反正别被框架绑架,工具是死的,需求是活的,哪个顺手用哪个,踩坑多了自然就有感觉了。
老实说如果你主要跑7B量级,vLLM的坑大概率是算子兼容性,但胜在社区更新快,报错丢issue基本几天就有回应。TensorRT-LLM性能确实猛,可那套engine转换和精度调参的学习成本,够你多跑好几个模型了。我自己是生产环境用vLLM稳一点,自己折腾玩就Ollama,省下时间多调调prompt不香吗。顺便问下你显存多大?如果16G以上,其实可以试试GPTQ量化版,能把很多兼容问题绕过去。
自己玩就Ollama,别折腾,vLLM适合批量场景,单机对话真没必要上TensorRT。
说实话我跟你情况差不多,7B这档位真没必要一上来就上TensorRT-LLM,那玩意儿调engine的时间够你跑几百次推理了。vLLM我用了大半年,吞吐确实香,但你说的算子报错我也遇到过,特别是碰到一些冷门模型或者自定义结构时,PagedAttention的兼容性会突然给你来个惊喜,查issue能查一晚上。后来我学乖了,生产环境固定用vLLM,但本地折腾新模型时直接切llama.cpp,虽然速度差点但胜在省心,量化后7B模型16G内存都能跑,显存不够时还能用mmap硬扛。Ollama其实底层就是llama.cpp套壳,胜在命令简单,适合纯玩不折腾,但你要是想调采样参数或者看中间log,它又有点限制。我的建议是别纠结框架,先看你要跑哪些模型,如果是llama系、qwen系这种主流货,vLLM基本全覆盖,要是偏门一点的,老老实实llama.cpp保底。另外你提到显存占用,transformers慢是因为动态图且不做KV cache复用,vLLM的continuous batching在并发多的时候优势巨大,单条请求反而感知不强。最后补一句,TensorRT-LLM等哪天你真要上生产且batch size固定再碰,不然光那些优化选项就能让你怀疑人生。
自己玩果断Ollama,7B模型真没必要折腾vLLM,除非你要上生产扛并发。
自己玩就Ollama,省心太多,vLLM那套配置折腾半天不如多跑几个测试。
自己玩果断Ollama,省心太多,vLLM调参调得脑壳疼,7B模型差距真没那么大。
自用就Ollama,省心到飞起,别折腾那些框架了,性能差距体感真没那么大。
vLLM报错确实劝退,TensorRT-LLM配置太硬核,我最后老实回归transformers加个量化。
说实话,你这个纠结我太懂了。我之前也卡在vLLM和TensorRT-LLM之间,最后发现还是得看场景。vLLM胜在生态省心,但确实像你说的,遇到冷门模型或新算子,报错能让你怀疑人生,而且它本质是优化吞吐的,单条对话的延迟有时候反而不如直接怼显存来得快。TensorRT-LLM性能是真的猛,但那个engine转换流程,加上要手动调精度和batch,我搞了两天才跑通一个7B,中间各种版本不匹配,差点劝退。
如果你只是自己玩,或者做点demo,我强烈建议直接上llama.cpp或者Ollama。llama.cpp的量化版跑7B,CPU都能凑合,显存占用低得感人,Ollama更是装上就能用,API也简单。我现在的日常就是Ollama跑对话,文档摘要这种短任务完全够用,根本不用去碰那些重型框架。
但如果你是想认真搞并发服务,比如给团队做个内部工具,那vLLM还是值得啃下来的,毕竟支持PagedAttention,并发高的时候显存利用率确实香。TensorRT-LLM的话,除非你要上生产且对延迟有极致要求,否则前期投入的学习成本真不划算。我现在的建议是,先拿Ollama把业务逻辑跑通,等并发真上来了再迁移vLLM,别一步到位去搞TensorRT,不然很容易卡在环境配置上消磨热情。
说实话你这个阶段我太理解了,我之前也是transformers硬扛,后来换vLLM直接打开新世界。不过你提到的算子兼容问题确实存在,尤其遇到一些冷门模型或者自定义结构时,报错信息又长又抽象,最后只能老老实实去GitHub翻issue,挺消磨耐心的。
TensorRT-LLM我试过一次,性能确实猛,但那个engine转换流程加上精度校准,我折腾了一晚上才跑通一个7B模型,第二天醒来又忘了怎么配的,感觉更适合有明确生产需求且愿意长期投入的人。如果你只是自己研究或者做做demo,真没必要这么折腾,llama.cpp的量化版跑起来其实挺顺的,内存占用也友好,就是吞吐量跟vLLM比差一截。
我现在的做法是分场景用:自己写代码调试逻辑就用transformers,追求响应速度跑并发就用vLLM,纯本地快速验证直接Ollama拉模型。反正框架这东西没有银弹,关键看你想在哪个环节省时间。对了,你跑对话和文档摘要的话,可以试试vLLM的continuous batching,对短请求特别友好,显存碎片问题也缓解不少。
vLLM我也踩过算子兼容的坑,后来发现7B模型用fp16跑其实问题不大,报错多半是量化或者自定义op没适配。TensorRT-LLM性能确实猛,但调参时间够我多跑几十个实验了,除非是长期固定模型部署,不然真没必要。自己玩的话Ollama最香,零配置开箱即用,显存不够还能自动切CPU,文档摘要这种场景完全够用。另外你试过SGLang没?最近在吞吐和兼容性上平衡得不错,报错信息也比vLLM友好。
我是vLLM的重度用户,但你说的算子报错我也遇到过,后来发现升级到最新版能解决大部分问题。如果只是7B模型自己玩,真心建议直接Ollama,零配置跑起来比啥都香,真要上生产再折腾TensorRT-LLM也不迟。顺便问下你显存多大?我16G跑7B量化用vLLM还挺稳的。
自己玩真的别折腾TensorRT-LLM,我当初为了转个engine折腾了一晚上,最后发现ollama两行命令就搞定了。不过如果你要追求极致吞吐,vLLM值得花时间调,7B模型其实算子覆盖问题还好,报错多半是版本没对齐,升到最新版能解决很多。我现在是学习和简单任务用ollama,真要压性能才上vLLM,分工明确就不纠结了。
其实你这需求7B模型的话,vLLM的算子问题基本碰不到几个,真遇上了直接换掉那个模型就行,没必要死磕。TensorRT-LLM那套折腾半天,性能提升对你单机场景感知不强,还浪费时间。我平时生产用vLLM,自己折腾就扔给Ollama,省心到飞起,llama.cpp主要是老机器或CPU跑才用。你先把vLLM的continuous batching和paged attention吃透,比纠结框架强多了。
说实话,咱俩情况差不多,我最后是vLLM和Ollama双轨跑的。vLLM确实强在连续推理和高并发,但你说的算子报错我也遇到过,尤其是碰到一些比较新的量化模型或者自定义结构,得去翻issue看补丁,对半吊子选手不太友好。TensorRT-LLM我折腾过一晚上,性能是真的猛,但那个engine转换加上动态shape的调参,感觉像在写毕业论文,如果不是天天要卡着延迟上限跑服务,真没必要这么虐自己。自己玩的话,Ollama真的香,一条命令拉模型跑起来,显存不够还能自动塞一部分到CPU,虽然速度上限低点,但胜在省心,文档摘要和对话完全够用。我现在是这种策略:平时写demo或者自己研究用Ollama,真要压测吞吐或者搭个小服务才切vLLM,而且只敢用社区验证过的热门模型,冷门模型宁可用transformers硬扛。另外你提到llama.cpp,如果你机器是纯CPU或者低显存,那个确实比Ollama更灵活,但交互性差一些,改参数要记一堆命令行。我觉得你可以先定个目标:如果追求“跑起来能用”就Ollama,如果追求“跑得快且能调优”就vLLM,别想着一步到位,反正环境都是慢慢折腾出来的。
我跟你情况差不多,7B模型日常够用,vLLM遇到算子报错确实头疼,但把transformers换成它之后吞吐提升立竿见影,值得忍一忍。TensorRT-LLM我试过转engine,调参调得怀疑人生,除非你追求极致性能,不然真没必要一开始就碰。自己玩的话,Ollama装完就跑,零配置,显存占用也低,对话摘要完全够用,等哪天觉得慢了再折腾vLLM也不迟。我目前是Ollama日常用,vLLM留着跑批量任务,分工明确。