在 Docker 文件中为 Python Langchain 应用程序运行 Ollama

问题描述 投票:0回答:1

背景信息

我有一个使用 langchain 和 Ollama 的 python 应用程序。在本地运行它效果非常好,因为我的机器上运行着 Ollama 客户端。

我想要做的是将此应用程序托管在无服务器平台(例如 GCR)上,为了做到这一点,我需要对应用程序进行容器化。这对于应用程序的 python 端来说很容易,但我很难让 Ollama 部分正确。

我需要运行 Ollama 客户端才能让 langchain 使用该引擎,但我不知道如何在 dockerfile 中正确实现这一点。我尝试过多阶段构建并使用官方 Ollama docker 镜像并从源代码下载,所有这些最终都遇到了相同的问题;我将 Ollama 放到容器上,但如果我

RUN ollama serve
我无法执行任何其他操作,因为其余代码等待 Ollama 服务器完成。

我在运行服务器时也尝试过使用

nohup
命令,但每当我尝试使用
ollama pull <model>
拉取模型时,它总是返回询问 Ollama 是否正在运行。我已经添加了等待,但它仍然不起作用。

我尝试使用 docker-compose.yml 文件,但我发现的示例没有满足我的需要。我尝试在 dockerfile 中使用多阶段构建来尝试首先构建 Ollama 服务器,然后在第二阶段使用它,但这会导致与在一个阶段中构建它相同的问题。

我尝试过使用启动脚本并使用它们作为入口点来让容器运行,但它们最终会出现相同的错误,即 Ollama 无法启动并且我无法提取图像。

问题

  1. 我的第一个问题是:是否有可能实现我想要做的事情?在可以安装所需软件的虚拟机上托管此类应用程序会更好吗?

  2. 我的第二个问题是:如果可能的话,有没有人做过类似的事情可以提供一些启示或建议?

任何建议或帮助,我们将不胜感激!

python docker dockerfile ollama
1个回答
0
投票

从架构角度来看,我建议在虚拟机或裸机服务器上安装和配置 llama 作为独立服务。此设置可以通过 Linux 系统上的

systemctl status ollama
进行管理。

此建议背后的理由包括:

  • 管理简单
    ollama
    _as_a_service。
  • 在 Docker 容器中运行 llama 的好处有限,除非与多个没有 root 访问权限的租户共享基本操作系统。在这种情况下,无论部署方法如何,都需要将大型语言模型 (LLM) 存储在物理磁盘上。
© www.soinside.com 2019 - 2024. All rights reserved.