将生成式 AI 应用容器化
前提条件
注意
生成式 AI 应用通常可以从 GPU 加速中受益。目前 Docker Desktop 仅支持在 使用 WSL2 后端的 Windows 系统 上进行 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 作为用户界面,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 应用。应用可能需要几分钟来下载嵌入模型。下载进行期间,右上角会显示 Running。
该应用需要 Neo4j 数据库服务和 LLM 服务才能正常运行。如果你可以访问在 Docker 外部运行的服务,请指定连接信息并试用。如果你没有正在运行的服务,请继续阅读本指南,了解如何使用 Docker 运行部分或全部这些服务。
在终端中,按 ctrl
+c
来停止应用。
总结
在本节中,你学习了如何使用 Docker 将你的 GenAI 应用容器化并运行。
相关信息
下一步
在下一节中,你将学习如何使用 Docker 在本地运行你的应用、数据库和 LLM 服务。