NVIDIA şu araçlar sunar: Performans Analizcisi Ve Model Analizcisi makine öğrenimi mühendislerinin gecikme ve verim arasındaki dengeyi ölçmelerine ve dengelemelerine yardımcı olmak için, ML çıkarım performansını optimize etmek için çok önemlidir. Model Analyzer, verimi artıran ve dağıtım maliyetlerini azaltan en uygun yapılandırmaları belirlemek için Snap gibi önde gelen kuruluşlar tarafından benimsenmiştir.
Ancak üretken yapay zeka modelleri, özellikle büyük dil modelleri (LLM) sunulduğunda, performans ölçümü daha da uzmanlaşmış hale geliyor.
LLM’ler için gecikme ve verim ölçümleri, belirteç düzeyindeki ölçümlere daha da ayrılır. Aşağıdaki liste temel ölçümleri gösterir, ancak istek gecikmesi, istek verimi ve çıktı belirteçlerinin sayısı gibi ek ölçümlerin de izlenmesi önemlidir.
- İlk token’a kadar geçen süre: Bir isteğin gönderildiği andan itibaren ilk yanıtının alındığı ana kadar geçen süre, kıyaslamada istek başına bir değer.
- Çıktı belirteci verimi: Ölçütten elde edilen toplam çıktı token sayısının ölçüt süresine bölümü.
- Jetonlar arası gecikme: Tek bir istek için ara yanıtlar arasındaki süre, son yanıtın üretilen belirteç sayısına bölünür, kıyaslamada her istek için yanıt başına bir değer. Bu metrik, çıktı belirteci başına süre olarak da bilinir.
LLM’leri ölçerken, sonuçları kullanıcılar ve modeller arasında hızlı ve tutarlı bir şekilde görmek önemlidir. Birçok uygulama için, ilk belirtece kadar geçen süre en yüksek önceliğe sahiptir, bunu çıktı belirteci verimi ve belirteçler arası gecikme takip eder. Ancak, tüm bu ölçümleri raporlayabilen bir araç, belirli sisteminiz ve kullanım durumunuz için en önemli olanın ne olduğunu tanımlamanıza ve ölçmenize yardımcı olabilir.
LLM çıkarımı için optimum performansa ulaşmak, bu metriklerin etkili bir şekilde dengelenmesini gerektirir. Çıktı belirteci verimi ile belirteçler arası gecikme arasında doğal bir denge vardır: birden fazla kullanıcı sorgusunu eş zamanlı olarak işlemek verimi artırabilir ancak aynı zamanda daha yüksek belirteçler arası gecikmeye de yol açabilir. Üretken yapay zeka için özel olarak tasarlanmış kıyaslama araçları olmadan toplam sahip olma maliyeti (TCO) tasarruflarını elde etmek için doğru dengeyi seçmek zor olabilir.
GenAI-Perf’ü Tanıtıyoruz
NVIDIA Triton’un en son sürümü artık yeni bir jeneratif AI performans kıyaslama aracı olan GenAI-Perf’ü içeriyor. Bu çözüm, jeneratif AI performansının ölçümünü ve optimizasyonunu geliştirmek için tasarlanmıştır.
Bu çözüm size şu konularda güç katar:
- Doğru bir şekilde ölçer Üretken AI için kritik öneme sahip belirli metrikleren yüksek performansı ve maliyet etkinliğini sağlayan optimum yapılandırmaları belirlemek.
- Model performansını değerlendirmek için OpenOrca ve CNN_dailymail gibi endüstri standardı veri kümelerini kullanın.
- OpenAI uyumlu bir API aracılığıyla çeşitli çıkarım motorları arasında standartlaştırılmış performans değerlendirmesini kolaylaştırın.
GenAI-Perf, NVIDIA’nın tüm üretken AI teklifleri genelinde performansı değerlendirmek için varsayılan kıyaslama aracı olarak hizmet eder; buna şunlar dahildir: NVIDIA NIMNVIDIA Triton Inference Server ve NVIDIA TensorRT-LLM. OpenAI uyumlu API’yi destekleyen farklı servis çözümleri arasında kolay karşılaştırmalar yapılmasını kolaylaştırır.
Aşağıdaki bölümlerde, GenAI-Perf’in OpenAI uç noktalarıyla uyumlu modellerin performansını ölçmek için nasıl kullanılabileceğini açıklıyoruz.
Şu anda desteklenen uç noktalar
NVIDIA GenAI-Perf şu anda üç OpenAI uç nokta API’sini destekliyor:
- Sohbet
- Sohbet Tamamlamaları
- Gömmeler
Yeni model türleri popüler hale geldikçe yeni uç noktalar yayınlanacaktır. GenAI-Perf ayrıca açık kaynak ve topluluk katkılarını kabul eder.
GenAI-Perf’i Çalıştırma
Başlamak hakkında daha fazla bilgi için bkz. Kurulum GenAI-Perf GitHub deposunda. GenAI-Perf’i çalıştırmanın en kolay yolu en son Triton Inference Server’ı yüklemektir SDK konteyneriBunu yapmak için NVIDIA GPU Cloud’da en son SDK konteyner sürümünü çalıştırabilir veya şu sürümü kullanabilirsiniz: YY.MM
(örneğin Temmuz 2024 için 24.07) yıl ve aya karşılık gelir.
Konteyneri çalıştırmak için aşağıdaki komutu çalıştırın:
docker run -it --net=host --rm --gpus=all
nvcr.io/nvidia/tritonserver:YY.MM-py3-sdk
Daha sonra sunucuyu çalıştırmanız gerekir. Aşağıdaki örneklerin her biri, bu tür modeli çalıştırmak için farklı bir komuta sahiptir.
vLLM OpenAI sunucusunu başlatın:
docker run -it --net=host --rm \
--gpus=all vllm/vllm-openai:latest \
--model gpt2 \
--dtype float16 --max-model-len 1024
Model son noktaya göre değişir:
- Sohbet ve sohbet tamamlama için şunu kullanın: gpt2.
- Gömme işlemleri için şunu kullanın:
intfloat/e5-mistral-7b-instruct \
.
Sunucu çalışırken, sonuçları almak için GenAI-Perf komutunu GenAI-Perf ile çalıştırabilirsiniz. Sonuçları görsel olarak görürsünüz ve bunlar ayrıca verilerin kolayca ayrıştırılması için CSV ve JSON olarak kaydedilir. Bunlar /artifacts
Model performansını görselleştiren grafikler de dahil olmak üzere diğer oluşturulan yapıtların bulunduğu klasör.
OpenAI sohbet uyumlu modellerin profillenmesi
GenAI-Perf’ü çalıştırın:
genai-perf \
-m gpt2 \
--service-kind openai \
--endpoint-type chat \
--tokenizer gpt2
Örnek sonuçlarını inceleyin (Tablo 1).
İstatistik | Ort. | Dakika | Maksimum | S99 | P90 | P75 |
İstek gecikmesi (ms) | 1679.30 | 567.31 | 2929.26 | 2919.41 | 2780,70 | 2214.89 |
Çıkış dizisi uzunluğu | 453.43 | 162.00 | 784.00 | 782.60 | 744,00 | 588,00 |
Giriş dizisi uzunluğu | 318,48 | 124.00 | 532,00 | 527,00 | 488,00 | 417,00 |
Çıktı, sohbet için GTP2 çalıştırılarak hesaplanan istek gecikmesi, çıktı dizisi uzunluğu ve giriş dizisi uzunluğu gibi LLM performans ölçümlerini gösterir.
- Çıktı belirteci verimi (saniye başına): 269,99
- İstek verimi (saniye başına): 0,60
Oluşturulan grafiklerden bazılarını inceleyin (Şekil 1).
OpenAI sohbet tamamlamalarının profillenmesi – uyumlu modeller
GenAI-Perf’ü çalıştırın:
genai-perf \
-m gpt2 \
--service-kind openai \
--endpoint-type completions \
--tokenizer gpt2 \
--generate-plots
Örnek sonuçlarını inceleyin (Tablo 2).
İstatistik | Ort. | Dakika | Maksimum | S99 | P90 | P75 |
İstek gecikmesi (ms) | 74.56 | 30.08 | 96.08 | 93.43 | 82.34 | 74.81 |
Çıkış dizisi uzunluğu | 15.88 | 2.00 | 17.00 | 16.00 | 16.00 | 16.00 |
Giriş dizisi uzunluğu | 311.62 | 29.00 | 570,00 | 538.04 | 479.40 | 413.00 |
- Çıktı belirteci verimi (saniye başına): 218.55
- İstek verimi (saniye başına): 13.76
Çıktı, sohbetin tamamlanması için GTP2 çalıştırılarak hesaplanan istek gecikmesi, çıktı dizisi uzunluğu ve giriş dizisi uzunluğu gibi LLM performans ölçümlerini gösterir.
Oluşturulan grafikleri inceleyin (Şekil 2).
OpenAI yerleştirmeleriyle uyumlu modellerin profillenmesi
Gömme için örnek metinlerle uyumlu bir JSONL dosyası oluşturun. Bu dosyayı Linux komut satırında aşağıdaki komutla oluşturabilirsiniz:
echo '{"text": "What was the first car ever driven?"}
{"text": "Who served as the 5th President of the United States of America?"}
{"text": "Is the Sydney Opera House located in Australia?"}
{"text": "In what state did they film Shrek 2?"}' > embeddings.jsonl
GenAI-Perf’ü çalıştırın:
genai-perf \
-m intfloat/e5-mistral-7b-instruct \
--batch-size 2 \
--service-kind openai \
--endpoint-type embeddings \
--input-file embeddings.jsonl
Örnek sonuçlarını inceleyin (Tablo 3).
İstatistik | Ort. | Dakika | Maksimum | S99 | P90 | P75 |
İstek gecikmesi (ms) | 41.96 | 28.16 | 302.19 | 55.24 | 47.46 | 42.57 |
İstek verimi (saniye başına): 23.78
Çözüm
Modellerinizi GenAI-Perf ile kıyaslamak için yapmanız gereken tek şey bu. Başlamak için ihtiyacınız olan her şeye sahipsiniz.
Diğer CLI’yi inceleyebilirsiniz argümanlar çıkarım parametrelerini güncellemenin performansı nasıl etkilediğini görmek için. Örneğin, farklı değerler geçirebilirsiniz --request-rate
Saniyede gönderilen istek sayısını değiştirmek için. Daha sonra bu değişikliklerin, belirteçler arası gecikme, istek gecikmesi ve verim gibi ölçümleri nasıl etkilediğini görebilirsiniz.
GenAI-Perf açık kaynaklıdır ve GitHub’da mevcuttur.