Li Lin Shu Shi Derleme ve bitirme
Qubit Raporu | Genel Hesap QbitAI
Arama, sokak görünümü, fotoğraflar, çeviri, Google tarafından sağlanan bu hizmetlerin tümü, arkasındaki sinir ağı hesaplamasını hızlandırmak için Google'ın TPU'sunu (tensör işlemci) kullanır.
Google'ın PCB kartındaki ilk TPU'su ve TPU'nun dağıtıldığı veri merkezi
Google, TPU'yu geçen yıl piyasaya sürdü ve kısa süre önce bu çipin performansı ve mimarisi hakkında ayrıntılı bir çalışma yaptı. Basit sonuç şudur: Aynı dönemdeki CPU ve GPU ile karşılaştırıldığında TPU, 15-30 kat performans artışı ve 30-80 kat verimlilik (performans / watt) iyileştirme sağlayabilir.
Bu, Google'ın hizmetlerinin en gelişmiş sinir ağlarında büyük ölçekte çalışabileceği ve maliyetin kabul edilebilir bir düzeyde kontrol edilebileceği anlamına gelir. Aşağıdaki içerik, Google TPU'daki teknolojiyi derinlemesine yorumlayacak ve daha iyi performansın nasıl elde edileceğini tartışacaktır.
2006'nın başlarında Google, sinir ağları için uygulamaya özel bir entegre devre (ASIC) oluşturmayı düşünüyordu. Bu talep, Google'ın bilgi işlem talebindeki hızlı büyümenin veri merkezi sayısının karşılanması için iki katına çıkması gerektiği anlamına gelebileceğini fark ettiği 2013 yılında daha acil hale geldi.
Genel olarak, ASIC gelişimi birkaç yıl sürer. Ancak TPU söz konusu olduğunda, tasarımdan doğrulamaya, inşaata ve veri merkezine dağıtmaya kadar yalnızca 15 ay sürüyor.
TPU ASIC, ana frekansı 700MHz ve güç tüketimi 40W olan 28nm işlem kullanılarak üretilmiştir. TPU'yu mevcut sunuculara mümkün olan en kısa sürede dağıtmak için Google, bu yongayı harici bir genişletme hızlandırıcısında paketlemeyi ve ardından kullanım için SATA sabit disk yuvasına takmayı seçti. Bu nedenle, TPU, PCIe Gen3 x16 veri yolu üzerinden ana bilgisayara bağlanır, bu da 12,5 GB / sn'lik etkili bir bant genişliği anlamına gelir.
TPU'nun tasarım fikrini açıklamak için önce sinir ağı hesaplamasını tanıtmamız gerekiyor.
Bu bir TensorFlow Playground örneğidir. Verileri etiketlerle sınıflandırmak veya eksik verileri tahmin etmek veya gelecekteki verileri çıkarmak için bir sinir ağını eğitmek için kullanılır. Çıkarım için sinir ağındaki her nöron aşağıdaki hesaplamaları yapar:
Sinyal gücünü temsil etmek için giriş verileri (x) ağırlık (w) ile çarpılır
Ürünler toplanır ve nöronun durumunu temsil eden tek değer olur
Nöronları düzenlemek için ReLU, Sigmoid vb. Gibi aktivasyon fonksiyonunu (f) uygulayın
Sinir ağı, giriş verilerini ağırlık matrisiyle çarpar ve aktivasyon fonksiyonunu girer
Örneğin, üç giriş verisine ve iki tam bağlı nörona sahip tek katmanlı bir sinir ağı için, iki ürün setinin toplamını elde etmek için girişi ve ağırlığı altı kez çarpmak gerekir. Bu çarpma ve toplama dizisi bir matris çarpımı olarak yazılabilir ve ardından matrisin çıktısı aktivasyon işlevi aracılığıyla daha fazla işlenir.
Daha karmaşık sinir ağı mimarilerinde, çarpım matrisi genellikle hesaplama açısından en yoğun kısımdır.
Gerçek işte kaç tane çarpma gereklidir? Temmuz 2016'da, Google ekibi gerçek iş dünyasında altı temsili sinir ağı uygulamasını araştırdı. Sonuçlar aşağıdaki tabloda gösterilmektedir:
Yukarıdaki tabloda gösterildiği gibi, her bir sinir ağındaki ağırlık sayısı 5 milyon ile 100 milyon arasında değişmektedir. Her tahmin, girdi verisinin birçok adımının ağırlık matrisi ile çarpılmasını ve aktivasyon işlevine girilmesini gerektirir.
Sonuç olarak, hesaplama miktarı çok büyük. Optimizasyonun ilk adımı olarak Google, CPU veya GPU'daki tüm matematik işlerinde 32 bit veya 16 bit kayan nokta işlemleri gerçekleştirmek yerine tamsayı işlemleri gerçekleştirmek için niceleme adı verilen bir teknik uyguladı. Bu, gerekli bellek kapasitesini ve bilgi işlem kaynaklarını azaltabilir.
Genel olarak konuşursak, sinir ağının tahmini 32-bit veya 16 kayan nokta hesaplama doğruluğu gerektirmez Bazı metotlarla, sinir ağı 8-bitlik bir tamsayı ile tahmin edilebilir ve uygun doğruluğu koruyabilir.
Sözde niceleme, önceden ayarlanmış minimum ve maksimum değerler arasındaki herhangi bir değeri yaklaşık olarak belirlemek için 8 bitlik tamsayılar kullanan bir optimizasyon tekniğidir.
TensorFlow'da Niceleme
Niceleme, sinir ağı tahmininin maliyetini düşürmek için güçlü bir araçtır ve bunun getirdiği bellekteki azalma, özellikle mobil ve gömülü konuşlandırmalar için çok önemlidir. Örneğin, Inception'da nicelemeyi uyguladıktan sonra, bu görüntü tanıma modeli 91MB'den 23MB'ye sıkıştırılarak dörtte üçünü başarıyla kaybedebilir.
Kayan nokta hesaplamaları yerine tamsayıların kullanılması, TPU'nun donanım boyutunu ve güç tüketimini büyük ölçüde azaltır. Bir TPU saati 65.536 adet 8 bitlik tamsayı çarpanları içerir. Bulut ortamlarında kullanılan genel kullanıma yönelik GPU'lar genellikle binlerce 32 bit kayan nokta çarpanı içerir. 8 bit doğruluk gereksinimlerini karşılayabildiği sürece, performans artışının 25 katından fazlasını sağlayabilir.
Programlanabilirlik, TPU'nun bir diğer önemli tasarım hedefidir. TPU, belirli türde bir sinir ağını çalıştırmak için değil, birçok farklı model türünü hızlandırmak için tasarlandı.
Çoğu çağdaş CPU, azaltılmış bir komut seti (RISC) benimsemiştir. Ancak Google, daha karmaşık görevleri çalıştırmaya odaklanan TPU komut setinin temeli olarak karmaşık komut kümesini (CISC) seçti.
TPU'nun yapı şemasına bir göz atalım.
TPU, aşağıdaki bilgi işlem kaynaklarını içerir:
Matris Çarpma Birimi (MUX): 65,5368-bit çarpma ve matris hesaplamalarını çalıştırmak için toplama birimleri
Birleşik arabellek (UB): Kayıt olarak çalışan 24 MB kapasiteli SRAM
Aktivasyon ünitesi (AU): donanım bağlantısı için aktivasyon fonksiyonu
Hesaplama için MUX, UB ve AU'yu kontrol etmek için Google, sinir ağı çıkarımı için özel olarak tasarlanmış bir düzineden fazla üst düzey talimat tanımlamıştır. İşte beş örnek.
Kısacası, TPU tasarımı sinir ağı hesaplamasının özünü içerir ve çeşitli sinir ağı modelleri için programlanabilir. Google, programlama için ayrıca TensorFlow grafiklerinden API çağrılarını TPU talimatlarına dönüştürmek için bir derleyici ve yazılım yığını oluşturdu.
TensorFlow'dan TPU'ya: Yazılım Yığını
Tipik bir RISC işlemcisi, çarpma veya toplama gibi basit hesaplamalar için talimatlar sağlar. Bu şeylere skaler işlemciler denir çünkü her komut tek bir işlemi, yani skaler işlemi işler.
CPU, gigahertz'de saat hızına sahip olsa bile, bir dizi skaler işlem aracılığıyla büyük bir matrisin hesaplanmasının tamamlanması hala uzun zaman alıyor. Geliştirilen yöntem, aynı işlemi birden çok veri öğesi üzerinde aynı anda gerçekleştiren vektör işlemidir.
GPU'nun Akış İşlemcisi (SM), tek bir saat döngüsünde yüzlerce ila binlerce işlemi işleyebilen verimli bir vektör işlemcisidir.
TPU'ya gelince, Google, MXU'yu tek bir saat döngüsünde yüz binlerce işlemi, yani matris işlemlerini işleyebilen bir matris işlemci olarak tasarladı.
MXU, sistolik dizi adı verilen geleneksel CPU ve GPU'dan tamamen farklı bir mimariye sahiptir. Buna "titreşim" denir çünkü bu yapıda, kalbin kan sağlamak için atmasına benzer şekilde, veri dalga dalga çip dalgasından geçer.
Şekilde gösterildiği gibi, CPU ve GPU'nun her işlemde birden çok kayda erişmesi gerekir; TPU'nun sistolik dizisi, tek bir kayıttan çoklama yaparak birden çok aritmetik mantık birimini (ALU) seri olarak birbirine bağlar. Sonuçlar okundu.
MXU'daki ağırlık dizisi matris çarpımı için optimize edilmiştir ve genel hesaplamalar için uygun değildir.
Sistolik bir dizide, giriş vektörü ağırlık matrisi ile çarpılır
Sistolik bir dizide, girdi matrisi ağırlık matrisi ile çarpılır
MXU'nun sistolik dizisi 256 × 256 = 65.536 ALU içerir; bu, TPU'nun döngü başına 65.5368 bitlik tamsayı çarpma ve eklemeyi işleyebileceği anlamına gelir.
TPU, 700 MHz gücünde çalışır, yani saniyede 65.536 × 700.000.000 = 46 × 1012 çarpma ve toplama işlemi veya saniyede matris biriminde 92 trilyon (92 × 1012) işlem yapabilir.
TPU'da MXU
CPU, GPU ve TPU döngüsü başına aritmetik işlemleri karşılaştıralım:
Döngü başına hesaplama miktarı CPU'lar birkaç CPU (vektör genişletme) on binlerce GPU on binlerce TPU yüz binlerceKarmaşık komut seti hesaplamasına (CISC) dayanan bu matris işlem tasarımı, mükemmel bir performans-güç oranı sağlar: TPU'nun performans-güç oranı, aynı dönemin CPU'sundan 83 kat, aynı dönemin GPU'sundan 29 kat daha güçlüdür.
Minimalist Bu noktadan daha önce Google tarafından yayınlanan TPU makalesinin 8. sayfasında bahsedilmişti. CPU ve GPU ile karşılaştırıldığında, tek amaçlı TPU tek iş parçacıklı bir çiptir ve önbelleğe alma, dal tahmini ve çoklu işlem gibi sorunları dikkate alması gerekmez.
TPU'nun tasarımı, kalıbın plan görünümünden de görülebileceği gibi basittir:
Sarı, aritmetik birimi temsil eder; mavi, veri birimidir; yeşil, G / Ç'dir, kırmızı, kontrol mantık birimidir.
CPU ve GPU ile karşılaştırıldığında, TPU'nun kontrol birimi daha küçüktür ve tasarımı daha kolaydır. Alan, tüm kalıbın yalnızca% 2'sini kaplar ve çip üzerinde bellek ve bilgi işlem birimi için daha fazla yer bırakır. Dahası, TPU'nun boyutu diğer yongaların yalnızca yarısıdır. Silikon levha ne kadar küçükse, maliyet o kadar düşük ve verim o kadar yüksek olur.
ve Kesinlik Tek kullanımın getirdiği bir diğer avantajdır. CPU ve GPU'nun çeşitli görevlerde performans optimizasyonunu dikkate alması gerekir, bu nedenle gittikçe daha karmaşık mekanizmalar olacaktır ve yan etki, bu işlemcilerin davranışının çok öngörülemez olmasıdır.
TPU ile bir sinir ağını çalıştırmanın ve bir tahmin almanın ne kadar süreceğini kolayca tahmin edebiliyoruz.Bu şekilde, gecikmeyi sıkı bir şekilde kontrol ederken çipin iş hacminin zirveye yakın olduğu bir durumda çalışmasını sağlayabiliriz.
Örnek olarak yukarıda bahsedilen MLP0'ı ele alalım.Gecikmenin 7 milisaniye içinde kontrol edildiği durumda, TPU'nun verimi CPU ve GPU'nunkinin 15 ila 30 katıdır.
Çeşitli işlemcilerde saniyede çalıştırılabilir MLP0 tahminleri
Aşağıda TPU, CPU ve GPU'nun altı sinir ağındaki performansının bir karşılaştırması bulunmaktadır. CNN1'de TPU performansı, CPU'nun 71 katına ulaşan en şaşırtıcı performans.
Yukarıda belirtildiği gibi, TPU'nun güçlü performansının sırrı, sinir ağı çıkarımına odaklanmasıdır. Bu, niceleme seçeneklerini, CISC komut setlerini, matris işlemcileri ve minimal tasarımları mümkün kılar.
Sinir ağları, bilgi işlem modellerinin dönüşümünü yönlendiriyor. Google, önümüzdeki birkaç yıl içinde TPU'nun hızlı, akıllı ve uygun fiyatlı önemli bir çip haline geleceğini tahmin ediyor.
Orijinal Google Cloud'da yayınlandı
Yazar:
Google Cloud Kaz Sato, Personel Geliştirici Destekçisi
Cliff Young, Yazılım Mühendisi, Google Brain Yazılım Mühendisi
David Patterson, Google Brain'in Üstün Mühendisi
Bitiş
İşe Alım
Qubit, editörleri, muhabirleri, operasyonları, ürünleri ve diğer pozisyonları işe alıyor ve çalışma yeri Pekin, Zhongguancun'da bulunuyor. İlgili ayrıntılar için lütfen şu yanıtı verin: resmi hesabın diyalog arayüzünde "İşe Alım".
Bir şey daha...
Bugün AI dünyasında dikkat etmeye değer başka ne var? Yapay zeka endüstrisini ve tüm ağımızdan toplanan araştırma eğilimlerini görmek için QbitAI genel hesap diyalog arayüzünde "bugün" yanıtını verin. Yeniden doldur ~