成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在 TKE 上部署 AI 大模型(以DeepSeek-R1為例)

人工智能
使用 Ollama 運行 AI 大模型,再通過 OpenWebUI 暴露一個聊天交互的界面,OpenWebUI 會調用 ollama 提供的 API 來與大模型交互。

概述

本文介紹如何在 TKE 上部署 AI 大模型,以 DeepSeek-R1 為例。

部署思路

使用 Ollama 運行 AI 大模型,再通過 OpenWebUI 暴露一個聊天交互的界面,OpenWebUI 會調用 ollama 提供的 API 來與大模型交互。

Ollama 與 OpenWebUI 介紹

Ollama 是一個運行大模型的工具,可以看成是大模型領域的 Docker,可以下載所需的大模型并暴露 API。

OpenWebUI 是一個大模型的 Web UI 交互工具,支持 Ollama,即調用 Ollama 暴露的 API 實現與大模型交互:

圖片圖片

AI 大模型數據如何存儲?

AI 大模型通常占用體積較大,直接打包到容器鏡像不太現實,如果啟動時通過 initContainers 自動下載又會導致啟動時間過長,因此建議使用共享存儲來掛載 AI 大模型。

在騰訊云上可使用 CFS 來作為共享存儲,CFS 的性能和可用性都非常不錯,適合 AI 大模型的存儲。本文將使用 CFS 來存儲 AI 大模型。

準備 CFS 存儲

在【組建管理】中的【存儲】找到 CFS-Turbo 或 CFS 插件并安裝:

圖片圖片


CFS-Turbo 的性能更強,讀寫速度更快,也更貴,如果希望大模型運行速度更快,可以考慮使用 CFS-Turbo。

新建 StorageClass:

圖片圖片

  1. 選項較多,所以該示例通過 TKE 控制臺來創建 PVC。如希望通過 YAML 來創建,可先用控制臺創建一個測試 PVC,再復制出生成的 YAML。
  2. Provisioner 選 文件存儲CFS。
  3. 存儲類型 建議選 性能存儲,讀寫速度比 標準存儲 更快。

新建 GPU 節點池

在 TKE 控制臺的【節點管理】-【節點池】中點擊【新建】,如果【原生節點】或【普通節點】,機型在【GPU 機型】中選擇一個沒售罄的機型;如果選【超級節點】則無需選擇機型(在部署的時候通過注解指定 GPU 類型)。

確認 GPU 驅動和所需 CUDA 版本

可隨便買一臺對應節點池機型的云服務器,上去執行 nvidia-smi 命令,查看 GPU 驅動版本。

在 nvidia 官網的 CUDA Toolkit Release Notes (https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html) 中,查找適合對應 GPU 驅動版本的 CUDA 版本。

編譯 ollama 鏡像

準備 Dockerfile:

FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04

RUN apt update -y && apt install -y curl

RUN curl -fsSL https://ollama.com/install.sh | sh


基礎鏡像使用 nvidia/cuda,具體使用哪個 tag 可根據前面確認的 cuda 版本來定。這里是所有 tag 的列表: https://hub.docker.com/r/nvidia/cuda/tags。

編譯并上傳鏡像:

docker build -t imroc/ollama:cuda11.8-ubuntu22.04 .
docker push imroc/ollama:cuda11.8-ubuntu22.04


注意修改成自己的鏡像名稱。

創建 PVC

創建一個 CFS 類型的 PVC,用于存儲 AI 大模型:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ai-model
  labels:
    app: ai-model
spec:
  storageClassName: deepseek
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 100Gi
  1. 注意替換 storageClassName。
  2. 對于 CFS 來說,storage 大小無所謂,可隨意指定,按實際占用空間付費的。

再創建一個 PVC 給 OpenWebUI 用,可使用同一個 storageClassName:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: webui
  labels:
    app: webui
spec:
  accessModes:
  - ReadWriteMany
  storageClassName: deepseek
  resources:
    requests:
      storage: 100Gi

使用 Job 下載 AI 大模型

下發一個 Job,將需要用的 AI 大模型下載到 CFS 共享存儲中:

apiVersion: batch/v1
kind: Job
metadata:
  name: pull-model
  labels:
    app: pull-model
spec:
  template:
    metadata:
      name: pull-model
      labels:
        app: pull-model
    spec:
      containers:
      - name: pull-model
        image: imroc/ollama:cuda11.8-ubuntu22.04
        env:
        - name: LLM_MODEL
          value: deepseek-r1:7b
        command:
        - bash
        - -c
        - |
          set -ex
          ollama serve &
          sleep 5
          ollama pull $LLM_MODEL
        volumeMounts:
        - name: data
          mountPath: /root/.ollama
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: ai-model
      restartPolicy: OnFailure
  1. 使用之前我們編譯好的 ollama 鏡像,執行一個腳本去下載 AI 大模型,本例中下載的是 deepseek-r1:7b,完整列表在 https://ollama.com/search,修改 LLM_MODEL 以替換大語言模型。
  2. ollama 的模型數據存儲在 /root/.ollama 目錄下,掛載 CFS 類型的 PVC 到該路徑。

部署 ollama

通過 Deployment 部署 ollama:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ollama
  labels:
    app: ollama
spec:
  selector:
    matchLabels:
      app: ollama
  replicas: 1
  template:
    metadata:
      labels:
        app: ollama
      annotations:
        eks.tke.cloud.tencent.com/gpu-type: V100
    spec:
      containers:
      - name: ollama
        image: imroc/ollama:cuda11.8-ubuntu22.04
        imagePullPolicy: IfNotPresent
        command: ["ollama", "serve"]
        env:
        - name: OLLAMA_HOST
          value: ":11434"
        resources:
          requests:
            cpu: 2000m
            memory: 2Gi
            nvidia.com/gpu: "1"
          limits:
            cpu: 4000m
            memory: 4Gi
            nvidia.com/gpu: "1"
        ports:
        - containerPort: 11434
          name: ollama
        volumeMounts:
        - name: data
          mountPath: /root/.ollama
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: ai-model
      restartPolicy: Always

---

apiVersion: v1
kind: Service
metadata:
  name: ollama
spec:
  selector:
    app: ollama
  type: ClusterIP
  ports:
  - name: server
    protocol: TCP
    port: 11434
    targetPort: 11434
  1. ollama 的模型數據存儲在 /root/.ollama 目錄下,掛載已經下載好 AI 大模型的 CFS 類型 PVC 到該路徑。
  2. ollama 監聽 11434 端口暴露 API,定義 Service 方便后續被 OpenWebUI 調用。
  3. ollama 默認監聽的是回環地址(127.0.0.1),指定 OLLAMA_HOST 環境變量,強制對外暴露 11434 端口。
  4. 運行大模型需要使用 GPU,因此在 requests/limits 中指定了 nvidia.com/gpu 資源,以便讓 Pod 調度到 GPU 機型并分配 GPU 卡使用。
  5. 如果希望大模型跑在超級節點,需通過 Pod 注解 eks.tke.cloud.tencent.com/gpu-type 指定 GPU 類型;若不希望調度到超級節點則刪除該注解。

部署 OpenWebUI

使用 Deployment 部署 OpenWebUI,并定義 Service 方便后續對外暴露訪問:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webui
spec:
  replicas: 1
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      labels:
        app: webui
    spec:
      containers:
      - name: webui
        image: imroc/open-webui:main # docker hub 中的 mirror 鏡像,長期自動同步,可放心使用
        env:
        - name: OLLAMA_BASE_URL
          value: http://ollama:11434 # ollama 的地址
        - name: HF_HUB_OFFLINE
          value: "1"
        - name: ENABLE_OPENAI_API
          value: "false"
        tty: true
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: "500m"
            memory: "500Mi"
          limits:
            cpu: "1000m"
            memory: "1Gi"
        volumeMounts:
        - name: webui-volume
          mountPath: /app/backend/data
      volumes:
      - name: webui-volume
        persistentVolumeClaim:
          claimName: webui

---
apiVersion: v1
kind: Service
metadata:
  name: webui
  labels:
    app: webui
spec:
  type: ClusterIP
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: webui
  1. OLLAMA_BASE_URL 是 ollama 的地址,填 ollama 的 service 訪問地址。
  2. ENABLE_OPENAI_API 填 false,因為我們使用的是 ollama,不需要使用 openai api,禁用它避免啟動時因國內連不上 openapi 地址而無法加載模型(現象是登錄 OpenWebUI 返回空白頁)。
  3. OpenWebUI 的數據存儲在 /app/backend/data 目錄(如賬號密碼、聊天歷史等數據),我們掛載 PVC 到這個路徑。

暴露 OpenWebUI 并與模型對話

如果只是本地測試,可以使用 kubectl port-forward 暴露服務:

kubectl port-forward service/webui 8080:8080

在瀏覽器中訪問 http://127.0.0.1:8080 即可。

你還可以通過 Ingress 或 Gateway API 來暴露,我這里通過 Gateway API 來暴露(需安裝 Gateway API 的實現,如 TKE 應用市場中的 EnvoyGateway,具體 Gateway API 用法參考 https://gateway-api.sigs.k8s.io/guides/):

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: ai
spec:
  parentRefs:
  - group: gateway.networking.k8s.io
    kind: Gateway
    namespace: envoy-gateway-system
    name: imroc
    sectionName: https
  hostnames:
  - "ai.imroc.cc"
  rules:
  - backendRefs:
    - group: ""
      kind: Service
      name: webui
      port: 8080
  1. parentRefs 引用定義好的 Gateway(通常一個 Gateway 對應一個 CLB)。
  2. hostnames 替換為你自己的域名,確保域名能正常解析到 Gateway 對應的 CLB 地址。
  3. backendRefs 指定 OpenWebUI 的 Service。

最后在瀏覽器訪問 hostnames 中的地址即可。

首次進入 OpenWebUI 會提示創建管理員賬號密碼,創建完畢后即可登錄,然后默認會使用前面下載好的大模型進行對話。

圖片圖片

責任編輯:武曉燕 來源: 云原生
相關推薦

2025-03-05 03:00:00

DeepSeek大模型調優

2025-02-19 08:00:00

2025-02-13 08:51:23

DeepSeek大模型

2025-02-03 14:17:27

2025-03-13 08:13:47

DeepSeekMLLMVision-R1

2025-04-03 06:30:00

2025-06-12 09:48:27

2025-05-19 08:41:00

AI模型開發者

2025-02-07 14:18:51

2025-03-11 09:53:21

2025-02-19 08:33:18

2025-03-27 09:34:42

2025-02-13 01:00:00

2025-03-19 10:10:43

2025-04-21 08:42:00

模型開源AI

2025-02-03 15:50:44

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品视频网站在线观看 | 在线视频一区二区 | 天天人人精品 | 男女羞羞视频在线看 | 久久久精品网 | 亚洲精品视频一区二区三区 | 欧美aaa| 综合久久亚洲 | 日韩精品免费视频 | 天堂久久天堂综合色 | 精品一区av | 91欧美激情一区二区三区成人 | 久久国产精品-国产精品 | jvid精品资源在线观看 | 日本久久综合 | 欧美一级欧美三级在线观看 | 91精品久久久久久久久久入口 | 91精品国产综合久久福利软件 | 五月天婷婷综合 | 久久三区| 国产999精品久久久久久 | 久久久久无码国产精品一区 | 精品99久久久久久 | 精品真实国产乱文在线 | 国产国拍亚洲精品av | 在线观看深夜视频 | 欧美日韩综合一区 | 久久福利电影 | 紧缚调教一区二区三区视频 | 国产免费看 | 麻豆hd| 波多野结衣电影一区 | 一级在线免费观看 | 黄色片在线免费看 | 黄色片在线 | 欧美精品综合在线 | 久久国产精品一区二区三区 | 一区二区三区免费 | 欧美aaaaaa| 欧美一区视频 | 精品人伦一区二区三区蜜桃网站 |