背景信息
我有一个使用 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 无法启动并且我无法提取图像。
问题
我的第一个问题是:是否有可能实现我想要做的事情?在可以安装所需软件的虚拟机上托管此类应用程序会更好吗?
我的第二个问题是:如果可能的话,有没有人做过类似的事情可以提供一些启示或建议?
任何建议或帮助,我们将不胜感激!
从架构角度来看,我建议在虚拟机或裸机服务器上安装和配置 llama 作为独立服务。此设置可以通过 Linux 系统上的
systemctl status ollama
进行管理。
此建议背后的理由包括:
ollama
_as_a_service。