llama.cpp部署大模型如何映射到局域网api

模型与算力

讲清 llama.cpp 起服务后怎么把推理接口开放到局域网,含监听地址、端口、防火墙与安全边界。

自己机器上 llama.cpp 跑通了,想让同事、手机或局域网里另一台机器也能调这个模型,结果发现只有本机 127.0.0.1 能连上。这篇按顺序讲清服务怎么起、监听地址怎么改、防火墙和路由哪一步容易漏,以及开放出去之后该做哪些限制。

自己机器上把 llama.cpp 跑通了,模型也正常出词,想让同事、手机或者局域网里另一台机器也能调这个服务,结果对方一请求就连接被拒绝——大概率不是模型没加载,而是服务只绑在本机回环地址上,外面根本看不到这个端口。这篇按实际排查顺序讲:先确认起的是哪种入口,再改监听地址和端口,然后过一遍防火墙和网段,最后说清开放出去之后该卡哪些边界。

整条链路就四段:服务进程有没有带 HTTP 接口、它监听的地址允不允许外部进来、主机与网络的放行规则、请求方填的地址对不对。任何一段断了,现象都是「连不上」,但修法完全不同,所以别一上来就改配置,先定位断在哪一段。

先分清:llama.cpp 的三种跑法哪种才带 API

llama.cpp 至少有三种常见用法:命令行对话、单次推理(跑一个提示就退出)、以及常驻的 HTTP 服务模式。只有第三种会开出接口路径供别的程序调用,前两种进程跑完就结束了,自然也没有端口可连。很多人以为「我明明跑起来了」,其实跑的是对话模式,看日志只有生成结果,没有监听提示。

  • 判断标准一:启动日志里有没有出现监听地址、端口和接口路径的提示行,没有就是没进服务模式
  • 判断标准二:进程是否常驻不退出,退出即结束的都不是服务
  • 判断标准三:本机用命令行或浏览器请求一下接口路径,能回内容才算服务真的起来了
  • 判断标准四:用系统命令看这个端口有没有被监听,比猜日志更快

如果对「服务模式」「监听」「回环地址」这些词的含义还没完全对齐,先去站内的基础设施术语区把概念过一遍,不然后面改参数容易改错位置。具体入口在 /ai-dict/category/infra。

改监听地址和端口:把服务从本机推到局域网

服务模式默认只绑本机回环地址,这是设计上的安全默认值,不是 bug。要让它被局域网里别的机器访问,需要把这个地址改成对外的全网卡地址(常见写法是监听所有网卡),并显式指定端口;改完必须把进程重启,参数才生效。命令的字段名在不同发布版本里会有出入,起服务之前到站内的部署测算页核对一下当前写法和说明,路径是 /models/deploy。

  1. 第一步,先在本机自测用本机地址请求一次接口路径,确认服务本身能回数据。回不了就别急着改监听,问题在服务没起好。
  2. 第二步,改监听地址和端口把监听地址从回环改成对外地址,端口挑一个没被占用的。启动后观察日志里报出来的实际监听值是否和你写的一致。
  3. 第三步,换一台机器验证用局域网里另一台机器,先确认能 ping 通主机 IP,再请求接口路径。这一步通了,说明监听这一层没问题。
  4. 第四步,注意端口冲突同一台机器上多个服务抢同一个端口会直接启动失败,报错通常出现在启动瞬间。与其排查是谁占了,不如先换一个端口试。

还是连不上:按这个顺序排查

服务本机自测能通、别的机器连不上,问题就落在网络上。这时候不要反复改服务参数,按下面的顺序逐层排除,每层只回答一个是非题,能最快定位到断点。

排查层怎么测通了说明什么不通就查什么
服务本机自测本机请求接口路径服务本身正常回到监听设置那一步
主机防火墙查放行规则里有没有这个端口本机允许外部进来放行该端口或对应进程
网段可达从另一台机器 ping 主机 IP两层在同一网络是不是跨网段、连了 VPN 或走了访客网络
请求方地址看客户端里填的是主机 IP 还是 localhost填对了目标localhost 永远指它自己,改成本机局域网 IP

最常见的漏项是主机防火墙没放行,或者请求方把地址填成了 localhost——后者看着像网络问题,其实只是地址写错。跨网段、VPN、访客网络这几种情况都靠 ping 不通快速识别,别在应用层反复试。

开放出去之后:谁能在什么范围内用什么

这类本地推理接口通常不带账号体系,安全性完全靠网络边界。局域网内开放和公网开放是两件性质完全不同的事:前者被同网设备调用,后者等于把一个无认证的推理入口挂到互联网上。需要外网访问时,优先走隧道或内网穿透并叠加一层认证,不要直接把端口映射出去。也不建议把它放进不设防的访客网段,那里面谁都能扫到。

  • 范围上先限定:只开给需要的网段,别默认全开放
  • 并发上要约定:本地单机推理扛不住多人同时发起长文本请求,排队比拒绝体验更好
  • 时段上可约定:高峰与非高峰给不同的人用,避免互相拖慢
  • 评估上要提前:还在选框架或选卡的时候,按模型规模核一遍显存和内存够不够,站内 /compute/sizing 可以对照算
  • 监控上留一手:至少能看到是谁在频繁调用,出问题时能定位

如果同时还在对比要不要换别的服务方式对外提供接口,可以到站内的服务或中转导航里看一圈现成方案,地址在 /sites,先搞清各自适合什么场景再决定要不要自建。

客户端怎么接:把地址填对就够了

服务端开放出来之后,客户端这一侧其实很简单:任何支持自定义接口地址的工具,填入主机的局域网 IP 加端口就行,模型名按服务端实际报出来的写。网页端、脚本、别的桌面工具可以同时调同一个服务,区别只在于各自配置里的地址字段填得对不对。

遇到报错先分清两类:一类是「连不上」,属于地址写错或服务没起;另一类是「连上了但返回异常」,属于参数或模型名不对。两类的报错位置完全不一样,别混在一起调。想先量一下往返延迟再决定给多少人共享,可以用站内的测速工具建个基线:/tools/speed-test。

下一步在你动手改监听之前,先到站内把接口与部署相关术语、当前部署写法核对一遍,能少踩一轮参数写错的坑。

常见问题

为什么我本机能用,同事那台就是连不上?

九成是服务只绑在本机回环地址上,只有本机能访问。把监听地址改成全网卡地址并重启,再确认主机防火墙和局域网同网段这两项,基本就通了。

开放到局域网会不会有安全风险?

有。接口一般没有账号密码,能连上就能调。所以只在可信内网开,别直接映射到公网,需要外网访问就套隧道加一层认证,也别把它放在访客网段里。

多人同时用同一个接口会怎样?

单机推理靠一张卡,并发一上来排队会明显变长,长上下文请求尤其明显。给共享接口约定并发上限和错峰时段,或者干脆按人数核一遍显存再决定放多少人进来。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。