Alimei's Guide: En iyi uluslararası makine öğrenimi ve sinir ağı akademik konferansı olarak bilinen NIPS 2017, 4-9 Aralık tarihleri arasında Long Beach, Kaliforniya, ABD'de düzenlendi. Bu konferansta, Alibaba tarafından atölye çalışmaları ve Sözlü ve Poster raporları için seçilen iki bildiriye ek olarak, üç ana teknik bölüm, Ali sergi alanında 3 gün boyunca birden fazla teknik seminer düzenleyerek 5.000'den fazla katılımcıyı tanıttı. Alibaba'nın makine öğrenimi ve yapay zeka alanındaki teknik araştırmaları, ürünleri ve uygulamaları.
NIPS 2017 Alibaba standı-Alibaba iDST Dean Jin Rong bir konuşma yapıyor
Derin model eğitimi için GPU bellek optimizasyonunu tanıtan "TensorFlow'da GPU Bellek Optimizasyonuna göre TrainingDeeper Modelleri" başlıklı bu kağıt, yazar tarafından NIPS 2017 ML Systems Workshop'ta sunulmuştur. Bu makale özellik haritalarına odaklanır, derin sinir ağı eğitimi sırasında bellek tüketimini azaltmak için iki yöntem önerir ve bu yöntemlerin uygulanmasını TensorFlow'a sorunsuz bir şekilde entegre eder, bu da TensorFlow'un büyük modelleri eğitirken belleği etkin bir şekilde optimize edemeyen eksikliklerinin üstesinden gelir.
Son zamanlarda, derin öğrenme, farklı uygulamalarda giderek daha önemli bir rol oynadı. Derin öğrenme modellerini eğitmek için gerekli mantık, GPU'lara uygun paralel doğrusal cebir hesaplamalarını içerir. Bununla birlikte, fiziksel sınırlamalar nedeniyle, GPU'nun cihaz belleği (yani video belleği) genellikle ana belleğinden daha küçüktür. En yeni üst düzey NVIDIA GPU P100, 12-16 GB video belleğine ve bir CPU sunucusunda 128 GB ana bellek vardır. Ancak, derin öğrenme modellerinin trendi "daha derin ve daha geniş" bir mimaridir. Örneğin, ResNet 1001 nöron katmanı içerir, Sinir Ağı Makine Çevirisi (NMT) modeli dikkat mekanizmasını kullanan 8 katman içerir ve NMT modelindeki bireysel katmanların çoğu sıralı ve yatay olarak açılır, bu da kaçınılması zordur. Land, çok fazla video belleği tüketimi getiriyor.
Kısacası, sınırlı GPU belleği ile sürekli artan model karmaşıklığı arasındaki boşluk, bellek optimizasyonunu zorunlu hale getiriyor. Aşağıda, derin öğrenme eğitim sürecinde kullanılan GPU belleğinin ana bileşenleri tanıtılacaktır.
Özellik haritası. Derin öğrenme modeli için, özellik haritası, ileri iletimdeki bir katman tarafından oluşturulan bir ara çıktı sonucudur ve geri iletimin gradyan hesaplamasında bir girdi olarak kullanılır. Şekil 1, ImageNet veri kümesinde küçük bir toplu eğitim yinelemesi için ResNet-50'nin GPU bellek kullanım eğrisidir. Özellik haritalarının toplanmasıyla eğri en yüksek noktasına ulaşır. Özellik haritasının boyutu genellikle parti boyutu ve model mimarisine göre belirlenir (örneğin, CNN mimarisinin evrişim adım boyutu, çıkış kanallarının sayısı; kapı sayısı, zaman adımları ve RNN mimarisinin gizli katman boyutu). Giriş serbest bırakılacağı için artık gerekmeyen özellik haritasının kapladığı video belleği Şekil 1'deki video belleği doluluk eğrisinde bir düşüşe neden olur. Karmaşık model eğitimi için, kullanıcılar "yetersiz bellek" sorununu önlemek için parti boyutunu ayarlamalı veya model mimarisini yeniden tasarlamalıdır. Dağıtılmış eğitim durumunda, eğitim görevi, yetersiz bellek sorununu hafifletmek için birden fazla cihaza dağıtılabilir, ancak bu aynı zamanda ek iletişim yüküne de yol açar. Cihazın bant genişliği sınırlamaları da eğitim sürecini önemli ölçüde yavaşlatabilir.
Şekil 1: Bir eğitim adımında kullanılan ResNet-50'nin video belleğinin değişim eğrisi. Yatay eksen, tahsis / bırakma sayısını temsil eder ve dikey eksen, video belleği tarafından halihazırda işgal edilen toplam bit sayısını temsil eder.
Ağırlıklar. Özellik haritalarına kıyasla, ağırlıklar nispeten daha az bellek kaplar. Bu makalede, ağırlıklar, yalnızca tüm eğitim görevi tamamlandıktan sonra serbest bırakılabilen GPU belleğinde kalıcı bellek olarak kullanılmaktadır.
Geçici hafıza (Geçici hafıza). Bazı algoritmalar (Fast-Fourier-Transform (FFT) tabanlı evrişim algoritmaları gibi) çok fazla ek video belleği gerektirir. Bu video belleği işgalleri geçicidir ve hesaplama bittikten hemen sonra serbest bırakılacaktır. Geçici video belleğinin boyutu, GPU yazılım kitaplığındaki (cuDNN gibi) her algoritmanın numaralandırılmasıyla otomatik olarak ayarlanabilir, böylece göz ardı edilebilir.
Açıkçası, özellik haritası, GPU bellek kullanımının ana bileşenidir. Makalenin yazarı, özellik haritalarına odaklandı ve GPU bellek sınırlama sorununu çözmek için iki yöntem önerdi, yani genel "takas / giriş" yöntemi ve Seq2Seq modeli için uygun bellek açısından verimli dikkat katmanı. Tüm bu optimizasyonlar TensorFlow'a dayanmaktadır. TensorFlow yerleşik bir bellek ayırıcıya sahiptir ve "birleştirme ile en uygun" algoritmayı uygular. Ayırıcı, birleştirme yoluyla parçalanmayı desteklemek için tasarlanmıştır. Ancak, yerleşik bellek yönetimi stratejisi, büyük model eğitimi sırasında video belleği optimizasyonunu dikkate almaz.
Bu yazının katkısı aşağıdaki gibidir. Özellik haritalarına odaklanarak, derin sinir ağı eğitimi sırasında GPU bellek tüketimini azaltmak için iki yöntem önerilmektedir. Veri akış grafiğine dayalı "takas / giriş" yöntemi, ana belleği daha büyük bir bellek havuzu olarak kullanır, böylece GPU belleğinin üst sınırını gevşetir ve bellek açısından verimli dikkat katmanı, çok fazla bellek tüketen Seq2Seq modelini optimize etmek için kullanılabilir. Bu yöntemlerin uygulanması, TensorFlow'a sorunsuz bir şekilde entegre edilmiştir ve mevcut model mimarisinin açıklamasında herhangi bir değişiklik olmaksızın tüm modellere şeffaf bir şekilde uygulanabilir.
Kağıt: TensorFlow'da GPUMemory Optimizasyonu ile Daha Derin Modellerin Eğitimi
Yazar: Meng Chen, Sun Minmin, Yang Jun, Qiu Minghui, Gu Yang
Kağıt adresi:
https://github.com/LearningSys/nips17/blob/9ee207c054cf109bc4a068b1064b644d75d0381f/assets/papers/paper_18.pdf
Özet : Büyük veri çağının ortaya çıkması, GPGPU edinme maliyetlerinin azalması ve sinir ağı modelleme teknolojisinin gelişmesiyle birlikte, GPU'larda derin öğrenme modellerini eğitmek giderek daha popüler hale geldi. Bununla birlikte, derin öğrenme modellerinin doğal karmaşıklığı ve modern GPU'ların bellek kaynağı sınırlamaları nedeniyle, özellikle model boyutu tek bir GPU için çok büyük olduğunda, derin modellerin eğitimi hala zor bir iştir. Bu yazıda, ana bilgisayar belleğini GPU bellek sınırlamasının üstesinden gelmek için daha büyük bir bellek havuzu olarak ele alan "takas / giriş" adlı genel bir veri akış grafiğine dayalı bir GPU bellek optimizasyonu stratejisi öneriyoruz. Aynı zamanda, Seq2Seq modelini yüksek bellek tüketimiyle optimize etmek için özel bir optimizasyon stratejisi de önerdik. Bu stratejileri TensorFlow'a sorunsuz bir şekilde entegre ediyoruz ve optimizasyon doğruluk kaybına neden olmayacak. Çok sayıda deneyde bellek kullanımında önemli bir azalma gözlemledik. Sabit bir model ve sistem konfigürasyonu verildiğinde, maksimum eğitim grubu boyutu 2 ila 30 kat artırılabilir.
Şekil 2: Referans sayısı (referans sayısı)
Şekil 3: Değiştirme / optimize edilmiş atomik işlemde (Atomik işlem). Referans kenarı e düğümünden b düğümüne silin ve kırmızı ve mavi düğümler ve kenarlar ekleyin.
Şekil 4: Dikkat işlemi optimizasyonu. d gradyanı ifade eder. Soldaki resim optimize edilmemiş ve sağdaki resim video belleği için optimize edilmiştir.
Tablo 1: Takas / giriş değerlendirmesi, GPU belleğinin üst sınırı 12GB'dir.
Tablo 2: Belleği verimli kullanan sıra modelinin değerlendirilmesi.