容器化一个生成式 AI 应用程序

先决条件

注意

生成式 AI 应用程序通常可以受益于 GPU 加速。目前,Docker Desktop 仅支持 Windows 上的 WSL2 后端进行 GPU 加速。Linux 用户也可以通过原生安装 Docker Engine 来访问 GPU 加速。

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

概述

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

注意

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

获取示例应用程序

本指南中使用的示例应用程序是 GenAI Stack 演示应用程序中 PDF 阅读器应用程序的修改版本。该应用程序是一个全栈 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://:8000 查看应用程序。您应该会看到一个简单的 Streamlit 应用程序。应用程序可能需要几分钟才能下载嵌入模型。下载过程中,右上角会显示正在运行

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

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

摘要

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

相关信息

后续步骤

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

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.