Benchmark Model LLM Lokal

Repositori GitHub Proyek

Latar Belakang

Saya membangun LLM Speed Benchmark (LLMSB) selama saya menjadi Engineering Intern paruh waktu di Anarchy (YC W23). LLMSB adalah alat benchmarking untuk menilai kinerja sebuah model LLM. Alat ini menggunakan pustaka transformers milik HuggingFace untuk memuat dan menjalankan model LLM dan mengukur:

  • total waktu eksekusi
  • token per detik
  • spesifikasi perangkat keras umum
  • penggunaan cpu (frekuensi saat ini & persentase penggunaan inti dari waktu ke waktu)
  • penggunaan ram (ram & swap dari waktu ke waktu)
  • penggunaan gpu (beban, penggunaan memori, & suhu dari waktu ke waktu)

DI SINI adalah contoh hasil benchmark untuk model codellama-13b-oasst-sft-v10 yang berjalan pada H100. Saya secara pribadi memiliki Nvidia RTX 2070 Ti, yang memiliki 8 GB VRAM. Sayangnya, untuk sebagian besar model LLM modern, 8 GB VRAM tidak cukup untuk berinteraksi dengan sebuah model. Karena hal ini, saya menggunakan RunPod untuk “menyewa” GPU dan menjalankan benchmark saya pada model-model tertentu.

Inilah latar belakang/asal-usul LLMSB. Karena proyek ini bersifat sumber terbuka, Anda dapat melihat kodenya DI SINI. Di bawah ini, saya menyertakan README dari repositori jika Anda ingin memeriksanya.

Tentang

🚧 LLM Speed Benchmark (LLMSB) saat ini masih dalam beta (v0). Mohon jangan gunakan ini di produksi, atau gunakan dengan risiko Anda sendiri. Kami masih memperbaiki beberapa kendala dan meningkatkan fungsionalitas. Jika Anda menemukan bug atau memiliki saran, mohon laporkan di ISSUES. Masukan Anda sangat berharga!

LLM Speed Benchmark (LLMSB) adalah alat benchmarking untuk menilai kinerja model LLM di berbagai platform perangkat keras. Tujuan utamanya adalah menyusun kumpulan data komprehensif yang merinci kinerja model LLM pada berbagai sistem, sehingga pengguna dapat lebih efektif memilih model LLM yang tepat untuk proyek mereka.

Keterbatasan

LLMSB berada pada v0, jadi memiliki keterbatasan:

  • Hanya dirancang untuk berjalan pada sistem operasi berbasis debian, alias tidak dirancang untuk berjalan di Windows. Ini karena LLMSB menggunakan neofetch dan nvidia-smi untuk mengumpulkan metrik di balik layar dan logika filepath berbasis pada sistem operasi unix.
  • Karena cara metrik dicatat, kolektor metrik dapat memerlukan waktu hingga 1 detik untuk melakukan satu pengumpulan. Ini berarti bahwa, paling cepat, kami dapat mengumpulkan metrik perangkat keras setiap 1 detik.
  • LLMSB hanya menggunakan HuggingFace untuk memuat dan menjalankan model. Ini berfungsi untuk saat ini, tetapi tujuannya adalah agar LLMSB mendukung beberapa framework, bukan hanya HuggingFace.
  • Saat ini, semua model dijalankan melalui logika yang ditampilkan dalam fungsi run_llm(), yang terletak di src/hf.py, di mana fungsi AutoTokenizer() dan AutoModelForCausalLM() digunakan untuk memuat dan menjalankan model. Ini berfungsi tetapi membatasi bagaimana kami dapat mengonfigurasi/mengoptimalkan model tertentu. Mengetahui hal ini, tujuannya adalah membuat kelas terpisah untuk setiap model populer dan menggunakan kelas model spesifik HuggingFace, seperti LlamaTokenizer & LlamaForCausalLM, sebagai gantinya.
  • LLMSB hanya mengumpulkan metrik umum tingkat tinggi. Di masa depan, kami ingin mengumpulkan metrik tingkat lebih rendah. Kami pikir ini sebagian dapat dilakukan menggunakan pembungkus profiler Pytorch porfiler wrapper.

Contoh Keluaran

22 November 2023

LLMSB dijalankan/diuji pada GPU L40 dan H100 melalui RunPod. Dalam benchmark tersebut, model llama-2-7b-hf, codellama-13b-oasst-sft-v10, & mpt-7b diuji. Lihat hasilnya DI SINI. Jika ada kesalahan/masalah yang terlihat, mohon laporkan ke ISSUES.

Penyiapan

  1. Buat dan aktifkan lingkungan python:

    python3 -m venv env
    source env/bin/activate
    
  2. Instal dependensi paket (menggunakan APT):

    apt -y update
    apt install -y vim
    apt install -y neofetch
    
  3. Instal dependensi python:

    pip3 install transformers
    pip3 install psutil
    pip3 install gputil
    pip3 install tabulate
    pip3 install sentencepiece
    pip3 install protobuf
    
  4. Instal Pytorch

    # install pytorch stable build, for linux, using CUDA 12.1:
    pip3 install torch torchvision torchaudio
    
  5. Instal LLM-VM:

    pip install llm-vm
    
  6. (opsional) Jika Anda menggunakan model seperti LLAMA, Anda akan memerlukan token akses HuggingFace. Atur token akses Anda DI SINI lalu simpan token Anda ke konsol dengan menjalankan perintah berikut:

    huggingface-cli login
    

Cara Menjalankan

  1. Selesaikan langkah-langkah yang tercantum di bagian Penyiapan.

  2. Untuk mengonfigurasi set Anda, Anda perlu membuat file json dengan parameter berikut (ini contohnya):

    • CATATAN: tidak setiap framework mendukung parameter yang sama
    {
      "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
    }
    
  3. Menggunakan path ke file config yang Anda buat pada langkah sebelumnya, jalankan berikut untuk memulai benchmark (pilih satu opsi):

    # 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
    
  4. Setelah benchmark selesai berjalan, lihat hasil akhirnya dalam file yang seharusnya terlihat seperti ini:

    report_2023-11-25_05:55:04.207515_utc_1ffc4fa7-3aa9-4878-b874-1ff445e1ff8a.json
    

Menyiapkan RunPod:

  1. Siapkan RunPod, siapkan sertifikat/kunci ssh Anda, dan jalankan sebuah pod. Anda dapat mengakses pod Anda di Halaman Konsol RunPod.

  2. Klik tombol “Connect” untuk mendapatkan informasi koneksi ssh. Informasi ini seharusnya terlihat seperti ini:

    ssh root&12.345.678.90 -p 12345 -i ~/.ssh/id_example
    
    • Perintah ini akan diformat seperti ini:

      ssh <user>@<ip-address> -p <port> -i <local-path-to-ssh-cert>
      
  3. Menggunakan perintah pada langkah #2, Anda seharusnya dapat ssh ke dalam pod dan menggunakan GPU yang Anda pilih di pod RunPod tersebut.

  4. Jika Anda ingin menyalin sebuah file dari pod ke mesin lokal Anda, Anda akan menjalankan perintah dalam format ini (ini merujuk pada variabel yang ditampilkan pada langkah #2):

    scp -P <port> -i <local-path-to-ssh-cert> <user>@<ip-address>:<path-to-file-in-pod> <path-to-local-directory>
    
    • Berikut adalah contoh perintah tersebut:

      scp -P 12345 -i ~/.ssh/id_example <user>@<ip-address>:/root/test.txt /home/user1/Downloads/
      
  5. Setelah Anda selesai dengan pod, matikan atau jeda pod tersebut. Tetapi peringatan, jika Anda menjedanya Anda masih akan dikenai biaya, hanya jauh lebih sedikit.

Sumber Hebat: