国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

假期充電,用阿里云 Serverless K8s + AIGC 搭建私人代碼助理

這篇具有很好參考價值的文章主要介紹了假期充電,用阿里云 Serverless K8s + AIGC 搭建私人代碼助理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

AI 技術(shù)正在引領(lǐng)科技創(chuàng)新浪潮,隨著 ChatGPT 和 Midjourney 的走紅,AIGC 技術(shù)正在世界范圍內(nèi)掀起一股 AI 技術(shù)浪潮。開源領(lǐng)域也涌現(xiàn)了許多類似模型,如 FastGPT、Moss、Stable Diffusion 等。這些模型展現(xiàn)出的驚人效果吸引企業(yè)和開發(fā)者們投身其中,但是復(fù)雜繁瑣的部署方式成為了攔路虎。阿里云 ASK 提供 Serverless 化的容器服務(wù),用戶無需關(guān)心資源及環(huán)境配置,可以幫助開發(fā)者們零門檻快速部署 AI 模型。本文以開源的 FastChat 為例,詳細(xì)展示如何在 ASK 中快速搭建一個私人代碼助理。

效果預(yù)覽

Cursor + GPT-4 的代碼生成是不是覺得很智能,我們通過 FastChat + VSCode 插件也能做到一樣的效果!

  • 快速生成一個 Golang Hello World

地址:https://intranetproxy.alipay.com/skylark/lark/0/2023/gif/11431/1682574183392-11e16131-3dae-4969-a0d1-79a0a9eefb01.gif

  • 快速生成一個 Kubernetes Deployment

地址:https://intranetproxy.alipay.com/skylark/lark/0/2023/gif/11431/1682574192825-7a1d3c76-025d-45db-bea1-4ca5dd885520.gif

背景介紹

ASK(Alibaba Serverless Kubernetes)是阿里云容器服務(wù)團(tuán)隊(duì)提供的一款面向 Serverless 場景的容器產(chǎn)品。用戶可以使用 Kubernetes API 直接創(chuàng)建 Workload,免去節(jié)點(diǎn)運(yùn)維煩惱。ASK 作為容器 Serverless 平臺,具有免運(yùn)維、彈性擴(kuò)容、兼容 K8s 社區(qū)、強(qiáng)隔離四大特性。

假期充電,用阿里云 Serverless K8s + AIGC 搭建私人代碼助理

大規(guī)模 AI 應(yīng)用訓(xùn)練和部署主要面臨以下挑戰(zhàn)。

  • GPU 資源受限且訓(xùn)練成本較高

大規(guī)模 AI 應(yīng)用在訓(xùn)練及推理時都需要使用 GPU,但是很多開發(fā)者缺少 GPU 資源。單獨(dú)購買 GPU 卡,或者購買 ECS 實(shí)例都需要較高成本。

  • 資源異構(gòu)

并行訓(xùn)練時需要大量的 GPU 資源,這些 GPU 往往是不同系列的。不同 GPU 支持的 CUDA 版本不同,且跟內(nèi)核版本、nvidia-container-cli 版本相互綁定,開發(fā)者需要關(guān)注底層資源,為 AI 應(yīng)用開發(fā)增加了許多難度。

  • 鏡像加載慢

AI 類應(yīng)用鏡像經(jīng)常有幾十 GB,下載往往需要幾十分鐘甚至數(shù)小時。

針對上述問題,ASK 提供了完美的解決方案。在 ASK 中可以通過 Kubernetes Workload 十分方便的使用 GPU 資源,無需其前置準(zhǔn)備使用,用完即可立即釋放,使用成本低。ASK 屏蔽了底層資源,用戶無需關(guān)心 GPU、CUDA 版本等等的依賴問題,只需關(guān)心 AI 應(yīng)用的自身邏輯即可。同時,ASK 默認(rèn)就提供了鏡像緩存能力,當(dāng) Pod 第 2 次創(chuàng)建時可以秒級啟動。

部署流程

1. 前提條件

  • 已創(chuàng)建 ASK 集群。具體操作,請參見創(chuàng)建 ASK 集群[1]。
  • 下載 llama-7b 模型并上傳到 OSS 。具體操作,請參見本文附錄部分。

2. 使用 Kubectl 創(chuàng)建

替換 yaml 文件中變量

${your-ak} 您的 AK

${your-sk} 您的 SK

${oss-endpoint-url} OSS 的 enpoint

${llama-oss-path} 替換為存放 llama-7b 模型的地址(路徑末尾不需要/),如 oss://xxxx/llama-7b-hf

apiVersion: v1
kind: Secret
metadata:
  name: oss-secret
type: Opaque
stringData:
  .ossutilconfig: |
    [Credentials]
    language=ch
    accessKeyID=${your-ak}
    accessKeySecret=${your-sk}
    endpoint=${oss-endpoint-url}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: fastchat
  name: fastchat
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: fastchat
  strategy:
    rollingUpdate:
      maxSurge: 100%
      maxUnavailable: 100%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: fastchat
        alibabacloud.com/eci: "true" 
      annotations:
        k8s.aliyun.com/eci-use-specs: ecs.gn6e-c12g1.3xlarge
    spec:
      volumes:
      - name: data
        emptyDir: {}
      - name: oss-volume
        secret:
          secretName: oss-secret
      dnsPolicy: Default
      initContainers:
      - name: llama-7b
        image: yunqi-registry.cn-shanghai.cr.aliyuncs.com/lab/ossutil:v1
        volumeMounts:
          - name: data
            mountPath: /data
          - name: oss-volume
            mountPath: /root/
            readOnly: true
        command: 
        - sh
        - -c
        - ossutil cp -r ${llama-oss-path} /data/
        resources:
          limits:
            ephemeral-storage: 50Gi
      containers:
      - command:
        - sh
        - -c 
        - "/root/webui.sh"
        image: yunqi-registry.cn-shanghai.cr.aliyuncs.com/lab/fastchat:v1.0.0
        imagePullPolicy: IfNotPresent
        name: fastchat
        ports:
        - containerPort: 7860
          protocol: TCP
        - containerPort: 8000
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          initialDelaySeconds: 5
          periodSeconds: 10
          successThreshold: 1
          tcpSocket:
            port: 7860
          timeoutSeconds: 1
        resources:
          requests:
            cpu: "4"
            memory: 8Gi
          limits:
            nvidia.com/gpu: 1
            ephemeral-storage: 100Gi
        volumeMounts:
        - mountPath: /data
          name: data
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: PayByCLCU
  name: fastchat
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 7860
    protocol: TCP
    targetPort: 7860
    name: web
  - port: 8000
    protocol: TCP
    targetPort: 8000
    name: api
  selector:
    app: fastchat
  type: LoadBalancer

3. 等待 FastChat Ready

等待 pod ready 后,在瀏覽器中訪問 http://${externa-ip}:7860

啟動后需要下載 vicuna-7b 模型,模型大小約 13GB

下載模型時間大概耗時約 20 分鐘左右,如果提前做好磁盤快照,通過磁盤快照創(chuàng)建磁盤并掛載到 pod,就是秒級生效

kubectl get po |grep fastchat

# NAME                        READY   STATUS    RESTARTS   AGE
# fastchat-69ff78cf46-tpbvp   1/1     Running   0          20m

kubectl get svc fastchat
# NAME       TYPE           CLUSTER-IP        EXTERNAL-IP    PORT(S)          AGE
# fastchat   LoadBalancer   192.168.230.108   xxx.xx.x.xxx   7860:31444/TCP   22m

效果展示

Case 1:通過控制臺使用 FastChat

在瀏覽器中訪問 http://${externa-ip}:7860,可以直接測試聊天功能。比如使用自然語言讓 FastChat 寫一段代碼。

輸入:基于 Nginx 鏡像編寫 Kubernetes Deployment Yaml 文件

FastChat 輸出如下圖所示。

假期充電,用阿里云 Serverless K8s + AIGC 搭建私人代碼助理

Case 2:通過 API 使用 FastChat

FastChat API 監(jiān)聽在 8000 端口,如下所示,通過 curl 發(fā)起一個 API 調(diào)用,然后返回結(jié)果。

  • curl 命令
kubectl get po |grep fastchat

# NAME                        READY   STATUS    RESTARTS   AGE
# fastchat-69ff78cf46-tpbvp   1/1     Running   0          20m

kubectl get svc fastchat
# NAME       TYPE           CLUSTER-IP        EXTERNAL-IP    PORT(S)          AGE
# fastchat   LoadBalancer   192.168.230.108   xxx.xx.x.xxx   7860:31444/TCP   22m
  • 輸出結(jié)果
{"id":"3xqtJcXSLnBomSWocuLW2b","object":"chat.completion","created":1682574393,"choices":[{"index":0,"message":{"role":"assistant","content":"下面是使用 Go 語言生成 \"Hello, World!\" 的代碼:\n```go\npackage main\n\nimport \"fmt\"\n\nfunc main() {\n    fmt.Println(\"Hello, World!\")\n}\n```\n運(yùn)行該代碼后,會輸出 \"Hello, World!\"。"},"finish_reason":"stop"}],"usage":null}

Case 3: VSCode 插件

既然有了 API 接口,在 IDE 中怎么快速集成這個能力呢。你是不是想到了 Copilot、Cursor、Tabnine ,那咱們就通過 VSCode 插件集成一下 FastChat 看看吧。VSCode 插件幾個核心文件:src/extension.ts、package.json 和 tsconfig.json

假期充電,用阿里云 Serverless K8s + AIGC 搭建私人代碼助理

這三個文件的內(nèi)容分別如下:

  • src/extension.ts
import * as vscode from 'vscode';
import axios from 'axios';

import { ExtensionContext, commands, window } from "vscode";
const editor = window.activeTextEditor
export function activate(context: vscode.ExtensionContext) {
    let fastchat = async () => {
        vscode.window.showInputBox({ prompt: '請輸入代碼提示語' }).then((inputValue) => {
            if (!inputValue) {
                return;
            }

            vscode.window.withProgress({
                location: vscode.ProgressLocation.Notification,
                title: '正在請求...',
                cancellable: false
            }, (progress, token) => {
                return axios.post('http://example.com:8000/v1/chat/completions', {
                    model: 'vicuna-7b-v1.1',
                    messages: [{ role: 'user', content: inputValue }]
                }, {
                    headers: {
                        'Content-Type': 'application/json'
                    }
                }).then((response) => {
                    // const content = JSON.stringify(response.data);
                    const content = response.data.choices[0].message.content;
                    console.log(response.data)
                    const regex = /```.*\n([\s\S]*?)```/
                    const matches = content.match(regex)
                    if (matches && matches.length > 1) {
                        editor?.edit(editBuilder => {
                            let position = editor.selection.active;
                            position && editBuilder.insert(position, matches[1].trim())
                        })
                    }
                }).catch((error) => {
                    console.log(error);
                });
            });
        });

    }
    let command = commands.registerCommand(
        "fastchat",
        fastchat
    )
    context.subscriptions.push(command)
}
  • package.json
{
    "name": "fastchat",
    "version": "1.0.0",
    "publisher": "yourname",
    "engines": {
        "vscode": "^1.0.0"
    },
    "categories": [
        "Other"
    ],
    "activationEvents": [
        "onCommand:fastchat"
    ],
    "main": "./dist/extension.js",
    "contributes": {
        "commands": [
            {
                "command": "fastchat",
                "title": "fastchat code generator"
            }
        ]
    },
    "devDependencies": {
        "@types/node": "^18.16.1",
        "@types/vscode": "^1.77.0",
        "axios": "^1.3.6",
        "typescript": "^5.0.4"
    }
}
  • tsconfig.json
{
    "compilerOptions": {
      "target": "ES2018",
      "module": "commonjs",
      "outDir": "./dist",
      "strict": true,
      "esModuleInterop": true,
      "resolveJsonModule": true,
      "declaration": true
    },
    "include": ["src/**/*"],
    "exclude": ["node_modules", "**/*.test.ts"]
  }

好,插件開發(fā)完咱們就看一下效果。

  • 快速生成一個 Golang Hello World

地址:https://intranetproxy.alipay.com/skylark/lark/0/2023/gif/11431/1682574183392-11e16131-3dae-4969-a0d1-79a0a9eefb01.gif

  • 快速生成一個 Kubernetes Deployment

地址:https://intranetproxy.alipay.com/skylark/lark/0/2023/gif/11431/1682574192825-7a1d3c76-025d-45db-bea1-4ca5dd885520.gif

總結(jié)

ASK 作為容器 Serverless 平臺,具有免運(yùn)維、彈性擴(kuò)縮容、屏蔽異構(gòu)資源、鏡像加速等能力,非常適合 AI 大模型部署場景,歡迎試用。

附錄:

1. 下載 llama-7b 模型

模型地址:https://huggingface.co/decapoda-research/llama-7b-hf/tree/main

# 如果使用的是阿里云 ECS,需要運(yùn)行如下命令安裝 git-lfs
# yum install git-lfs

git clone https://huggingface.co/decapoda-research/llama-7b-hf
git lfs install
git lfs pull

2. 上傳到 OSS

可參考文檔:https://help.aliyun.com/document_detail/195960.html

參考文檔:

[1] 創(chuàng)建 ASK 集群

https://help.aliyun.com/document_detail/86377.htm?spm=a2c4g.186945.0.0.61eb3e0694K2ej#task-e3c-311-ydb

[2] ASK 概述

https://help.aliyun.com/document_detail/86366.html?spm=a2c4g.750001.0.i1

作者:子白、冬島

原文鏈接

本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。文章來源地址http://www.zghlxwxcb.cn/news/detail-490231.html

到了這里,關(guān)于假期充電,用阿里云 Serverless K8s + AIGC 搭建私人代碼助理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • k8s簡介及虛擬機(jī)快速搭建k8s集群

    k8s簡介及虛擬機(jī)快速搭建k8s集群

    1.1、部署方式的變遷 傳統(tǒng)部署時代: 在物理服務(wù)器上運(yùn)行應(yīng)用程序 無法為應(yīng)用程序定義資源邊界 導(dǎo)致資源分配問題 例如,如果在物理服務(wù)器上運(yùn)行多個應(yīng)用程序,則可能會出現(xiàn)一個應(yīng)用程序占用大部分資源的情況, 結(jié)果可能導(dǎo)致其他應(yīng)用程序的性能下降。 一種解決方案是

    2024年02月12日
    瀏覽(25)
  • k8s學(xué)習(xí) — (實(shí)踐)第二章 搭建k8s集群

    k8s學(xué)習(xí) — (實(shí)踐)第二章 搭建k8s集群

    k8s學(xué)習(xí) — 各章節(jié)重要知識點(diǎn) 推薦學(xué)習(xí)時使用,輕量化的k8s集群,可以在個人電腦上使用。 minikube 是一個工具, 能讓你在本地運(yùn)行 Kubernetes。 minikube 在你的個人計(jì)算機(jī)(包括 Windows、macOS 和 Linux PC)上運(yùn)行一個一體化(all-in-one)或多節(jié)點(diǎn)的本地 Kubernetes 集群,以便你來嘗試

    2024年02月03日
    瀏覽(30)
  • K8S:kubeadm搭建K8S+Harbor 私有倉庫

    K8S:kubeadm搭建K8S+Harbor 私有倉庫

    主機(jī)名及主機(jī)大小 主機(jī)ip 安裝軟件 master(2C/4G,cpu核心數(shù)要求大于2) 192.168.245.113 docker、kubeadm、kubelet、kubectl、flannel node01(2C/2G) 192.168.245.114 docker、kubeadm、kubelet、kubectl、flannel node02(2C/2G) 192.168.245.115 docker、kubeadm、kubelet、kubectl、flannel Harbor節(jié)點(diǎn)(hub.blue.com) 192.168.245

    2024年02月09日
    瀏覽(21)
  • 阿里云部署k8s及常見的錯誤解決方法

    阿里云部署k8s及常見的錯誤解決方法

    目錄 一、背景介紹 二、環(huán)境準(zhǔn)備 2.1 ECS云服務(wù)資源清單 2.2 K8s軟件列表 三、阿里云ECS服務(wù)器網(wǎng)絡(luò)問題 3.1 問題闡述 3.2 解決方案 四、服務(wù)節(jié)點(diǎn)調(diào)整(master,node1,node2) 4.1 關(guān)閉firewalld防火墻,并安裝設(shè)置Iptables規(guī)則為空 4.2 調(diào)整內(nèi)核參數(shù) 4.3 關(guān)閉?swap ?4.4 關(guān)閉 selinux 4.5 設(shè)置h

    2024年02月08日
    瀏覽(29)
  • 阿里云使用SLB實(shí)現(xiàn)k8s的服務(wù)service

    阿里云使用SLB實(shí)現(xiàn)k8s的服務(wù)service

    k8s容器的服務(wù)service實(shí)現(xiàn)有以下常用方式: NodePort 用于為集群外部訪問Service后面Pod提供訪問接入端口。 開發(fā)測試環(huán)境,可以使用這種方式,不依賴其他中間件。 好處是,可以訪問Node節(jié)點(diǎn)的IP+${NodePort} 比如Node節(jié)點(diǎn)的IP地址是192.168.80.180,NodePort的端口是31767。那么外部訪問地址

    2024年01月16日
    瀏覽(21)
  • 本地k8s集群搭建保姆級教程(3)-安裝k8s集群

    本地k8s集群搭建保姆級教程(3)-安裝k8s集群

    1.1 增加鏡像替換腳本 注意:請?jiān)趍aster機(jī)器上執(zhí)行 添加腳本內(nèi)容: 1.2 查看k8s版本 1.3 執(zhí)行腳本 2.1 初始化master節(jié)點(diǎn) 在master機(jī)器上執(zhí)行如下命令: 說明: –apiserver-advertise-address= 你master節(jié)點(diǎn)的ip 看到如下內(nèi)容,說明master節(jié)點(diǎn)初始化成功 圖片中最后一行記得要保存起來,worker節(jié)

    2024年02月15日
    瀏覽(20)
  • k8s簡介、虛擬機(jī)快速搭建k8s集群、集群管理方式及K8S工作原理和組件介紹

    k8s簡介、虛擬機(jī)快速搭建k8s集群、集群管理方式及K8S工作原理和組件介紹

    1.1、部署方式的變遷 傳統(tǒng)部署時代: 在物理服務(wù)器上運(yùn)行應(yīng)用程序 無法為應(yīng)用程序定義資源邊界 導(dǎo)致資源分配問題 例如,如果在物理服務(wù)器上運(yùn)行多個應(yīng)用程序,則可能會出現(xiàn)一個應(yīng)用程序占用大部分資源的情況, 結(jié)果可能導(dǎo)致其他應(yīng)用程序的性能下降。 一種解決方案是

    2024年02月12日
    瀏覽(29)
  • 阿里云 K8s PVC 綁定 StorageClass 申領(lǐng) PV 失敗

    錯誤場景: 因?yàn)榘⒗镌茮]有默認(rèn)的 StorageClass 我也懶得更新,所以就創(chuàng)建了一個類型是云盤的 StorageClass 。 但是在創(chuàng)建 PVC 之后發(fā)現(xiàn)一直是 Pending 狀態(tài)就查詢了一下日志,然后看到很多下面這種錯誤 使用的配置 原因: 根據(jù)阿里云 FAQ 文檔 發(fā)現(xiàn)在 PVC 中指定的云盤大小不符合規(guī)范

    2024年02月12日
    瀏覽(19)
  • k8s ingress訪問響應(yīng)慢的問題(阿里云環(huán)境)

    ? ?生產(chǎn)環(huán)境采用的是ingress,對接阿里云SLB,但出現(xiàn)了多次訪問服務(wù)就會有一次響應(yīng)特別慢的故障,記錄一下處理方法。 ? ?后端ingress的pod 上進(jìn)行抓包,抓一下ingress的網(wǎng)絡(luò)流量,多訪問復(fù)現(xiàn)幾次問題,看看從ingress pod 的網(wǎng)絡(luò)抓包里看看能否看到訪問超時的情況,從網(wǎng)絡(luò)連接

    2024年02月02日
    瀏覽(24)
  • debian11 安裝 k8s,containerd ,阿里云鏡像(已成功)

    系統(tǒng)要求:至少 2GB RAM(建議 4GB 或更多),網(wǎng)絡(luò)連接。 節(jié)點(diǎn)準(zhǔn)備:至少 3 臺機(jī)器,1 臺作為 Master 節(jié)點(diǎn),2 臺作為 Worker 節(jié)點(diǎn)。 安裝sudo 設(shè)置主機(jī)名(在每臺機(jī)器上): 替換 主機(jī)名 為 k8s-master、k8s-node1、k8s-node2 配置 /etc/hosts(在所有節(jié)點(diǎn)上): 將所有節(jié)點(diǎn)的 IP 地址和主機(jī)名

    2024年02月21日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包