Apache MXNet - Giriş

Bu bölüm Apache MXNet'in özelliklerini vurgular ve bu derin öğrenme yazılımı çerçevesinin en son sürümünden bahseder.

MXNet nedir?

Apache MXNet, geliştiricilerin Derin Öğrenme modellerini oluşturmasına, eğitmesine ve dağıtmasına yardımcı olan güçlü bir açık kaynaklı derin öğrenme yazılımı çerçeve aracıdır. Sağlık hizmetinden nakliyeye, üretime ve aslında günlük hayatımızın her alanında, son birkaç yılda derin öğrenmenin etkisi yaygınlaştı. Günümüzde, şirketler tarafından Yüz tanıma, nesne algılama, Optik Karakter Tanıma (OCR), Konuşma Tanıma ve Makine Çevirisi gibi bazı zor sorunları çözmek için derin öğrenme aranmaktadır.

Apache MXNet'in aşağıdakiler tarafından desteklenmesinin nedeni budur:

  • Intel, Baidu, Microsoft, Wolfram Research vb. Gibi bazı büyük şirketler

  • Amazon Web Services (AWS) ve Microsoft Azure dahil genel bulut sağlayıcıları

  • Carnegie Mellon, MIT, Washington Üniversitesi ve Hong Kong Bilim ve Teknoloji Üniversitesi gibi bazı büyük araştırma enstitüleri.

Neden Apache MXNet?

Torch7, Caffe, Theano, TensorFlow, Keras, Microsoft Cognitive Toolkit, vb. Gibi çeşitli derin öğrenme platformları vardı, o zaman neden Apache MXNet'i merak edebilirsiniz? Bunun arkasındaki bazı nedenleri inceleyelim:

  • Apache MXNet, mevcut derin öğrenme platformlarının en büyük sorunlarından birini çözer. Sorun, derin öğrenme platformlarını kullanmak için farklı bir programlama çeşidi için başka bir sistemi öğrenmenin gerekmesidir.

  • Apache MXNet'in yardımıyla geliştiriciler, GPU'ların tüm yeteneklerinden ve bulut bilişiminden yararlanabilirler.

  • Apache MXNet, herhangi bir sayısal hesaplamayı hızlandırabilir ve büyük ölçekli DNN'nin (derin sinir ağları) geliştirme ve dağıtımını hızlandırmaya özel bir önem verir.

  • Kullanıcılara hem zorunlu hem de sembolik programlama yetenekleri sağlar.

Çeşitli Özellikler

En son derin öğrenme araştırmalarını hızlı bir şekilde geliştirmek için esnek bir derin öğrenme kitaplığı veya üretim iş yükünü zorlamak için sağlam bir platform arıyorsanız, aramanız Apache MXNet'te sona erer. Aşağıdaki özelliklerinden dolayıdır:

Dağıtılmış Eğitim

Apache MXNet, geliştiricilerin donanımlarından en iyi şekilde yararlanmalarına olanak tanır. MXNet, Uber'de oluşturulan açık kaynak dağıtılmış bir derin öğrenme çerçevesi olan Horovod ile entegrasyonu da destekler.

Bu entegrasyon için, Horovod'da tanımlanan yaygın dağıtılmış API'lerden bazıları şunlardır:

  • horovod.broadcast()

  • horovod.allgather()

  • horovod.allgather()

Bu bağlamda, MXNet bize aşağıdaki yetenekleri sunar:

  • Device Placement - MXNet yardımıyla her bir veri yapısını (DS) kolayca belirleyebiliriz.

  • Automatic Differentiation - Apache MXNet, farklılaştırmayı, yani türev hesaplamalarını otomatikleştirir.

  • Multi-GPU training - MXNet, mevcut GPU sayısı ile ölçeklendirme verimliliği elde etmemizi sağlar.

  • Optimized Predefined Layers - MXNet'te kendi katmanlarımızı kodlayabiliriz ve önceden tanımlanmış katmanları da hız için optimize edebiliriz.

Hibridizasyon

Apache MXNet, kullanıcılarına hibrit bir ön uç sağlar. Gluon Python API'nin yardımıyla, zorunlu ve sembolik yetenekleri arasındaki boşluğu doldurabilir. Hibritleştirme işlevi olarak adlandırılarak yapılabilir.

Daha Hızlı Hesaplama

Onlarca veya yüzlerce matris çarpımı gibi doğrusal işlemler, derin sinir ağları için hesaplama darboğazıdır. Bu darboğazı çözmek için MXNet şunları sağlar:

  • GPU'lar için optimize edilmiş sayısal hesaplama

  • Dağıtılmış ekosistemler için optimize edilmiş sayısal hesaplama

  • Standart NN'nin kısaca ifade edilebileceği ortak iş akışlarının otomasyonu.

Dil Bağlamaları

MXNet, Python ve R gibi yüksek seviyeli dillerle derin bir entegrasyona sahiptir.Ayrıca, diğer programlama dilleri için destek sağlar.

  • Scala

  • Julia

  • Clojure

  • Java

  • C/C++

  • Perl

Melezleştirme özelliği ile birlikte MXNet yerine yeni bir programlama dili öğrenmemize gerek yoktur, Python'dan seçtiğimiz programlama dilinde dağıtıma son derece yumuşak bir geçiş sağlar.

En son sürüm MXNet 1.6.0

Apache Software Foundation (ASF) Apache MXNet'in kararlı sürümü 1.6.0'ı 21 Şubat 2020'de Apache License 2.0 kapsamında yayınladı. Bu, Python 2'yi destekleyen son MXNet sürümüdür çünkü MXNet topluluğu, sonraki sürümlerde Python 2'yi artık desteklemeyecek şekilde oylanmıştır. Bu sürümün kullanıcıları için sunduğu bazı yeni özelliklere göz atalım.

NumPy uyumlu arayüz

Esnekliği ve genelliği nedeniyle NumPy, Makine Öğrenimi uygulayıcıları, bilim adamları ve öğrenciler tarafından yaygın olarak kullanılmaktadır. Ancak, günümüzün Grafik İşleme Birimleri (GPU'lar) gibi donanım hızlandırıcılarının giderek daha fazla çeşitli Makine Öğrenimi (ML) araç kitlerine asimile edildiğini bildiğimiz gibi NumPy kullanıcıları, GPU'ların hızından yararlanmak için yeni çerçevelere geçmeleri gerekiyor. farklı sözdizimi ile.

MXNet 1.6.0 ile Apache MXNet, NumPy uyumlu bir programlama deneyimine doğru ilerliyor. Yeni arayüz, NumPy sözdizimine aşina olan uygulayıcılar için eşdeğer kullanılabilirlik ve ifade gücü sağlar. Bununla birlikte MXNet 1.6.0, mevcut Numpy sisteminin büyük ölçekli hesaplamaları hızlandırmak için GPU'lar gibi donanım hızlandırıcıları kullanmasına da olanak tanır.

Apache TVM ile entegrasyon

CPU'lar, GPU'lar ve özel hızlandırıcılar gibi donanım arka uçları için açık kaynaklı bir uçtan uca derin öğrenme derleyici yığını olan Apache TVM, üretkenlik odaklı derin öğrenme çerçeveleri ile performans odaklı donanım arka uçları arasındaki boşluğu doldurmayı hedefliyor. . En son sürüm MXNet 1.6.0 ile kullanıcılar, yüksek performanslı operatör çekirdeklerini Python programlama dilinde uygulamak için Apache (kuluçka) TVM'den yararlanabilir. Bu yeni özelliğin iki ana avantajı şunlardır:

  • Eski C ++ tabanlı geliştirme sürecini basitleştirir.

  • Aynı uygulamanın CPU'lar, GPU'lar vb. Gibi birden çok donanım arka uçta paylaşılmasını sağlar.

Mevcut özelliklerde iyileştirmeler

MXNet 1.6.0'ın yukarıda listelenen özelliklerinin yanı sıra, mevcut özelliklere göre bazı iyileştirmeler de sağlar. İyileştirmeler aşağıdaki gibidir -

GPU için öğe bazında işlemi gruplama

Öğelere göre işlemlerin performansının bellek bant genişliği olduğunu bildiğimiz için bu tür işlemlerin zincirlenmesi genel performansı düşürebilir. Apache MXNet 1.6.0, gerçekte mümkün olduğu kadar ve zamanda tam zamanında kaynaştırılmış işlemler üreten eleman bazlı işlem füzyonu yapar. Bu tür eleman bazlı operasyon füzyonu ayrıca depolama ihtiyaçlarını azaltır ve genel performansı iyileştirir.

Yaygın ifadeleri basitleştirme

MXNet 1.6.0, gereksiz ifadeleri ortadan kaldırır ve yaygın ifadeleri basitleştirir. Bu tür bir geliştirme ayrıca bellek kullanımını ve toplam yürütme süresini de iyileştirir.

Optimizasyonlar

MXNet 1.6.0 ayrıca, aşağıdaki gibi mevcut özelliklere ve operatörlere çeşitli optimizasyonlar sağlar:

  • Otomatik Karışık Hassas

  • Gluon Fit API

  • MKL-DNN

  • Büyük tensör Desteği

  • TensorRT entegrasyon

  • Daha yüksek dereceli gradyan desteği

  • Operators

  • Operatör performans profili

  • ONNX içe / dışa aktarma

  • Gluon API'lerinde iyileştirmeler

  • Symbol API'lerinde İyileştirmeler

  • 100'den fazla hata düzeltmesi