LLAMA 2 開測小筆記

話說上次設定完 dual boot 之後, 有個未完成的工作一直放在心上, 那就是跑 llama 2. 在 Windows 的環境下, 即使開了 Anaconda, 簡單跑個指令, 也會丟出 TCPScore 括號沒對齊的 runtime error. 而每隻 Python 單獨跑似乎沒事, 表示都有對齊.

我去 stackoverflow 找了一下, 發現都沒有人討論這件事. 所以我推論一定是這問題太蠢不值得討論. 那麼應該就是 Windows 不支援用 ‘\’ 分行的關係. 與其一支一支程式找出罪魁禍首們, 還是直接來跑跑 Ubuntu 吧!

果然! 在 Ubuntu 環境下, 同樣執行下面這行指令, 無論要不要分行, 都不會發生 Windows 看到的錯誤. 下面這行可以順利執行.

torchrun –nproc_per_node 1 example_text_completion.py –ckpt_dir llama-2-7b/ –tokenizer_path tokenizer.model –max_seq_len 128 –max_batch_size 4

在 Ubuntu 22.04.3 LTS 版本的執行過程中, 我一共只遇到三個錯, 依序是:

File “/media/cash/Seagate Expansion Drive/AI/example_text_completion.py", line 4, in
import fire
ModuleNotFoundError: No module named ‘fire’

File “/media/cash/Seagate Expansion Drive/AI/llama/generation.py", line 13, in
from fairscale.nn.model_parallel.initialize import (
ModuleNotFoundError: No module named ‘fairscale’

File “/media/cash/Seagate Expansion Drive/AI/llama/tokenizer.py", line 8, in
from sentencepiece import SentencePieceProcessor
ModuleNotFoundError: No module named ‘sentencepiece’

問題回報這麼清楚白話, 我只需要

pip install fire

pip install fairscale

pip install sentencepiece

就可以正常執行了!

至於期待許久的對話功能, 依樣畫葫蘆看來不行, README.MD 有說把 max_seq_len 改 512, 這樣竟然就可以.

torchrun –nproc_per_node 1 example_chat_completion.py –ckpt_dir llama-2-7b-chat/ –tokenizer_path tokenizer.model –max_seq_len 512 –max_batch_size 4

對了, 雖然這個只是 7b 的最小模型, load 個參數也是滿久的! 需要 5~6 分鐘 (338.91 秒). 不過改了 max_seq_len 到 512, loading time 就變成 149.72 秒. 好神奇. 這個 model 跑出來也是沒有 UI, 只是多了 emoji 的回答. 看來弄成對話要自己處理.

當然我更期待跑 70b 參數的那個模型. 它能在我 24GB DDR5 的顯卡上跑得動嗎? 如果跑不動, 要再買個女用二手顯卡嗎? 嗯…夜深了, 美股開盤了, 來看看今天貼紙的價錢好不好? 诶!? 不錯耶, 趕快去睡覺夢美一點.

近日和電腦奮戰的小整理

前幾天研究 Stable Diffusion, 使用 Web UI 的話都很簡單, 算是好上手. 只有萬一需要安裝 matplotlib 時需要 work around. SD 預設搭配的 Python 3.10.6 版本, 在 stable-diffusion-webui\venv\Lib\site-packages\matplotlib-3.7.2.dist-info 少了 metadata. 此時要把原本 matplotlib 相關目錄都砍掉, 用 Visual Studio 編一個全新的 matplotlib 放在同一個目錄, 然後啟動 webui-user.bat 時, 它就會自己編出 metadata 來了.

Stable Diffusion 還滿好玩的. 我一開始就叫它畫兔子、貓、狗在草原上, 結果它給我這個. 可見得 prompt 有多重要!

至於先前的 llama-2, 一開放我就去申請. 不過用 Anaconda 怎麼都編不過! 我覺得環境這麼難搞定, 一定是我沒有裝 Ubuntu 的關係. 畢竟正規搞 AI 的人應該不是用 Windows. 所以我決定把電腦改成 Windows-Ubuntu dual boot. 按網路教學去做 dual boot, 基本上不難. 最大坑就是 Ubuntu 預設 nouveau 顯卡 driver 跟真正的顯卡不相容!

第一關要裝好顯卡 driver 再 reboot, 它的 driver 還不是選 Nvidia 型號, 而是 CUDA driver 版本. 我的 RTX3090 選 515 OK! 第二關就是開機後 freeze 在 splash 畫面, 圈圈轉了幾下就不動了. 放一整晚也沒開起來.

就在我打算 Google 要怎麼退坑 dual boot 時, 竟然讓我找到正解 [1] ! 原來在安裝頁面就該動手了! 重點在於按 e 開始 edit, 把 quite splash 換成 nomodeset, 然後按 F10 重新開機. 本文的作者說是要在安裝前服用, 不過我已經完成 dual boot, 選 Ubuntu 開機才卡 splash, 所幸這招依然有效! 省了我不少時間.

安裝 Ubuntu 時還走一點冤枉路, 我碰到好幾次了. 不知道能不能防範未然? 那就是第一次開機畫面幾乎是全黃的, 只有深黃淺黃之分. 我按照類似 [2] 就能解決它. 只是在找出正確按鍵在哪裡的過程中, 真是看得眼睛都快瞎了!

[REF]

  1. https://blog.csdn.net/qq_41972927/article/details/88580898
  2. https://blog.csdn.net/Eniac0/article/details/121221432