15 puan yazan xguru 2021-12-20 | 1 yorum | WhatsApp'ta paylaş
  • Genelde TensorFlow'un endüstriyel kullanım, PyTorch'un ise araştırma için olduğu söylenir; ancak bu, eski bilgilere dayanan bir anlatıdır

  • Pratik değerlendirmeler genelde 3 karşılaştırmaya indirgenir

→ model kullanılabilirliği: kamuya açık olarak kullanılabilen model sayısı ne kadar

→ dağıtım altyapısı: ne kadar verimli şekilde dağıtım yapılabiliyor

→ ekosistem: farklı ortamlar/donanımlar

Model Availability

  • Hem PyTorch hem de TensorFlow'un kendi resmi model depoları vardır

  • HuggingFace

→ yalnızca PyTorch'ta kullanılabilenler %85; özel olmayan modellerin de %50'si kullanılabiliyor. Toplamın yalnızca %16'sı TensorFlow'da kullanılabiliyor (%8'i sadece TF)

→ En popüler 30 modelde, hepsi PyTorch'ta kullanılabilirken TensorFlow'da bunların yalnızca 18'i kullanılabiliyor

  • araştırma makaleleri

→ her yıl gönderilen makalelerde PyTorch kullanımı sürekli artıyor

→ 2017'de %7 ile başlayıp 2021'de neredeyse %80'e ulaştı

→ TensorFlow 1'in zorlukları nedeniyle birçok kişi PyTorch'u seçti

→ bu zorluklar 2019'da çıkan TensorFlow 2 ile büyük ölçüde iyileşti, ancak PyTorch zaten araştırma odaklı konumunu sağlamlaştırdı

→ 2018'de TensorFlow kullanan araştırmacıların %55'i 2019'da PyTorch'a geçti

→ 2018'de PyTorch kullanan araştırmacıların %85'i 2019'da da PyTorch kullanmaya devam etti

  • Papers With Code verilerine göre

→ TensorFlow kullanımı sürekli azalırken PyTorch ve diğer framework'ler giderek daha fazla kullanılıyor

→ TensorFlow 2 çıktıktan sonra da bu eğilim sürdü. TF1'de yaşanan zorlukları tersine çevirmeye yetmedi

  • Sonuç olarak model kullanılabilirliği açısından pazara PyTorch hakim

  • diğer istisnalar

→ GoogleAI çoğunlukla TensorFlow kullandı, ancak Google Brain JAX/Flax kullanıyor

→ DeepMind da JAX'i benimsedi ve JAX için bir sinir ağı kütüphanesi olan Haiku'yu geliştirdi (JAX için Sonnet)

→ JAX: Google tarafından ayrı geliştirilen bir framework. Araştırma tarafında giderek popülerleşiyor

Deployment

  • TensorFlow baştan itibaren dağıtım odaklı uygulamalar için optimize edilmişti

→ TensorFlow Serving, TensorFlow Lite vb. ile cloud/sunucu/mobil/IoT cihazlarına zahmetsizce dağıtım yapılabiliyor

  • PyTorch dağıtım açısından çok gerideydi, ancak son birkaç yılda bu farkı kapatmak için çalışıyor

→ TorchServe ve PyTorch Live

  • Sonuç olarak, dağıtım açısından TensorFlow hâlâ daha üstün

→ özellikle TFLite'ın yerel ortamda ve Coral cihazlarında kullanılabilmesi diğer endüstriler için de çok önemli

→ PyTorch Live yalnızca mobile odaklanıyor, TorchServe ise hâlâ erken aşamada

Ecosystems

  • PyTorch

→ resmi PyTorch Hub mevcut: Audio/Vision/NLP gibi çeşitli modeller içeriyor

→ SpeechBrain: resmi açık kaynak konuşma toolkit'i; ASR/konuşmacı tanıma/doğrulama gibi birçok özelliğe sahip

→ Fast.ai dahil çeşitli araçlar ve kütüphaneler mevcut

→ TorchElastic: AWS+Facebook ortak proje

→ TorchX: hızlı makine öğrenimi geliştirme ve dağıtımı için kütüphane

→ PyTorch Lightning: Keras of PyTorch

  • TensorFlow

→ resmi TensorFlow Hub: BERT dahil çeşitli modeller

→ Model Garden: SOTA(State-of-the-ART) modeller için kaynak kod deposu

→ TensorFlow Extended(TFX): model dağıtımı için E2E platformu

→ Vertex AI: Google Cloud'un birleşik makine öğrenimi platformu

→ Media Pipe: yüz tanıma, el takibi, nesne tanıma gibi işlevler için makine öğrenimi pipeline'ları oluşturmayı sağlayan multimodal, cross-platform framework

→ Coral: yerel AI barındıran ürünleri (IoT) desteklemek için oluşturulmuş toolkit

→ TensorFlow.js: makine öğrenimi için JavaScript kütüphanesi

→ TensorFlow Cloud: yerel geliştirme ortamını Google Cloud'a bağlar

→ Colab: cloud tabanlı notebook ortamı (Jupyter'a benzer)

→ Playground: sinir ağlarının temellerini anlamak için iyi bir eğitim aracı

→ Datasets: Google'ın düzenli olarak yayımladığı veri setlerini depolar (PyTorch kullanıcıları da kullanabilir)

  • Sonuç olarak ekosistem açısından TensorFlow daha üstün

→ Google bu alana uzun süredir çok yatırım yapıyor

→ Google Cloud ile bağlantı kurma ya da Coral cihazlarına port etmeyi kolaylaştırma gibi konularda da bazı alanlarda daha güçlü

Peki ikisinden hangisini kullanmalı?

  • Bu alanda çalışıyorsanız seçim, hangi endüstride olduğunuza göre değişebilir (orijinal yazıda kolay seçim için bir flow chart sunuluyor)

→ endüstriyel ortamda derin öğrenme kullanıyorsanız zaten TensorFlow kullanıyor olabilirsiniz; devam edebilirsiniz

→ TorchServe nedeniyle PyTorch da değerlendirilebilir

→ mobile için PyTorch Live, ses/görüntü girdileri için TensorFlow

→ IoT'de AI kullanacaksanız TensorFlow Lite + Coral

  • araştırmacıysanız?

→ büyük olasılıkla zaten PyTorch kullanıyorsunuzdur; devam edebilirsiniz

→ özel bir istisna olarak Reinforcement Learning yapıyorsanız TensorFlow'u düşünebilirsiniz

→ TensorFlow kullanmak istemiyorsanız JAX'i de değerlendirmeye değer

→ ne seçerseniz seçin, 2022'de JAX mutlaka izlenmeli

  • öğretim üyesiyseniz?

→ eğitim programının hedeflerine göre değişebilir

→ doğrudan iş hayatında makine öğrenimi kullanacak mühendisler yetiştirmek istiyorsanız TensorFlow

→ derin öğrenmeyi ve derin öğrenme modellerini anlamak istiyorsanız PyTorch

  • kariyer değiştiriyorsanız?

→ hem PyTorch hem TensorFlow iyi seçenekler

→ kullanımı daha kolay olanı seçin

→ belirli bir framework'e bağlı kalmak istemiyorsanız, sektörde standart olarak kullanılan TensorFlow daha iyi olabilir

→ iş ilanları ve işe alım tarafında TensorFlow daha avantajlıydı

  • hobi olarak derin öğrenmeyle uğraşıyorsanız?

→ ne yapmak istediğinize bağlıdır, ancak temel olarak PyTorch daha iyi

  • derin öğrenmede tamamen yeniyseniz?

→ Keras ile başlamanız önerilir

→ Python native'e benzer bir ortam arıyorsanız PyTorch, özellikle de PyTorch Lightning

1 yorum

 
xguru 2021-12-20

Bunu 2019/2020'de çıkan konuşmalarla karşılaştırmak da ilginç.