Yapay zeka modelleri ve platformları

PowerInfer: Tüketici Düzeyinde GPU ile Hızlı Büyük Dil Modeli Sunumu

mm
Unite.AI sitesini Google'daki tercih ettiğiniz kaynaklara ekleyin

İstisnai içerik oluşturma yetenekleri nedeniyle, Büyük Dil Modelleri şu anda yapay zeka devriminin ön saflarında yer alıyor ve generatif yeteneklerini geliştirme çabaları devam ediyor. Ancak, hızlı ilerlemelere rağmen, bu modeller önemli miktarda hesaplama gücü ve kaynak gerektiriyor. Bunun nedeni, yüz milyarlarca parametreye sahip olmalarıdır. Ayrıca, sorunsuz çalışmak için, bu modeller binlerce GPU’ye güveniyor, bu da önemli operasyonel maliyetlere yol açıyor. Yüksek operasyonel talepler, neden büyük dil modellerinin henüz kişisel cihazlara etkili bir şekilde dağıtılmadığını açıklıyor.

Bu makalede, PowerInfer’i ele alacağız, bu bir tüketici düzeyinde GPU ile çalışan standart bilgisayarlarda yüksek hızlı bir LLM çıkışı motorudur. PowerInfer çerçevesi, LLM çıkarımında bulunan yüksek yerel özellikleri kullanmayı amaçlıyor, bu da nöron aktivasyonlarının güç yasası dağılımı ile karakterize edilir. Bu, her zaman bir küçük “sıcak” nöron alt kümesinin tutarlı bir şekilde aktif olduğunu ve geri kalan “soğuk” nöronların ise belirli girdilere veya gereksinimlere göre aktif olduğunu gösterir. Bu yaklaşım, PowerInfer çerçevesinin, istenen çıktılar üretmek için gereken hesaplama gücünü azaltmasını sağlar.

PowerInfer çerçevesini detaylı bir şekilde inceleyeceğiz, metodolojisini, pipeline’ını ve pratik uygulama sonuçlarını keşfedeceğiz. Başlayalım.

PowerInfer: Tüketici Düzeyinde GPU ile Hızlı Büyük Dil Modeli

Büyük Dil Modelleri, seperti ChatGPT ve DALL-E, sofistike generatif ve doğal dil işleme görevleri ile bilinir. Yüksek hesaplama gereksinimleri nedeniyle, bu modeller genellikle gelişmiş GPU’lerle donatılmış veri merkezlerinde dağıtılır. Yüksek hesaplama gücü gereksinimi, bu modellerin yerel platformlara dağıtımını sınırlar, bu da kişisel bilgisayarlar gibi daha erişilebilir platformlara dağıtımlarını vurgular.

Büyük dil modellerinin erişilebilirliğini artırmak, çıkarım ve içerik oluşturma maliyetlerini azaltabilir, veri gizliliğini artırabilir ve model özelleştirmesine olanak tanır. Ayrıca, veri merkezi dağıtımlarının yüksek verimliliği önceliklendirmesi mentre yerel LLM dağıtımları, daha küçük toplu işlemler nedeniyle düşük gecikme süresine odaklanabilir.

Ancak, bu modelleri yerel cihazlara dağıtmak önemli zorluklar ortaya koyar, çünkü büyük bellek gereksinimleri vardır. Büyük dil modelleri, her bir tokeni ardışık olarak üreten oto-regresif transformörler olarak işlev görür ve her bir token, tüm modeli, yüz milyarlarca parametreyi erişmek gerektirir. Bu, düşük gecikme süresiyle çıktı üretmek için birçok yüksek performanslı GPU gerektirir. Ayrıca, yerel dağıtımlar genellikle bireysel istekleri sırayla işler, bu da paralel işlemenin potansiyelini sınırlar.

Generatif AI çerçevesinin karmaşık bellek gereksinimlerini ele almak için mevcut çözümler, model ofloading ve sıkıştırma gibi yöntemleri kullanır. Distilasyon, budama ve kuantizasyon gibi teknikler model boyutunu azaltır, ancak standart düzeyde GPU’ler için hala çok büyüktür. Model ofloading, Transformer Katmanı arasında CPU ve GPU arasında bölümlendirerek, CPU ve GPU belleği boyunca dağıtılmış katman işlemlerine olanak tanır. Ancak, bu yöntem yavaş PCIe bağlantısı ve CPU’ların sınırlı hesaplama yetenekleri ile sınırlıdır, bu da yüksek çıkarım gecikmesine yol açar.

PowerInfer çerçevesi, LLM çıkarımının donanım yapısı ile arasındaki uyumsuzluğun, LLM çıkarımında bellek sorunlarının temel nedeni olduğunu öne sürer. İdeal olarak, sık erişilen veriler yüksek bant genişliğine sahip, sınırlı kapasiteli GPU’larda depolanmalıdır, daha az erişilen veriler ise düşük bant genişliğine sahip, yüksek kapasiteli CPU’larda depolanmalıdır. Ancak, her bir LLM çıkarım iterasyonunun büyük parametre hacmi, çalışma kümesini tek bir GPU için çok büyük hale getirir, bu da yerel kullanımın verimsiz bir şekilde kullanılmasına yol açar.

LLM’lerdeki çıkarım süreci, her iterasyonda sınırlı sayıda nöronu aktive ederek yüksek yerel kullanım gösterir. PowerInfer çerçevesi, bu yerel kullanımı, GPU’da sıcak nöronları yöneterek ve CPU’nun soğuk nöronları işleyerek kullanmayı amaçlar. Çerçeve, sıcak nöronları önceden yükler ve çalışma zamanında aktive edilen nöronları tanımlar. Bu yaklaşım, pahalı PCIe veri transferlerini en aza indirir, böylece GPU’lar ve CPU’lar bağımsız olarak atanmış nöronları işleyebilir.

Ancak, LLM’leri yerel cihazlara dağıtmak zorluklarla karşılaşır. Aktif nöronları tanımlamak için kritik olan online predictors, önemli miktarda GPU belleği tüketir. PowerInfer çerçevesi, daha yüksek aktivasyon eğrisi ve seyrekleşme gösteren katmanlar için küçük predictors oluşturmak amacıyla bir uyarlanabilir yöntem kullanır, böylece doğruluğu korurken boyutu azaltır. Ayrıca, LLM çerçeveleri, özel sparse operatörler gerektirir. PowerInfer çerçevesi, nöronlara doğrudan iletişim kurabilen ve çalışma zamanında dense formata dönüştürme gereksinimini ortadan kaldıran nöron-duyarlı sparse operatörler kullanır.

Son olarak, aktive edilen nöronları CPU ve GPU arasında optimal bir şekilde yerleştirme zorluğu vardır. PowerInfer çerçevesi, nöron yerleştirme politikası oluşturmak için offline bir aşama kullanır, her bir nöronun LLM çıkarım sonuçlarındaki etkisini ölçer ve bu durumu bir tam sayı lineer problem olarak çerçeveler.

Mimari ve Metodoloji

Aşağıdaki şekil, pipeline’da offline ve online bileşenlerden oluşan PowerInfer çerçevesinin mimarisini açıklar.

Farklı büyük dil modelleri arasında gözlemlenen yerel özellikler arasındaki varyasyon sayesinde, offline bileşen LLM çerçevesinin aktivasyon seyrekleşmesini profilleme olanağı sağlar, bu da sıcak ve soğuk nöronlar arasında ayrım yapılmasını sağlar. Offline aşamasında, çıkarım motoru iki tür nöronu, hem CPU hem de GPU’ya yükler, böylece çalışma zamanında LLM isteklerini düşük gecikme ile işler.

Offline Aşama: Politika Çözücü ve LLM Profili

Offline aşamasında, LLM profili bileşeni, genel bir veri kümesinden türetilen isteklerden aktivasyon verilerini toplamak için kullanılır. İlk adımda, tüm katmanlardaki nöron aktivasyonunu izler ve ardından politika çözücü bileşeni, nöronları sıcak veya soğuk olarak sınıflandırır. Politika çözücünün temel amacı, daha sık aktive edilen nöronları GPU katmanlarına atamak ve geri kalanını CPU katmanlarına atamaktır. İkinci aşamada, politika çözücü bileşeni, nöron etkileri ölçümlerini ve donanım özellikleri kullanarak, integer lineer programlama kullanarak GPU için nöronların etkisini maksimize eder.

Online Aşama: Nöron Bilinçli LLM Çıkarım Motoru

Offline aşama başarıyla yürütüldükten sonra, çerçeve online aşama işlemlerine başlar. Sürecin üçüncü adımında, online motor, kullanıcı isteklerini işlemeden önce, offline politika çözücü çıktısına bağlı olarak sıcak ve soğuk nöronları ilgili işleme birimlerine atar. Çalışma zamanında ve dördüncü adımda, online motor, CPU ve GPU hesaplamalarını, CPU tarafında çalışan CPU ve GPU icraçıları oluşturarak yönetir. Motor, aktive edilen nöronları tahmin eder ve aktive edilmeyen nöronları atlar. Aktive edilen nöronlar daha sonra GPU’da işlenmek üzere önceden yüklenir. Bu sırada, CPU, nöronlarının sonuçlarını hesaplar ve bunları GPU ile entegre etmek üzere aktarır. Online motor, sparse nöron-duyarlı operatörleri kullanarak, CPU ve GPU’da matrisler içindeki bireysel satır ve sütun vektörlerine odaklanabilir.

Uyarlanabilir Seyrekleşme Tahmin Edicileri

PowerInfer çerçevesindeki online çıkarım motorunun hesaplamaları azaltma konusundaki temel kavram, yalnızca aktive edildiğini tahmin ettiği nöronları işler. Geleneksel olarak, her Transformer katmanında, çerçeve, MLP ve self-attention bloklarındaki nöron aktivasyonlarını tahmin etmek için iki farklı predictor kullanır, bu da yalnızca aktive edildiği tahmin edilen nöronlarla sınırlı olan çıkarım hesabına yol açar. Ancak, yerel dağıtımlar için etkili predictors tasarlamak zor olabilir, çünkü sınırlı kaynaklar, model boyutu ve tahmin doğruluğunu dengelemeyi zorlaştırır. Bu predictors, aktive edilen nöronları tahmin etmek için sıkça kullanılır, bu nedenle GPU’da hızlı erişimi sağlamak için depolanmalıdır. Ancak, çerçeveler genellikle önemli miktarda bellek alanı kaplayan birçok predictor dağıtır, bu da LLM parametrelerini depolamak için gereken alanla benzerdir.

Daha da önemlisi, predictor’lerin boyutu genellikle iki faktör tarafından belirlenir: Dahili Eğrilik ve LLM katmanlarının Seyrekleşmesi.

Bu faktörleri optimize etmek için, PowerInfer çerçevesi, her Transformer katmanındaki her bir predictor için sabit boyutlu olmayan bir yinelemeli eğitim yöntemi kullanır. Bu eğitim yönteminin ilk adımında, modelin seyrekleşme profiline dayalı olarak temel model boyutu belirlenir ve model boyutu, iç aktivasyon eğrisini dikkate alarak yinelemeli olarak ayarlanır, böylece doğruluk korunur.

Nöron Yerleştirme ve Yönetimi

Önceki olarak bahsedildiği gibi, offline politika çözücü bileşeni nöron yerleştirme politikasını belirlerken, online çıkarım motoru bileşeni, üretilen politika doğrultusunda modeli GPU ve CPU belleğine yükler. Her bir katman için, birden fazla ağırlık matrisi olabilir, PowerInfer çerçevesi her bir nöronu, sıcak aktive ediliyor ise CPU’ya, değilse GPU’ya atar. Belirlenen sıradaki segmentli nöronların hesaplamasının doğru olması önemlidir. Bunu ele almak için, PowerInfer çerçevesi, her biri CPU ve GPU belleğinde bulunan iki nöron tablosu oluşturur, her bir tablo bireysel nöronları matristeki orijinal konumlarına bağlar.

Nöron Bilinçli Operatör

Büyük dil modellerinde gözlemlenen aktivasyon seyrekleşmesi, matris çarpımı işlemlerinin, aktif olmayan nöronları ve ağırlıklarını atlamasına yol açar, bu da sparse operatörlerin kullanımını gerektirir. Geleneksel sparse operatörlerin sınırlamaları yerine, PowerInfer çerçevesi, GPU ve CPU’da doğrudan nöronları ve ağırlıklarını hesaplayabilen nöron-duyarlı operatörler kullanır, bu da çalışma zamanında dense formata dönüştürme gereksinimini ortadan kaldırır. Nöron-duyarlı operatörler, geleneksel sparse operatörlerden farklı olarak, tüm matris yerine tek bir matris içindeki bireysel satır ve sütun vektörlerine odaklanır.

Nöron Yerleştirme Politikası

CPU ve GPU’nun hesaplama yeteneklerini kullanmak için, PowerInfer çerçevesinin offline bileşeni, nöronları CPU veya GPU katmanlarına atanmaya rehberlik eden bir yerleştirme politikası üretir. Politika çözücü bu politikayı üretir ve her bir katmandaki nöron yerleştirme kararlarını, aktivasyon sıklığı, iletişim yükü ve işlem biriminin bant genişliği ve bellek boyutu gibi faktörleri dikkate alarak belirler.

Sonuçlar ve Uygulama

PowerInfer çerçevesinin, farklı donanım yapılandırmalarına sahip cihazlar arasında genellemesini göstermek için, deneyler iki farklı kişisel bilgisayar üzerinde yürütülmüştür: biri Intel (INTC ) i9-13900K işlemci, NVIDIA RTX 4090 GPU ve 192 GB ana bellek ile donatılmış, diğeri ise Intel i7-12700K işlemci, NVIDIA RTX 2080Ti GPU ve 64 GB ana bellek ile çalışmaktadır.

PowerInfer çerçevesinin uçtan uca performansı, varsayılan dağıtım ayarlarıyla ve toplu işleme boyutu 1 ile llama.cpp ile karşılaştırılmıştır. Çerçeve, ChatGPT ve Alpaca veri kümelerinden gerçek dünya diyalog girişi ve çıktısı için uzunluk değişkenliğini örnekleyen promt’leri örnekler. Aşağıdaki şekil, farklı modeller için oluşturma hızlarını gösterir.

Görüldüğü gibi, PowerInfer çerçevesi 8.32 token/saniye üretir ve 16 token/saniyeye kadar ulaşır, böylece llama.cpp çerçevesini önemli bir marjla geride bırakır. Ayrıca, çıktı tokenlerinin sayısı arttıkça, PowerInfer çerçevesinin performansı da önemli ölçüde iyileşir, çünkü oluşturma aşaması genel çıkarım süresini etkiler.

Ayrıca, yukarıdaki resimde görüldüğü gibi, PowerInfer çerçevesi düşük performanslı bilgisayarlarda llama.cpp çerçevesini geride bırakır, zirve oluşturma hızı 7 token/saniye ve ortalama token oluşturma hızı 5 token/saniyedir.

Yukarıdaki resim, iki çerçevenin nöron yükü dağılımını gösterir. Görüldüğü gibi, PowerInfer çerçevesi, GPU’nun nöron yükü payını önemli ölçüde artırır, %20’den %70’e çıkarır.

Yukarıdaki resim, iki çerçevenin farklı özelliklere sahip iki bilgisayardaki performansını karşılaştırır. Görüldüğü gibi, PowerInfer çerçevesi, llama.cpp çerçevesine kıyasla tutarlı bir şekilde yüksek çıktı token oluşturma hızları sağlar.

Son Düşünceler

Bu makalede, PowerInfer’i, tüketici düzeyinde bir GPU ile çalışan standart bir bilgisayarda yüksek hızlı bir LLM çıkışı motoru olarak ele aldık. PowerInfer çerçevesi, LLM çıkarımında bulunan yüksek yerel özellikleri kullanmayı amaçlar, bu da nöron aktivasyonlarının güç yasası dağılımı ile karakterize edilir. PowerInfer çerçevesi, büyük dil modelleri için tasarlanmış bir hızlı çıkarım sistemidir ve nöronları aktive etmek ve hesaplama seyrekleşmesini gerçekleştirmek için uyarlanabilir predictors ve nöron-duyarlı operatörler kullanır.

Mesleği mühendis, kalbi yazar. Kunal, AI ve ML'ye derin bir sevgi ve anlayışla technical writer, bu alanlardaki karmaşık kavramları etkileyici ve bilgilendirici belgelerle basitleştirmeye adanmış.