【随手记录】Llama Tutorial 大语言模型实践
這個tutorial的契機是yy突然看到了一個workshop 所以類似于一周大作業(yè)的形式,輸入command輸出使用了自動駕駛哪些模塊,代碼在這里 所以就干一干,順便寫一個tutorial給大家參考和教程 引申更多的應用
參考資料:
- https://github.com/facebookresearch/codellama, https://github.com/facebookresearch/llama
- 模型申請地址:https://ai.meta.com/llama/ → 然后按download,填寫完后 就會收到兩封郵件
- https://github.com/oobabooga/text-generation-webui
- 寫tutorial期間的代碼:https://github.com/KTH-RPL/DriveCmd_LLM
所有模型參數和所需要的GPU并行,注意這只是模型load占用的memory 如果token或者batch size較大 也需要很多GPU顯存,表格下方會說明每個之間的區(qū)別,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 |
- 7B, 13B, 34B 指示模型參數量
- chat 指示經過了對話的fine-tuned 【 llama2論文原文:a fine-tuned version of Llama 2 that is optimized for dialogue use cases】
- code 指示此llama版本經過了code數據集的訓練,can use text prompts to generate and discuss code. 此處為 官方blog
溫馨提示 下列內容和 此 https://github.com/KTH-RPL/DriveCmd_LLM README 有重復:里面包含了example和我們寫的prompt流程等 and yy嘗試的chatgpt api那邊的script
1. 申請下載模型
具體如圖:
- https://ai.meta.com/llama/ 點擊download
- 填寫資料,勾上所有的東西
- 接受terms 然后點continue
- 大概10分鐘內能收到兩封郵件,告訴你可用的權重和其下載地址【注意!這個地址有限制比如下載超過3次/24小時后 請重新返回步驟一】
2. 模型部署
正如前言中提到的,大部分本地自己用的電腦 可能只能跑最小的模型也就是7b的 GPU的占用率大概是12G,如下圖為我運行repo里的代碼時占用截圖 【上一個A100試了一下 這么一看我本機3090 也帶不動】
內存的增大原因:
- prompt 長短 也就是你給模型的輸入文字 可能很多 【這也是為什么chatgpt按token收費
- 輸出的語句長短 也就是模型給你的回答 【我這因為讓他解釋他的輸出了 所以也比較長
回歸正題,接下來是clone兩邊的代碼,一個是code一個是llama 前者經過了八股文、leetcode訓練【我是這么理解的 hhh 通俗易懂】 后者是原生態(tài)
- https://github.com/facebookresearch/llama, 注意復制鏈接的時候 也別給錯了 看對郵件給
- https://github.com/facebookresearch/codellama 同上理
以下為演示截圖
- git clone 對應代碼
- 進入文件夾
- 運行download.sh
- copy 郵件里收到的下載鏈接【第一次沒看仔細 一直在填自己的email 可還行
- 選擇下載什么模型,注意全部下載的話 可能比較大 建議硬盤空間不夠的 選一個最小的 先試試
3. 模型運行
這一步官方的README寫的挺不錯的,依賴很少 照著pip install -r requirements.txt就行,基本無障礙,最好是建一個conda的環(huán)境,別和系統混了,此處為運行示例:
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 |
4. More
可以參考 前言中我提到的task 給出的一個結果調用,這里是任務的報告pdf:https://arxiv.org/abs/2311.08206 更方便大家直接選擇和對比
還有就是如果想自己部署一個chatgpt,或者是在蘋果系統下(which 內存就是顯卡內存 可以參考這個b站視頻:蘋果M2 Ultra:AI大模型的新希望
自己部署一個chatgpt參考code:
- llama or codellama 作為model和basic
- text generation web UI 作為一個web的界面 這樣才能開啟正常對話, https://github.com/oobabooga/text-generation-webui
部署后的示意圖:
同時這里面也提到了其他的大語言模型 可以嘗試的: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
5. Llama2 論文速讀
主要是記錄一下一些細節(jié) 比如模型和模型之間的不同,fine-tuned的實現等。
首先是關于llama2-chat的訓練,如下圖:得到llama2后 經過RLHF 步驟得到的chat模型 【RLHF 是一種模型訓練過程,應用于微調的語言模型,以進一步使模型行為與人類偏好和指令遵循保持一致?!?/p>
下圖說明了 訓練的一些細節(jié):
- token是指將所有number 拆分成獨立的digits 然后使用use bytes 去decompose 未知的UTF-8,總的詞匯是32k token
- 預訓練 2T 的token后 模型也沒有飽和
總結
以上是生活随笔為你收集整理的【随手记录】Llama Tutorial 大语言模型实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 持续集成指南:GitHubAction
- 下一篇: 不懂乐理,也能扒谱,基于openvpi将