這個tutorial的契機是yy突然看到了一個workshop 所以類似於一週大作業的形式,輸入command輸出使用了自動駕駛哪些模組,程式碼在這裡 所以就幹一幹,順便寫一個tutorial給大家參考和教學 引申更多的應用
參考資料:
所有模型引數和所需要的GPU並行,注意這只是模型load佔用的memory 如果token或者batch size較大 也需要很多GPU視訊記憶體,表格下方會說明每個之間的區別,MP是指並行GPU的數量 預設是多少,所有模型我都在 這邊伺服器的A100試過 Size已經是乘過數量的了 是總和需要的memory
Model | Size | MP |
---|---|---|
code-7B | ~12.5G | 1 |
code-13B | 24G | 2 |
code-34B | 63G | 4 |
7b-chat | ~12.5G | 1 |
13b-chat | 24G | 2 |
70b-chat | ~160G | 8 |
溫馨提示 下列內容和 此 https://github.com/KTH-RPL/DriveCmd_LLM README 有重複:裡面包含了example和我們寫的prompt流程等 and yy嘗試的chatgpt api那邊的script
具體如圖:
正如前言中提到的,大部分本地自己用的電腦 可能只能跑最小的模型也就是7b的 GPU的佔用率大概是12G,如下圖為我執行repo裡的程式碼時佔用截圖 【上一個A100試了一下 這麼一看我本機3090 也帶不動】
記憶體的增大原因:
迴歸正題,接下來是clone兩邊的程式碼,一個是code一個是llama 前者經過了八股文、leetcode訓練【我是這麼理解的 hhh 通俗易懂】 後者是原生態
以下為演示截圖
這一步官方的README寫的挺不錯的,依賴很少 照著pip install -r requirements.txt
就行,基本無障礙,最好是建一個conda的環境,別和系統混了,此處為執行範例:
torchrun --nproc_per_node 1 example_completion.py \
--ckpt_dir CodeLlama-7b/ \
--tokenizer_path CodeLlama-7b/tokenizer.model \
--max_seq_len 128 --max_batch_size 4
截圖執行及GPU佔用:
正常我們想要的應該是chat 聊天形式的所以選擇以下模型會有更好的效果:
Model | Size | MP |
---|---|---|
CodeLlama-7b-Instruct | ~12.5G | 1 |
CodeLlama-13b-Instruct | 24G | 2 |
CodeLlama-34b-Instruct | 63G | 4 |
llama-2-7b-chat | ~12.5G | 1 |
llama-2-13b-chat | 24G | 2 |
llama-2-70b-chat | ~160G | 8 |
可以參考 前言中我提到的task 給出的一個結果呼叫,這裡是任務的報告pdf:https://arxiv.org/abs/2311.08206 更方便大家直接選擇和對比,對應程式碼在 https://github.com/KTH-RPL/DriveCmd_LLM
還有就是如果想自己部署一個chatgpt,或者是在蘋果系統下(which 記憶體就是顯示卡記憶體 可以參考這個b站視訊:蘋果M2 Ultra:AI大模型的新希望
自己部署一個chatgpt參考code:
部署後的示意圖:
同時這裡面也提到了其他的大語言模型 可以嘗試的:Multiple model backends: transformers, llama.cpp, ExLlama, ExLlamaV2, AutoGPTQ, GPTQ-for-LLaMa, CTransformers, AutoAWQ
還有一些vision assistance的模型可以一起,免費版chatgpt 4.0 (但是試了一下即使是70B的 效果在我們的任務上也沒有 3.5API呼叫的高,果然還是錢的問題
其中有一個大視覺語言模型 可以關注:https://github.com/haotian-liu/LLaVA
主要是記錄一下一些細節 比如模型和模型之間的不同,fine-tuned的實現等。
首先是關於llama2-chat的訓練,如下圖:得到llama2後 經過RLHF 步驟得到的chat模型 【RLHF 是一種模型訓練過程,應用於微調的語言模型,以進一步使模型行為與人類偏好和指令遵循保持一致。】
下圖說明了 訓練的一些細節: