在自己硬件上跑 OpenAI 兼容的本地推理服务:LocalAI 部署完全指南
【免费下载链接】LocalAILocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI
⚡ 一个反直觉的起点
你正在按 token 付费调用的那个/v1/chat/completions接口,在没有 GPU 的家用电脑上就能跑,而且每次调用都是零成本。LocalAI 是一个开源的本地推理服务,OpenAI 和 Anthropic 的 REST API 替代方案:离线大模型、图像生成、语音、视频模型全都能跑在你自己的硬件上,现有代码只需要改一个 base URL。
它和主流"全家桶"方案的核心差异在于:它不是一个捆绑包,而是一个小核心。路由、Web 界面、权限认证都在一个核心里,而 llama.cpp、vLLM、whisper.cpp、stable-diffusion、MLX 等 60 多个推理后端各自是独立的镜像,只在某个模型需要它时自动拉取——你只安装用到的东西。
🗺️ 能力全景(一张表说清楚)
下表是 README 与官方文档能力矩阵的浓缩版,先给你一个边界感:
| 能力 | 支持程度 | 典型后端 / 模型 | 硬件门槛 |
|---|---|---|---|
| 文本生成 / 对话 | 完整:函数调用、语法约束、多轮 | llama.cpp、vLLM、SGLang、transformers;Qwen3、Llama 3.x、Granite 等 | CPU 可用,GPU 更快 |
| 图像生成 | 完整 | stable-diffusion-ggml、diffusers;SD3、Flux 等 | 建议 GPU |
| 语音 | 完整:TTS、STT、实时语音 | Kokoro、Piper、whisper.cpp、parakeet | CPU 可跑 |
| 嵌入 / 重排序 | 完整 | bge-m3、sentencetransformers、rerankers | CPU 可用 |
| 视觉 / 目标检测 | 完整 | llava、phi-3-vision、RF-DETR、Depth-Anything | 视模型而定 |
| 视频生成 | 完整 | LTX、WAN(ggml) | 建议 GPU |
| Agent | 内置:MCP 工具、RAG、技能 | 支持工具调用的 LLM | 视 LLM 而定 |
表里没列、但值得知道的两点:一是 Realtime API,基于 WebRTC(一种低延迟实时通信协议)做到音频进、音频出,可以直接搭一个"开口说话"的语音助手,不用自己串 ASR+LLM+TTS 的流水线;二是内置多用户管理,API key、按用户配额、角色访问,意味着它能当小型内部平台用,而不只是单人玩具。说话人分离、UI 里直接微调、运行时量化也都有。
🚀 三条部署路径(按你愿意花多少时间分)
30 秒级:一行命令跑起来
这条命令拉取官方 CPU 镜像并映射 8080 端口:
docker run -ti --name local-ai -p 8080:8080 localai/localai:latest打开 http://localhost:8080 就能看到内置 Web 界面:聊天、从模型库装模型、建 agent、看系统资源,不需要额外工具。
验证是否成功:另开终端执行curl http://localhost:8080/readyz,返回 200 即服务就绪。
5 分钟级:带上模型启动
这条命令会在启动时顺带预装 qwen3-4b 模型(体积小、CPU 友好,且支持工具调用):
docker run -ti --name local-ai -p 8080:8080 localai/localai:latest qwen3-4b关键参数就两个:末尾的模型名会在服务启动前自动下载;-p 8080:8080是端口映射。CLI 方式下local-ai run qwen3-4b是等价操作。
验证是否成功:curl http://localhost:8080/v1/models,列表里能看到 qwen3-4b。
深度定制级:多后端、多硬件、生产环境
- 硬件:按 GPU 选镜像——NVIDIA CUDA、AMD ROCm、Intel oneAPI、Apple Silicon(Metal/MLX)或 Vulkan;核心会自动探测并拉取匹配的后端。
- 生产:开启多用户认证(LOCALAI_AUTH=true)或用 LOCALAI_API_KEY 做访问门禁;模型目录可用 LOCALAI_MODELS_PATH 固定位置。
- 扩展:分布式模式基于 PostgreSQL + NATS 做多节点路由与模型分片。
验证是否成功:看docker logs local-ai里后端拉取与模型加载的日志,出问题对照故障排查指南。
🎯 按你想用它做什么组织
用例一:跑一个能回答问题的对话服务
- 场景:交付物是一个真正返回文本的聊天 API,任何基于 OpenAI SDK 的现有应用改个 base URL 就能接。
- 关键配置:装一个聊天模型(如 qwen3-4b),端点是 /v1/chat/completions,参数与 OpenAI 方言一致。
- 注意:首个请求会触发模型加载进内存,第一次调用慢、第二次起正常;model 字段必须填你装好的名字。
这条命令向聊天端点发一次请求,返回模型的回复:
curl http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" \ -d '{"model":"qwen3-4b","messages":[{"role":"user","content":"hi"}]}'用例二:把文字变成能听的音频
- 场景:交付物是一段朗读音频文件,或者一份录音转写文本,构成最小语音流水线。
- 关键配置:装一个 TTS 模型(Kokoro、Piper 等)和一个 ASR 模型(whisper.cpp),分别调 /v1/audio/speech 与 /v1/audio/transcriptions。
- 注意:TTS 按语言和音色选模型,Piper 一家就覆盖 42 种语言、60 多个音色;中文场景优先确认音色可用。
用例三:搭一个离线的向量知识库
- 场景:交付物是内部文档、产品手册的语义检索向量表,数据不出内网。
- 关键配置:装一个嵌入模型(bge-m3、sentencetransformers),POST /v1/embeddings。
- 注意:向量维度要和模型匹配;配一个重排序模型(对检索结果按相关性二次打分)能明显提升 top-k 精度。
⚠️ 边界在哪里(坦诚的局限性)
- 磁盘和内存是硬约束:模型文件按规模与量化档位在 1–30GB 之间,下载需要预留模型大小 2–3 倍的空闲空间;放不进内存的模型会慢得让人怀疑人生。量化(降低数值精度以省内存,如 Q4_K_M 约为原始体积的 75%)是常规取舍手段。
- 首次代价是真实的:后端按需拉取,某类模型第一次运行要先下载后端镜像、再加载权重,首调用明显慢,第二次起才正常——第一次别急着怀疑网络。
- 兼容不等于完全一样:OpenAI 的主要端点都有实现,但个别参数与字段和官方存在细微差异,模型名也是本地名而不是 gpt-4;llama.cpp 后端的默认采样(mirostat)还会让跑分和裸 llama.cpp 对不上,模型配置里设
mirostat: 0可关闭。
🧩 在整个工具链里的位置
LocalAI 处在工具链的"推理服务层":它的下层是 llama.cpp、vLLM、whisper.cpp、stable-diffusion 这些推理引擎,每个都被包成独立的 gRPC 服务(gRPC 是一种高性能进程间通信协议,你只要知道后端可以单独升级、互不牵连即可),按需拉取;它的上层是任何会说 OpenAI/Anthropic API 的东西——SDK、聊天客户端、Agent 框架,改个 base URL 就能接上。一句话对比:Ollama 更聚焦 LLM、上手更简单,LocalAI 多给的是完整 OpenAI 兼容端点、多模态和多用户管理;直接用 llama.cpp 则省掉管理层,但路由和运维要自己搭。单机不够时,它的分布式模式(PostgreSQL + NATS + VRAM 感知路由)接管集群层,worker 甚至可以跑在与核心不同的机器上。
如果你手里有一台几 GB 内存的机器和一个想替换掉 OpenAI API 的应用,从 30 秒级那条命令开始跑起来,打开 Web 界面聊两句——剩下的判断,看到效果之后再做也不迟。
【免费下载链接】LocalAILocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考