基于LLM的AI OPS 探索系列-部署一个基于 Ollama 的私有ChatGPT

2024-07-15 12:53:37 浏览数 (2)

概述

在本次 workshop 中,我们将在前一篇设置好的 K3S/GPU 集群、安装 NVIDIA 驱动和插件的基础上,演示如何部署一个基于 Ollama 的 Open WebUI。

前提条件

  1. 准备一个 AWS GPU 云实例(例如 g5.xlarge/Ubuntu 22.04)
  2. 具备基本的 Kubernetes 和 Helm 知识
  3. 完成 K3S/GPU 集群的初始化,安装 NVIDIA 驱动和插件

名称

实例

详情

硬件

AWS EC2 g5.xlarge

带有一个 NVIDIA A10G Tensor Core GPU

系统

Ubuntu 22.04

nvidia-container-toolkit

软件

K3S 1.29、Ollama、OpenWebUI

ChatGPT with llama3:8b

设置 K3S 和 Ingress

为了能让部署 Open WebUI可以使用域名访问,需要设置 NGINX Ingress。请按照以下步骤创建必要的值和配置文件。

代码语言:bash复制
cat > value.yaml <<EOF
controller:
  nginxplus: false
  ingressClass: nginx
  replicaCount: 2
  service:
    enabled: true
    type: NodePort
    externalIPs:
      - your-external-ip
EOF
代码语言:bash复制
cat > nginx-cm.yaml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-nginx-ingress
  namespace: ingress
data:
  use-ssl-certificate-for-ingress: "false"
  external-status-address: your-external-ip
  proxy-connect-timeout: 10s
  proxy-read-timeout: 10s
  client-header-buffer-size: 64k
  client-body-buffer-size: 64k
  client-max-body-size: 1000m
  proxy-buffers: 8 32k
  proxy-body-size: 1024m
  proxy-buffer-size: 32k
EOF
代码语言:bash复制
复制代码
cat > nginx-svc-patch.yaml <<EOF
spec:
  ports:
  - name: http
    nodePort: 80
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    nodePort: 443
    port: 443
    protocol: TCP
    targetPort: 443
EOF

安装 NGINX Ingress

运行以下命令以添加 NGINX 仓库、更新并安装 Ingress:

代码语言:bash复制
helm repo add nginx-stable https://helm.nginx.com/stable || echo true
helm repo update
kubectl create namespace ingress || echo true
helm upgrade --install nginx nginx-stable/nginx-ingress --version=0.15.0 --namespace ingress -f value.yaml
kubectl apply -f nginx-cm.yaml
kubectl patch svc nginx-nginx-ingress -n ingress --patch-file nginx-svc-patch.yaml

部署 open-webui

首先添加 open-webui Helm 仓库。这个仓库中包含了基于 Ollama 的 ChartGPT,在安装过程中,可以通过提供自定义 values.yaml 文件来配置 Chart 的参数。

代码语言:bash复制
kubectl create secret tls chartgpt-tls --key=/etc/ssl/onwalk.net.key --cert=/etc/ssl/onwalk.net.pem

cat > values.yaml << EOF
ollama:
  enabled: true
  fullnameOverride: "open-webui-ollama"
  models:
    - llama3
  gpu:
    enabled: true
    type: 'nvidia'

ingress:
  enabled: true
  class: "nginx"
  host: "chatgpt.onwalk.net"
  tls: true
  existingSecret: "chartgpt-tls"

extraEnvVars:
  - name: OPENAI_API_KEY
    value: "0p3n-w3bu!"
EOF
helm repo add open-webui https://helm.openwebui.com/
helm repo update
helm upgrade --install chartgpt open-webui/open-webui -f values.yaml

访问 OpenWebUI

安装完成,配置DNS解析后,使用浏览器打开 https://chartgpt.onwalk.net 访问 Open WebUI 界面。

总结与扩展

通过本次 workshop,您将学习如何在 AWS 上设置支持 GPU 的 Kubernetes 集群,并部署和演示基于 Ollama 的 Open WebUI。

0 人点赞