容器化一個生成式 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 服務。