Leifeng.com'un basını: Bu makalenin kaynağı StarryHeavensAbove, yazar: Tang Shan, Leifeng.com'un izniyle yeniden basılmıştır.
Yapay zeka popüler hale gelmeden önce, Bulut veya Veri Merkezi, çeşitli hızlandırmalar için FPGA'leri kullanmaya başlamıştı. Derin Öğrenmenin patlak vermesiyle bu talep gittikçe güçleniyor. Bu makale esas olarak Bulut devleri Amazon ve Microsoft'un FPGA stratejilerini tartışıyor.
Microsoft Build 2017 konferansında, Microsoft Azure bulut bilişim platformunun CTO'su Mark Russinovich, Azure platformunda FPGA kullanımını tanıtan "Inside Microsoft'un FPGA Tabanlı Yapılandırılabilir Bulutu" başlıklı bir konuşma yaptı (izlemek için makalenin sonundaki orijinal metne tıklayabilirsiniz. Video); Ayrıca Amazon'un "Amazon EC2 F1 Bulut Sunucuları" web sitesinde AWS'nin FPGA hizmetini tanıtan bir Webinar videosu bulunmaktadır. Bu makale, bundan sonra sırasıyla MS ve AWS olarak anılacak olan bu iki dersi tartışacaktır.
Akıllı bulutun veri işleme talebi
Talep perspektifinden bakıldığında, bulut zekasının veri işleme için daha yüksek gereksinimleri vardır ve bu, devasa ölçek, düşük gecikme süresi ve yüksek verim olarak yansıtılır. Bu bakış açılarından, FPGA'lerin kendilerine özgü avantajları vardır.
Bulutta FPGA dağıtan AWS tarafından hedeflenen ana uygulamalar şunlardır: Gerçek Zamanlı Video İşleme, Finansal Analiz, Genomik Araştırma, Büyük Veri Arama ve Analitik ve Seurity. AI ve Deep Learning burada özel olarak belirtilmese de, bu uygulamalar aslında AI teknolojisi ile ilgilidir. Ve beklenen hedefleri aşağıdaki gibidir:
FPGA'nın tam adı "Alan Programlanabilir Kapı Dizisi" (Field Programmable Gate Array) 'dir ve temel prensibi çok sayıda dijital devre temel geçit devrelerini, bellek ve ara bağlantı hat kaynaklarını çipte entegre etmektir ve kullanıcılar FPGA'yı "programlayabilir" ( Bu kapıların fonksiyonlarını ve modüller arasındaki kablolamayı tanımlamak için yapılandırma dosyalarını programlama). Bu tür bir "programlama" tek seferlik değildir, FPGA'yı bir codec olarak tasarlayabilirsiniz, yapılandırma dosyasını değiştirdiğiniz sürece bir CPU olabilir, bu aynı zamanda yeniden yapılandırılabilir kavramıdır. Elbette FPGA bize donanım devrelerini istediğimiz gibi uygulama esnekliği sağlarken, tasarımcıların donanım tasarımı bilgi ve becerisine sahip olmasını da gerektirir. Bu, CPU ve GPU'nun yazılım programlama yöntemlerinden çok farklıdır veya daha yüksek bir uygulama eşiğine sahiptir.
Şu anda, ana FPGA yonga üreticileri Xilinx ve Intel (Altera), AWS çoğunlukla Xilinx FPGA ve MS, Intel FPGA kullanıyor. FPGA'nın iç yapısına detaylı bir şekilde bakmadan önce karşılaştırarak özelliklerine bir göz atalım.
Aslında son zamanlarda bu tür pek çok karşılaştırma var ve bundan önceki yazımda bahsetmiştim. MS, CPU, GPU, FPGA ve ASIC'i Esneklik VS Verimlilik açısından karşılaştırır.Bu da sıklıkla kullandığımız bir yöntemdir. tekrar vurgulayın, Esneklik (çok yönlülük) verimlilik kaybı anlamına gelmelidir ve bunun tersi de geçerlidir .
Ek olarak, Üye Devlet figüründe FPGA'nın esas olarak Değerlendirmede (veya sık sık söylediğimiz gibi Çıkarımda) kullanıldığına inandıkları görülmektedir. İlginç olan, ASIC çözümünün hem Eğitimde hem de Değerlendirmede sanki Google'ın TPU'sunu unutmuş gibi hala "araştırılıyor" olduğunu düşünmeleridir.
AWS başka bir perspektiften bir karşılaştırma sunar. CPU'nun en büyük esnekliğini ve çok yönlülüğünü elde etmek için, çipteki çip alanının büyük bir kısmı kontrol işlevleri sağlamak için kullanılır (Önbellek gibi karmaşık depolama mimarileri dahil) ve GPU'da Çipin hesaplama alanı büyük ölçüde artmıştır ve büyük ölçekli paralel işlemeyi destekleyebilir FPGA'lara gelince, önceden tanımlanmış komut seti kavramı ve kesin veri bit genişliği yoktur. Bunları uygulamaya göre tasarlayabilirsiniz. Yalnızca birkaç talimatı destekleyen bir işlemci tasarlayabilirsiniz; ayrıca talimatlar olmadan yalnızca veri kanallarını ve basit kontrol mantığını tasarlayabilirsiniz.
Aşağıdaki şekil, MS'in veri işleme için CPU ve FPGA özelliklerini karşılaştıran dersinden alınmıştır.
CPU bir zaman hesaplama modeli olarak kabul edilebilir, talimatlar sırayla girilir ve her komut belirli verileri işler. FPGA uzamsal bir hesaplama modeli olarak kabul edilebilir, büyük miktarda veri paralel olarak işlenebilir. CNN'nin evrişim işlemi gibi Derin Öğrenme işlemi, uzamsal hesaplama modelleri için çok uygun bir örnektir. Bu noktayı bir önceki makalede "Derin Sinir Ağı Modeli · Donanım Ortak Optimizasyonu" nda tanıtmıştım. Aşağıda FPGA'nın iç yapısına detaylı bir şekilde bakalım.
FPGA'daki birkaç önemli temel modül (Xilinx'in açıklamasına göre) şunları içerir:
CLB (Yapılandırılabilir Mantık Bloğu) : Temel birleşimsel mantık ve ardışık devreleri gerçekleştirebilen FPGA'nın en temel bileşeni. Bunlar arasında, LUT (Arama Tabloları), n girişin herhangi bir kombinasyonel mantık işlemini gerçekleştirebilen kombinasyonel mantığı gerçekleştiren kısımdır (farklı FPGA türleri farklıdır, aşağıdaki örnekte 6 giriş vardır). Ve CLB'nin çıkış konumunda, sıralı devrenin işlevini sağlayan bir kayıt vardır.
DSP Slice : Çarpma ve biriktirme gibi işlevleri doğrudan gerçekleştiren, CLB'den daha kaba taneli aritmetik bir birimdir. Aşağıdaki şekilde gösterildiği gibi, DSP işlemcide kullandığımız MAC birimine benzer:
Ek olarak, genel FPGA ayrıca yonga üzerinde Bellek modülleri (Blok RAM, UltraRAM), çeşitli yüksek hızlı arabirimler, IP ve birçok yardımcı devre sağlar. Farklı uygulama gereksinimlerine göre, FPGA'nın bazı modelleri de SoC'dir ve aynı zamanda işlemci çekirdeklerini (ARM gibi) ve hatta video codec bileşenini ve diğer işlevleri entegre eder.
Aşağıdaki tablo, Xilinx Virtex UltraScale + FPGA serisinin belirli parametrelerini listeler. Daha sonra tanıtılacak AWS F1 bulut sunucusu VU9P'yi kullanır.
Burada CLB Flip-Flop, CLB LUT ve DSP Slice sayısını ve bellek sayısını gözlemleyerek temel olarak FPGA'nın ölçeğini, yani bu FPGA üzerinde ne kadar büyük ölçekli dijital devrelerin uygulanabileceğini anlayabiliriz.
Öncelikle, hızlandırma işlevi olarak FPGA'nın Ana İşlemci CPU ile çalışması gerekir. Örneğin, aşağıdaki şekilde, bir uygulamanın birçok hesaplama gerektiren ve FPGA tarafından işlenmeye daha uygun olan bir filtre işlevi vardır; esas olarak kontrolle ilgili diğer işlevler ise çalışmak için CPU'ya yerleştirilir.
FPGA uygulamalarının genellikle büyük bir veri çıkışını desteklemesi gerektiğinden, bu yüksek bellek bant genişliği ve G / Ç ara bağlantı bant genişliği gerektirir. Veri aktarımının bant genişliği sınırlıysa, FPGA'ların sağladığı devasa paralel hesaplama yetenekleri hiç çalışmayacaktır. Bulutta FPGA dağıtmak için bir diğer önemli zorluk, FPGA'ların bilgi işlem gücünün bulutun geniş ölçekli esnek bilgi işlem mimarisine nasıl entegre edileceğidir.
MS ve AWS'nin FPGA dağıtımına bir göz atalım. MS Azure'daki mevcut FPGA'nın esas olarak dahili olarak kullanıldığını ve kamu hizmeti olarak kullanılmadığını belirtmek gerekir; AWS ise EC2 F1 bulut sunucusunun (bulut sunucusu) FPGA hizmetini zaten sağlamıştır.
MS'in Catapult V2 mimarisine aşağıda gösterildiği gibi bir göz atalım:
Catapult V2 kartında bir Altera Stratix FPGA ve yerel DRAM vardır Bu kartta harici bağlantı için üç arabirim, bir PCIe ve iki QSFP bulunur. Bu mimaride, FPGA ile WCS Server Blade arasındaki bağlantı çok esnektir ve aynı zamanda büyük bir aktarım hızını destekler. FPGA, ağ uygulamalarını (NIC'den Switch'e kanal), depolama uygulamalarını (CPU'dan Switch'e kanal) ve Hesaplama uygulaması (CPU ve FPGA) hızlandırma. Ve bu mimari, aşağıdaki şekilde gösterildiği gibi oldukça ölçeklenebilir.
Birbirine bağlanan FPGA'lar bağımsız bir bilgi işlem katmanı oluşturabilir. Derin sinir ağı, Web arama sıralaması, SQL, SDN aktarımı vb. Gibi farklı hızlandırma işlevlerini elde etmek için birden fazla FPGA birleştirilebilir.
MS ayrıca bir HW Mikro Hizmetler konseptini de önerdi: "Veri merkezi hesaplama yapısı üzerinden dağıtılabilen ve erişilebilen, yalnızca donanımdan oluşan kendi kendine yeten bir hizmet". Bu Mikro Hizmetleri kullanmanın aşağıdaki avantajları vardır:
Genel olarak, FPGA kaynaklarını daha etkin bir şekilde paylaşmak ve kullanmak için daha fazla esneklik vardır. DNN uygulamaları için MS ayrıca özel bir mimari önerdi. İlk olarak, Neural FU (veri kanalı) ve Instruction Decodercontrol (kontrol düzlemi işlevi) dahil olmak üzere FPGA üzerinde DNN Engine sağlayın. Ve birden fazla FPGA, dağıtılmış işlemeyi gerçekleştirmek için büyük ölçekli HW mikro hizmetleri olarak dağıtılabilir.
Buna karşılık olarak MS, ortak Derin Öğrenme Çerçevesinde eğitilmiş modelleri bir veya daha fazla FPGA'ya (GPU'lar ve CPU'lar dahil) otomatik olarak dağıtabilen bir dizi "derleme" aracı geliştirmektedir.
Ancak, bu iyi görünen tasarımlar ve işlevler şu anda bizim için mevcut değil ve yalnızca MS halka açık sürüm için hazır olduğunda kullanılabilir. Mark Russinovich sonunda şöyle dedi: "Bunu size eninde sonunda sunmayı dört gözle bekliyoruz, FPG'nin gücüyle yapay zekayı demokratikleştirmeye doğru büyük bir adım A ". Umarım bu sefer çok uzak olmaz.
Nispeten konuşursak, AWS'nin FPGA bulut hizmeti bize daha yakın. Özellikleri aşağıdaki şekilde gösterilmektedir:
Bunlar arasında f1.16xlarge, 64 vCPU'lu, 1T Belleğe yakın 8 FPGA'dan oluşuyor ve ölçek oldukça büyük. Her FPGA 4 DDR'yi bağlar. FPGA'lar arasında iki ara bağlantı yöntemi vardır.Birincisi, seri olarak çoklu FPGA akışının uygulanmasını desteklemek için kullanılan iki yönlü halka bağlantısı olan FPGA Bağlantısı; diğeri ise FPGA Direct'tir. Nokta PCIe bağlantısı, bir FPGA'dan başka herhangi bir FPGA'ya bağlanabilir. Buna ek olarak, FPGA G / Ç tasarımını basitleştirmek için AWS, FPGA Shell konseptini de önerdi. Aşağıda gösterildiği gibi:
Shell konseptini çok net görmüyorum, ancak FPGA I / O'yu kapsadığını hissediyorum. FPGA'nın dahili mantığı, AXI4 arayüzü aracılığıyla Shell ile bağlantılıdır, Shell harici PCIe ve bir DDR arayüzü sağlar; ve yukarıda bahsedilen FPGA Bağlantısı (inter-FPGA ara bağlantısı) ve diğer üç DDR arayüzü Core Logic'te görünüyor. Yanlış görürsem lütfen beni düzeltin.
AWS F1'in geliştirme süreci ve kullanılan araçlar aşağıdaki şekilde gösterilmektedir:
Bu süreç, ortak FPGA geliştirme sürecimize benzer. Ancak yine de FPGA Developer AMI (AWS tarafından sağlanan araç görüntüsü) ve Hardware Developer Kit (HDK) kullanmanız ve son olarak Amazon FPGA Image (AFI) oluşturması gerekiyor. FPGA tasarım ve uygulama aracı, Xilinx'in kendi aracı Vivado'yu kullanır.
Şu anda AWS, özellikle Derin Öğrenme Inferece için araçlar ve donanım mimarisi sağlamıyor gibi görünüyor (DNN Motoru ve önceki MS'de bahsedilen ilgili yazılım araçları gibi). Bu nedenle, ilgili çalışmaları yapan öğrenciler için ilgili yazılım ve donanım sistemlerini kendileri tasarlamaları gerekir.
Son olarak yerli oyunculara bakıyoruz. Şu anda, Alibaba Cloud ve Tencent Cloud da FPGA hizmetlerini başlattı, ancak ikisi de deneme aşamasında. Bunların arasında, Alibaba Cloud'un F1 örneğinin Spec ve araç zincirine açık bir girişi vardır:
FPGA hesaplama örneği belirtim ailesi (f1)
Spesifikasyon Ailesinin Özellikleri:
INTEL ARRIA 10 GX 1150 bilgi işlem kartını kullanma
CPU ve Bellek oranı 1: 7.5'tir
İşlemci: Intel Xeon E5-2682 v4 (Broadwell) 2,5 GHz
Yüksek performanslı yerel SSD disk depolaması
Örnek ağ performansı, bilgi işlem özelliklerine karşılık gelir (özellik ne kadar yüksekse, ağ performansı o kadar güçlü olur)
Uygulanabilir sahne:
1. Derin öğrenme muhakemesi için uygundur
2. Genomik araştırması, finansal analiz
3. Video işleme ve güvenlik gibi hesaplamalı iş yükleri
Araç zinciri, Altera FPGA'nın kendi araçlarını kullanır ve yöntem AWS'ye benzer. Ancak, Tencent Cloud'un daha az halka açık bilgisi var, bu yüzden burada tartışmayacağım.
sonuç olarak:
Bu makale kısaca Amazon ve Microsoft'un Bulutta FPGA hızlandırmayı nasıl kullandığını analiz eder. Google'ın Derin Öğrenme için TPU (ASIC) tasarımıyla karşılaştırıldığında FPGA, verimlilikte bir boşluk olmasına rağmen esneklik açısından kendi avantajlarına sahiptir. İster AWS'de ister Azure'da, FPGA'lar farklı hızlandırma görevlerinde daha yaygın olarak kullanılabilir. Tam bir ekoloji oluşturmak için daha iyi bir geliştirme ortamıyla işbirliği yapabilirse, gelecekte bulutta geliştirme için daha fazla alana sahip olacağına inanıyorum.