[Kodu otomatik olarak derleyin] Chen Tianqi ekibi TVM ana güncellemesi: GPU'yu doğrudan tarayıcıda kullanın

[2018 Xinzhiyuan AI Teknoloji Zirvesi için 16 günlük geri sayım]

Nobel Ödülü'nün bilgisayar alanındaki tek hakemi burada ve zirvede ilk konuk grubu belli oldu

Erken kuş biletleri tükendi ve şimdi resmen tam bilet aşamasına girdiler. Pekin'de yapılacak 2018 Çin AI Açılış Töreni-2018 Xinzhiyuan AI Teknoloji Zirvesi Son olarak, Almanya Başbakanı Merkel'in bilimsel danışmanı, bilgi işlem alanındaki tek Nobel Ödülü jürisi, Endüstri 4.0'ın vaftiz babası ve dünyanın en iyi doğal dil işleme uzmanı Profesör Wolfgang Wahlste'yi davet ettik. Profesör Wahlster, yapay zeka teknolojisinin gelişimi ve AI sanayileşmesi hakkındaki Avrupa düşüncelerini paylaşmak için 329 zirvesini ziyaret edecek. Nobel Ödülü jürisinin tavrını canlı görmek istiyorsanız, bilet kapma bağlantısına tıklayın ve hemen katılın!

Bilet kapma bağlantısı:

Xinzhiyuan Raporu

Kaynak: tvmlang.org

Yazar: Xiao Qin, Wen Qiang

Xin Zhiyuan Rehberi Washington Üniversitesi Chen Tianqi ekibinden derin öğrenme otomatik optimizasyon kodu oluşturucu TVM bir güncelleme yayınladı. Bir satır Javascprit kodu yazmadan, derin öğrenme modeli doğrudan WebGL'de derlenebilir ve ardından tarayıcıda çalıştırılabilir.

Bugün, Washington Üniversitesi'ndeki Chen Tianqi ekibi tarafından geliştirilen TVM bir güncelleme yayınladı.Derin öğrenme modelini herhangi bir JavaScript kodu yazmadan doğrudan WebGL / OpenGL'ye derleyebilir ve ardından tarayıcıda çalıştırabilirsiniz.

Derin öğrenme, TensorFlow, MXNet, Caffe ve PyTorch gibi ölçeklenebilir derin öğrenme sistemlerinden ayrılamaz, ancak çoğu, küçük bir donanım platformu yelpazesi (sunucu düzeyinde GPU'lar gibi) için optimize edilmiştir. Diğer platformlara uyum sağlamak önemli mühendislik maliyetleri gerektirir ve Maliyet, derin öğrenme sistemlerinin esnek dağıtımına meydan okuyor.

Çok sayıda farklı derin öğrenme çerçevesi (programlama dili) ve giderek daha fazla donanım mimarisi, ikisi arasında bir köprü gerektirir. TVM çerçevesi, araştırmacıların ve geliştiricilerin, cep telefonlarından, gömülü cihazlardan düşük güçlü özel yongalara kadar çeşitli farklı donanımlarda hızlı ve kolay bir şekilde derin öğrenme uygulamalarını dağıtmalarını sağlamak için tasarlanmış bu amaç için doğmuştur. Pil gücünden veya hızından ödün vermeden.

TVM, sinir ağı ile donanım arka ucu arasında ortak bir katmandır.Her cihaz veya sunucu türü için ayrı bir altyapı kurmaya gerek yoktur. Çerçeve, geliştiricilerin çeşitli farklı donanım cihazlarında hızlı bir şekilde çalışmasını sağlar. Derin öğrenme sistemlerini kolayca devreye alın ve optimize edin, araştırmacıların yeni algoritmaların uygulanmasını hızlı bir şekilde optimize etmesine, yeni fikirleri doğrulamasına ve derin öğrenme araştırması alanında işbirliğine dayalı donanım ve yazılım tasarımını teşvik etmesine yardımcı olun.

Yeni yayınlanan OpenGL / WebGL arka uç desteği

TVM zaten birden fazla donanım arka ucunu destekliyor: CPU, GPU, mobil cihazlar vb. Bu sefer başka bir arka uç ekledik: OpenGL / WebGL .

OpenGL / WebGL, GPU'yu CUDA'nın kurulu olmadığı bir ortamda kullanmamızı sağlar. Şu anda, GPU'yu tarayıcıda kullanmanın tek yolu budur.

Bu yeni arka uç, OpenGL / WebGL'yi 3 şekilde kullanmamıza olanak tanır:

  • Yerel OpenGL : Derin öğrenme modelini OpenGL'de derleyip sadece Python kullanarak doğrudan yerel makinede çalıştırabiliriz.

  • RPC ile WebGL : Derin öğrenme modelini WebGL'de derleyebilir ve JavaScript ana bilgisayar kodu ve WebGL cihaz kodu ile paylaşılan bir kitaplık olarak dışa aktarabiliriz. Ardından, bu paylaşılan kitaplığı RPC aracılığıyla TVM JavaScript çalışma zamanı sistemine dağıtabilir ve tarayıcıda çalıştırabiliriz.

  • Statik kitaplıklı WebGL : Derin öğrenme modelini WebGL'de derleyebilir, TVM JavaScript çalışma zamanı sistemine bağlayabilir ve tüm paketi dışa aktarabiliriz. Ardından, modeli tarayıcının web sayfasında bağımlılık olmadan çalıştırabilirsiniz. Ayrıntılı süreç Şekil 1'de gösterilmektedir.

Şekil 1

Yukarıdaki üç yöntem için demo kodu: https://github.com/dmlc/nnvm/blob/master/tutorials/from_mxnet_to_webgl.py

Bunun X'ten farkı nedir?

Tarayıcıda sinir ağlarını çalıştırmak çok yeni değil. Andrej Karpathy tarafından önerilen ConvNetJS ve Google'dan DeepLearning.JS bu tür fikirlerdir.

Peki, WebGL kullanan TVM ile ilgili benzersiz olan nedir? En büyük fark, TVM'deki işletim çekirdeğinin manuel yerine otomatik olarak derlenmesidir. Şekil 2'de gösterildiği gibi, TVM çekirdeği tanımlamak için birleşik bir AST kullanır ve onu farklı platformlarda kodlar halinde derler.

şekil 2

Bunun anlamı:

  • Mevcut modelleri WebGL'ye dağıtmak için çok fazla ek kod yazmanıza gerek yoktur. NNVM / TVM model tanımı tüm hedefler için aynıdır, bu nedenle onu yalnızca yeni hedefe derlemeniz gerekir.

  • Yeni bir işletim sistemi çekirdeği eklemek istiyorsanız, bunu her hedef için bir kez uygulamak yerine TVM'de yalnızca bir kez tanımlamanız gerekir. WebGL'ye yeni bir işletim sistemi çekirdeği eklemek için GLSL kodunu nasıl yazacağınızı bilmenize gerek yok!

Kıyaslama

Burada, tipik bir iş yükü için bir karşılaştırma testi gerçekleştiriyoruz: resnet18 kullanarak görüntü sınıflandırması.

5 yaşındaki 8 çekirdekli Intel® Core i7-3610QM dizüstü bilgisayar ve GTX650M kullanıyorum.

Bu kıyaslama testinde resnet18 modelini Gluon model kitaplığından indirdik ve kedi resimlerini uçtan uca sınıflandırdık. Sadece model yürütme süresini ölçtük (model / girdi / parametre yüklemesi hariç) ve her model ortalamayı elde etmek için 100 kez çalıştırıldı. Sonuç, Şekil 3'te gösterilmektedir.

resim 3

Kıyaslama aşağıdaki 4 farklı ayar altında yürütülmüştür:

  • CPU (LLVM) : Model LLVM IR ve JIT'de derlenir ve tamamen CPU üzerinde çalışır.

  • OpenCL : Model OpenCL'de derlenmiştir. Bazı yapıştırıcı kodları, OpenCL çekirdeğini kurmak ve başlatmaktan sorumlu olan LLVM'ye derlenir. Ardından yerel makinede çalıştırıyoruz.

  • OpenGL : OpenCL ile aynı, ancak OpenGL olarak derlendi.

  • WebGL : Tutkal kodu LLVM'ye derlenir ve Emscripten kullanılarak JavaScript'e dönüştürülür. Cihaz kodu WebGL'de derlenir. Modeli Firefox'ta çalıştırıyoruz.

Yukarıdaki sonuçlardan da görülebileceği gibi, TVM OpenGL arka ucu OpenCL ile benzer performansa sahiptir. İlginç bir şekilde, tarayıcının WebGL sürümü masaüstü OpenGL'den çok daha yavaş değildir. Ana bilgisayar kodunun JavaScript olduğu düşünüldüğünde bu şaşırtıcıdır. Bunun nedeni, Firefox'ta önemli ölçüde optimize edilebilen Emscripten tarafından oluşturulan asm.js olabilir.

Bu, derin öğrenme modelini bir web tarayıcısında otomatik olarak derlemenin ilk adımıdır. Optimizasyonu TVM yığınına getirdiğimizde, daha fazla performans iyileştirmesi beklenebilir.

TVM: Uçtan uca optimize edilmiş bir yığın

TensorFlow, MXNet, Caffe ve PyTorch gibi genişletilebilir çerçeveler şu anda derin öğrenme alanındaki en popüler ve pratik çerçevelerdir. Bununla birlikte, bu çerçeveler yalnızca sınırlı bir sunucu düzeyinde GPU aralığı için optimize edilmiştir.İş yüklerini diğer platformlara (cep telefonları, yerleşik cihazlar ve özel hızlandırıcılar, FPGA'lar, ASIC'ler vb.) Dağıtmak istiyorsanız, çok fazla zahmetli çalışma gerekir. Farklı donanım arka uçları için derin öğrenme iş yüklerinin performans taşınabilirliğini sağlamak için grafik düzeyinde ve operatör düzeyinde optimizasyona sahip uçtan uca bir optimizasyon yığını TVM öneriyoruz. TVM'nin derin öğrenme optimizasyonunu çözme konusundaki zorluklarını tartıştık: yüksek seviyeli operatör füzyonu, iş parçacıkları arasında düşük seviyeli belleğin yeniden kullanımı, keyfi donanım ilkelerinin eşlenmesi ve bellek gecikmesi gizleme. Deneysel sonuçlar, TVM'nin birden fazla donanım arka ucundaki performansının, düşük güçlü CPU'ları ve sunucu düzeyinde GPU'ları destekleyen mevcut optimum kitaplıklarla karşılaştırılabilir olduğunu göstermektedir. Ayrıca, FPGA tabanlı genel derin öğrenme hızlandırıcıları üzerinde yapılan deneyler aracılığıyla TVM'nin yeni donanım hızlandırıcı arka uca uyarlanabilirliğini de gösterdik. Derleyici altyapısı açık kaynaklıdır.

Şekil 4: CPU, GPU ve TPU hızlandırıcılar, farklı yonga üzerinde depolama mimarileri ve bilgi işlem temelleri gerektirir. Optimize edilmiş kod oluştururken bu sorunu dikkate almalıyız.

Birden fazla donanım arka ucuna uyum sağlamak için derin öğrenmenin iş yükünü azaltabilen ve ince ayar yapabilen uçtan uca optimize eden bir derleyici yığını olan TVM'yi öneriyoruz (Şekil 5'te gösterildiği gibi). TVM, algoritma tanımını, çizelgesini ve donanım arayüzünü ayırmak için tasarlanmıştır. Bu ilke, Halide'nin hesaplamayı / çizelgeyi ayırma fikrinden esinlenmiştir ve çizelgeyi hedef donanımın dahili işlevlerinden ayırarak genişletilmiştir. Bu ek ayrım, yeni özel hızlandırıcıları ve bunlara karşılık gelen yeni dahili işlevleri destekleyebilir.

Şekil 5: TVM yığın diyagramı. Mevcut yığın, çeşitli derin öğrenme çerçevelerini, genel CPU'ları, GPU'ları ve özel derin öğrenme hızlandırıcılarını destekler.

TVM'nin iki optimizasyon katmanı vardır: biri Hesaplamalı grafik optimizasyon katmanı ; Diğeri yeni zamanlama ilkelleri ile Tensör optimizasyon katmanı . Bu iki optimizasyon katmanını birleştiren TVM, çoğu derin öğrenme çerçevesinden model açıklamaları alabilir, yüksek düzeyli ve düşük düzeyli optimizasyonlar gerçekleştirebilir ve Raspberry Pi, GPU ve özel FPGA tabanlı hızlandırıcılar gibi arka uç için belirli donanımlar için optimize edilmiş kod üretebilir. Bu araştırmanın katkıları şu şekildedir:

  • Gelişmiş çerçevelerde (Caffe, MXNet, PyTorch, Caffe2, CNTK dahil) belirtilen derin öğrenme iş yüklerini çeşitli donanım arka uçlarına (CPU, GPU ve FPGA tabanlı dahil) dağıtabilen uçtan uca bir derleme optimizasyon yığını oluşturduk Accelerator ve bugün yayınlanan OpenGL / WebGL arka ucu).

  • Farklı donanım arka uçlarında derin öğrenme iş yükleri için performans taşınabilirliği sağlamanın ana optimizasyon zorluğunu öneriyoruz ve iş parçacığı arası belleğin yeniden kullanımından, yeni donanım dahili işlevlerinden ve gecikme gizlemeden yararlanmak için yeni bir zamanlama ilkelliği sunuyoruz.

  • TVM'yi FPGA tabanlı genel hızlandırıcılar üzerinde değerlendiriyoruz ve belirli hızlandırıcılara nasıl en iyi şekilde uyarlanacağına dair özel durumlar sunuyoruz.

  • Derleyicimiz konuşlandırılabilir kod oluşturabilir, performansı mevcut en iyi kitaplıklarla karşılaştırılabilir ve yeni ayrılmış hızlandırıcı arka uçlarına uyum sağlayabilir.

Şekil 6: İki katmanlı bir evrişimli sinir ağının hesaplama diyagramına bir örnek. Grafikteki her düğüm bir işlemi temsil eder, bir veya daha fazla tensör tüketir ve bir

Daha fazla ayrıntı için lütfen makaleyi okuyun: https://arxiv.org/pdf/1802.04799.pdf

XLA - TVM: Derin Öğrenme "Ara Temsil" Tartışması

Yapısal bakış açısından, TVM, derin öğrenme orta düzey gösterimi (IR) yığınının eksiksiz bir temel katmanıdır ve yüksek düzeyli sinir ağı algoritmalarını derlemek ve belirli donanım platformları için uygun düşük düzey oluşturmak için yeniden kullanılabilir bir araç zinciri sağlar. Makine kodu.

Bir derleyici oluşturma yönteminden yola çıkan ekip, NNVM (görev zamanlaması ve bellek yönetimi için yüksek seviyeli IR) ve TVM'den (optimize edilmiş bilgi işlem çekirdeği için düşük seviyeli IR) oluşan iki seviyeli bir ara katman oluşturdu. TVM, giyilebilir cihazlardan üst düzey bulut bilişim sunucularına kadar çeşitli donanım platformlarının ihtiyaçlarını karşılamak için isteğe göre ayarlanabilen bir dizi yeniden kullanılabilir optimizasyon kitaplığıyla birlikte gelir.

Google'ın XLA'sı da iki katmanlı optimize edilmiş bir yapı kullanır, ancak XLA yalnızca TensorFlow'u hedefler. Aksine, TVM açık bir arayüz olmaya çalışıyor.

Sadece bu değil, Chen Tianqi daha önce Zhihu'nun "Chen Tianqi'nin modüler derin öğrenme sistemi NNVM nasıl değerlendirilir?" Sorusuna cevap verdi, "TVM mevcut çözümlerden farklı. XLA'yı örnek olarak alırsak, TVM gitti ve mevcut XLA'dan daha fazlası. Radikal bir teknik rota olan TVM, XLA'nın gerektirdiği işlevlerin uygulanmasını kolaylaştırmak için kullanılabilir. "

TVM bloguna göre, şu anda aşağıdaki güncellemeler yapıldı:

Derin öğrenme açık kaynak çerçevelerinin son sıralamasında TensorFlow tartışmasız birinci sırada yer alıyor. Ancak gelecekte, ara temsil (IR), derin öğrenme çerçeveleri arasındaki rekabetin anahtarı haline gelecektir.

Blog adresi:

Kağıt: https://arxiv.org/pdf/1802.04799.pdf

Kod: https://github.com/dmlc/nnvm/blob/master/tutorials/from_mxnet_to_webgl.py

Luneng U23'ün pek çok generali var ancak birkaç üst düzey oyuncu var. Gelecek sezonun 97 yaşındaki oyuncuları bir patlama başlatabilir.
önceki
Mart, tanrıların arka bahçesi, en güzel baharla tanışmak için Linzhi'ye gidin!
Sonraki
Nanjing Pharmaceutical Hubei Co., Ltd., şehrimizde bir ilaç dağıtım lojistik merkezinin inşasına yatırım yaptı
Bahar geldi, aileni bir geziye çıkar!
Zhang Wenzhong Hepsi Dijitalleşmede: Bir bahis oynadım, takip edecek misin?
Bu ne kadar kötü bir adam!
"Chanel İmparatorluğu" nu sürdüren adam gitti ...
Maiwaidi tarafından güçlendirilen orijinal buğday tepeleri ve kelebekler değişti
Başkan Mao'nun Qi Baishi'ye mektubu
Karpathy'nin yeni derin öğrenme açık kaynak çerçeve sıralaması: TensorFlow önce, PyTorch ikinci
Yunnan'da 800.000 dönümlük kolza tohumu tarlasının havadan fotoğrafları, Çin'i çarpıcı fotoğraflar, Guinness'e binerken, bu hayat gitmeli
Chen Geng tarafından komuta edilen Shentouling pusuya Japon ordusu tarafından "tipik gerilla taktikleri" deniyordu. Savaştan sonra Japon ordusu "386 tugayıyla özel olarak savaşmaya" yemin etti.
Çin takımı, MegaFace Milyon Yüz Tanıma Şampiyonasını% 98 doğrulukla kazandı ve başka bir rekor kırdı
2019'da dünyanın ilk harikası! 80 milyar paramparça olan Çin, bu sefer UFO'lar bile yaptı ...
To Top