NVIDIA GenAI-Perf ve OpenAI Uyumlu API Kullanarak Üretken AI Model Performansının Ölçülmesi

9


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
Tablo 1. Sohbet için GPT2 performansını ölçmek üzere GenAI -Perf çalıştırılarak elde edilen LLM metrik çıktıları

Çı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).

Isı haritası, giriş dizisi uzunluğundaki küçük artışların çıkış dizisi uzunluğunda daha büyük artışlara yol açtığını göstermektedir.
Şekil 1. Giriş dizisi uzunluğunu çıkış dizisi uzunluğuyla karşılaştırmak için GenAI-Perf’in çalıştırılması

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
Tablo 2. Sohbet tamamlama için GPT2 performansını ölçmek üzere GenAI-Perf çalıştırılarak elde edilen LLM metrik çıktıları
  • Çı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).

Dağılım grafiği, Y ekseninde ilk jetona kadar geçen süreyi ve X ekseninde Giriş dizisi uzunluğunu göstererek iki metrik arasındaki ilişkiyi çizer. Giriş dizisi uzunluğu önemli ölçüde arttıkça, ilk jetona kadar geçen süre hafifçe artar.
Şekil 2. Giriş dizisi uzunluğuna göre ilk belirtece kadar geçen süreyi (TTFT) karşılaştırmak için GenAI-Perf’in çalıştırılması

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
Tablo 3. E5-Mistral-7b-Instruct performansını ölçmek için GenAI-Perf çalıştırılarak elde edilen metrik çıktılarının gömülmesi

İ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.

Kaynak: Nvidia

Doğrudan cihazınızda gerçek zamanlı güncellemeleri alın, şimdi abone olun.

Yorumlar