Docker - 生成式 AI



Docker 是容器化生成式 AI模型的最佳平臺,因為它具有強大的、高效的、輕量級的元件,並擁有強大的社群支援和資源處理能力。任何生成式 AI 模型的容器化都涉及將模型與其依賴項和所需的執行時環境打包到一個自包含的 Docker 映象中。

建立的映象隨後可以部署到各種環境中執行,從開發到生產環境都保持一致。透過在容器中部署 genAI 模型,您可以保證可重複性、可移植性和高效的資源利用率。

使用 Docker 構建生成式 AI 模型的優勢

下表重點介紹了使用 Docker 構建生成式 AI 模型的主要優勢:

優勢 描述
隔離 封裝模型及其依賴項,防止衝突。
可移植性 在不同的環境中一致地執行模型。
可重複性 確保在不同的設定中模型行為一致。
效率 透過共享底層作業系統來最佳化資源利用率。
可擴充套件性 輕鬆擴充套件模型部署以滿足需求。
版本控制 有效地管理不同的模型版本。
協作 與團隊成員共享模型和環境。
部署靈活性 將模型部署到各種平臺(雲、本地)。
安全性 隔離模型並保護敏感資料。
成本效益 最佳化硬體資源並降低成本。

構建生成式 AI 的 Docker 映象

為了提高效率和相容性,請選擇合適的底層映象。在本例中,我們將使用 Ollama 模型,這是一個大型語言模型。要下載 Ollama,請訪問Ollama 官方網站 並點選下載按鈕。

選擇基礎映象

Ollama 提供預構建的 Docker 映象,簡化了設定過程。我們將使用官方的 Ollama Docker 映象作為基礎映象:

FROM ollama/ollama:latest

安裝依賴項

Ollama 會自動在其映象中安裝必要的依賴項。但是,如果您需要安裝更多庫,可以使用 RUN 指令安裝它們。

# Example: Install additional libraries

RUN pip install numpy pandas

合併模型權重

Ollama 支援各種預訓練模型。您可以使用 ollama run 命令在執行時指定所需的模型。因此,無需手動指定模型權重,因為它們由 Ollama 框架管理。

示例

ollama run llama3

這是最終的 Dockerfile:

# Use the official Ollama Docker image as the base
FROM ollama/ollama:latest

# Set the working directory (optional)
WORKDIR /app

# Install additional dependencies if required (optional)
# RUN pip install numpy pandas

# Expose the Ollama port (optional)
EXPOSE 11434

構建模型映象

接下來,讓我們使用 Docker build 命令來構建映象。

$ docker build -t ollama:latest .
Build the Model Image

最佳化映象大小

由於我們在這裡使用的是官方的 Ollama 映象,因此最佳化可能存在限制。但是,您可以考慮:

  • 特定的 Ollama 映象標籤 - 如果可用,請使用僅包含所需元件的標籤。
  • 基礎映象最小化 - 根據需要建立包含較少包的基礎映象。
  • 根據需要利用多階段構建 - 特別是在您擁有複雜構建流程的情況下。

注意 - 通常情況下,模型最佳化由 Ollama 內部處理,因此與其他框架相比,無需進行太多手動最佳化。

使用 Ollama Docker 映象可以輕鬆地將您的生成式 AI 模型打包到容器中。

使用 Docker 部署生成式 AI 模型

容器化模型

我們在上一節中已經構建了 Docker 映象。現在,讓我們容器化模型並將 Docker 映象作為容器執行。

$ docker run -it --name my-ollama-container ollama:latest
Containerizing the Model 1

Containerizing the Model 2

上述命令將互動式地執行 Ollama 容器(-it 標誌)並將其命名為my-ollama-container

在本地執行容器

您可以使用以下命令在容器內啟動 Ollama 伺服器。

$ docker exec -it my-ollama-container ollama serve

這將在正在執行的容器內執行ollama serve命令。

訪問模型並顯示輸出

Ollama 提供了一個 CLI 來與模型互動。您可以使用ollama命令生成文字。

$ docker exec -it my-ollama-container /bin/bash

執行上述命令以訪問“my-ollama-container”的 shell。

接下來,執行以下命令以提取 gemma:2b 模型清單。

$ ollama list
$ ollama pull gemma:2b
Accessing the Model and Displaying Outputs

接下來,使用 ollama run 命令執行模型,如下所示:

$ ollama list
$ ollama run gemma:2b

您現在可以向 Ollama 模型傳送提示,例如“給我講個笑話”,它將顯示生成的響應。

將生成式 AI 與應用程式整合

使用 Docker Compose,您可以定義和執行多容器 Docker 應用程式。在執行涉及多個服務的複雜應用程式時,這非常有用。

使用 Docker Compose 執行多個容器

建立一個docker-compose.yml檔案:

version: '3.7'

services:

   ollama:

      image: ollama/ollama:latest

      ports:

         - "11434:11434"

   app:

      build: .

      ports:

         - "5000:5000"

      depends_on:

         - ollama

在這個docker-compose.yml檔案中,我們定義了兩個服務:ollamaappapp服務依賴於ollama服務,這確保了在啟動 app 容器之前啟動 Ollama 容器。

公開用於模型訪問的 API

您可以使用 Flask 或 FastAPI 等 Web 框架將生成式 AI 模型公開為 API。讓我們建立一個與 Ollama 模型互動並返回生成的文字的端點。

from flask import Flask, request

import ollama

app = Flask(__name__)

def generate_text(prompt):

   # Replace with your Ollama client logic

   response = ollama.generate(prompt)

   return response

@app.route('/generate', methods=['POST'])

def generate():

   prompt = request.json['prompt']

   response = generate_text(prompt)

   return {'response': response}

if __name__ == '__main__':

   app.run(host='0.0.0.0', port=5000)

您可以使用您首選的框架將 API 整合到您的 Web 應用程式中。您可以向 API 端點發出 HTTP 請求以生成文字並將其顯示給使用者。

結論

Docker 為部署和管理生成式 AI 模型提供了極好的基礎架構。模型及其依賴項可以容器化,開發人員可以構建與開發期間相同的環境,以透過 Docker Compose 和 API 公開來部署、擴充套件和將生成式 AI 模型整合到應用程式中。

透過這種方式,可以更有效地利用資源來無縫使用模型。隨著生成式 AI 在不久的將來變得越來越重要,Docker 在促進模型部署和管理方面的作用將變得至關重要。

關於用於生成式 AI 模型的 Docker 的常見問題

1. 我可以使用 Docker 將生成式 AI 模型部署到生產環境嗎?

是的,Docker 非常適合將任何生成式 AI 模型部署到生產環境。它有助於您設計靈活且強大的應用程式,其中模型、其依賴項和服務基礎架構都打包到容器中。

在包括雲環境在內的託管平臺上部署 Docker 容器也變得非常容易。

2. Docker 如何提高生成式 AI 模型的效能?

Docker 可以提高生成式 AI 模型的效能,因為它建立的隔離環境可以根據需要分配資源。您可以調整 CPU、記憶體和 GPU 以最佳化模型的執行。

此外,Docker 與輕量級容器和最佳化的基礎映象相結合,可以實現高效的模型服務。

3. 我可以使用 Docker 訓練生成式 AI 模型嗎?

雖然 Docker 通常用於已訓練模型的部署,但它也可以用於訓練過程。但是,在大規模訓練場景中,您應該尋找具有專用硬體和軟體的其他專用平臺。

Docker 可用於建立可重複的訓練環境和管理與訓練相關的依賴項。

廣告