TensorFlow
TensorFlow kütüphanesi bir Google ürünü. Açık kaynak kodlu ticari kullanıma uygun lisanslı. Geç çıkmasına rağmen, Google'ın iteklemeleriyle - destek kelimesi az gelir diye böyle yazıyorum - epey bir öne çıktı. Derin öğrenmeyi ilk farkeden şirketlerden olması sebebiyle firmalarında bu işle uğraşan epey insan vardı. Bunların hemen hepsi - el mahkum - tensorflow'a geçti. Theanonun üstünde çalışan popüler kütüphane Keras'ın geliştiricisini işe aldı. Keras theanodan sonra tensorflow üzerinede çalışmaya başladı. Hızını alamadı, Kerası bir alt küme halinede getirdi.Tensorflow'u bulut da daha bir hızlı çalıştıracak donanım çıkardı tensor processing unit. Bu adımıyla hem NVIDA hemde Amazona tehdit oluşturdu.
İşin ticari yönündeki gelişmeleri öngördü. Yapılacak uygulamaların çoğunun web tabanlı servis olarak sunulacakdır. Bir strateji kurdu, tensorflow yaygınlaştırılacak. Eğitilmiş modelleri sunan sistemler kurup ordan para kazanmak. Nitekim Algorithmia - open marketplace for algorithms - google dan yatırım aldı
Sonuç olarak Google 'ın Vakti zamanında Microsoftun yaptığı tekelci hamlelerini andıran davranışlar sergilediğini düşünüyorum. Tensorflow hakkında teknik hiç bir söylemiyorum çünkü Yukarda bahsettiğim davranışları antipatik bulduğumdan hiç kullanmaya niyetlenmedim. Bence Tensorflow popülerliği zorakidir. Piyasadaki diğer kütüphanelerden olan üstünlüğüyle değil google'ın diretmesiyle bu haldedir. Tavsiye etmiyorum
CNTK
Microsoftun kütüphanesi ismi "Microsoft Cognitive Toolkit" olarak değiştirildi. Microsoft da derin öğrenmeye erken girişen firmalardan. CNTK 'yı denemek için niyetlenip incelediğimde tuhaf bir lisansla karşılaştım.CNTK-1bit-SGD-Licenseve vazgeçtim. Google ile aynı niyetle çalışmalarını sürdürüp ürününü popülerleştirmeye çalışıyor.
Reasons to Switch from TensorFlow to CNTKProgramcıların gözdesi Kerasa da el attılar tıpkı google gibi...
Using CNTK with Keras
Yine google gibi donanım işine el attılar TPU ya alternatif FPGA yi de öne sürüyorlar.
Rekabetten Kerasın güçlenmesini sevinsemde doğrudan CNTK yı tavsiye etmiyorum.
MxNet
Önceleri gariban şimdilerde Amazonun desteklediği bir kütüphane.
Apache da destekliyorMXNet - Deep Learning Framework of Choice at AWS
MxNet sponsored by the Apache IncubatorEskiden beri windows desteği olan. Hatta derlenmiş dağıtım sunan çok beğendiğim bir kütüphane. Derin öğrenmeye ilk başladığımda üzerinde denemeler yaptım. İlla python diye ısrarı yok C++, R, Js,Julia hatta go ile yazabiliyorsunuz. Modaya uyup Kerasın altında çalışmaya adapte edildi.
Yanlız kerasın eski versiyonu üzerinde çalışıyor nedense. Yeni versiyon için desteğinde geleceği söyleniyor.
MxNet ile devam etmemiş olmam yeterli dökümantasyon ve örneğin olmamasıydı. Yeni desteklerle bu eksikliklerini tamamlıyor gibiler. Bir gözünüz MxNet te olsun derim ben...
Keras
Popüler üst düzey programcıların gözdesi python kütüphanesi . Kullanımı çok kolay. Öğrenmesi kolay. Örnek ve destek çok.- Keras Official Examples
- Keras blog
- Kaynaklar
- Kaggle Daki yarışmalar için Yazılmış kodlar
- Goorgle grubu
- Slack ( kerasteam )
Sonuç olarak Kerası kullanıyorum ve tavsiye ediyorum.
Elbettte eksiklilkeri var.
Keras üst düzey bir kütüphane, çalışabilmesi için altta başka bir kütüphanenin - backend- çalışıyor olması lazım. Hali hazırda Theano , Tensorflow, CNTK kütüphaneleri bu işlevi yerine getiriyor. MxNet 'in de eli kulağından kerasın eski versiyonu için adapte edildi. yeni verisyonu için çalışmalar yapılıyormuş. Allta çalışan kütüphanelerin sebep olduğu sıkıntılar
Eğittiğiniz modeller altta çalışan kütüphaneye göre değişiyor. Python dışında çalıştırmak için de genel resmi bir çözüm yok malesef. (şunlar var ; kerasify , keras2cpp )
Yeni katman tipleri yazmak gerektiğinde , genellikle kerasın imkanları yerli olmuyor. Altta çalışan kütüphaneyide biliyor ve iyi bir şekilde kullanabiliyor olmanız lazım.
Çok büyük veri setleri için modele hızlı veri besleme için dahili bir çözüm yok malesef.
Multi GPU desteği henüz yok sayılır. ( Mxnet le birlikte gelecek gibi görünüyor bakınız )
Burda bahsedemediğimiz pek çok irili ufak kütüphanede vardır elbette. Biz hakkında az çok bilgi sahibi olduğumuz nispeten daha yaygın olanlardan bahsettik.
Şirketlerin Konumları
Kütüphanelerin savaşları dedik. Durumu savaşa ! çeviren şirketlerin taraf tutarak diğer seçeneklere karşı olmaları. Kütüphaneleri anlatıren bahsettik ama burda şirket şirket bir adaha yazayım. Beleşe tavsiyelerde bulanayım dedimGoogle :
Google bence yanlış yapıyor. Tekelci bir anlayışla davranmanın kazandığın durumda şirket için iyi olması yapılan şeyin doğru olduğunu göstermez. Tensorflow'u destekleyebilirsiniz ama diğerlerini ezmeye çalışmak doğru değildir. TPU üretmek ve piyasaya sokmak isteyebilirsiniz ama diğer kütüphaneler ile kullanılabilecek alt yapıyı sağlamalısınız. Hiç olmadı Kerasa destek olmazız lazım.Quaradaki "Is Google an evil company?" sorusuna şöyle bir cevap gelmiş
"The only significant difference between a kitten and a tiger is that the tiger is bigger"
Eğer kaplan büyüklüğündeyseniz hareketlerinize daha çok dikkat etmeniz gerekir. Aksi halde sorunun cevabı Yes olur.
Microsoft:
Google dan önce kaplan olmuş :) ve "Is Microsoft an evil company" sorusuna Büyük bir Yes cevabı almış ve bunun ceremesini yıllardır çeken bir firmadır. Google a göre daha temkinli davranmayı öğrenmiştir. Linux'a kapılarını açmış ordada iş yapmaya -Azure- başlamıştır. Ortada bir sürü lisansı uygun kütüphane varken kendi yayınladığı ve yaygınlaşması için uğraştığı kütüphanenin bir kısmına Tuhaf bir bir lisanslama niye ayağına kurşun sıkar anlamış değilim...NVDIA:
Derin öğrenmenin motor gücünü oluşturan GPU ların üreticisi olarak hemen her kütüphaneye destek veriyor. Verdiği desteklerin kütüphanelere zarar vermemesinide temin etmesi lazım diyorum. Digits altında kullanmak için değiştirdiği caffe sürümünü, ana geliştiricilerle ortaklaşa hazırlasaydı, şimdi caffe deki bu dağınıklık olmazdı muhtemelen.Amazon:
İşlerinin bir kısmına gözünü dikmiş şirketler var ve Koştura koştura çalışıyorlar. Geç farkına vardılar. MxNet i destekleme kararı aldılar ama bence yeterli destekde bulunmuyorlar halen.Facebook:
Çok güzel bir ekip kurdular. Çok güzel çalışmalar da yapıyorlar. Caffe2 ve Torch 'un arkasında durdular. İkisi içinde daha çok çalışmaları lazım. Torch lua sebebiyle popülerliğini kaybetti. Caffe2 ve PyTorch yeni çıktı sayılır. Yaygınlaşabilmeleri için epey bir emek lazım.Intel:
Ne yaptıkları belli değil. Beleş tiyolar verelim.Kütüphanelerin cpu optimize halini çıkarmaları hikayedir. Paralel işlem yapabilen donanımlar geliştirip. Bunlara kütüphanelerin kolayca uğraşacağı ara kütüphanelerini yazmaları zorunludur. Mesela NVDIA nın cuDNN kütüphanesi gibi .
cuDNN, hemen her derin öğrenme kütüphanesinde gpu için kullanılmaktadır. Intelde kendine bir yol seçmeli (OpenCL bazlı gpu larmı olur mi olur Yoksa FPGA mı olur )
Sonra ona uygun ara kütüphane çıkarmalı
CL_DNN mi olur artık FPGA_DNN mi
Kütüphanelerin kendi donanımlarına adapte edilmesi için destek vermeli
piyasaya girmelidir.
Hiç bir şey bilmiyorsa Theanoya ve libgpuarray'a destek verimesi lazım.