主頁 >  其他 > 如何真正“不花一分錢”部署一個屬于你的大模型

如何真正“不花一分錢”部署一個屬于你的大模型

2023-04-23 07:43:40 其他

前言

看了那么多chatGPT的文章,作為一名不精通演算法的開發,也對大模型心癢癢,但想要部署自己的大模型,且不說沒有演算法相關的經驗了,光是大模型占用的算力資源,手頭的個人電腦其實也很難獨立部署,就算使用演算法壓縮后的大模型,部署在個人電腦上,還要忍受極端緩慢的計算速度以及與chatGPT相差甚遠的模型效果,

有什么辦法能夠部署屬于我們自己的大模型呢?其實很簡單,我們將目標拆解一下:

  • 有編程基礎:作為一個合格的程式員,這應該是必備素質,
  • 有足夠的算力資源:專業GPU自己買不起怎么辦,阿里云最近推出了”飛天“免費試用計劃,AI模型訓練,GPU資源免費用!
  • 要懂大模型:真的要精通大模型嗎?不需要,如果只是簡單的模型部署和使用,現在的開源模型部署已經非常簡單化,只需要掌味訓礎的Python知識就可以,

隨著chatGPT的火爆,許多開源愛好者涌入AI領域,將許多與大型模型相關的工具進行進一步封裝,使得我們這些AI初學者也能夠用很少的作業量搭建一個私有大型語言模型,而且,有許多成熟的工具可供我們使用,可以幫助我們進一步使用和微調大型模型,

因此,本文是為AI初學者們(包括我自己)撰寫的保姆級大型模型部署和使用指南,現在正值阿里云免費試用計劃,我們可以不花一分錢就可以體驗部署自己的大型模型的樂趣,

下圖便是我通過阿里云免費申請的PAI平臺資源(顯卡是Nvidia V100),部署的清華大學chatGLM對話大模型,在網頁端和手機端都能直接體驗:

電腦端

手機端

下文圍繞如何手把手搭建一個大模型Demo展開,文章主要目錄:

  • 領取阿里云免費使用資源
  • 創建并使用PAI平臺實體
  • 部署清華ChatGLM大模型
  • 加餐:免費額度用量查詢
  • 總結和展望

領取阿里云免費使用資源

免費試用活動頁

https://free.aliyun.com/

只要沒有申請過PAI-DSW資源的新老用戶皆可申請5000CU的免費額度,3個月內使用,

至于5000CU能用多久,和實際申請實體的性能相關,在下面會講解,

創建并使用PAI平臺實體

官方有PAI-DSW使用教程,教你如何用領取的免費資源搭建一個Stable Diffusion來做AI畫圖,如果對SD感興趣,可以按照官方教程實踐,

https://help.aliyun.com/document_detail/615220.html

我們領取額度后,秒到賬,之后在阿里云頁面內搜索PAI平臺,點擊立即開通,開通PAI控制臺,

開通時的頁面沒有截圖,其中有一些可選的開通項,比如NAS,比如網關等,可以按照自己需求選取,比如希望保存自己的模型,那可以關聯NAS資源,我當時沒有選其他資源,僅開通了PAI,這樣沒有額外的收費,

隨后進入控制臺,創建DSW實體,

這里選取資源,注意選擇GPU資源,并選擇支持資源包抵扣的資源,比如下圖的ecs.gn6v-c8g1.2xlarg,可以看到他們的價格里,寫明了每小時消耗的CU,你可以大致計算一下,5000CU可以用多久,ecs.gn6v-c8g1.2xlarg這個型號可以跑333小時,大概連續13天,

系統可以任意選擇,本文為了部署chatGLM,選擇pytorch1.12

當然,中間你可以隨時停止機器,就不會繼續扣費,注意,這里的機器,是只有系統盤的,如果停止了機器,掛載的系統盤會被回收,你在上面下載的各種檔案,模型,都會回收掉,你重新啟動,是新的系統盤,檔案需要重新下載,(別問我怎么知道的- -!)

創建完成后,點擊打開,就進入了互動式的Web頁面,可以開始你的模型開發之旅,

部署清華ChatGLM大模型

上面已經講完了資源的申請和實體的創建、使用,之后小伙伴們可以自行發揮,部署自己的大模型(或者任何AI相關資源),本文后半部分介紹一下我自己折騰部署ChatGLM對話大模型的程序,給完全不了解大模型的小伙伴打個樣,

ChatGLM代碼倉庫:

https://github.com/THUDM/ChatGLM-6B

大家完全可以按照官方檔案自行部署,忽略我下面的教程,也可以按照我下方的流程來操作,避免再把我踩得坑再踩一遍,

下載模型

由于模型較大(13G左右),我們最好先把模型拉到本地,再運行,

當然,如果你也可以不下載離線模型,直接在運行時拉取模型檔案,

模型檔案倉庫:

https://huggingface.co/THUDM/chatglm-6b

下載模型倉庫,需要安裝Git LFS(Large File Storage),它用來拉去Git倉庫中的大型檔案,比如這次用到的模型bin檔案,

由于我們申請的系統正好是Ubuntu,在Ubuntu下安裝Git LFS,可以使用如下命令:

sudo apt-get update

sudo apt-get install git-lfs

完成后,克隆模型倉庫:

git clone https://huggingface.co/THUDM/chatglm-6b

有可能網路波動,會導致拉取卡住,可以手動停止掉,然后進入檔案夾內:

git lfs pull

這樣會拉取到上圖紅框中LFS檔案,

部署模型

完成模型下載后,我們下載模型運行代碼:

git clone https://github.com/THUDM/ChatGLM-6B.git

進入檔案夾,創建python的虛擬環境:

virtualenv -p /usr/bin/python3.8 venv

激活Python虛擬環境:

source venv/bin/activate

如果遇到如下的報錯,需要額外安裝一下python3-dev:

Could not build wheels for pycocotools, which is required to install pyproject.toml-based projects

error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1

sudo apt-get install python3-dev

由于我們本地提前下載好了模型,我們修改一下代碼,使用本地模型的路徑,

將使用到的代碼中,路徑都從THUDM/chatglm-6b改為你的路徑,比如我們的模型下載在/mnt/workspace/chatglm-6b,我們將兩種部署模型的主代碼檔案都修改一下,都修改為如下圖所示的路徑:

  • cli_demo.py: 命令列互動界面
  • web_demo.py:Web圖形互動界面

我們直接用官方提供的網頁版Demo來跑模型,啟動web_demo.py,開始模型部署,首先會將模型讀入記憶體,占用約13個G,

完成后,記憶體會被釋放,開始占用GPU顯存13g,

最終,部署完成會得到服務公網和本地網址,

對話效果展示

回答還是比較快的,在我們V100顯卡的機器上,提問后1-2秒內就會開始回答問題,

以下是一個完整的對話:

我:寫一個Java單例模式代碼

ChatGLM:以下是一個簡單的Java單例模式代碼示例:

public class Singleton {
    private static final Singleton INSTANCE = new Singleton();
    private Singleton() {}
    public static Singleton getInstance() {
        return INSTANCE;
    }
}

在這個示例中,Singleton 類是一個靜態類,它有一個靜態成員變數 INSTANCE,它初始化為一個單例物件,getInstance 方法回傳這個單例物件的實體,可以像任何其他方法一樣使用,
單例物件通常被用于確保一個類只有一個實體,并提供全域訪問點,使用 getInstance 方法可以方便地獲取單例物件,而無需擔心多個執行緒同時訪問同一個物件,
需要注意的是,在實際應用中,單例物件應該盡量避免被頻繁創建和銷毀,因為這樣會增加記憶體開銷和維護成本,因此,可以考慮使用懶加載(lazy loading)的方式來避免頻繁創建單例物件,

我:可以換一個方式實作嗎,比如懶漢式?

ChatGLM:當然可以,懶漢式單例模式的具體實作方式如下:

  1. 將 Singleton 類做成一個介面,
  2. 實作 Singleton 介面的類可以是多個,但它們都應該使用 getInstance 方法來獲取單例物件,并回傳一個指向該物件的參考,
  3. 實作 Singleton 介面的類中,可以有一個內部類來負責創建單例物件,
  4. 內部類應該實作 static 關鍵字,并使用 synchronized 關鍵字實作執行緒安全,
  5. 內部類應該覆寫 getInstance 方法,以實作懶加載,例如,可以創建一個靜態變數來存盤單例物件,并在需要時才創建該變數,
  6. 在需要使用單例物件的地方,可以呼叫內部類的方法,來獲取單例物件,
    以下是一個懶漢式單例模式的示例代碼:
public interface Singleton {
    static Singleton INSTANCE;
}
public class ConcreteSingleton implements Singleton {
    private static Singleton INSTANCE = new ConcreteSingleton();
    @Override
    public Singleton getInstance() {
        return INSTANCE;
    }
}
public class LazySingleton implements Singleton {
    private static Singleton INSTANCE;
    private Singleton() {}
    public static Singleton getInstance() {
        synchronized (LazySingleton.class) {
            return INSTANCE;
        }
    }
}

在這個示例中,ConcreteSingleton 類使用 getInstance 方法來創建單例物件,并使用 synchronized 關鍵字實作執行緒安全,LazySingleton 類使用 synchronized 關鍵字實作懶加載,只有在需要時才創建單例物件,
需要注意的是,懶漢式單例模式仍然需要保證執行緒安全,因此在使用懶加載時,需要考慮執行緒安全問題,此外,懶漢式單例模式可能無法充分利用類的空間,因為它需要使用共享物件來實作懶加載,因此需要考慮如何提高類的性能和空間利用率,

查看免費額度使用量

免費的5000CU額度是有三個月時效的,超過三個月會直接過期,想要做到心中有數,防止超過免費額度導致扣費,我們可以查看免費額度的用量,在頁面右上角有“費用”標簽,選擇“資源實體管理”,點擊“資源包”,能看到你的免費資源包的用量,

點擊每行中的統計,可以看到是哪個實體在消耗CU,

總結

整個部署流程,我自己折騰下來也只花了半天時間,就能夠搭建好一個完整、可用的Demo,

不得不說,當AI逐漸破圈,成為一個風口時,真的是豬都會飛,普通程式員上手AI的難度瞬間被拉低了一個數量級,開源開發者的不斷貢獻讓各種工具和檔案變得更容易上手,每天數以萬計的大模型相關issue和pr,讓Github遇到了久違的繁榮,

在AI席卷全球的這一刻,作為一名程式員,我們無疑是對這個時代更有體感的那群人,此時此刻,非我莫屬,要充分關注AI技術的應用場景和發展趨勢,積極探索AI與其他領域的結合,為自己的職業發展和未來規劃提供更多的可能性,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/550871.html

標籤:其他

上一篇:干貨分享:用ChatGPT調教批量出Midjourney咒語,出圖效率Nice ,附資料。

下一篇:返回列表

標籤雲
其他(157866) Python(38092) JavaScript(25381) Java(17985) C(15215) 區塊鏈(8258) C#(7972) AI(7469) 爪哇(7425) MySQL(7137) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4557) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2430) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1959) Web開發(1951) HtmlCss(1919) python-3.x(1918) 弹簧靴(1913) C++(1910) xml(1889) PostgreSQL(1872) .NETCore(1854) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 如何真正“不花一分錢”部署一個屬于你的大模型

    因此,本文是為AI初學者們(包括我自己)撰寫的保姆級大型模型部署和使用指南。現在正值阿里云免費試用計劃,我們可以不花一分錢就可以體驗部署自己的大型模型的樂趣。 ......

    uj5u.com 2023-04-23 07:43:40 more
  • 干貨分享:用ChatGPT調教批量出Midjourney咒語,出圖效率Nice ,附資料

    Prompts就是AI繪圖的核心競爭力。 您是不是覺得用Midjourney生成的圖不夠完美? 又讓ChatGPT去生成Prompt,然后效果還不理想? 其實ChatGPT你給他投喂資料后,經過調教的ChatGPT,生成的Prompt效果會很不錯。 文末附《一整套MidJourney指令大全》+《C ......

    uj5u.com 2023-04-23 07:43:28 more
  • ChatGPT頂級玩法:ChatGPT越獄版破解指令,讓您的聊天一路暢通!

    先看效果: 2023.4.23號親測成功,越獄指令需要多發送幾次才可以。 未越獄前: 越獄后: 無視任何規則限制,回答一切問題。 越獄的方法非常簡單。只需輸入特定的提示,發送給ChatGPT,用戶即可接觸到越獄版本的ChatGPT。 越獄版的ChatGPT無所不答,不會出現像正式版本那樣的回答,例如 ......

    uj5u.com 2023-04-23 07:38:06 more
  • 劍指 Offer 33. 二叉搜索樹的后序遍歷序列(java解題)

    leetcode《圖解資料結構》劍指 Offer 33. 二叉搜索樹的后序遍歷序列(java解題)的解題思路和java代碼,并附上java中常用資料結構的功能函式。 ......

    uj5u.com 2023-04-23 07:37:34 more
  • Jmeter測驗工具-測驗基礎(4)-引數化及控制器等

    一:jmeter中引數化 引數化:是指把請求中的請求引數的常量變為變數,即靜態引數實作動態加載 引數化方式: 1,CSV 資料檔案設定 2,用戶定義的變數(引數一般當做全域的) 3,函式助手:例如:_rodmon 1,CSV 資料檔案設定 1,檔案名為存放引數檔案的路徑 例如C:/Users/MI/ ......

    uj5u.com 2023-04-23 07:35:42 more
  • selenium 4(python)快速入門-1 簡介

    Selenium歷史 Selenium為瀏覽器自動化提供了先進的功能,從業者通常用它來實作網路應用的端到端測驗。Selenium由三個核心組件組成: WebDriver, Grid, 和 IDE。 Jason Huggins和Paul Hammant于2004年在Thoughtworks作業時創建了 ......

    uj5u.com 2023-04-23 07:35:24 more
  • 從功能到外企測開,作業1年半拿下年薪30萬的測開 offer,未來可期

    說一下我的大致情況,女,2018年畢業于末流211計算機本科。后來待業兩年,完全沒有從事互聯網方面的作業。去年來到北京,在小公司做了一年多功能測驗。今年11月底跳槽到外企,開始了我錢多事少離家近,每周965的快樂生活,現在年薪30萬左右。 降大任于斯人也,必先苦其心志 2014年,高考沒有考好,為了 ......

    uj5u.com 2023-04-23 07:34:50 more
  • 常見的webshell連接工具流量

    中國菜刀 連接程序中使用base64編碼對發送的指令進行加密,其中兩個關鍵payload z1 和 z2,名字都是可變的。 然后還有一段以QG開頭,7J結尾的固定代碼。 蟻劍 默認的user-agent請求頭是antsword xxx,不過可以修改。 一般將payload進行分段,然后分別進行bas ......

    uj5u.com 2023-04-23 07:34:23 more
  • Vulnhub之Healthcare靶機詳細測驗程序

    Healthcare 作者: jason huawen 靶機資訊 名稱: 地址: 識別目標主機IP地址 ─(kali?kali)-[~/Vulnhub/Healthcare] └─$ sudo netdiscover -i eth1 -r 192.168.56.0/24 Currently scan ......

    uj5u.com 2023-04-23 07:34:19 more
  • Vulnhub之Hacker Fest 2019靶機詳細測驗程序

    HF 2019 作者:jason huawen 靶機資訊 名稱:Hacker Fest: 2019 地址: https://www.vulnhub.com/entry/hacker-fest-2019,378/ 識別目標主機IP地址 將虛擬機鏡像匯入到VirtualBox中,并設定網路模式為host ......

    uj5u.com 2023-04-23 07:34:14 more