我一直在使用 Ollama 运行我所有的本地 LLM,但当 Docker 最近发布 Model Runner 时,我决定把模型迁过去。原因很简单——我不需要再多装一个应用来跑本地 LLM,因为我已经在使用 Docker 运行其他几个服务,加一个 LLM 感觉就是顺理成章的事。
第二个原因是它与 Docker Compose 的无缝集成,这一点我非常欣赏。当模型属于一个更大的 Docker 应用的一部分时,Docker Model Runner 也更合适。它还提供了更完整的开发和分发工作流。性能方面我倒不觉得 Docker 更强,但在同一个平台上运行和管理模型确实更方便。
Docker Model Runner 要方便得多
模型直接融入现有工作流
我已经使用 Ollama 有一段时间了,但我发现 Docker 更方便。Ollama 使用 Modelfile 将基础模型与其系统提示、模板、上下文大小和生成参数捆绑在一起。它可以从现有的 Ollama 模型、GGUF 文件和支持的 Safetensors 架构创建模型。
Docker Model Runner 则把模型当作 Docker 制品来管理。你可以打包一个 GGUF 或 Safetensors 模型,打上一个版本标签,并将其推送到 Docker Hub 或其他兼容 OCI 的注册表。当多个开发者需要相同的模型、量化和配置时,这就带来了很大的优势。
最重要的区别在于 Docker Compose 集成。Compose 文件可以把模型和应用程序写在一起声明。然后 Docker 会拉取模型、启动相应的推理引擎,并通过环境变量将模型端点提供给应用程序。模型成为可复现的应用程序依赖项,而不是你单独装好、再让应用程序去 localhost:11434 找的东西。
你仍然可以将容器化应用程序连接到 Ollama,但你必须单独管理 Ollama 及其端点。单机用的话完全够了。当你想把模型配置一起放进项目里、跟其他服务一起启动时,Docker Model Runner 变得更有价值。
迁移我现有的配置几乎没费什么功夫
切换只需要改几个地方
![]()
最近几个版本的 Docker Desktop 都自带了 Model Runner。你可以从设置中启用它,并使用 docker model pull 命令开始拉取模型。Docker Hub 上有一个专门的模型合集,但 Model Runner 也可以从 Hugging Face 和其他兼容 OCI 的注册表拉取模型。你也可以把本地存的 GGUF 文件打包后手动加进去。
这些命令与 Ollama 使用的命令类似。你可以用 docker model run 来运行模型,后面接上模型名就行。Docker 会根据模型格式自动选择合适的推理引擎。GGUF 格式的模型它用 llama.cpp 来跑,并通过 Apple Silicon 上的 Metal 支持硬件加速。
连接到本地模型的应用那边,我也没怎么改。Docker Model Runner 支持 OpenAI 和 Ollama 兼容的 API,因此大多数应用程序只需要更改基础 URL。Ollama 的 API 走的是 11434 端口,而 Docker Model Runner 使用端口 12434。只要应用能配置自定义端点,应该都能用。
Docker 单独存储其模型,所以我得重新拉一遍,没法直接用 Ollama 已经管着的那些文件。下载完成后,我就可以在现有应用程序中使用相同的模型。迁移基本上就是启用 Model Runner、下载模型、再改一下 API 端点这几步。
Docker Model Runner 支持不同的推理引擎
不同的后端支持不同的本地工作负载
我目前使用 Docker Model Runner 在我的 Mac 上运行量化的 GGUF 模型。Docker 为这些模型使用 llama.cpp,并通过 Apple Silicon 上的 Metal 加速推理。这满足了我当前的使用需求,不过 Model Runner 也能搭配其他推理引擎使用。
对于以 Safetensors 格式存储的模型,Docker 支持使用 vLLM。vLLM 专注于高效处理多个请求,并通过批处理实现更高的吞吐量。它需要 NVIDIA GPU,目前可在 Linux x86-64 或通过 WSL2 的 Windows 上运行,所以我在 Mac 上用不了。不过,如果我把模型服务器搬到带独立显卡的 Linux 机器上,它就能派上用场了。
Model Runner 还支持用于图像生成模型的 Diffusers。这个后端使用 Stable Diffusion 等模型,并提供一个独立的图像生成 API。Diffusers 也需要 Linux 上的 Nvidia GPU,这就限制了它的运行环境。
Docker可以同时运行多个推理引擎,并根据模型把请求转发到对应的引擎。在运行模型或调用其API时,你也可以手动指定一个引擎。应用程序可以继续使用Docker Model Runner作为其端点,而推理后端交给Docker来处理。
在我当前的设置中,我并未使用vLLM或Diffusers,但把它们加进来之后,Model Runner就不仅仅能在笔记本上跑小型GGUF模型了。如果以后我将推理迁移到更强大的硬件上,或者为应用程序添加图像生成功能,我可以沿用同一套模型管理流程。
Ollama对我们大多数人来说已经足够好
如果你还没有使用Docker来运行其他服务,那么几乎没有理由切换到Docker。Ollama已经提供了几乎与Docker相同的所有功能,你可以继续使用它来运行本地LLM,基本不会有什么损失。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.