![file](https://img2023.cnblogs.com/other/2685289/202305/2685289-20230530115137903-2141604303.png) > 文章摘要:用一杯星巴克的錢,自己動手2小時的時間,就可以擁有自己訓練的開源大模型,並可以根據不同的 ...
文章摘要:用一杯星巴克的錢,自己動手2小時的時間,就可以擁有自己訓練的開源大模型,並可以根據不同的訓練數據方向加強各種不同的技能,醫療、編程、炒股、戀愛,讓你的大模型更“懂”你…..來吧,一起嘗試下開源DolphinScheduler加持訓練的開源大模型!
導讀
讓人人都擁有自己的ChatGPT
ChatGPT的誕生無疑讓我們為人工智慧的未來充滿期待,它以其精細的表達和強大的語言理解能力,震撼了全球。但是在使用ChatGPT的時候,因為它是SaaS,所以個人隱私泄露,企業數據安全問題是每一個人、每一個企業都擔心的問題。而現在越來越多的開源大模型出現,讓個人/企業擁有自己的大模型成為可能,但是,開源大模型上手、優化、使用要求門檻都比較高,很難讓大家簡單的使用起來。為此,我們藉助Apache DolphinScheduler,一鍵式地支持了開源大模型訓練、調優和部署,讓大家可以在極低的成本和技術儲備下,用自己的數據訓練出專屬於自己的大模型。當然,開源大模型的功力距離ChatGPT還有距離,但是經過測試我們看到7、8成的功力還是有的,而且這是可以根據你的場景和領域知識特殊訓練過的,針對性更強。同時,我們堅信將來隨著技術發展,開源大模型的能力會越來越強,讓用戶體驗越來越好。來吧,我們準備開始。
面向人群——每一個屏幕面前的你
我們的目標是,不僅專業的AI工程師,更是任何對GPT有需求和興趣的人,都能享受到擁有更“懂”自己的模型的樂趣。我們相信,每一個人都有權利和能力去塑造自己的AI助手,而Apache DolphinScheduler可見即所得的工作流程為此提供了可能。順帶介紹下Apache DolphinScheduler,這是一個Star超過1萬個的大數據和AI的調度工具,它是Apache開源基金會旗下的頂級項目,這意味著你可以免費使用它,也可以直接修改代碼而不用擔心任何商業問題。
無論你是業界專家,尋求用專屬於你的數據來訓練模型,還是AI愛好者,想嘗試理解並探索深度學習模型的訓練,我們下麵的這個工作流程都將為你提供便捷的服務。它為你解決了複雜的預處理、模型訓練、優化等步驟,只需1-2個小時幾個簡單的操作,加上20小時的運行時間,就可以構建出更“懂”你的ChatGPT大模型:
https://weixin.qq.com/sph/AHo43o
那麼,我們一起開啟這個神奇的旅程吧!讓我們把AI的未來帶到每一個人的手中。
僅用三步,構造出更“懂”你的ChatGPT
- 用低成本租用一個擁有3090級別以上的GPU顯卡
- 啟動DolphinScheduler
- 在DolphinScheduler頁面點擊訓練工作流和部署工作流,直接體驗自己的ChatGPT吧
1. 準備一臺3090顯卡的主機
首先需要一個3090的顯卡,如果你自己有台式機可以直接使用,如果沒有,網上也有很多租用GPU的主機,這裡我們以使用AutoDL為例來申請,打開 https://www.autodl.com/home,註冊登錄,後可以在算力市場選擇對應的伺服器,根據屏幕中的1,2,3步驟來申請:
這裡,建議選擇性價比較高的RTX3090,經過測試支持1-2個人線上使用3090就可以了。如果想訓練速度和響應速度更快,可以選擇更強的顯卡,訓練一次大約需要20小時左右,使用測試大概2-3個小時,預算40元就可以搞定了。
鏡像
點擊社區鏡像,然後在下麵紅框出輸入 WhaleOps/dolphinscheduler-llm/dolphinscheduler-llm-0521
之後,即可選擇鏡像,如下如所示,目前只有V1版本的,後面隨著版本更新,有最新可以選擇最新
如果需要多次訓練模型,建議硬碟擴容一下,建議100G即可。
創建後,等待下圖所示的進度條創建完成即可。
2. 啟動DolphinScheduler
為了可以在界面上部署調試自己的開源大模型,需要啟動DolphinScheduler這個軟體,我們要做以下配置工作:
進入伺服器
進入伺服器的方式有兩種,可以按照自己的習慣進行:
通過JupyterLab頁面登錄(不懂代碼的請進)
點擊如下JupyterLab按鈕
頁面跳轉到JupyterLab,後可以點擊這裡的終端進入
通過終端登錄(懂代碼的請進)
我們可以從下圖這個按鈕獲取SSH連接命令
並通過終端鏈接
導入DolphinScheduler的元數據
在DolphinScheduler中,所有的元數據都存儲在資料庫中,包括工作流的定義,環境配置,租戶等信息。為了方便大家在使用時能夠啟動DolphinScheduler時候就能夠看到這些工作流,我們可以直接導入已經做好的工作流定義數據,照屏幕copy進去。
修改導入MySQL的數據的腳本
通過終端如下命令,進入到以下目錄
cd apache-dolphinscheduler-3.1.5-bin
敲擊命令,vim import_ds_metadata.sh
打開 import_ds_metadata.sh
文件
文件內容如下
#!/bin/bash
# 設置變數
# 主機名
HOST="xxx.xxx.xxx.x"
# 用戶名
USERNAME="root"
# 密碼
PASSWORD="xxxx"
# 埠
PORT=3306
# 導入到的資料庫名
DATABASE="ds315_llm_test"
# SQL 文件名
SQL_FILE="ds315_llm.sql"
mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD -e "CREATE DATABASE $DATABASE;"
mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD $DATABASE < $SQL_FILE
把 xxx.xxx.xxx.x 和 xxxx 修改成你公網上一個mysql的一個資料庫的數據(可以自己在阿裡雲、騰訊雲申請或者自己安裝一個),然後執行
bash import_ds_metadata.sh
執行後,如果有興趣可在資料庫中看到相應的元數據(可連接mysql查看,不懂代碼的略過)。
啟動DolphinScheduler
在伺服器命令行里,打開下麵的文件,修改配置到DolphinScheduler連接剛纔的資料庫
/root/apache-dolphinscheduler-3.1.5-bin/bin/env/dolphinscheduler_env.sh
修改資料庫部分的相關配置,其他部分不用修改,把’HOST’和’PASSWORD’的值改為剛纔導入的資料庫的相關配置值 xxx.xxx.xxx.x 和 xxxx:
......
export DATABASE=mysql
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://HOST:3306/ds315_llm_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
export SPRING_DATASOURCE_USERNAME="root"
export SPRING_DATASOURCE_PASSWORD="xxxxxx"
......
配置完成後執行(也在這個目錄下 /root/apache-dolphinscheduler-3.1.5-bin )
bash ./bin/dolphinscheduler-daemon.sh start standalone-server
執行完成後,我們可以通過 tail -200f standalone-server/logs/dolphinscheduler-standalone.log
查看日誌,這時候,DolphinScheduler就正式啟動了!
啟動服務後,我們可以在AutoDL控制臺中點擊自定義服務(紅框部分)會跳轉到一個網址:
打開網址後發現是404,彆著急,我們補充一下url的尾碼 /dolphinscheduler/ui 即可
AutoDL模塊開放一個6006的埠,我們將DolphinScheduler的埠配置成6006之後,可以通過上面的入口進入,但是因為跳轉的url補全,所以404,因此我們補全URL即可
登錄用戶名密碼
用戶名: admin
密碼: dolphinscheduler123
登錄後點擊 項目管理,即可看到我們預置的項目 vicuna,再次點擊 vicuna後,我們即可進入該項目。
3. 開源大模型訓練與部署
工作流定義
進入vicuna項目後,點擊工作流定義,我們可以看到三個工作流,Training,Deploy,Kill_Service,下麵解釋下這幾個功能的用途和內部選擇大模型和訓練你自己的數據的配置:
我們可以點擊下麵的運行按鈕運行對應的工作流
Training
點擊後可以看到工作流的定義,包含兩個,一個是通過lora finetune模型,一個是將訓練出來的模型與基礎模型進行合併,得到最終的模型。
具體的任務定義,可以雙擊對應的圖標查看。
該工作流具有以下參數(點擊運行後彈出)
- base_model: 基礎模型,根據個人情況選擇自行下載,註意開源大模型僅為學習和體驗用途,目前預設為
TheBloke/vicuna-7B-1.1-HF
- data_path: 你要訓練的個性化數據和領域數據的路徑,預設為
/root/demo-data/llama_data.json
- lora_path: 訓練出來的lora權重的保持路徑
/root/autodl-tmp/vicuna-7b-lora-weight
- output_path: 將基礎模型和lora權重合併之後,最終模型的保存路徑,記下來部署的時候需要用到
- num_epochs: 訓練參數,訓練的輪次,可以設為1用於測試,一般設為3~10即可
- cutoff_len: 文本最大長度,預設1024
- micro_batch_size: batch_size
Deploy
部署大模型的工作流,會先引用kill_service殺死已經部署的模型,在依次啟動 controller,然後添加模型,然後打開gradio網頁服務。
啟動參數如下
- model: 模型路徑,可以為huggingface的模型id,也可以為我們訓練出來的模型地址,即上面training工作流的output_path。預設為
TheBloke/vicuna-7B-1.1-HF
使用預設,將直接部署vicuna-7b
的模型
Kill_service
這個工作流用於殺死已經部署的模型,釋放顯存,這個工作流沒有參數,直接運行即可。
如果一些情況下,我們要停掉正在部署的服務(如要重新訓練模型,顯存不夠時)我們可以直接執行kill_service工作流,殺死正在部署的服務。
看過經過幾個實例,你的部署就完成了,下麵我們實操一下:
大模型操作實例演示
訓練大模型
啟動工作流
可以直接執行training的工作流,選擇預設參數即可
啟動後,可以點擊下圖紅框部分工作流實例,然後點擊對應的工作流實例查看任務執行情況
右鍵對應的任務,可以查看對應的日誌,如下
也可以在左邊欄最下麵的任務實例欄中,查看對應的任務狀態和日誌等信息
在訓練過程中,也可以通過查看日誌查看具體訓練的進度(包括當前的訓練步數,loss指標,剩餘時間等),有個進度條一直顯示目前在第幾個step,step = 數據量 * epoch / batchsize
訓練完成後日誌如下
更新自己個性化訓練數據
我們預設的數據是在 /root/demo-data/llama_data.json
,當前數據來源於下麵華佗,一個使用中文醫學數據finetune的醫學模型,對,我們樣例是訓練一個家庭醫生出來:
如果自己有特定領域的數據,可以指向自己的數據,數據格式如下
一行一個json,欄位含義為
instruction
****: 指令,為給模型指令input
: 輸入output
: 期望模型的輸出
如以下
{"instruction": "計算算數題", "input": "1+1等於幾", "output": "2"}
溫馨提示,可以將 instruction
和 input
合併為 instruction
, input為空也可以。
按照格式製作數據,訓練時修改data_path
參數執行自己的數據即可。
註意事項
第一次執行訓練,會從你指定的位置拉取基礎模型,例如TheBloke/vicuna-7B-1.1-HF
,會有下載的過程,稍等下載完成即可,這個模型下載是由用戶指定的,你也可以任選下載其他的開源大模型(註意使用時遵守開源大模型的相關協議)。
因為網路問題,第一次執行Training的時候,有可能會下載基礎模型到一半失敗,這個時候可以點擊重跑失敗任務,即可重新繼續訓練,操作如下所示
如果要停止訓練,可以點擊停止按鈕停止訓練,會釋放訓練占用的顯卡顯存
部署工作流
在工作流定義頁面,點擊運行deploy工作流,如下如所示即可部署模型
如果自己沒有訓練出來的模型的話,也可以執行預設參數 TheBloke/vicuna-7B-1.1-HF
,部署vicuna-7b
的模型,如下圖所示:
如果在上一步我們進行了模型訓練,我們可以部署我們的模型了,部署之後就可以體驗我們自己的大模型了,啟動參數如下,填入上一步的模型的output_path
即可
下麵我們進入部署的工作流實例,如下圖所示,先點擊工作流實例,然後點擊deploy首碼的工作流實例即可
右鍵點擊refresh_gradio_web_service後可以查看任務日誌,找到我們大模型鏈接的位置,操作如下
在日誌的最後,我們可以看到一個鏈接,可以公網訪問,如下
這裡有兩個鏈接,一個是0.0.0.0:7860
因為AutoDL只開放了6006埠,並且已經用於dolphinscheduler,所以我們暫時無法訪問該介面,我們可以直接訪問下麵的鏈接
[https://81c9f6ce11eb3c37a4.gradio.live](https://81c9f6ce11eb3c37a4.gradio.live)
這個鏈接每次部署都會不一樣,因此需要從日誌找重新找鏈接。
進入後,即可看到我們的對話頁面
對!就這樣你就擁有了你自己的ChatGPT了!而且它的數據僅服務於你自己!而且!你只花了不到一杯咖啡的錢哦~~
體驗一下,你自己的私有化ChatGPT吧!
總結
在這個以數據和技術驅動的世界中,擁有一個專屬的ChatGPT模型具有無法估量的價值。隨著人工智慧和深度學習的日益發展,我們正處在一個可塑造個性化AI助手的時代。而訓練和部署屬於自己的ChatGPT模型,可以幫助我們更好地理解AI,以及它如何改變我們的世界。
總的來說,自訓練和部署ChatGPT模型可以幫助你更好地保護數據安全和隱私、滿足特定的業務需求、節約技術成本,同時通過工作流工具如DolphinScheduler使訓練過程自動化,並更好地遵守當地的法律法規。這都使得自訓練和部署ChatGPT模型成為一個值得考慮的選擇。
附註意事項:
數據安全與隱私
當你使用公共API服務使用ChatGPT時,你可能會對數據的安全性和隱私有所顧慮。這是一個合理的擔憂,因為你的數據可能會在網路中被傳播。通過自己訓練和部署模型,你可以確保你的數據僅在你自己的設備或你租用的伺服器上存儲和處理,保障數據安全與隱私。
特定領域知識
對於具有特定業務需求的組織或個人來說,通過訓練自己的ChatGPT模型,可以確保模型具有與業務相關的最新和最相關的知識。無論你的業務領域是什麼,一個專門針對你的業務需求訓練的模型都會比通用模型更有價值。
投入成本
使用OpenAI的ChatGPT模型可能會帶來一定的費用,同時如果要自己訓練和部署模型,也需要投入一定的資源和技術成本,40元就可以體驗調試大模型,如果長期運行建議自己採購3090顯卡,或者年租雲端伺服器。因此,你需要根據自己的具體情況,權衡利弊,選擇最適合自己的方案。
DolphinScheduler
通過使用Apache DolphinScheduler的工作流,你可以使整個訓練過程自動化,大大降低了技術門檻。即使你不具備深厚的演算法知識,也可以依靠這樣的工具,順利地訓練出自己的模型。支持大模型訓練的同時,它也支持大數據調度、機器學習的調度,幫助你和你的企業非技術背景的員工簡單上手的做好大數據處理、數據準備、模型訓練和模型部署,而且,它是開源且免費的。
開源大模型法律法規約束
DolphinScheduler只是可視化AI工作流,本身不提供任何開源大模型。用戶在使用下載開源大模型時,你需要註意自行選擇不同的開源大模型使用約束條件,本文中的開源大模型所舉的例子僅供個人學習體驗使用,使用大模型時需要註意遵守開源大模型開源協議合規性。同時,不同國家都不同嚴格的數據存儲和處理規定,在使用大模型時,你必須對模型進行定製和調整,以適應你所在地的具體法律法規和政策。這可能包括對模型輸出的內容進行特定的過濾等,以滿足當地的隱私和敏感信息處理規定。
本文由 白鯨開源 提供發佈支持!