Yerel LLM Modellerini Değerlendirme
Arka Plan
LLM Hız Değerlendirmesi (LLMSB) projesini Anarchy (YC W23) şirketinde yarı zamanlı Mühendislik Stajyeri olarak çalıştığım süre boyunca geliştirdim. LLMSB, bir LLM modelinin performansını değerlendirmek için bir değerlendirme aracıdır. HuggingFace’in transformers kütüphanesini kullanarak bir LLM modelini yükler ve çalıştırır ve aşağıdaki ölçümleri yapar:
- toplam çalışma süresi
- saniye başına token
- genel donanım özellikleri
- cpu kullanımı (mevcut frekans ve çekirdeklerin kullanım yüzdesi zamanla)
- ram kullanımı (ram ve swap zamanla)
- gpu kullanımı (yük, bellek kullanımı ve sıcaklık zamanla)
BURADA codellama-13b-oasst-sft-v10 modelinin H100 üzerinde çalıştırıldığı bir değerlendirme örneği bulunmaktadır. Kişisel olarak bir Nvidia RTX 2070 Ti sahibi olduğum için 8 GB VRAM’e sahibim. Ne yazık ki, çoğu modern LLM modeli için 8 GB VRAM, bir modelle etkileşim kurmak için yeterli değildir. Bu nedenle, belirli modeller üzerinde değerlendirmelerimi gerçekleştirmek için RunPod kullanarak GPU’ları “kiraladım”.
Bu, LLMSB’nin arka planı/kaynağıdır. Proje açık kaynaklı olduğu için kodu BURADA görüntüleyebilirsiniz. Aşağıda, kontrol etmek isterseniz repo README’sini ekledim.
Hakkında
🚧 LLM Hız Değerlendirmesi (LLMSB) şu anda beta (v0) aşamasındadır. Lütfen bunu üretimde kullanmayın veya kendi riskinizle kullanın. Hala bazı sorunları gideriyoruz ve işlevselliği geliştiriyoruz. Herhangi bir hata ile karşılaşırsanız veya önerileriniz varsa, lütfen bunları SORUNLAR altında bildirin. Geri bildiriminiz çok değerlidir!
LLM Hız Değerlendirmesi (LLMSB), LLM modellerinin farklı donanım platformlarındaki performansını değerlendirmek için bir değerlendirme aracıdır. Nihai hedefi, LLM modellerinin çeşitli sistemlerdeki performansını detaylandıran kapsamlı bir veri seti derlemektir, böylece kullanıcıların projeleri için doğru LLM model(ler)ini daha etkili bir şekilde seçmelerini sağlamaktır.
Sınırlamalar
LLMSB v0 aşamasındadır, bu nedenle sınırlamaları vardır:
- Sadece debian tabanlı işletim sistemlerinde çalışacak şekilde tasarlanmıştır, yani Windows’ta çalışacak şekilde tasarlanmamıştır. Bunun nedeni, LLMSB’nin arka planda metrikleri toplamak için neofetch ve nvidia-smi kullanması ve dosya yolu mantığının unix işletim sistemlerine dayanmasıdır.
- Metriklerin nasıl kaydedildiği nedeniyle, metrik toplayıcının bir toplama işlemi yapması 1 saniyeye kadar sürebilir. Bu, en hızlısı ile her 1 saniyede bir donanım metriklerini toplayabileceğimiz anlamına gelir.
- LLMSB yalnızca modelleri yüklemek ve çalıştırmak için HuggingFace’i kullanır. Bu şu anda işe yarıyor, ancak hedef, LLMSB’nin yalnızca HuggingFace değil, birden fazla çerçeveyi desteklemesidir.
- Şu anda, tüm modeller, src/hf.py dosyasında bulunan run_llm() fonksiyonunda sunulan mantık aracılığıyla çalıştırılmaktadır; burada AutoTokenizer() ve AutoModelForCausalLM() fonksiyonları bir modeli yüklemek ve çalıştırmak için kullanılmaktadır. Bu işe yarıyor ama belirli modelleri yapılandırma/optimize etme şeklimizi sınırlıyor. Bunu bilerek, hedef, her popüler model için ayrı sınıflar oluşturmak ve HuggingFace’in model spesifik sınıflarını, örneğin LlamaTokenizer ve LlamaForCausalLM gibi, kullanmaktır.
- LLMSB yalnızca genel, yüksek düzeyde metrikler toplar. Gelecekte, daha düşük düzeyde metrikler toplamayı hedefliyoruz. Bunun kısmen Pytorch’un profiler wrapper kullanılarak yapılabileceğini düşünüyoruz.
Örnek Çıktılar
22 Kasım 2023
LLMSB, RunPod aracılığıyla bir L40 ve H100 GPU üzerinde çalıştırıldı/test edildi. Bu değerlendirmelerde llama-2-7b-hf, codellama-13b-oasst-sft-v10 ve mpt-7b modelleri test edildi. Sonuçları BURADA kontrol edin. Herhangi bir hata/sorun fark edilirse, lütfen bunları SORUNLAR’a bildirin.
Kurulum
-
Python ortamı oluşturun ve etkinleştirin:
python3 -m venv env source env/bin/activate -
Paket bağımlılıklarını yükleyin (APT kullanarak):
apt -y update apt install -y vim apt install -y neofetch -
Python bağımlılıklarını yükleyin:
pip3 install transformers pip3 install psutil pip3 install gputil pip3 install tabulate pip3 install sentencepiece pip3 install protobuf -
Pytorch yükleyin:
# linux için, CUDA 12.1 kullanarak pytorch stabil sürümünü yükleyin: pip3 install torch torchvision torchaudio -
LLM-VM yükleyin:
pip install llm-vm -
(isteğe bağlı) LLAMA gibi modeller kullanıyorsanız, bir HuggingFace erişim token’ına ihtiyacınız olacak. Erişim token’ınızı BURADA ayarlayın ve ardından aşağıdaki komutu çalıştırarak token’ınızı konsolunuza kaydedin:
huggingface-cli login
Nasıl Çalıştırılır
-
Kurulum bölümünde listelenen adımları tamamlayın.
-
Setinizi yapılandırmak için aşağıdaki parametrelerle bir json dosyası oluşturmanız gerekir (işte bir örnek):
- NOT: Her çerçeve aynı parametreleri desteklemiyor
{ "model": "bigscience/bloom-560m", # modelin HuggingFace üzerindeki yolu/repo'su (https://huggingface.co/models) "prompt": "Merhaba Dünya!", # LLM modeline girmek istediğiniz istem "device": "cuda:0", # LLM modelini çalıştırmak istediğiniz cihaz (GPU/CPU) "max_length": 50, # üretilen token'ların maksimum uzunluğu "temperature": 0.9, # LLM modeli için sıcaklık değeri "top_k": 50, # LLM modeli için top-k değeri "top_p": 0.9, # LLM modeli için top-p değeri "num_return_sequences": 1, # modelin bağımsız olarak çalıştırılan örneklerinin sayısı "time_delay": 0, # metrik toplayıcının her iterasyonda bekleyeceği zaman gecikmesi (saniye) "model_start_pause": 1, # testin LLM modelini çalıştırmadan önce bekleyeceği zaman (saniye) "model_end_pause": 1 # testin LLM modeli çalışmayı bitirdikten sonra bekleyeceği zaman (saniye) "framework": "llm-vm" # modeli çalıştırmak için kullanmak istediğiniz çerçeve/kütüphane adı } -
Önceki adımda oluşturduğunuz yapılandırma dosyasının yolunu kullanarak, değerlendirmeyi başlatmak için aşağıdakileri çalıştırın (bir seçenek seçin):
# bir değerlendirme çalıştır python3 run.py --config ./configs/llmvm_test.json # birden fazla değerlendirme çalıştır (bu durumda 3) python3 run.py --config ./configs/llmvm_test.json --loops 3 -
Değerlendirme tamamlandıktan sonra, aşağıdaki gibi bir dosyada nihai sonuçları kontrol edin:
report_2023-11-25_05:55:04.207515_utc_1ffc4fa7-3aa9-4878-b874-1ff445e1ff8a.json
RunPod Kurulumu:
-
RunPod’ı kurun, ssh sertifikanızı/anahtarınızı ayarlayın ve bir pod çalıştırın. Pod’larınıza RunPod Konsol Sayfası üzerinden erişebilirsiniz.
-
SSH bağlantı bilgilerini almak için “Bağlan” butonuna tıklayın. Bu bilgi aşağıdaki gibi görünmelidir:
ssh root&12.345.678.90 -p 12345 -i ~/.ssh/id_example-
Bu komut şu şekilde formatlanacaktır:
ssh <kullanıcı>@<ip-adresi> -p <port> -i <yerel-yol-ssh-sertifikasına>
-
-
- adımda verilen komutu kullanarak pod’a ssh ile bağlanabilir ve o RunPod pod’ında seçtiğiniz GPU’yu kullanabilirsiniz.
-
Pod’dan yerel makinenize bir dosya kopyalamak istiyorsanız, bu formatta bir komut çalıştırmalısınız (bu, 2. adımda gösterilen değişkenlere atıfta bulunmaktadır):
scp -P <port> -i <yerel-yol-ssh-sertifikasına> <kullanıcı>@<ip-adresi>:<pod'daki-dosya-yolu> <yerel-dizin-yolu>-
İşte böyle bir komutun örneği:
scp -P 12345 -i ~/.ssh/id_example <kullanıcı>@<ip-adresi>:/root/test.txt /home/user1/Downloads/
-
-
Pod ile işiniz bittiğinde, kapatın veya duraklatın. Ancak uyarı, duraklatırsanız yine de ücretlendirileceksiniz, sadece çok daha az.
Harika Kaynaklar:
- İstem Datasets: awesome-chatgpt-prompts, bigscience/P3, & writing-prompts
- LLM parametreleri hakkında daha fazla bilgi edinin
- Bulut tabanlı LLM modellerini değerlendirmek için harika bir değerlendirme
- Harika LLM zeka liderlik tabloları: FastEval & open_llm_leaderboard