Resim kaynağı: Sınırsız Yapay Zeka tarafından oluşturulmuştur
Büyük dil modelleri (LLM'ler), özellikle üretken önceden eğitilmiş Transformer (GPT) modelleri, birçok karmaşık dil görevinde mükemmel performans göstermiştir. Bu atılım, kullanıcı gizliliğini korumak için bu LLM'leri yerel olarak mobil cihazlarda çalıştırma isteğine yol açtı. Ancak küçük LLM'ler bile bu cihazlarda çalıştırılamayacak kadar büyüktür.
Örneğin, küçük LLaMA'nın 7B parametreleri vardır ve FP16 sürümünün boyutu 14 GB'tır, mobil cihazlarda ise yalnızca 18 GB DRAM bulunur. Bu nedenle, LLM'nin eğitim süresi optimizasyonu (seyreltme, niceleme veya ağırlık kümeleme gibi) yoluyla sıkıştırılması, cihaz üzerinde LLM dağıtımı için önemli bir adımdır. Ancak LLM'nin eğitim süresinin optimizasyonu, model boyutu ve hesaplama kaynağı yükü nedeniyle çok pahalıdır. Ağırlık kümeleme için SOTA algoritmalarından biri olan DKM, tüm ağırlıklar arasındaki etkileşimi ve olası tüm kümeleme seçeneklerini analiz etme ihtiyacı nedeniyle değişken ağırlıklı kümeleme için aşırı eğitim süresi gerektirir.
Bu nedenle, GTPQ ve AWQ gibi mevcut LLM sıkıştırma tekniklerinin çoğu eğitim sonrası optimizasyona dayanır. Bu yazıda araştırmacılar, eğitim süresi ağırlıklı kümelemeyi gerçekleştirmek için bellek optimizasyon teknikleri ve bunun eDKM olarak da bilinen DKM'de uygulanmasını önermektedir.
Bu makalede kullanılan teknikler arasında cihazlar arası tensör orkestrasyonu ve ağırlık matrisi benzersizleştirme ve parçalama yer alır. LLaMA 7B modeline ince ayar yapmak ve ağırlık faktörü başına 3 bit'e sıkıştırmak için eDKM'yi kullanırken araştırmacılar, kod çözücü yığınının bellek ayak izinde yaklaşık 130 kat azalma elde etti; bu, mevcut 3 bit sıkıştırma teknolojisinden daha iyidir.
DKM'nin bellek verimliliğini artırın
Şekil 1'de gösterildiği gibi, budama, niceleme ve normalleştirmenin tümü popüler ağırlık optimizasyon teknikleridir.Bu yöntemler, orijinal ağırlık W'yi optimize eder ve ağırlığı elde eder.
çıkarım gecikmesini, doğruluğunu veya model boyutunu optimize etmek için. Bu makaledeki araştırmacılar, bu teknolojiler arasında ağırlıklı olarak ağırlıklı kümelemeye, özellikle de ağırlıklı kümeleme algoritması DKM'ye odaklanmaktadır.
Ağırlık kümelemesi, ağırlık matrisinin bir arama tablosuna ve modern çıkarım hızlandırıcıların işleyebileceği arama tablosunun düşük hassasiyetli endekslerinin bir listesine sıkıştırıldığı, doğrusal olmayan bir ağırlık ayrıklaştırmadır. DKM, ağırlıklar (W ile gösterilir) ve merkez noktalar (C ile gösterilir) arasındaki etkileşimi analiz ederek farklılaştırılabilir ağırlık kümelemesi gerçekleştirir ve sıkıştırma oranı ile doğruluk arasında bir denge kurar.
Bu nedenle LLM sıkıştırması için DKM'nin kullanılması yüksek kaliteli sonuçlar üretir. Bununla birlikte, DKM hesaplama işlemi sırasında oluşturulan dikkat haritası büyüktür ve ileri/geri geçişin bellek karmaşıklığı O (|W||C|)'dir (yani Şekil 1'deki matris), bu da LLM için özellikle zordur. sıkıştırma. Örneğin, yalnızca 4 bit ağırlık kümelemesi için dikkat haritalarını hesaplayan bir LLaMA 7B modeli, en az 224 GB bellek gerektirir.
*Şekil 1: Ağırlık optimizasyon sistemine genel bakış. DKM'de sistem, dahili olarak farklılaştırılabilir ağırlıklara göre kümelenebilen bir dikkat haritası oluşturur. *
Bu nedenle, araştırmacıların bu kadar büyük bellek gereksinimlerini karşılamak için CPU belleği kullanması, yani önce bilgiyi CPU belleğinde saklaması ve daha sonra gerektiğinde onu GPU'ya geri kopyalaması gerekir. Ancak bu, GPU ile CPU arasında çok fazla trafik oluşturacak (böylece eğitim yavaşlayacak) ve büyük CPU bellek kapasitesi gerektirecektir. Bu, CPU ile GPU arasındaki işlem sayısını azaltmanın ve işlem başına trafiği en aza indirmenin kritik olduğu anlamına gelir. Bu sorunların üstesinden gelmek için araştırmacılar PyTorch'ta iki yeni bellek optimizasyon teknolojisini tanıttı.
Cihazlar arası tensör orkestrasyonu: Gereksiz kopyalamayı önlemek için cihazlar arasında kopyalanan tensörleri izleyin, böylece bellek kullanımını azaltın ve eğitimi hızlandırın.
Ağırlık benzersizleştirme ve parçalama işlemi: Dikkat haritasının (Şekil 1'de gösterilmektedir) temsilini azaltmak ve onu birden fazla öğrenme modeline bölmek için 16 bit ağırlığın yalnızca 216 benzersiz değere sahip olmasından yararlanın.
Cihazlar arası tensör orkestrasyonu
PyTorch, tensörleri temsil etmek için tensörün şeklini, türünü vb. kaydetmek için kullanılan gerçek veri düzenine ve meta verilere bağlı bir veri deposu kullanır. Bu tensör mimarisi, PyTorch'un veri depolama alanını mümkün olduğunca yeniden kullanmasına ve bellek kullanımını etkili bir şekilde azaltmasına olanak tanır. Ancak bir tensör başka bir cihaza (GPU'dan CPU'ya gibi) taşındığında veri depolama alanı yeniden kullanılamaz ve yeni bir tensörün oluşturulması gerekir.
Tablo 1, PyTorch cihazları arasında geçiş yaparken tensörlerin bellek kullanımını göstermektedir. 0. satırda tahsis edilen tensör x0, GPU'da 4 MB tüketir. 1. satırda görünümü değiştiğinde, temeldeki veri deposu yeniden kullanılabildiğinden (yani x0 ve x1 aslında aynıdır) ek GPU belleği gerekmez. Ancak, x0 ve x1, 2. ve 3. satırlarda olduğu gibi CPU'ya taşındığında, y0 ve y1, CPU üzerinde aynı veri depolama alanını paylaşabilse de, CPU bellek tüketimi 8 MB olur, bu da CPU bellek yedekliliğine neden olur ve GPU- CPU'ya trafik.
*Tablo 1: Yüksek Lisans ince ayarı, GPU'daki bellek ayak izini boşaltmak için CPU belleğinin kullanılmasını gerektirebilir. Cihazlar arası tensör yönetiminin olmaması, cihazlar arasında (özellikle hesaplamalı grafik karmaşık olduğunda) gereksiz kopyalara yol açabilir ve bu da özellikle LLM eğitim süresi optimizasyonuna zarar verir. Örneğin, x0 ve x1 farklı görünümlere sahip aynı tensör olmasına rağmen, ortaya çıkan y0 ve y1 tensörleri CPU'ya kopyalandığında veri depolamayı paylaşmazken GPU'da x0 ve x1 bunu paylaşır. *
Bu verimsizliği gidermek için araştırmacılar, Şekil 2(b)'ye siyahın gerçek veri depolamayı ve meta verileri, grinin ise yalnızca meta verileri temsil ettiği bir düzenleme katmanı yerleştirdiler. Şekil 2(a), Tablo 1'deki örneği göstermektedir; burada x1, x0 ile veri düzenini paylaşır, ancak y0 ve y1, CPU üzerinde kopya veri deposuna sahiptir. Şekil 2 (b)'de gösterildiği gibi, bir orkestrasyon katmanı ekleyerek araştırmacılar bu fazlalığı önlüyor ve GPU'dan CPU'ya trafiği azaltıyor. Araştırmacılar böyle bir takas şemasını uygulamak için PyTorch'taki tensör kaydetme kancasını kullandılar ve aynı veri deposunun kopyalanıp kopyalanmadığını kontrol ettiler.
Ancak hedef cihazda aynı tensörün mevcut olup olmadığını kontrol etmek için böyle bir şemanın kullanılması pahalıdır. Şekil 2(b) örneğinde, araştırmacı x1'i CPU'ya kopyalamamış, sadece y0'a bir referans ve x1 ile y0 arasındaki görüntüleme işlemini döndürmüştür.
*Şekil 2: Tablo 1'deki duruma cihazlar arası tensör orkestrasyonu uygulandığında, CPU tarafında çoğaltma önlenebilir, böylece bellek ve trafikten tasarruf sağlanır. *
Hesaplamalı grafiğe göz atmak ekstra hesaplama döngüleri ekler ve gereksiz kopyaların kaydedilmesi bu yükü dengeleyebilir. Araştırmacılar, orijinal DKM uygulamasının hesaplamalı grafiğindeki tüm uygun vakaları tespit etmek için 4 atlamalı bir aramanın yeterli olduğunu buldu.
Ağırlık benzersizleştirme ve parçalama
Çoğu LLM eğitiminde ağırlıklar genellikle 16 bit depolama kullanır (BF16 veya FP16 gibi), bu da LLM'de milyarlarca parametre olmasına rağmen bit genişliğinden dolayı yalnızca 216 benzersiz katsayı olduğu anlamına gelir. Bu, Şekil 3'te gösterildiği gibi dikkat haritasını ağırlıklar ve merkez noktalar arasında önemli ölçüde sıkıştırma fırsatı sağlar.
Şekil 3: Ağırlık benzersizleştirme ve parçalama
Deneysel sonuçlar
Yüksek Lisans Doğruluğu
Bu makale, eDKM'yi RTN, SmoothQuant, GPTQ, AWQ ve LLM-QAT dahil olmak üzere diğer niceleme tabanlı sıkıştırma şemalarıyla karşılaştırmaktadır. eDKM için araştırmacılar ayrıca gömme katmanında 8 bitlik sıkıştırma da gerçekleştirdi. Sonunda aşağıdaki sonuçlara ulaşıldı:
eDKM, 3 bit sıkıştırılmış LLaMA 7B modelinin diğer tüm 3 bit sıkıştırma şemalarından daha iyi performans göstermesini sağlar.
eDKM, 3 bit ve 4 bit yapılandırmalarda ARC-e karşılaştırmasında en iyi doğruluğa sahiptir.
eDKM'nin performansı, 4 bit sıkıştırma modeli kullanan PIQA ve MMLU kıyaslamalarında oldukça rekabetçidir.
Ablasyon deneyi
Ablasyon deneylerinde araştırmacılar, örnek olarak LLaMA 7B kod çözücü yığınındaki bir dikkat katmanını kullanarak bellek ayak izi ile 3 bitlik sıkıştırmanın ileri-geri hızı arasındaki dengeyi ölçtüler. Cihazlar arası tensör orkestrasyonu tek başına çok az çalışma süresi yüküyle bellek alanını 2,9 kat azaltırken, parçalama ve benzersizleştirme modülleri sırasıyla 23,5 kat ve 16,4 kat tasarruf sağlar. eDKM, tüm teknolojiler birleştirildiğinde yaklaşık 130 kat tasarruf sağlıyor. Bu adımlar ek hesaplama ve iletişim ek yükü gerektirse de, GPU ile CPU arasındaki trafik önemli ölçüde azaldığından çalışma zamanı ek yükü ihmal edilebilir düzeydedir.
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.
Sıkıştırma teknolojisi yeniden yenilik yaparak büyük modellere cep telefonlarına sığma şansı veriyor
Büyük dil modelleri (LLM'ler), özellikle üretken önceden eğitilmiş Transformer (GPT) modelleri, birçok karmaşık dil görevinde mükemmel performans göstermiştir. Bu atılım, kullanıcı gizliliğini korumak için bu LLM'leri yerel olarak mobil cihazlarda çalıştırma isteğine yol açtı. Ancak küçük LLM'ler bile bu cihazlarda çalıştırılamayacak kadar büyüktür.
Örneğin, küçük LLaMA'nın 7B parametreleri vardır ve FP16 sürümünün boyutu 14 GB'tır, mobil cihazlarda ise yalnızca 18 GB DRAM bulunur. Bu nedenle, LLM'nin eğitim süresi optimizasyonu (seyreltme, niceleme veya ağırlık kümeleme gibi) yoluyla sıkıştırılması, cihaz üzerinde LLM dağıtımı için önemli bir adımdır. Ancak LLM'nin eğitim süresinin optimizasyonu, model boyutu ve hesaplama kaynağı yükü nedeniyle çok pahalıdır. Ağırlık kümeleme için SOTA algoritmalarından biri olan DKM, tüm ağırlıklar arasındaki etkileşimi ve olası tüm kümeleme seçeneklerini analiz etme ihtiyacı nedeniyle değişken ağırlıklı kümeleme için aşırı eğitim süresi gerektirir.
Bu nedenle, GTPQ ve AWQ gibi mevcut LLM sıkıştırma tekniklerinin çoğu eğitim sonrası optimizasyona dayanır. Bu yazıda araştırmacılar, eğitim süresi ağırlıklı kümelemeyi gerçekleştirmek için bellek optimizasyon teknikleri ve bunun eDKM olarak da bilinen DKM'de uygulanmasını önermektedir.
Bu makalede kullanılan teknikler arasında cihazlar arası tensör orkestrasyonu ve ağırlık matrisi benzersizleştirme ve parçalama yer alır. LLaMA 7B modeline ince ayar yapmak ve ağırlık faktörü başına 3 bit'e sıkıştırmak için eDKM'yi kullanırken araştırmacılar, kod çözücü yığınının bellek ayak izinde yaklaşık 130 kat azalma elde etti; bu, mevcut 3 bit sıkıştırma teknolojisinden daha iyidir.
DKM'nin bellek verimliliğini artırın
Şekil 1'de gösterildiği gibi, budama, niceleme ve normalleştirmenin tümü popüler ağırlık optimizasyon teknikleridir.Bu yöntemler, orijinal ağırlık W'yi optimize eder ve ağırlığı elde eder.
Ağırlık kümelemesi, ağırlık matrisinin bir arama tablosuna ve modern çıkarım hızlandırıcıların işleyebileceği arama tablosunun düşük hassasiyetli endekslerinin bir listesine sıkıştırıldığı, doğrusal olmayan bir ağırlık ayrıklaştırmadır. DKM, ağırlıklar (W ile gösterilir) ve merkez noktalar (C ile gösterilir) arasındaki etkileşimi analiz ederek farklılaştırılabilir ağırlık kümelemesi gerçekleştirir ve sıkıştırma oranı ile doğruluk arasında bir denge kurar.
Bu nedenle LLM sıkıştırması için DKM'nin kullanılması yüksek kaliteli sonuçlar üretir. Bununla birlikte, DKM hesaplama işlemi sırasında oluşturulan dikkat haritası büyüktür ve ileri/geri geçişin bellek karmaşıklığı O (|W||C|)'dir (yani Şekil 1'deki matris), bu da LLM için özellikle zordur. sıkıştırma. Örneğin, yalnızca 4 bit ağırlık kümelemesi için dikkat haritalarını hesaplayan bir LLaMA 7B modeli, en az 224 GB bellek gerektirir.
Bu nedenle, araştırmacıların bu kadar büyük bellek gereksinimlerini karşılamak için CPU belleği kullanması, yani önce bilgiyi CPU belleğinde saklaması ve daha sonra gerektiğinde onu GPU'ya geri kopyalaması gerekir. Ancak bu, GPU ile CPU arasında çok fazla trafik oluşturacak (böylece eğitim yavaşlayacak) ve büyük CPU bellek kapasitesi gerektirecektir. Bu, CPU ile GPU arasındaki işlem sayısını azaltmanın ve işlem başına trafiği en aza indirmenin kritik olduğu anlamına gelir. Bu sorunların üstesinden gelmek için araştırmacılar PyTorch'ta iki yeni bellek optimizasyon teknolojisini tanıttı.
Cihazlar arası tensör orkestrasyonu
PyTorch, tensörleri temsil etmek için tensörün şeklini, türünü vb. kaydetmek için kullanılan gerçek veri düzenine ve meta verilere bağlı bir veri deposu kullanır. Bu tensör mimarisi, PyTorch'un veri depolama alanını mümkün olduğunca yeniden kullanmasına ve bellek kullanımını etkili bir şekilde azaltmasına olanak tanır. Ancak bir tensör başka bir cihaza (GPU'dan CPU'ya gibi) taşındığında veri depolama alanı yeniden kullanılamaz ve yeni bir tensörün oluşturulması gerekir.
Tablo 1, PyTorch cihazları arasında geçiş yaparken tensörlerin bellek kullanımını göstermektedir. 0. satırda tahsis edilen tensör x0, GPU'da 4 MB tüketir. 1. satırda görünümü değiştiğinde, temeldeki veri deposu yeniden kullanılabildiğinden (yani x0 ve x1 aslında aynıdır) ek GPU belleği gerekmez. Ancak, x0 ve x1, 2. ve 3. satırlarda olduğu gibi CPU'ya taşındığında, y0 ve y1, CPU üzerinde aynı veri depolama alanını paylaşabilse de, CPU bellek tüketimi 8 MB olur, bu da CPU bellek yedekliliğine neden olur ve GPU- CPU'ya trafik.
Bu verimsizliği gidermek için araştırmacılar, Şekil 2(b)'ye siyahın gerçek veri depolamayı ve meta verileri, grinin ise yalnızca meta verileri temsil ettiği bir düzenleme katmanı yerleştirdiler. Şekil 2(a), Tablo 1'deki örneği göstermektedir; burada x1, x0 ile veri düzenini paylaşır, ancak y0 ve y1, CPU üzerinde kopya veri deposuna sahiptir. Şekil 2 (b)'de gösterildiği gibi, bir orkestrasyon katmanı ekleyerek araştırmacılar bu fazlalığı önlüyor ve GPU'dan CPU'ya trafiği azaltıyor. Araştırmacılar böyle bir takas şemasını uygulamak için PyTorch'taki tensör kaydetme kancasını kullandılar ve aynı veri deposunun kopyalanıp kopyalanmadığını kontrol ettiler.
Ancak hedef cihazda aynı tensörün mevcut olup olmadığını kontrol etmek için böyle bir şemanın kullanılması pahalıdır. Şekil 2(b) örneğinde, araştırmacı x1'i CPU'ya kopyalamamış, sadece y0'a bir referans ve x1 ile y0 arasındaki görüntüleme işlemini döndürmüştür.
Hesaplamalı grafiğe göz atmak ekstra hesaplama döngüleri ekler ve gereksiz kopyaların kaydedilmesi bu yükü dengeleyebilir. Araştırmacılar, orijinal DKM uygulamasının hesaplamalı grafiğindeki tüm uygun vakaları tespit etmek için 4 atlamalı bir aramanın yeterli olduğunu buldu.
Ağırlık benzersizleştirme ve parçalama
Çoğu LLM eğitiminde ağırlıklar genellikle 16 bit depolama kullanır (BF16 veya FP16 gibi), bu da LLM'de milyarlarca parametre olmasına rağmen bit genişliğinden dolayı yalnızca 216 benzersiz katsayı olduğu anlamına gelir. Bu, Şekil 3'te gösterildiği gibi dikkat haritasını ağırlıklar ve merkez noktalar arasında önemli ölçüde sıkıştırma fırsatı sağlar.
Deneysel sonuçlar
Yüksek Lisans Doğruluğu
Bu makale, eDKM'yi RTN, SmoothQuant, GPTQ, AWQ ve LLM-QAT dahil olmak üzere diğer niceleme tabanlı sıkıştırma şemalarıyla karşılaştırmaktadır. eDKM için araştırmacılar ayrıca gömme katmanında 8 bitlik sıkıştırma da gerçekleştirdi. Sonunda aşağıdaki sonuçlara ulaşıldı:
Ablasyon deneylerinde araştırmacılar, örnek olarak LLaMA 7B kod çözücü yığınındaki bir dikkat katmanını kullanarak bellek ayak izi ile 3 bitlik sıkıştırmanın ileri-geri hızı arasındaki dengeyi ölçtüler. Cihazlar arası tensör orkestrasyonu tek başına çok az çalışma süresi yüküyle bellek alanını 2,9 kat azaltırken, parçalama ve benzersizleştirme modülleri sırasıyla 23,5 kat ve 16,4 kat tasarruf sağlar. eDKM, tüm teknolojiler birleştirildiğinde yaklaşık 130 kat tasarruf sağlıyor. Bu adımlar ek hesaplama ve iletişim ek yükü gerektirse de, GPU ile CPU arasındaki trafik önemli ölçüde azaldığından çalışma zamanı ek yükü ihmal edilebilir düzeydedir.