容器化生成式 AI 应用程序

先决条件

注意

GenAI 应用程序通常可以从 GPU 加速中受益。目前 Docker Desktop 仅在 使用 WSL2 后端的 Windows 上支持 GPU 加速。Linux 用户也可以使用 Docker Engine 的原生安装访问 GPU 加速。Docker Engine.

  • 您已安装最新版本的 Docker Desktop,或者如果您是 Linux 用户并且计划使用 GPU 加速,则安装了 Docker Engine。Docker 定期添加新功能,本指南的某些部分可能仅适用于最新版本的 Docker Desktop。
  • 您有一个 git 客户端。本节中的示例使用基于命令行的 git 客户端,但您可以使用任何客户端。

概述

本节将引导您使用 Docker Desktop 容器化生成式 AI (GenAI) 应用程序。

注意

您可以在 GenAI Stack 演示应用程序中看到更多容器化 GenAI 应用程序的示例。

获取示例应用程序

本指南中使用的示例应用程序是 GenAI Stack 演示应用程序的修改版本。该应用程序是一个完整的 Python 应用程序,它允许您询问有关 PDF 文件的问题。

该应用程序使用 LangChain 进行编排,使用 Streamlit 用于 UI,使用 Ollama 运行 LLM,以及使用 Neo4j 存储向量。

克隆示例应用程序。打开一个终端,更改目录到您想要工作的目录,并运行以下命令克隆存储库

$ git clone https://github.com/craig-osterhout/docker-genai-sample

您现在应该在 docker-genai-sample 目录中拥有以下文件。

├── docker-genai-sample/
│ ├── .gitignore
│ ├── app.py
│ ├── chains.py
│ ├── env.example
│ ├── requirements.txt
│ ├── util.py
│ ├── LICENSE
│ └── README.md

初始化 Docker 资源

现在您已经有了应用程序,您可以使用 docker init 创建必要的 Docker 资源来容器化您的应用程序。在 docker-genai-sample 目录中,运行 docker init 命令。docker init 提供一些默认配置,但您需要回答一些关于您的应用程序的问题。例如,此应用程序使用 Streamlit 运行。参考以下 docker init 示例并对您的提示使用相同的答案。

$ docker init
Welcome to the Docker Init CLI!

This utility will walk you through creating the following files with sensible defaults for your project:
  - .dockerignore
  - Dockerfile
  - compose.yaml
  - README.Docker.md

Let's get started!

? What application platform does your project use? Python
? What version of Python do you want to use? 3.11.4
? What port do you want your app to listen on? 8000
? What is the command to run your app? streamlit run app.py --server.address=0.0.0.0 --server.port=8000

您现在应该在 docker-genai-sample 目录中拥有以下内容。

├── docker-genai-sample/
│ ├── .dockerignore
│ ├── .gitignore
│ ├── app.py
│ ├── chains.py
│ ├── compose.yaml
│ ├── env.example
│ ├── requirements.txt
│ ├── util.py
│ ├── Dockerfile
│ ├── LICENSE
│ ├── README.Docker.md
│ └── README.md

要了解有关 docker init 添加的文件的更多信息,请参阅以下内容

运行应用程序

docker-genai-sample 目录中,在终端中运行以下命令。

$ docker compose up --build

Docker 构建并运行您的应用程序。根据您的网络连接,下载所有依赖项可能需要几分钟。当应用程序运行时,您将在终端中看到如下消息。

server-1  |   You can now view your Streamlit app in your browser.
server-1  |
server-1  |   URL: http://0.0.0.0:8000
server-1  |

打开浏览器,并在 https://127.0.0.1:8000 查看应用程序。您应该看到一个简单的 Streamlit 应用程序。该应用程序可能需要几分钟才能下载嵌入模型。在下载过程中,右上角将显示“正在运行”。

该应用程序需要 Neo4j 数据库服务和 LLM 服务才能正常运行。如果您有权访问在 Docker 外部运行的服务,请指定连接信息并尝试使用它。如果您没有运行这些服务,请继续阅读本指南,了解如何使用 Docker 运行部分或所有这些服务。

在终端中,按 ctrl+c 停止应用程序。

总结

在本节中,您学习了如何使用 Docker 容器化和运行您的 GenAI 应用程序。

相关信息

下一步

在下一节中,您将学习如何使用 Docker 在本地运行您的应用程序、数据库和 LLM 服务。