話說上次設定完 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 的顯卡上跑得動嗎? 如果跑不動, 要再買個女用二手顯卡嗎? 嗯…夜深了, 美股開盤了, 來看看今天貼紙的價錢好不好? 诶!? 不錯耶, 趕快去睡覺夢美一點.

