Huawei'nin MindSpore'u: TensorFlow Ve PyTorch Için Yeni Bir Rakip Mi?

İçindekiler:

Huawei'nin MindSpore'u: TensorFlow Ve PyTorch Için Yeni Bir Rakip Mi?
Huawei'nin MindSpore'u: TensorFlow Ve PyTorch Için Yeni Bir Rakip Mi?

Video: Huawei'nin MindSpore'u: TensorFlow Ve PyTorch Için Yeni Bir Rakip Mi?

Video: Huawei'nin MindSpore'u: TensorFlow Ve PyTorch Için Yeni Bir Rakip Mi?
Video: PyTorch or TensorFlow? | 2021 2024, Mayıs
Anonim

Huawei, TensorFlow ve PyTorch tarzı MindSpore Deep Learning ara yazılımının artık açık kaynak olduğunu duyurdu. Bu makalede en önemli özelliklerini öğrenin.

Huawei'den MindSpore
Huawei'den MindSpore

Huawei, AI uygulamaları geliştirmeye yönelik MindSpore çerçevesinin açık kaynak haline geldiğini ve GiHub ve Gitee'de mevcut olduğunu duyurdu. MindSpore, hem GPU'ları hem de açıkçası Huawei Ascend işlemcilerini destekleyen Edge to Cloud'dan kullanılmak üzere tasarlanmış TensorFlow veya PyTorch'a benzer sinir ağı modellerini eğitmek için başka bir Derin Öğrenme çerçevesidir.

Geçen Ağustos, Huawei Ascend işlemcisinin resmi lansmanını duyurduğunda MindSpore ilk kez tanıtıldı ve “tipik bir ResNet-50 tabanlı eğitim oturumunda Ascend 910 ve MindSpore kombinasyonu yaklaşık iki kat daha hızlı. AI modellerini TensorFlow kullanarak diğer ana öğrenme kartlarına karşı eğitirken Son yıllarda birçok çerçevenin ortaya çıktığı doğrudur ve belki de MindSpore, TensorFlow (Google tarafından desteklenir) ve PyTorch (Facebook tarafından desteklenir) ile uzaktan rekabet edebilecek tek bir gruptan başka bir şey değildir.).

Sistem mimarisi

MindSpore web sitesi, altyapının üç ana katmandan oluştuğunu açıklar: ön uç ifadesi, grafik motoru ve arka uç çalışma zamanı. Aşağıdaki şekil görsel bir diyagramı göstermektedir:

resim
resim

MindSpore'un ilk seviyesi, programcılar için bir Python API'si sunar. Topluluğumuzdaki dil dilbilimi fiili Python olduğundan ve aksi takdirde MindSpore, PyTorch ve TensorFlow ile rekabet etmek istiyor. Bu API ile programcılar modelleri (eğitim, çıkarım vb.) değiştirebilir ve verileri işleyebilir. Bu birinci seviye aynı zamanda paralelleştirme ve otomatik farklılaştırmada (GHLO) gerçekleştirilebilecek birçok optimizasyonun temel alınacağı kod ara gösterimi (MindSpore IR) desteğini de içerir.

Aşağıda, yürütme grafiğinin otomatik farklılaşmasını oluşturmak ve yürütmek için gerekli işlevselliği sağlayan Graph Engine katmanı bulunmaktadır. MindSpore ile, PyTorch (dinamik bir yürütme grafiği oluşturan) veya TensorFlow (daha verimli bir statik yürütme çizelgesi oluşturma seçeneği başlangıçta seçilmiş olsa da, şimdi aynı zamanda bir dinamik yürütme grafiği seçeneği de sunuyor) dışında bir otomatik farklılaştırma modeli seçtiler. düşük seviyeli API'sinin @ tf.function dekoratörü kullanılarak grafiğin statik bir versiyonu).

MindSpore'un seçimi, iki modelden yararlanmak için kaynak kodunu ara kod formatına (MindSpore IR) dönüştürmektir (daha fazla bilgi için MindSpore web sitesindeki “Otomatik Ayırma” bölümüne bakın).

Son katman, kodun işleneceği çeşitli donanım mimarilerini desteklemek için gereken tüm kitaplıkları ve çalışma zamanı ortamlarını içerir. Büyük olasılıkla, NVIDIA NCCL'ye (NVIDIA Toplu İletişim Kitaplığı) eşdeğer olan HCCL (Huawei Toplu İletişim Kitaplığı) gibi kitaplıklar gibi Huawei özellikleriyle diğer çerçevelere çok benzeyen bir arka uç olacaktır.

Eğitim görselleştirme desteği

MindSpore öğreticisine göre, bunları kurmak ve kullanmak imkansız olsa da, TensorBoard, TensorFlow'u biraz anımsatan görselleştirmeler oluşturmak için MindInsight'a sahipler. Web sitelerinde gösterdikleri bazı ekran görüntülerine bir göz atın:

resim
resim
resim
resim

Kılavuza göre, MindSpore şu anda istediğimiz tüm model parametrelerini ve hiperparametreleri ve ayrıca ne zaman hesaplama programını eğitme sürecinde yazmak için (bir günlük dosyasına) bir geri arama mekanizması (Keras ile nasıl yapıldığını hatırlatan) kullanıyor. sinir ağının ara koda derlenmesi tamamlandı.

paralellik

Öğreticilerinde, iki paralelleştirme modundan (DATA_PARALLEL ve AUTO_PARALLEL) bahsediyorlar ve ResNet-50'yi bir Ascend 910 işlemcisi için bir CIFAR veri seti ile eğiten örnek kod sağlıyorlar (ki bunu test edemedim). DATA_PARALLEL, eğitim verilerini, her biri modelin aynı kopyası üzerinde, ancak farklı işlem birimlerinde çalışan birden çok alt kümeye bölmekten oluşan, yaygın olarak veri paralelliği olarak bilinen bir stratejiyi ifade eder. Kod paralelleştirme ve özellikle AUTO_PARALLEL paralellik için Graph Engine desteği sağlanır.

AUTO_PARALLEL modu, veri paralelleştirme stratejisini (yukarıda tartışılan) modelin farklı parçalara ayrıldığı ve her bir parçanın farklı işlem birimlerinde paralel olarak yürütüldüğü model paralelleştirme stratejisiyle birleştirerek paralelleştirmeyi otomatik olarak optimize eder. Bu otomatik mod, MindSpore web sitesindeki Otomatik Paralel bölümünde okunabilecek en iyi faydaları sunan paralelleştirme stratejisini seçer (tahminlerin ve kararların nasıl yapıldığını açıklamasalar da). Teknik ekibin belgeleri genişletmesi ve otomatik paralelleştirme stratejisi hakkında daha fazla ayrıntı anlaması için zaman ayırmamız gerekecek. Ancak bu otomatik paralelleştirme stratejisinin kritik olduğu ve Huawei işlemcilerini kullanarak önemli ölçüde daha iyi performans elde ederek TensorFlow veya PyTorch ile rekabet edebilecekleri ve rekabet edebilecekleri yer burasıdır.

Planlanan yol haritası ve nasıl katkıda bulunulacağı

Belli ki yapılacak çok iş var ve bu noktada bu sayfada sunulan kapsamlı yol haritasında gelecek yıl için akıllarındaki fikirleri düzene soktular, ancak önceliklerin kullanıcıya göre ayarlanacağını savunuyorlar.

Geri bildirim. Şu anda şu ana hatları bulabiliriz:

  1. Daha fazla model için destek (bekleyen klasik modeller, GAN, RNN, Transformers, güçlendirilmiş öğrenme modelleri, olasılıklı programlama, AutoML, vb.).
  2. Kullanılabilirliği ve programlama deneyimini geliştirmek için API'leri ve kitaplıkları genişletin (daha fazla operatör, daha fazla optimize edici, daha fazla kayıp işlevi vb.)
  3. Kapsamlı Huawei Ascend işlemci desteği ve performans optimizasyonu (derleme optimizasyonu, kaynak kullanımı iyileştirmesi vb.)
  4. Yazılım yığınının evrimi ve hesaplamalı grafik optimizasyonlarının yürütülmesi (ara IR gösteriminin iyileştirilmesi, ek optimizasyon yetenekleri eklenmesi, vb.).
  5. Daha fazla programlama dili desteği (sadece Python değil).
  6. Otomatik zamanlama, veri dağıtımı vb. optimizasyonu ile iyileştirilmiş dağıtılmış öğrenme.
  7. Programcının "hata ayıklamasını" kolaylaştırmak için MindInsight aracını geliştirin ve öğrenme süreci sırasında hiperparametre ayarını iyileştirin.
  8. Edge'deki cihazlara çıkarım işlevselliği sağlamada ilerleme (güvenlik, ONNX aracılığıyla platform dışı modeller için destek vb.)

Topluluk sayfasında MindSpore'un Huawei ve Çin dışında Edinburgh Üniversitesi, Imperial College London, Munster Üniversitesi (Almanya) veya Paris-Saclay Üniversitesi gibi ortakları olduğunu görebilirsiniz. Açık bir yönetişim modelini izleyeceklerini ve tüm topluluğu hem koda hem de belgelere katkıda bulunmaya davet edeceklerini söylüyorlar.

Çözüm

Hızlı bir ilk bakıştan sonra, doğru tasarım ve uygulama kararları (eşzamanlılık ve otomatik farklılaşma gibi), daha iyi performans göstermek istedikleri çerçevelerden daha iyi performans elde eden iyileştirmeler ve optimizasyonlar için yer açabilir gibi görünüyor. Ancak, PyTorch ve TensorFlow'u yakalamak ve her şeyden önce bir topluluk oluşturmak için yapılacak çok iş var, sadece değil! Ancak, Huawei gibi sektördeki büyük bir şirketin desteğiyle her şeyin mümkün olduğunu zaten hepimiz biliyoruz veya üç yıl önce PyTorch'un (Facebook) ilk sürümü çıktığında topuklara yakın olabileceği açıktı. TensorFlow (Google)?

Önerilen: