Tolok Ukur Model LLM Lokal

Repo GitHub Proyek

Latar Belakang

Saya membuat LLM Speed Benchmark (LLMSB) selama waktu saya sebagai Magang Teknik paruh waktu di Anarchy (YC W23). LLMSB adalah alat tolok ukur untuk menilai kinerja sebuah model LLM. Ini menggunakan pustaka transformers dari HuggingFace untuk memuat dan menjalankan model LLM serta 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 tolok ukur untuk model codellama-13b-oasst-sft-v10 yang dijalankan pada H100. Saya 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 itu, saya menggunakan RunPod untuk “menyewa” GPU dan menjalankan tolok ukur saya pada model-model tertentu.

Ini adalah kisah asal/motivasi dari LLMSB. Karena proyek ini bersifat sumber terbuka, Anda dapat melihat kode DI SINI. Di bawah, saya menyertakan README dari repo jika Anda ingin memeriksanya.

Tentang

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

LLM Speed Benchmark (LLMSB) adalah alat tolok ukur untuk menilai kinerja model-model LLM di berbagai platform perangkat keras. Tujuan akhirnya adalah menyusun dataset komprehensif yang merinci kinerja model-model LLM pada berbagai sistem, sehingga pengguna dapat memilih model LLM yang tepat untuk proyek mereka dengan lebih efektif.

Batasan

LLMSB berada pada v0, jadi memiliki keterbatasan:

  • Hanya dirancang untuk dijalankan pada sistem operasi berbasis Debian, artinya tidak dirancang untuk dijalankan di Windows. Ini karena LLMSB menggunakan neofetch dan nvidia-smi untuk mengumpulkan metrik di balik layar dan logika jalur berkas berdasarkan sistem operasi unix.
  • Karena cara metrik direkam, pengumpul metrik bisa memerlukan hingga 1 detik untuk melakukan satu kali pengumpulan. Ini berarti, pada kecepatan terbaik, kita dapat mengumpulkan metrik perangkat keras setiap 1 detik.
  • LLMSB hanya menggunakan HuggingFace untuk memuat dan menjalankan model. Ini bekerja untuk sekarang, tetapi tujuannya adalah agar LLMSB mendukung beberapa framework, bukan hanya HuggingFace.
  • Saat ini, semua model dijalankan melalui logika yang disajikan dalam fungsi run_llm() yang terletak di src/hf.py, di mana fungsi AutoTokenizer() dan AutoModelForCausalLM() digunakan untuk memuat dan menjalankan model. Ini bekerja namun membatasi bagaimana kita dapat mengonfigurasi/optimalkan model tertentu. Menyadari hal ini, tujuannya adalah membuat kelas terpisah untuk setiap model populer dan memanfaatkan kelas model spesifik HuggingFace, seperti LlamaTokenizer & LlamaForCausalLM, sebagai gantinya.
  • LLMSB hanya mengumpulkan metrik umum dan tingkat tinggi. Di masa depan, kami ingin mengumpulkan metrik tingkat rendah. Kami berpikir ini sebagian dapat dilakukan menggunakan pembungkus profiler dari Pytorch.

Contoh Keluaran

22 November 2023

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

Persiapan

  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 membutuhkan token akses HuggingFace. Siapkan 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 Persiapan.

  2. Untuk mengonfigurasi set Anda, Anda perlu membuat berkas json dengan parameter berikut (berikut adalah contoh):

    • 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 konfigurasi yang Anda buat pada langkah sebelumnya, jalankan perintah berikut untuk memulai tolok ukur (pilih salah 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 tolok ukur selesai dijalankan, lihat hasil akhir di sebuah berkas 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, atur sertifikat/kunci ssh Anda, dan jalankan sebuah pod. Anda dapat mengakses pod Anda di Halaman Konsol RunPod.

  2. Klik tombol “Connect” untuk mendapatkan info koneksi ssh. Info ini akan 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 berkas dari pod ke mesin lokal Anda, Anda akan menjalankan perintah dalam format ini (ini merujuk pada variabel yang ditunjukkan 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 dari 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 jedakan pod tersebut. Tapi peringatan, jika Anda menjedakannya Anda tetap akan dikenakan biaya, hanya jauh lebih sedikit.

Sumber Bagus: