Son zamanlarda, ISTA'dan araştırmacılar, 1,6 trilyon parametreli bir SwitchTransformer'ı çok az doğruluk kaybıyla 160 GB'tan (parametre başına 0,8 bit) daha azına sıkıştırabilen yeni bir model niceleme yöntemi olan QMoE'yi önerdiler.
Görüntü kaynağı: Sınırsız AI tarafından oluşturuldu
GPT-4'ün mimarisinin tanınmış endüstri liderleri tarafından "açık kaynaklı" olmasıyla, Hibrit Uzman Mimarisi (MoE) bir kez daha araştırmanın odak noktası haline geldi.
GPT-4, toplam 1,8 trilyon parametreye sahip 16 uzman modele sahiptir. Her belirteç üretimi yaklaşık 280 milyar parametre ve 560 TFLOP gerektirir
Bununla birlikte, daha hızlı ve daha doğru bir modelin maliyeti, çok sayıda parametre ve bununla birlikte gelen yüksek maliyettir.
Örneğin, 1,6 trilyon parametreli SwitchTransformer-c2048 modelinin etkili bir şekilde çalışması için 3,2 TB GPU belleği gerekir.
Bu sorunu çözmek için, Avusturya Teknoloji Enstitüsü'nden (ISTA) araştırmacılar tamamen yeni bir sıkıştırma ve yürütme çerçevesi önerdiler – QMoE.
Adres:
QMoE, özel olarak tasarlanmış bir GPU kod çözme çekirdeği kullanarak, yalnızca hafif bir hassasiyet kaybıyla 20 kata kadar sıkıştırma elde edebilen verimli uçtan uca sıkıştırma çıkarımına sahiptir.
Spesifik olarak, QMoE, 1,6 trilyon parametreli SwitchTransformer-c2048 modelini tek bir günde tek bir GPU sunucusunda 160 GB'ın altına sıkıştırabilir, bu da parametre başına yalnızca 0,8 bite eşdeğerdir.
Bu, sıkıştırılmamış bir model için çıkarım maliyetinin %5'inden daha azıyla 4 NVIDIA RTX A6000 veya 8 NVIDIA RTX 3090 GPU üzerinde çalışmanıza olanak tanır.
MoE Modeli Niceleme
Hibrit Modelin (MoE) temel fikri, ağın modelleme yeteneklerini geliştirmek için model parametrelerinin sayısını artırırken, hesaplama maliyetini standart ileri beslemeli mimariye kıyasla neredeyse aynı tutmaktır.
Her bir giriş belirtecini işlemek için ağın yalnızca küçük bir bölümünün çağrılması gerektiğinden, bu tasarım verimli eğitim ve çıkarım için hiper ölçekli modeller oluşturmak üzere 100 hatta 1.000 "uzmandan" yararlanabilir.
Çıkarım hızı karşılaştırılabilir olduğunda MoE'nin doğruluğu ve eğitim hızını büyük ölçüde artırabileceği kanıtlanmıştır. Ancak bu kadar büyük bir hacim, modelin çalışması için çok fazla video belleği gerektiği anlamına gelir.
MoE'nin sıkıştırılmasındaki en büyük zorluk, çok sayıda aktivasyonu sürdürme ihtiyacıdır.
Bu bağlamda, hesaplanması gereken ara veriler, modelin yürütülmesi dikkatli bir şekilde düzenlenerek küçük bir kısımda kontrol edilebilir. Bu, ana depolamayı GPU'dan daha ucuz, daha pahalı bir CPU belleğine aktarır.
Özellikle, büyük bir B arabelleği koruyun ve Transformatör bloğunun yoğun kısmını aşağıdaki gibi güncelleyin:
CPU'dan GPU'ya, yüzlerce jeton içeren bir "örnek" X alın;
Karşılık gelen yoğun tabaka aracılığıyla, Y sonucu elde edilir;
Y'deki belirteçlerin uzman tahsisini hesaplayın ve saklayın;
Y'yi CPU'ya geri gönderin ve B'de X'in üzerine yazın.
Seyrek bölümler için:
CPU'dan GPU'ya, X_E ile temsil edilen Uzman E'ye atanmış B'deki tüm belirteçleri alın.
Sıkıştırılmış uzman E'ler oluşturmak için bunları kullanın (örneğin, GPTQ kullanarak).
Y_E' elde etmek için X_E'yi E' ile çalıştırın.
Y_E'yi CPU'ya geri gönderin ve B'de X_E'in üzerine yazın.
Şekil 2'de gösterildiği gibi, bu işlem bellek tüketimini ve aktarım maliyetlerini en aza indirir: B'nin yalnızca bir kopyası gereklidir ve her belirteç, her Transformatör bloğunda yalnızca iki kez okunur ve yazılır.
Ayrıca, araştırmacılar, ağırlık başına 1 bitten daha az sıkıştırma elde etmek ve çıkarım için GPU yürütme yükünü en aza indirmek için bir kodlama şeması ve bir CUDA çekirdeği tasarladılar.
Sıkıştırma Etkisi
Doğruluk
İlk olarak, araştırmacılar tüm SwitchTransformer modellerini 2 bit ve üçlü hassasiyetle ölçtüler ve ardından doğrulama kayıplarını değerlendirdiler.
128 uzman için varsayılan kalibrasyon numune boyutu 10K'dır; 2048 uzman için varsayılan kalibrasyon numune boyutu 160K'dır. Aynı zamanda, araştırmacılar 0.5x ve 2x örneklem boyutlarını da test ettiler.
Sonuçlar, 2 basamaklı modelin, veriye bağlı niceleme kullanılarak minimum kayıpla (C2048'e göre% 1,7) ve üçlü hassasiyet altında kayıpta küçük bir artışla (C2048'e göre% 6,7) elde edilebileceğini göstermektedir.
Bu sadece önerilen gelişmiş niceleme yönteminin etkinliğini kanıtlamakla kalmaz, aynı zamanda son derece düşük bit genişliğinde sıkıştırmanın gerçekten büyük ölçekli MoE için uygun olduğunu gösterir.
Ek olarak, araştırmacılar RedPajama'nın arXiv, GitHub, StackExchange ve Wikipedia'dan gelen verileri değerlendirdi.
Kalibrasyon verilerinin yalnızca %<0,01'i bu sitelerden gelse de, sıkıştırılmış model hala çekirdek dağıtımla neredeyse aynı performansı korur.
Kalibrasyon verileri söz konusu olduğunda, numune boyutunun artırılması genellikle performansı biraz artırır ve en çok üçlü nicelemede belirgindir. Ancak süreçte, özellikle 2 bitte biraz gürültü de var.
### Sıkıştırma
Testte, araştırmacılar hem MoE modülünün tek başına sıkıştırılmasını hem de tüm modele ve tüm meta verilerine göre sıkıştırmayı dikkate aldılar.
Yalnızca MoE için, tüm ölçeklerde >16x sıkıştırma elde edilir, bu da her parametre için 1 bit depolama <alanına eşdeğerdir.
C2048'de genel sıkıştırma oranı 19,81 kattır, bu da tüm sıkıştırılmamış yoğun katmanlar dahil olsa bile parametre başına 0,807 bite eşittir ve kontrol noktası boyutunu 3142 GB'tan 158,6 GB'a düşürür.
Ek olarak, sıkıştırma oranının iki nedenden dolayı modelin boyutuyla birlikte arttığı gözlemlenebilir:
(a) doğal seyreklik artar ve araştırmacılar kodlama sözlüğünü C2048 için optimize ettiler;
(b) Katman ne kadar büyükse, ağırlık dağılımı bağımsızlığa o kadar yakındır.
### Çalışma Süresi
Son olarak, araştırmacılar, farklı miktarlarda kalibrasyon verisi için tek bir A6000 GPU'da sıkıştırılmış bir model oluşturmak için gereken süreyi değerlendirdi.
Sonuçlar, daha küçük modellerin bir saatten daha kısa sürede sıkıştırılabileceğini ve hatta c2048'in bir günden daha kısa sürede tamamlanabileceğini gösteriyor ve bu da QMoE'nin yüksek verimliliğini doğruluyor.
Large128'den c2048'e kadar, çalışma süresindeki artış temel olarak boyut farkıyla orantılıdır, ancak ikincisi 16 kat daha fazla numune kullanır. Bunun nedeni, uzman başına örneklem büyüklüğünün aynı kalması, uzman boyutunun ise çok az artmasıdır.
### Koşu Sonucu
İlk olarak, sıkıştırılmış matris-vektör çarpım çekirdeğinin PyTorch standardının (sıkıştırılmamış) bfloat16 cuBLAS çekirdeği ile doğrudan (izole) karşılaştırılması.
Şekil 5 (solda), MoE'nin bfloat16 çekirdeklerine kıyasla iki farklı GPU'da matris şekillerini keşfetmesi için geçen süreyi göstermektedir.
Araştırmacılar düşük depolama performansı kullansalar da, sıkıştırma çekirdeğini yürütmek ideale yakın bfloat16 taban çizgisinden daha az zaman aldı. Belirli bir matris şeklinde %35'e kadar daha hızlı.
Bu işlemlerin gecikmesi de çok düşüktür, en küçük matris 0,02 ms< ve en büyüğü 0,05 ms <.
Daha sonra, araştırmacılar, sıkıştırılmış MoE modelinin gerçek ağırlıklarını kullanarak HuggingFace'deki çekirdeğin uçtan uca bir karşılaştırmasını gerçekleştirdiler.
Şekil 5'te (sağda) gösterildiği gibi, sıkıştırılmış modelin uçtan uca yürütülmesi, standart (sıkıştırılmamış) modelden yalnızca %<5 daha yavaştır.
Her katmanın zamanlaması daha hızlı olsa da, kodlayıcı bazen birden fazla belirteci aynı uzmana yönlendirdiği için hızda yine de hafif bir düşüş olur.
Mevcut uygulama, her belirteç için ayrı bir matris vektör çarpımı gerçekleştirirken, taban çizgisi daha verimli bir ortak matris çarpımı gerçekleştirmektir.
Bazı uygulamalarda bu büyük bir darboğazdır. Bu, çekirdeğe bir belirteç içi döngü ekleyerek veya çok sayıda belirteç olması durumunda, standart matris çarpımını gerçekleştirmeden önce tam bir dekompresyon gerçekleştirerek yapılabilir.
Tartışma ve Sınırlamalar
Özetle, QMoE, MoE'nin çıkarım sürecinde aşırı bellek yükü sorununu çözmek için açık kaynaklı bir uçtan uca sıkıştırma ve çıkarım çerçevesidir.
Araştırmacılar ilk kez, SwitchTransformer c2048 gibi trilyon parametreli bir modelin, yaklaşık 20 kat sıkıştırma oranıyla parametre başına 1 bitten daha azına hassas bir şekilde sıkıştırılabileceğini gösterdiler. Ve ilk kez, bu tür modellerin uçtan uca verimli bir şekilde yürütülmesi, tek bir tüketici sınıfı GPU sunucusunda elde edildi.
Bununla birlikte, yalnızca az sayıda büyük ölçekli ve doğru MoE kamuya açık olduğundan, incelenen model seti sınırlıdır.
Ek olarak, büyüklükleri nedeniyle, çoğu MoE, daha fazla araştırma için karmaşık manuel entegrasyon gerektiren farklı özel çerçevelerde eğitilir ve dağıtılır.
Yine de, araştırmacılar en büyük ve en doğru MoE'lerden bazılarını, özellikle de SwitchTransformer'ı ele aldılar.
Kaynaklar:
View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
8 3090, 1 günlük sıkıştırma trilyon parametreli büyük model! 3,2 TB, 160 kata kadar sıkıştırma oranıyla 20 GB'a düşüyor
Makale kaynağı: Yeni Zhiyuan
GPT-4'ün mimarisinin tanınmış endüstri liderleri tarafından "açık kaynaklı" olmasıyla, Hibrit Uzman Mimarisi (MoE) bir kez daha araştırmanın odak noktası haline geldi.
Bununla birlikte, daha hızlı ve daha doğru bir modelin maliyeti, çok sayıda parametre ve bununla birlikte gelen yüksek maliyettir.
Örneğin, 1,6 trilyon parametreli SwitchTransformer-c2048 modelinin etkili bir şekilde çalışması için 3,2 TB GPU belleği gerekir.
Bu sorunu çözmek için, Avusturya Teknoloji Enstitüsü'nden (ISTA) araştırmacılar tamamen yeni bir sıkıştırma ve yürütme çerçevesi önerdiler – QMoE.
QMoE, özel olarak tasarlanmış bir GPU kod çözme çekirdeği kullanarak, yalnızca hafif bir hassasiyet kaybıyla 20 kata kadar sıkıştırma elde edebilen verimli uçtan uca sıkıştırma çıkarımına sahiptir.
Spesifik olarak, QMoE, 1,6 trilyon parametreli SwitchTransformer-c2048 modelini tek bir günde tek bir GPU sunucusunda 160 GB'ın altına sıkıştırabilir, bu da parametre başına yalnızca 0,8 bite eşdeğerdir.
Bu, sıkıştırılmamış bir model için çıkarım maliyetinin %5'inden daha azıyla 4 NVIDIA RTX A6000 veya 8 NVIDIA RTX 3090 GPU üzerinde çalışmanıza olanak tanır.
MoE Modeli Niceleme
Hibrit Modelin (MoE) temel fikri, ağın modelleme yeteneklerini geliştirmek için model parametrelerinin sayısını artırırken, hesaplama maliyetini standart ileri beslemeli mimariye kıyasla neredeyse aynı tutmaktır.
Her bir giriş belirtecini işlemek için ağın yalnızca küçük bir bölümünün çağrılması gerektiğinden, bu tasarım verimli eğitim ve çıkarım için hiper ölçekli modeller oluşturmak üzere 100 hatta 1.000 "uzmandan" yararlanabilir.
Çıkarım hızı karşılaştırılabilir olduğunda MoE'nin doğruluğu ve eğitim hızını büyük ölçüde artırabileceği kanıtlanmıştır. Ancak bu kadar büyük bir hacim, modelin çalışması için çok fazla video belleği gerektiği anlamına gelir.
Bu bağlamda, hesaplanması gereken ara veriler, modelin yürütülmesi dikkatli bir şekilde düzenlenerek küçük bir kısımda kontrol edilebilir. Bu, ana depolamayı GPU'dan daha ucuz, daha pahalı bir CPU belleğine aktarır.
Özellikle, büyük bir B arabelleği koruyun ve Transformatör bloğunun yoğun kısmını aşağıdaki gibi güncelleyin:
CPU'dan GPU'ya, yüzlerce jeton içeren bir "örnek" X alın;
Karşılık gelen yoğun tabaka aracılığıyla, Y sonucu elde edilir;
Y'deki belirteçlerin uzman tahsisini hesaplayın ve saklayın;
Y'yi CPU'ya geri gönderin ve B'de X'in üzerine yazın.
CPU'dan GPU'ya, X_E ile temsil edilen Uzman E'ye atanmış B'deki tüm belirteçleri alın.
Sıkıştırılmış uzman E'ler oluşturmak için bunları kullanın (örneğin, GPTQ kullanarak).
Y_E' elde etmek için X_E'yi E' ile çalıştırın.
Y_E'yi CPU'ya geri gönderin ve B'de X_E'in üzerine yazın.
Şekil 2'de gösterildiği gibi, bu işlem bellek tüketimini ve aktarım maliyetlerini en aza indirir: B'nin yalnızca bir kopyası gereklidir ve her belirteç, her Transformatör bloğunda yalnızca iki kez okunur ve yazılır.
Ayrıca, araştırmacılar, ağırlık başına 1 bitten daha az sıkıştırma elde etmek ve çıkarım için GPU yürütme yükünü en aza indirmek için bir kodlama şeması ve bir CUDA çekirdeği tasarladılar.
Sıkıştırma Etkisi
Doğruluk
İlk olarak, araştırmacılar tüm SwitchTransformer modellerini 2 bit ve üçlü hassasiyetle ölçtüler ve ardından doğrulama kayıplarını değerlendirdiler.
128 uzman için varsayılan kalibrasyon numune boyutu 10K'dır; 2048 uzman için varsayılan kalibrasyon numune boyutu 160K'dır. Aynı zamanda, araştırmacılar 0.5x ve 2x örneklem boyutlarını da test ettiler.
Sonuçlar, 2 basamaklı modelin, veriye bağlı niceleme kullanılarak minimum kayıpla (C2048'e göre% 1,7) ve üçlü hassasiyet altında kayıpta küçük bir artışla (C2048'e göre% 6,7) elde edilebileceğini göstermektedir.
Bu sadece önerilen gelişmiş niceleme yönteminin etkinliğini kanıtlamakla kalmaz, aynı zamanda son derece düşük bit genişliğinde sıkıştırmanın gerçekten büyük ölçekli MoE için uygun olduğunu gösterir.
Kalibrasyon verilerinin yalnızca %<0,01'i bu sitelerden gelse de, sıkıştırılmış model hala çekirdek dağıtımla neredeyse aynı performansı korur.
Kalibrasyon verileri söz konusu olduğunda, numune boyutunun artırılması genellikle performansı biraz artırır ve en çok üçlü nicelemede belirgindir. Ancak süreçte, özellikle 2 bitte biraz gürültü de var.
Testte, araştırmacılar hem MoE modülünün tek başına sıkıştırılmasını hem de tüm modele ve tüm meta verilerine göre sıkıştırmayı dikkate aldılar.
Yalnızca MoE için, tüm ölçeklerde >16x sıkıştırma elde edilir, bu da her parametre için 1 bit depolama <alanına eşdeğerdir.
C2048'de genel sıkıştırma oranı 19,81 kattır, bu da tüm sıkıştırılmamış yoğun katmanlar dahil olsa bile parametre başına 0,807 bite eşittir ve kontrol noktası boyutunu 3142 GB'tan 158,6 GB'a düşürür.
Ek olarak, sıkıştırma oranının iki nedenden dolayı modelin boyutuyla birlikte arttığı gözlemlenebilir:
(a) doğal seyreklik artar ve araştırmacılar kodlama sözlüğünü C2048 için optimize ettiler;
(b) Katman ne kadar büyükse, ağırlık dağılımı bağımsızlığa o kadar yakındır.
Son olarak, araştırmacılar, farklı miktarlarda kalibrasyon verisi için tek bir A6000 GPU'da sıkıştırılmış bir model oluşturmak için gereken süreyi değerlendirdi.
Sonuçlar, daha küçük modellerin bir saatten daha kısa sürede sıkıştırılabileceğini ve hatta c2048'in bir günden daha kısa sürede tamamlanabileceğini gösteriyor ve bu da QMoE'nin yüksek verimliliğini doğruluyor.
Large128'den c2048'e kadar, çalışma süresindeki artış temel olarak boyut farkıyla orantılıdır, ancak ikincisi 16 kat daha fazla numune kullanır. Bunun nedeni, uzman başına örneklem büyüklüğünün aynı kalması, uzman boyutunun ise çok az artmasıdır.
İlk olarak, sıkıştırılmış matris-vektör çarpım çekirdeğinin PyTorch standardının (sıkıştırılmamış) bfloat16 cuBLAS çekirdeği ile doğrudan (izole) karşılaştırılması.
Şekil 5 (solda), MoE'nin bfloat16 çekirdeklerine kıyasla iki farklı GPU'da matris şekillerini keşfetmesi için geçen süreyi göstermektedir.
Araştırmacılar düşük depolama performansı kullansalar da, sıkıştırma çekirdeğini yürütmek ideale yakın bfloat16 taban çizgisinden daha az zaman aldı. Belirli bir matris şeklinde %35'e kadar daha hızlı.
Bu işlemlerin gecikmesi de çok düşüktür, en küçük matris 0,02 ms< ve en büyüğü 0,05 ms <.
Şekil 5'te (sağda) gösterildiği gibi, sıkıştırılmış modelin uçtan uca yürütülmesi, standart (sıkıştırılmamış) modelden yalnızca %<5 daha yavaştır.
Her katmanın zamanlaması daha hızlı olsa da, kodlayıcı bazen birden fazla belirteci aynı uzmana yönlendirdiği için hızda yine de hafif bir düşüş olur.
Mevcut uygulama, her belirteç için ayrı bir matris vektör çarpımı gerçekleştirirken, taban çizgisi daha verimli bir ortak matris çarpımı gerçekleştirmektir.
Bazı uygulamalarda bu büyük bir darboğazdır. Bu, çekirdeğe bir belirteç içi döngü ekleyerek veya çok sayıda belirteç olması durumunda, standart matris çarpımını gerçekleştirmeden önce tam bir dekompresyon gerçekleştirerek yapılabilir.
Tartışma ve Sınırlamalar
Özetle, QMoE, MoE'nin çıkarım sürecinde aşırı bellek yükü sorununu çözmek için açık kaynaklı bir uçtan uca sıkıştırma ve çıkarım çerçevesidir.
Araştırmacılar ilk kez, SwitchTransformer c2048 gibi trilyon parametreli bir modelin, yaklaşık 20 kat sıkıştırma oranıyla parametre başına 1 bitten daha azına hassas bir şekilde sıkıştırılabileceğini gösterdiler. Ve ilk kez, bu tür modellerin uçtan uca verimli bir şekilde yürütülmesi, tek bir tüketici sınıfı GPU sunucusunda elde edildi.
Bununla birlikte, yalnızca az sayıda büyük ölçekli ve doğru MoE kamuya açık olduğundan, incelenen model seti sınırlıdır.
Ek olarak, büyüklükleri nedeniyle, çoğu MoE, daha fazla araştırma için karmaşık manuel entegrasyon gerektiren farklı özel çerçevelerde eğitilir ve dağıtılır.
Yine de, araştırmacılar en büyük ve en doğru MoE'lerden bazılarını, özellikle de SwitchTransformer'ı ele aldılar.
Kaynaklar: