Connect with us

Yapay Zekâ

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

mm

Büyük Dil Modellerinin olağanüstü içerik oluşturma yetenekleri sayesinde, şimdi AI devriminin ön saflarında yer alıyor ve yeteneklerini geliştirmeye yönelik sürekli çabalar var. 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ışabilmek için, üretken AI modelleri binlerce GPU’ye güveniyor, bu da önemli işletim maliyetlerine yol açıyor. Yüksek işletim talepleri, üretken AI modellerinin henüz kişisel cihazlarda etkili bir şekilde dağıtılmamasının ana nedenlerinden biri.

Bu makalede, PowerInfer’i tartışacağız, tek bir tüketici düzeyinde GPU ile çalışan standart bilgisayarlara yönelik tasarlanmış bir yüksek hızlı LLM çıkarım motoru. PowerInfer çerçevesi, LLM çıkarımında var olan yüksek lokaliteyi kullanmayı amaçlıyor, bu da nöron aktivasyonlarında bir güç yasası dağılımı ile karakterize edilir. Bu, herhangi bir zamanda, küçük bir “sıcak” nöron kümesinin sürekli olarak girdi boyunca aktif olduğunu, geri kalanının ise “soğuk” nöronlar olarak adlandırıldığını ve belirli girdilere veya gereksinimlere göre aktive edildiğini gösterir. Bu yaklaşım, PowerInfer çerçevesinin, üretken AI’nin istenen çıktıları üretmek için gereken hesaplama gücünü azaltmasını sağlar.

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

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

Üretken Büyük Dil Modelleri, seperti ChatGPT ve DALL-E, sofistike üretken ve doğal dil işleme görevleri ile bilinir. Yüksek hesaplama gereksinimleri nedeniyle, bu modeller genellikle gelişmiş GPU’ler ile donatılmış veri merkezlerinde dağıtılır. Bu kadar yüksek hesaplama gücüne duyulan ihtiyaç, onların dağıtımını veri merkezlerine sınırlar, büyük dil modellerinin daha erişilebilir yerel platformlara, seperti kişisel bilgisayarlara, dağıtılmasının gerekliliğini 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 izin verebilir. Ayrıca, veri merkezi dağıtımlarının yüksek verimliliği önceliklendirmesi nedeniyle, 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 çıkarır, çünkü büyük miktarda bellek gerektirirler. Büyük dil modelleri, otoregresif transformatorlar olarak işlev görür ve her bir token için tüm modeli, yüz milyarlarca parametreyi, erişmek gerekir. Bu, düşük gecikme süresiyle çıktı oluşturmak için birçok yüksek performanslı GPU gerektirir. Ayrıca, yerel dağıtımlar genellikle bireysel istekleri ardışık olarak işler, paralel işlemenin potansiyelini sınırlar.

Üretken 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 masih kişisel bilgisayarlardaki standart düzeyde GPU’ler için çok büyüktür. Model ofloading, Transformer Katmanını CPU ve GPU arasında bölerek, CPU ve GPU belleği boyunca dağıtılmış katman işlemlerine izin verir. Ancak, bu yöntem yavaş PCIe arabirimi ve CPU’ların sınırlı hesaplama yetenekleri tarafından sınırlıdır, bu da yüksek çıkarım gecikmesine yol açar.

PowerInference çerçevesi, LLM çıkarım özellikleri ile donanım yapısı arasındaki uyumsuzluğun, LLM çıkarımında bellek sorunlarının ana nedenidir. İdeal olarak, sık erişilen veriler yüksek bant genişliğine sahip, sınırlı kapasiteli GPU’lerde 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 lokalitenin verimsiz bir şekilde kullanılmasına neden olur.

Çıkarım süreci büyük dil modellerinde yüksek lokalite gösterir, her iterasyon sınırlı sayıda nöronu aktive eder. PowerInference çerçevesi, bu lokaliteyi kullanarak, GPU ile sıcak nöronları yönetir ve CPU ile soğuk nöronları işler. Çıkarım sırasında, GPU ve CPU’ya atanmış nöronları bağımsız olarak işler. Ancak, LLM’leri yerel cihazlara dağıtmak zorluklarla karşılaşır. Aktif nöronları tanımlamak için kullanılan çevrim içi predictor’lar, önemli miktarda GPU belleği tüketir. PowerInfer çerçevesi, yüksek aktivasyon eğrisi ve sparsiteye sahip katmanlar için küçük predictor’lar oluşturmak için bir adaptif yöntem kullanır, böylece boyutu azaltırken doğruluğu korur. Ayrıca, LLM çerçeveleri, özel sparse operatörler gerektirir. PowerInfer çerçevesi, nöronlara doğrudan iletişim kurabilen,.runtime sırasında dense formata dönüştürme gereksinimini ortadan kaldıran nöron-aware sparse operatörler kullanır.

Son olarak, aktif nöronları CPU ve GPU arasında optimum şekilde yerleştirme zorluğu vardır. PowerInfer çerçevesi, her nöronun LLM çıkarım sonuçlarındaki etkisini ölçen ve bu vấneyi bir tamsayı linear problem olarak çerçevelendiren offline bir aşama kullanır.

Mimari ve Metodoloji

Aşağıdaki şekil, PowerInfer çerçevesinin mimarisini, pipeline’ındaki offline ve online bileşenleri ile açıklar.

Farklı büyük dil modelleri arasında gözlemlenen lokalite özelliklerinde varyasyon nedeniyle, offline bileşen, LLM çerçevesinin aktivasyon sparsitesini profiller, böylece sıcak ve soğuk nöronlar arasında ayrım yapmasını sağlar. Offline aşamasında, çıkarım motoru, CPU ve GPU’ya iki tür nöron yükler, böylece runtime sırasında düşük gecikme ile LLM isteklerine hizmet eder.

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

Offline aşamasında, LLM profiler bileşeni, genel bir veri kümesinden türetilen istekleri kullanarak, çıkarım sürecinden aktivasyon verilerini toplar. İlk adımda, tüm katmanlardaki nöron aktivasyonunu izler ve daha sonra politika çözücü bileşeni, nöronları sıcak veya soğuk olarak sınıflandırır. Politika çözücünün ana amacı, daha sık aktive edilen nöronları GPU katmanlarına atamak, geri kalanını ise CPU katmanlarına atamaktır. İkinci aşamada, politika çözücü bileşeni, nöron etkileri ölçümlerini ve donanım özelliklerini kullanarak, katmanlar arasındaki iş yükünü dengeler ve integer linear programming kullanarak GPU için nöron etkisini en üst düzeye çıkarır.

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

Offline aşaması başarıyla yürütüldükten sonra, çerçeve çevrim içi aşamasını yürütür. Sürecin üçüncü adımında, çevrim içi motoru, offline politika çözücüsünün çıktısına bağlı olarak, sıcak ve soğuk nöronları ilgili işlem birimlerine atar. Runtime sırasında ve dördüncü adımda, çevrim içi motoru, CPU ve GPU hesaplamalarını yönetir, CPU tarafında çalışan CPU ve GPU icraçıları oluşturur. Motor daha sonra aktif nöronları öngörür ve aktif olmayan nöronları atlar. Aktif nöronlar daha sonra GPU’da işlenmek üzere ön yüklenir. Aynı zamanda, CPU, nöronlarının sonuçlarını hesaplar ve bunları GPU ile entegre etmek üzere aktarır. Çevrim içi motor, sparse nöron bilinçli operatörleri kullanarak, CPU ve GPU’da matrislerin tekil satır ve sütunlarına odaklanabilir.

Adaptif Sparsite Predictor’ları

PowerInfer çerçevesindeki çevrim içi çıkarım motorunun, hesaplamalı yükü azaltma kavramı, yalnızca aktif nöronları işler. Geleneksel olarak, her Transformer katmanında, çerçeve, MLP ve self-attention bloklarındaki nöron aktivasyonlarını öngörmek için iki farklı predictor kullanır, bu da yalnızca öngörülen aktif nöronlarla sınırlı olan çıkarım hesabına yol açar. Ancak, yerel dağıtımlar için etkili predictor’lar tasarlamak zordur, çünkü sınırlı kaynaklar, model boyutu ve öngörü doğruluğu arasında denge kurmayı zorlaştırır. Bu predictor’lar, aktif nöronları öngörmek için sıkça kullanılır, bu nedenle hızlı erişimi sağlamak için GPU’da depolanmalıdır. Ancak, çerçeveler genellikle önemli miktarda bellek alanı kaplayan birçok predictor kullanır, hatta LLM parametrelerini depolamak için gereken alan bile.

Ayrıca, predictor’ların boyutu genellikle iki faktör tarafından belirlenir: LLM katmanlarının dahili eğrisi ve sparsitesi.

Bu faktörleri optimize etmek için, PowerInfer çerçevesi, her Transformer katmanındaki predictor için sabit boyut olmadan bir yinelemeli eğitim yöntemi kullanır. Eğitim yönteminin ilk adımında, temel model boyutu, modelin sparsite profilinin temelinde kurulur ve model boyutu, iç aktivasyon eğrisini dikkate alarak, doğruluğu korumak için yinelemeli olarak ayarlanır.

Nöron Yerleştirme ve Yönetimi

Önceki adımlarda bahsedildiği gibi, offline politika çözücü bileşeni, nöron yerleştirme politikasını belirlerken, çevrim içi çıkarım motoru bileşeni, modeli GPU ve CPU belleğine, oluşturulan politika doğrultusunda yükler. Her katman için, ağırlık matrislerine sahip olsun veya olmasın, PowerInfer çerçevesi, her nöronu, sıcak veya soğuk olarak aktive edilip edilmediğine bağlı olarak, CPU veya GPU’ya atar. Belirlenen sıradaki segmentli nöronların doğru hesaplanması, doğru sonuçlar için önemlidir. Bunu ele almak için, PowerInfer çerçevesi, GPU ve CPU belleğinde, her bir nöronu orijinal matristeki konumuna bağlayan iki nöron tablosu oluşturur.

Nöron Bilinçli Operatör

Büyük dil modellerinde gözlemlenen aktivasyon sparsitesi nedeniyle, aktif olmayan nöronlar ve ağırlıkları, matris çarpma işlemleri tarafından atlanabilir, bu da sparse operatörlerin kullanımını gerektirir. Geleneksel sparse operatörlerin sınırlamalarına sahip olmak yerine, PowerInfer çerçevesi, CPU ve GPU’da dense formata dönüştürme gereksinimini ortadan kaldıran, nöronlara doğrudan iletişim kurabilen nöron-aware sparse operatörler kullanır. Nöron-aware operatörler, geleneksel sparse operatörlerden farklı olarak, tüm matris yerine, tekil satır ve sütun vektörlerine odaklanır.

Nöron Yerleştirme Politikası

CPU ve GPU’nun hesaplamalı yeteneklerini kullanmak için, PowerInfer çerçevesinin offline bileşeni, nöronları CPU veya GPU katmanlarına atanmaya rehberlik eden bir yerleştirme politikası oluşturur. Politika çözücü, bu politikayı oluşturur ve her katmandaki nöron yerleştirilmesini kontrol eder, bu da bireysel işlem birimleri için hesaplamalı iş yükünü belirlemeye yardımcı olur. Politika çözücü, yerleştirme politikası oluştururken, her nöronun aktivasyon sıklığı, iletişim yükü ve işlem biriminin bant genişliği ve bellek boyutu gibi faktörleri dikkate alır.

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ülür: biri Intel 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 donatılmış.

PowerInfer çerçevesinin uçtan uca performansı, 1’lik bir toplu işlemler boyutu ile karşılaştırıldığında ve varsayılan dağıtım ayarları ile llama.cpp ile karşılaştırılır. Çerçeve daha sonra, gerçek dünya diyalog girişi ve çıktısında gözlemlenen uzunluk değişkenliğine bağlı olarak, ChatGPT ve Alpaca veri kümelerinden örneklemeleri örnekleme yapar. Aşağıdaki şekil, farklı modeller için oluşturma hızlarını gösterir.

Görüldüğü gibi, PowerInfer çerçevesi saniyede 8.32 token üretir ve 16 token/saniye üretim hızına ulaşır, böylece llama.cpp çerçevesini önemli bir marj ile geride bırakır. Ayrıca, çıktı tokenlerinin sayısı arttıkça, PowerInfer çerçevesinin performansı da iyileşir, çünkü üretim aşaması genel çıkarım süresini önemli ölçüde 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 üretim hızı saniyede 7 token ve ortalama token üretim hızı saniyede 5 token.

Yukarıdaki resim, iki çerçeve için GPU ve CPU arasındaki nöron yükü dağılımını gösterir. Görüldüğü gibi, PowerInfer çerçevesi, nöron yükünün GPU payını önemli ölçüde artırır, %20’den %70’e.

Yukarıdaki resim, iki farklı bilgisayarın farklı özelliklerine sahip olduğu durumlarda, iki çerçevenin performansını karşılaştırır. Görüldüğü gibi, PowerInfer çerçevesi, llama.cpp çerçevesine kıyasla, yüksek çıktı token üretim hızını tutarlı bir şekilde sağlar.

Son Düşünceler

Bu makalede, PowerInfer’i, tek bir tüketici düzeyinde GPU ile çalışan standart bir bilgisayara yönelik tasarlanmış bir yüksek hızlı LLM çıkarım motorunu tartıştık. PowerInfer çerçevesi, LLM’lerde var olan yüksek lokaliteyi, nöron aktivasyonlarının güç yasası dağılımı ile karakterize edilen bir yöntem kullanarak, kullanmayı amaçlar. PowerInfer çerçevesi, büyük dil modelleri için tasarlanmış bir hızlı çıkarım sistemidir ve nöronları aktive etmek ve hesaplamalı sparsiteyi kullanmak için adaptif predictor’lar ve nöron-aware 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ış.