LLM Çıkarım Optimizasyonu için GPU Mimarisini Anlamak

Yayınlanan: 2024-04-02
İçindekiler gösterisi
Yüksek Lisans'a Giriş ve GPU Optimizasyonunun Önemi
Yüksek Lisans Dereceleri için GPU Mimarisinin Temelleri – GPU Dahili Bileşenlerinizi Tanıyın
Çoklu İşlemci Akışı
L2 Önbellek
Bellek Bant Genişliği
DRAM Bellek
Yüksek Lisans Görevleri için GPU Kartlarını Karşılaştırma
Çözüm
Kullanılan Terminoloji

Yüksek Lisans'a Giriş ve GPU Optimizasyonunun Önemi

Günümüzün doğal dil işleme (NLP) ilerlemeleri çağında, Büyük Dil Modelleri (LLM'ler), metin oluşturmadan soru cevaplamaya ve özetlemeye kadar sayısız görev için güçlü araçlar olarak ortaya çıkmıştır. Bunlar bir sonraki olası token oluşturucudan daha fazlasıdır. Ancak bu modellerin artan karmaşıklığı ve boyutu, hesaplama verimliliği ve performansı açısından önemli zorluklar yaratmaktadır.

Bu blogda, farklı bileşenlerin LLM çıkarımına nasıl katkıda bulunduğunu keşfederek GPU mimarisinin inceliklerini araştırıyoruz. Bellek bant genişliği ve tensör çekirdeği kullanımı gibi temel performans ölçümlerini tartışacağız ve çeşitli GPU kartları arasındaki farkları açıklayarak, büyük dil modelleri görevleriniz için donanım seçerken bilinçli kararlar vermenizi sağlayacağız.

NLP görevlerinin sürekli artan hesaplama kaynakları gerektirdiği, hızla gelişen bir ortamda, LLM çıkarım verimini optimize etmek çok önemlidir. GPU optimizasyon teknikleri yoluyla LLM'lerin tüm potansiyelini ortaya çıkarmak ve performansı etkili bir şekilde iyileştirmemizi sağlayan çeşitli araçları araştırmak için bu yolculuğa çıktığımızda bize katılın.

Yüksek Lisans Dereceleri için GPU Mimarisinin Temelleri – GPU Dahili Bileşenlerinizi Tanıyın

Yüksek verimli paralel hesaplama gerçekleştirme doğası gereği GPU'lar, tüm derin öğrenme görevlerini yürütmek için tercih edilen cihaz haline gelir; bu nedenle, çıkarım aşamasında ortaya çıkan temel darboğazları anlamak için GPU mimarisine üst düzey genel bakışı anlamak önemlidir. Nvidia kartları, geliştiricilerin C programlama dilinde iş parçacığı düzeyinde paralelliği belirlemesine olanak tanıyan, GPU'nun sanal komut setine ve paralele doğrudan erişim sağlayan, NVIDIA tarafından geliştirilen özel bir paralel hesaplama platformu ve API olan CUDA (Compute Unified Device Architecture) nedeniyle tercih ediliyor. hesaplama unsurları.

Bağlam açısından, açıklama için bir NVIDIA kartı kullandık çünkü daha önce de belirtildiği gibi Derin Öğrenme görevleri için yaygın olarak tercih ediliyor ve Tensör Çekirdekleri gibi diğer birkaç terim de buna uygulanabiliyor.

GPU kartına bir göz atalım, buradaki resimde, bir GPU cihazının üç ana parçasını ve (bir önemli gizli parçası daha) görebiliyoruz

  1. SM (Çok İşlemcili Akış)
  2. L2 önbellek
  3. Bellek Bant Genişliği
  4. Küresel Bellek(DRAM)

Tıpkı CPU-RAM'inizin birlikte oynaması gibi, RAM veri yerleşimi (yani bellek) ve CPU da işleme görevleri (yani süreç) için yer oluşturur. GPU'da Yüksek Bant Genişlikli Global Bellek (DRAM), belleğe yüklenen modelin (örn. LLAMA 7B) ağırlıklarını tutar ve ihtiyaç duyulduğunda bu ağırlıklar hesaplamalar için işlem birimine (yani SM işlemciye) aktarılır.

Çoklu İşlemci Akışı

Akışlı çok işlemcili veya SM, CUDA çekirdekleri (NVIDIA'nın tescilli paralel hesaplama platformu) adı verilen daha küçük yürütme birimlerinin yanı sıra talimat getirme, kod çözme, planlama ve göndermeden sorumlu ek işlevsel birimlerden oluşan bir koleksiyondur. Her SM bağımsız olarak çalışır ve kendi kayıt dosyasını, paylaşılan belleği, L1 önbelleğini ve doku birimini içerir. SM'ler son derece paralelleştirilmiştir ve binlerce iş parçacığını aynı anda işlemelerine olanak tanır; bu, GPU hesaplama görevlerinde yüksek verim elde etmek için gereklidir. İşlemcinin performansı genellikle FLOPS cinsinden ölçülür. Her saniyede gerçekleştirebileceği yüzen işlemler.

Derin öğrenme görevleri çoğunlukla tensör işlemlerinden, yani matris-matris çarpımından oluşur; Nvidia, bu tensör işlemlerini yüksek verimli bir şekilde gerçekleştirmek için özel olarak tasarlanmış yeni nesil GPU'lara tensör çekirdeklerini tanıttı. Belirtildiği gibi, derin öğrenme görevleri söz konusu olduğunda tensör çekirdekleri faydalıdır ve bir GPU'nun LLM eğitimini/çıkarımını ne kadar verimli bir şekilde gerçekleştirebileceğini belirlemek için CUDA çekirdekleri yerine Tensör çekirdeklerini kontrol etmeliyiz.

L2 Önbellek

L2 önbellek, sistem içindeki bellek erişimini ve veri aktarım verimliliğini optimize etmeyi amaçlayan, SM'ler arasında paylaşılan yüksek bant genişliğine sahip bir bellektir. DRAM'e kıyasla işlem birimlerine (Akışlı Çoklu İşlemciler gibi) daha yakın bulunan daha küçük, daha hızlı bir bellek türüdür. Her bellek isteği için daha yavaş olan DRAM'e erişme ihtiyacını azaltarak genel bellek erişim verimliliğini artırmaya yardımcı olur.

Bellek Bant Genişliği

Dolayısıyla performans, ağırlıkları bellekten işlemciye ne kadar hızlı aktarabildiğimize ve işlemcinin verilen hesaplamaları ne kadar verimli ve hızlı işleyebildiğine bağlıdır.

Hesaplama kapasitesi, bellekten SM'ye veri aktarım hızından daha yüksek/daha hızlı olduğunda, SM veri işleme konusunda aç kalır ve bu nedenle bilgi işlem yeterince kullanılmaz; bellek bant genişliğinin tüketim oranından daha düşük olduğu bu durum , belleğe bağlı aşama olarak bilinir. . Çıkarım sürecindeki yaygın darboğaz bu olduğundan bunu not etmek çok önemlidir.

Aksine, eğer hesaplamanın işlenmesi daha fazla zaman alıyorsa ve hesaplama için daha fazla veri kuyruğa alınmışsa, bu durum hesaplamaya bağlı bir aşamadır.

GPU'dan tam olarak yararlanmak için, gerçekleşen hesaplamaları mümkün olduğunca verimli bir şekilde yaparken hesaplamaya bağlı durumda olmamız gerekir.

DRAM Bellek

DRAM, GPU'da birincil bellek görevi görür ve hesaplama için gereken verileri ve talimatları depolamak için geniş bir bellek havuzu sağlar. Genellikle yüksek hızlı erişimi mümkün kılmak için birden fazla bellek bankası ve kanaldan oluşan bir hiyerarşi halinde düzenlenir.

Çıkarım görevi için GPU'nun DRAM'i ne kadar büyük bir model yükleyebileceğimizi belirler ve hesaplama FLOPS'u ve bant genişliği elde edebileceğimiz verimi belirler.

Yüksek Lisans Görevleri için GPU Kartlarını Karşılaştırma

Tensör çekirdeklerinin sayısı ve bant genişliği hızı hakkında bilgi edinmek için GPU üreticisinin yayınladığı teknik incelemeye bakılabilir. İşte bir örnek,

RTX A6000 RTX 4090 RTX 3090
Hafıza boyutu 48GB 24 GB 24 GB
Bellek Türü GDDR6 GDDR6X
Bant genişliği 768,0 GB/sn 1008 GB/sn 936,2 GB/sn
CUDA Çekirdekleri / GPU 10752 16384 10496
Tensör Çekirdekleri 336 512 328
L1 Önbellek 128 KB (SM başına) 128 KB (SM başına) 128 KB (SM başına)
FP16 Tensörsüz 38,71 TFLOP (1:1) 82.6 35,58 TFLOP (1:1)
FP32 Tensörsüz 38.71 TFLOP 82.6 35,58 TFLOP
FP64 Tensörsüz 1.210 GFLOPS (1:32) 556,0 GLOPS (1:64)
FP16 Birikimli Tepe FP16 Tensör TFLOPS 154,8/309,6 330,3/660,6 142/284
FP32 Birikimli Tepe FP16 Tensör TFLOPS 154,8/309,6 165,2/330,4 71/142
FP32 ile Tepe BF16 Tensör TFLOPS 154,8/309,6 165,2/330,4 71/142
Tepe TF32 Tensör TFLOPS 77,4/154,8 82,6/165,2 35,6/71
Tepe INT8 Tensör ÜSTLERİ 309,7/619,4 660.6/1321.2 284/568
Tepe INT4 Tensör ÜSTLERİ 619.3/1238.6 1321.2/2642.4 568/1136
L2 Önbellek 6 MB 72 MB 6 MB
Bellek Veriyolu 384 bit 384 bit 384 bit
TMU'lar 336 512 328
ROP'lar 112 176 112
SM Sayısı 84 128 82
RT Çekirdekleri 84 128 82

Burada FLOPS'un özellikle Tensor işlemleri için bahsedildiğini görüyoruz, bu veriler farklı GPU kartlarını karşılaştırmamıza ve kullanım durumumuz için uygun olanı kısa listeye almamıza yardımcı olacaktır. Tablodan, A6000'in 4090'ın iki katı belleğe sahip olmasına rağmen, 4090'ın tensör flopları ve bellek bant genişliği sayıca daha iyidir ve dolayısıyla büyük dil modelleri çıkarımı için daha güçlüdür.

Devamını oku: 100 Saniyede Nvidia CUDA

Çözüm

Hızla gelişen NLP alanında, çıkarım görevleri için Büyük Dil Modellerinin (LLM'ler) optimizasyonu kritik bir odak alanı haline geldi. Daha önce de incelediğimiz gibi GPU mimarisi, bu görevlerde yüksek performans ve verimlilik elde etmede çok önemli bir rol oynuyor. Akış Çoklu İşlemcileri (SM'ler), L2 önbelleği, bellek bant genişliği ve DRAM gibi GPU'ların dahili bileşenlerini anlamak, LLM çıkarım süreçlerindeki potansiyel darboğazları belirlemek için çok önemlidir.

Farklı NVIDIA GPU kartları (RTX A6000, RTX 4090 ve RTX 3090) arasındaki karşılaştırma, diğer faktörlerin yanı sıra bellek boyutu, bant genişliği ve CUDA ve Tensör Çekirdeklerinin sayısı açısından önemli farklılıkları ortaya koyuyor. Bu ayrımlar, belirli LLM görevleri için hangi GPU'nun en uygun olduğu konusunda bilinçli kararlar vermek için çok önemlidir. Örneğin, RTX A6000 daha büyük bir bellek boyutu sunarken, RTX 4090, Tensor FLOPS ve bellek bant genişliği açısından öne çıkıyor ve bu da onu zorlu LLM çıkarım görevleri için daha güçlü bir seçim haline getiriyor.

LLM çıkarımını optimize etmek, hem GPU'nun hesaplama kapasitesini hem de eldeki LLM görevinin özel gereksinimlerini dikkate alan dengeli bir yaklaşım gerektirir. Doğru GPU'yu seçmek, GPU'nun modelin ağırlıklarını verimli bir şekilde işleyebilmesini ve darboğaz olmadan hesaplamaları gerçekleştirebilmesini sağlamak için bellek kapasitesi, işlem gücü ve bant genişliği arasındaki dengelerin anlaşılmasını gerektirir. NLP alanı gelişmeye devam ederken, en son GPU teknolojileri ve bunların yetenekleri hakkında bilgi sahibi olmak, Büyük Dil Modelleri ile mümkün olanın sınırlarını zorlamak isteyenler için çok önemli olacaktır.

Kullanılan Terminoloji

  • Verim:

Çıkarım durumunda verim, belirli bir süre boyunca kaç isteğin/istemin işlendiğinin ölçüsüdür. Verim genellikle iki şekilde ölçülür:

  • Saniye Başına İstek (RPS) :
    • RPS, bir modelin bir saniye içinde işleyebileceği çıkarım isteklerinin sayısını ölçer. Bir çıkarım isteği tipik olarak girdi verilerine dayalı olarak bir yanıt veya tahmin oluşturmayı içerir.
    • LLM üretimi için RPS, modelin gelen istemlere veya sorgulara ne kadar hızlı yanıt verebileceğini gösterir. Daha yüksek RPS değerleri, gerçek zamanlı veya gerçek zamanlıya yakın uygulamalar için daha iyi yanıt verme ve ölçeklenebilirlik anlamına gelir.
    • Yüksek RPS değerlerine ulaşmak çoğu zaman, ek yükten tasarruf etmek ve hesaplama kaynaklarının kullanımını en üst düzeye çıkarmak için birden fazla isteği bir araya getirmek gibi etkili dağıtım stratejilerini gerektirir.
  • Saniye Başına Token (TPS) :
    • TPS, bir modelin metin oluşturma sırasında belirteçleri (kelimeler veya alt sözcükler) işleyebilme ve oluşturabilme hızını ölçer.
    • LLM oluşturma bağlamında TPS, modelin metin üretme açısından verimini yansıtır. Modelin ne kadar hızlı tutarlı ve anlamlı yanıtlar üretebildiğini gösterir.
    • Daha yüksek TPS değerleri daha hızlı metin üretimi anlamına gelir; bu da modelin daha fazla giriş verisi işlemesine ve belirli bir süre içinde daha uzun yanıtlar üretmesine olanak tanır.
    • Yüksek TPS değerlerine ulaşmak genellikle model mimarisini optimize etmeyi, hesaplamaları paralelleştirmeyi ve jeton üretimini hızlandırmak için GPU'lar gibi donanım hızlandırıcılardan yararlanmayı içerir.
  • Gecikme:

LLM'lerdeki gecikme, çıkarım sırasında giriş ve çıkış arasındaki zaman gecikmesini ifade eder. Gecikmeyi en aza indirmek, kullanıcı deneyimini geliştirmek ve Yüksek Lisans'tan yararlanan uygulamalarda gerçek zamanlı etkileşimleri mümkün kılmak için gereklidir. Sağlamamız gereken hizmete bağlı olarak aktarım hızı ve gecikme arasında bir denge kurmak çok önemlidir. Gerçek zamanlı etkileşim sohbet robotları/yardımcı pilot gibi durumlar için düşük gecikme istenir ancak dahili veri yeniden işleme gibi toplu veri işleme durumları için gerekli değildir.

LLM Verimini Artırmaya Yönelik Gelişmiş Teknikler hakkında daha fazla bilgiyi buradan edinebilirsiniz.