将生成式 AI 应用程序容器化
先决条件
笔记
GenAI 应用程序通常可以受益于 GPU 加速。目前,Docker Desktop 仅在 具有 WSL2 后端的 Windows上支持 GPU 加速。 Linux 用户还可以使用 Docker 引擎的本机安装来访问 GPU 加速。
- 您已安装最新版本的 Docker Desktop,或者,如果您是 Linux 用户并计划使用 GPU 加速,则 安装 Docker Engine。 Docker 定期添加新功能,本指南的某些部分可能仅适用于最新版本的 Docker Desktop。
- 你有一个 git 客户端。本节中的示例使用基于命令行的 git 客户端,但您可以使用任何客户端。
概述
本部分将引导您完成使用 Docker Desktop 对生成式 AI (GenAI) 应用程序进行容器化的过程。
笔记
您可以在GenAI Stack演示应用程序中查看更多容器化 GenAI 应用程序示例 。
获取示例应用程序
本指南中使用的示例应用程序是GenAI Stack演示应用程序中 PDF Reader 应用程序的修改版本 。该应用程序是一个全栈 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 |
打开浏览器并在http://localhost:8000查看应用程序 。您应该看到一个简单的 Streamlit 应用程序。应用程序可能需要几分钟的时间来下载嵌入模型。下载正在进行时,右上角会出现“正在运行” 。
该应用程序需要 Neo4j 数据库服务和 LLM 服务才能运行。如果您有权访问在 Docker 外部运行的服务,请指定连接信息并尝试一下。如果您没有运行这些服务,请继续阅读本指南,了解如何使用 Docker 运行部分或全部这些服务。
在终端中,按ctrl
+c
停止应用程序。
概括
在本部分中,您了解了如何使用 Docker 容器化并运行 GenAI 应用程序。
相关信息:
下一步
在下一节中,您将了解如何使用 Docker 在本地运行应用程序、数据库和 LLM 服务。