Kulinganisha Mifano ya LLM za Ndani
Hadithi ya Asili
Nilijenga LLM Speed Benchmark (LLMSB) wakati nilipokuwa Mwanafunzi Mhandisi wa sehemu-ya-wakati wa Anarchy (YC W23). LLMSB ni zana ya kuweka viwango kwa tathmini ya utendakazi wa modeli ya LLM. Inatumia maktaba ya transformers ya HuggingFace kwa kupakia na kuendesha modeli ya LLM na inapima:
- muda wa jumla wa utekelezaji
- alama (tokens) kwa sekunde
- vipimo vya jumla vya vifaa
- matumizi ya CPU (mzunguko wa sasa & asilimia ya matumizi ya cores kwa muda)
- matumizi ya RAM (RAM & swap kwa muda)
- matumizi ya GPU (mzigo, matumizi ya kumbukumbu, na joto kwa muda)
HAPA ni mfano wa run ya benchmark kwa modeli ya codellama-13b-oasst-sft-v10 ikiendeshwa kwenye H100. Mimi binafsi nina Nvidia RTX 2070 Ti, ambayo ina 8 GB ya VRAM. Kwa bahati mbaya, kwa aina nyingi za kisasa za modeli za LLM, 8 GB ya VRAM haitoshi kuingiliana na modeli. Kutokana na hili, nilitumia RunPod kuwa “nami” GPU(s) na kuendesha benchmarks zangu kwenye baadhi ya modeli.
Hii ilikuwa hadithi ya asili/origini ya LLMSB. Kwa kuwa mradi ni chanzo-wazi, unaweza kuangalia msimbo HAPA. Hapo chini, nimejumuisha README kutoka kwenye repo ikiwa ungependa kuangalia.
Kuhusu
🚧 LLM Speed Benchmark (LLMSB) kwa sasa iko katika beta (v0). Tafadhali usitumiwe hili katika uzalishaji, au litumie kwa hatari yako mwenyewe. Bado tunaweka marekebisho na kuboresha utendaji. Ikiwa utakutana na hitilafu zozote au una mapendekezo, tafadhali ripoti chini ya MASUALA. Maoni yako ni ya thamani!
LLM Speed Benchmark (LLMSB) ni zana ya kuweka viwango kwa tathmini ya utendakazi wa mifano ya LLM kwenye majukwaa mbalimbali ya vifaa. Lengo lake kuu ni kukusanya seti ya data kamili inayofafanua utendakazi wa mifano ya LLM kwenye mifumo mbalimbali, kuwezesha watumiaji kuchagua kwa ufanisi zaidi modeli(s) sahihi za LLM kwa miradi yao.
Vizuizi
LLMSB iko kwenye v0, hivyo ina vikwazo:
- Imebuniwa tu kuendesha kwenye mifumo ya uendeshaji inayotokana na Debian, yaani haijatengenezwa kuendesha kwenye Windows. Hii ni kwa sababu LLMSB inatumia neofetch na nvidia-smi kukusanya vipimo kwa siri na mantiki ya njia za faili inategemea mifumo ya uendeshaji ya Unix.
- Kutokana na jinsi vipimo vinavyorekodiwa, inaweza kuchukua mkusanyaji wa vipimo hadi sekunde 1 kufanya ukusanyaji. Hii ina maana kwamba, kwa kasi, tunaweza kukusanya vipimo vya vifaa kila sekunde 1.
- LLMSB inatumia HuggingFace pekee kupakia na kuendesha modeli. Hii inafanya kazi kwa sasa, lakini lengo ni kufanya LLMSB iunge mkono mifumo mingi, siyo HuggingFace peke yake.
- Kwa sasa, modeli zote zinaendeshwa kupitia mantiki iliyoonyeshwa katika kazi run_llm(), iliyoko katika src/hf.py, ambapo kazi AutoTokenizer() na AutoModelForCausalLM() zinatumika kupakia na kuendesha modeli. Hii inafanya kazi lakini inazuia jinsi tunaweza kusanidi/kuboresha modeli maalum. Tukijua hili, lengo ni kuunda madarasa tofauti kwa kila modeli maarufu na kutumia madarasa maalum ya modeli ya HuggingFace, kama LlamaTokenizer & LlamaForCausalLM, badala yake.
- LLMSB inakusanya tu vipimo vya jumla, vya ngazi ya juu. Katika siku zijazo, tungependa kukusanya vipimo vya ngazi ya chini. Tunaamini hili linaweza kufanywa kwa sehemu kwa kutumia kifuniko cha profiler cha Pytorch (porfiler wrapper).
Matokeo ya Mfano
22 Novemba, 2023
LLMSB ilifanywa/kujaribiwa kwenye GPU za L40 na H100 kupitia RunPod. Katika benchmarks hizo modeli llama-2-7b-hf, codellama-13b-oasst-sft-v10, & mpt-7b zilijaribiwa. Angalia matokeo HAPA. Ikiwa makosa/masuala yoyote yanatambuliwa, tafadhali ripoti kwa MASUALA.
Usanidi
-
Tengeneza na wezesha mazingira ya python:
python3 -m venv env source env/bin/activate -
Sakinisha utegemezi wa vifurushi (ukitumia APT):
apt -y update apt install -y vim apt install -y neofetch -
Sakinisha utegemezi wa python:
pip3 install transformers pip3 install psutil pip3 install gputil pip3 install tabulate pip3 install sentencepiece pip3 install protobuf -
Sakinisha Pytorch
# install pytorch stable build, for linux, using CUDA 12.1: pip3 install torch torchvision torchaudio -
Sakinisha LLM-VM:
pip install llm-vm -
(hiari) Ikiwa unatumia modeli kama LLAMA, utahitaji tokeni ya ufikiaji ya HuggingFace. Sanidi tokeni yako ya ufikiaji HAPA kisha hifadhi tokeni yako kwenye koni yako kwa kukimbiza amri ifuatayo:
huggingface-cli login
Jinsi ya Kuendesha
-
Kamilisha hatua zilizoorodheshwa katika sehemu ya Usanidi.
-
Ili kusanidi seti yako, unahitaji kuunda faili ya json yenye vigezo vifuatavyo (hapa kuna mfano):
- KUMBUKUMBU: sio kila mfumo unasaidia vigezo sawa
{ "model": "bigscience/bloom-560m", # the model's path/repo on HuggingFace (https://huggingface.co/models) "prompt": "Hello World!", # the prompt you want to input into the LLM model "device": "cuda:0", # the device you want to run the LLM model on (GPU/CPU) "max_length": 50, # the maximun length of the generated tokens "temperature": 0.9, # temperatue value for the LLM model "top_k": 50, # top-k value for the LLM model "top_p": 0.9, # top-p value for the LLM model "num_return_sequences": 1, # the number of independently ran instances of the model "time_delay": 0, # the time delay (seconds) the metrics-collecter will wait per interation "model_start_pause": 1, # the time (seconds) the test will wait BEFORE running the LLM model "model_end_pause": 1 # the time (seconds) the test will wait AFTER the LLM model is done running, "framework": "llm-vm" # the name of the framework/library you want to use to run the model } -
Ukiwa na njia ya faili ya usanidi uliyounda katika hatua iliyopita, endesha yafuatayo kuanza benchmark (chagua moja ya chaguzi):
# run one benchmark python3 run.py --config ./configs/llmvm_test.json # run more then one benchmark (in this case 3) python3 run.py --config ./configs/llmvm_test.json --loops 3 -
Baada ya benchmark kuisha kuendesha, angalia matokeo ya mwisho katika faili ambayo inapaswa kuonekana kama hii:
report_2023-11-25_05:55:04.207515_utc_1ffc4fa7-3aa9-4878-b874-1ff445e1ff8a.json
Kusanidi RunPod:
-
Sanidi RunPod, sanidi cheti/ufunguo wako wa ssh, na piga pod ikiendele. Unaweza kufikia pod(s) zako kwenye Kurasa ya Kati ya RunPod.
-
Bonyeza kitufe cha “Connect” ili kupata taarifa za muunganisho wa ssh. Taarifa hizi zinapaswa kuonekana kama ifuatavyo:
ssh root&12.345.678.90 -p 12345 -i ~/.ssh/id_example-
Amri hii itapangwa hivi:
ssh <user>@<ip-address> -p <port> -i <local-path-to-ssh-cert>
-
-
Ukitumia amri ya hatua #2, utakuwa unaweza ku-ssh ndani ya pod na kutumia GPU uliyochagua katika pod ya RunPod.
-
Ikiwa unataka kunakili faili kutoka pod hadi mashine yako ya ndani, utaendesha amri kwa muundo huu (hii inaelezea vigezo vilivyotajwa katika hatua #2):
scp -P <port> -i <local-path-to-ssh-cert> <user>@<ip-address>:<path-to-file-in-pod> <path-to-local-directory>-
Hapa kuna mfano wa amri hiyo:
scp -P 12345 -i ~/.ssh/id_example <user>@<ip-address>:/root/test.txt /home/user1/Downloads/
-
-
Baada ya kumaliza kutumia pod, izime au izime kwa muda. Lakini tahadhari, ikiwa utaizima kwa muda bado utaendelea kutozwa, tu kwa kiasi kidogo.
Vyanzo Vikuu:
- Seti za prompt: awesome-chatgpt-prompts, bigscience/P3, & writing-prompts
- Jifunze zaidi kuhusu vigezo vya LLM
- Kifaa kizuri cha kupima modeli za LLM zinazoendeshwa kwenye wingu
- Meza za viongozi za akili za LLM: FastEval & open_llm_leaderboard