Adım Adım Google Colab Ücretsiz TPU Kullanımı

Google’ın sunduğu bu teknolojinin arkasındaki ekibe göre, “Yapay sinir ağları temelinden faydalanan üretilen yapay zeka uygulamalarını eğitmek için kullanılan TPU’lar, CPU ve GPU’lara göre 15 ila 30 kat daha hızlıdır!”

TPU Nedir?

-Tensor Processing Unit- yani Tensör İşlem Birimi dört bağımsız çipten oluşmaktadır. Her bir çip, Tensör Çekirdek (Tensor Core) adı verilen iki hesaplama çekirdeğinden oluşur. Bir Tensör Çekirdek, skaler, vektör ve matris birimlerinden (MXU) oluşur.

Google Cloud TPU

Ayrıca, her Tensör Çekirdeği ile 8 GB’lık çip bellek (HBM) ilişkilendirilmiştir. TPU üzerindeki 8 çekirdeğin her biri, kullanıcı hesaplarını (XLA ops) bağımsız olarak yürütebilir.
Yüksek bant genişliğine sahip ara bağlantı yolları, çiplerin birbirleriyle doğrudan iletişim kurmasını sağlar. XLA, Tensorflow backend için deneysel bir JIT(Just in Time) derleyicisidir. CPU (Merkezi İşlem Birimi) ve GPU (Grafik İşlem Birimi)’dan en önemli farkı ve özelliği derin öğrenmenin yapı taşı olan lineer cebir yani matris işlemlerinin paralel olarak ve çok boyutlu olarak gerçekleşmesi için tasarlanmış spesifik bir donanım olmasıdır.

Hatta buna matris ya da tensör makinesi (matrix/tensor machine) de denmektedir.

2015 yılında Google ilk TPU merkezini kurmuştur. Çünkü Google Aramalar, Çeviri, Fotoğraflar, E-posta ve Bulut gibi uygulamalarının tamamında derin öğrenme ve dolayısyla tensör işlemler uygulamaktadır.

Hangi durumlarda CPU, GPU ve TPU kullanılmalı anlamak için bir karşılaştırma yapalım!

CPU:

  • Maksimum esneklik gerektiren hızlı prototipleme
  • Eğitilmesi uzun sürmeyen basit modeller
  • Küçük etkili küme boyutları olan küçük modeller
  • C ++ ile yazılmış özel TensorFlow işlemlerinin hakim olduğu modeller
  • Kullanılabilir Giriş / Çıkış veya ana bilgisayar sisteminin ağ bant genişliği ile sınırlı modeller

GPU:

  • Tensorflow harici bir araç ile yazılan ve yüksek işlem gücü gerektiren modeller
  • Kaynağın bulunmadığı veya değişmesi çok zor olan modeller
  • En azından kısmen CPU’larda çalıştırılması gereken önemli sayıda özel TensorFlow işlemine sahip modeller
  • Cloud TPU’da bulunmayan TensorFlow ops modelleri (mevcut TensorFlow ops listesine bakınız)
  • Daha büyük efektif küme boyutları olan orta büyük modellerde kullanılır.

TPU: Yalnızca TensorFlow’u desteklemektedir!

  • Matris hesaplamaları yoğunluklu olan modeller
  • Ana eğitim döngüsünde özel TensorFlow işlemlerine sahip olmayan modeller
  • Eğitilmesi haftalar veya aylar süren modeller
  • Çok büyük efektif küme boyutları olan çok büyük modeller
Saniyedeki Kestirim Sayısı Karşılaştırması — Matrix

Google Colab TPU Ücretsiz Servisi 🚀

Google Colab TPU kullanımı için kolaylıkla anlaşılır, Keras kütüphanesi kullanarak, yeterince de işlem yükü olacak türden birkaç farklı ve klasik örnekler üzerinde deneyelim. Sonuçları değerlendirelim!

Google Colab TPU performansını değerlendirmek için Tensorflow+Keras kütüphanesi kullanarak çok bilinen iki temel veri kümesi ve iki temel derin öğrenme yöntemini ele almak uygun olur.

1️⃣ MNIST veri kümesi kullanarak Evrişimli Sinir Ağı (Convolutional Neural Network-CNN) eğitimi

2️⃣ Fashion MNIST veri kümesi kullanarak Evrişimli Sinir Ağı (Convolutional Neural Network-CNN) eğitimi

3️⃣ Shakespeare veri kümesi kullanarak Uzun-Kısa Vadeli Bellek (Long-Short Term Memory-LSTM) eğitimi

4️⃣ MNIST veri kümesi kullanarak Evrişimli Sinir Ağı (Convolutional Neural Network-CNN) TPU üzerine eğitimi — Görselleştirmesi ve ML Engine ile Deploy edilmesi

Google Colab üzerinde TPU seçimini ilk olarak Runtime sekmesini kullanarak yapmak gerekiyor. Change runtime type sekmesine tıklandığında Hardwave accelerator seçimini kullanarak TPU sekmesi seçilerek kayıt (save) yapılmalıdır.

TPU kullanmak için gerekli temel TensorFlow Fonksiyonları

İlk olarak yapmanız gereken Keras kullanarak TPU modelini oluşturmak!

tf.contrib.tpu.keras_to_tpu_model:

TPU Tahminleyici (Estimator):

Tahminciler TensorFlow’un model seviyesinde eklenmelidir. Standart tahminciler, CPU ve GPU’lardaki modelleri çalıştırabilir. Fakat TPU’larda bir model eğitmek için `tf.contrib.tpu.TPUEstimator´ kullanmanız gerekir.

TPU Çalıştırma Konfigürasyonları:

TPU Optimizasyon:

MNIST Veri Kümesi Kullanarak Evrişimli Sinir Ağı (Convolutional Neural Network-CNN) Eğitimi

Derin öğrenme temellerini öğrenirken hemen hemen herkesin ilk denemesi olan MNIST veri kümesi ve basit bir CNN modelini Google Colab GPU ve TPU arasındaki eğitim sürelerini karşılaştırmak başlangıç için iyi fikir! Gerekli kütüphane yükleme işlemleri tamamlandıktan sonra aşağıdaki TPU adresleme işlemini gerçekleştirmek gerekiyor.

İşlem sorunsuz tamamlandığında görmeniz gereken çıktı:

Found TPU at: grpc://10.41.118.242:8470

MNIST veri yükleme, verileri eğitim ve test olarak ayırma, parametreleri belirleme, derin öğrenme modelini oluşturma ve optimizasyon yöntemlerini bilinen şekilde tamamladıktan sonra modelin eğitilmesi aşamasında TPU kullanımına uygun olacak şekilde tf.contrib.tpu.keras_to_tpu_model kullanmak gerekiyor.

Google Colab TPU üzerinde çalışacak modelin yapısını görüntülemek için:

tpu_model.summary()

Eğitim işlemini başlattığımızda:

🏆Her epoch’un yalnızca 3 saniye sürdüğünü görebilirsiniz, bu Google Colab GPU Tesla K80 ile aynı şekilde çalıştırıldığında 11 saniye sürüyor. Bu model eğitiminin yaklaşık 4 kat daha hızlı olduğunu gösteriyor!

Eğitilen model ağırlıklarını kaydetmek için:

tpu_model.save_weights('./MNIST_TPU_1024.h5', overwrite=True)

🔸 Benzer bir hız karşılaştırma işlemi Fashion MNIST için gerçekleştirilirse durum çok farklı olmayacak!

Her epoch yaklaşık 7 saniye ve sonuçta 15 epoch’luk tüm eğitim TPU üzerinde yalnızca 102 saniye sürmektedir.

GPU ile 196 saniye sürerken, CPU ile 11164 saniye sürmektedir. Bu da gösteryor ki TPU ile GPU’dan yaklaşık 2 kat, CPU’dan 110 kat daha hızlı bir performans sergiliyor.

4️⃣ MNIST veri kümesi kullanarak Evrişimli Sinir Ağı (Convolutional Neural Network-CNN) TPU üzerine eğitimi — Görselleştirmesi ve ML Engine ile Deploy edilmesi

Eğitim ve Doğrulama setleri için Doğruluk ve Yitim Eğrileri 10Epoch için Verilmektedir.
Kestirimlerin görselleştirilmesi

Google Colab’da TPU ile neler yapabileceğimize dair çok hızlı bir başlangıç yapmış sayılırız. Bir sonraki aşamada, TPU’nun gücünü tam olarak kullanmak için daha büyük veri setleriyle daha büyük modelleri eğitmeyi deneyebiliriz.

Derin öğrenme modelleri eğitirken bizlere çok vakit kazandıracağı kesin olan Google Colab ücretsiz TPU servisini kullanarak siz de performans değerlendirmesi yapabilirsiniz.

Kaynak Kodları

🌈 Google Colab TPU’ya ücretsiz erişim sağlayarak, bize keşfedeceğimiz yepyeni bir dünya açtı !

Son Güncelemeler

Güncelleme #1: TPU’ların dağıtım stratejisi artık TPUStrategy’dir (TPUDistributionStrategy idi). Ayrıca şimdi TPU’ya sonuçları döndürmeden önce bu kadar fazla işlemi yapmasını söyleyen bir steps_per_run param ile başlatabilirsiniz. Uzaktan bir hızlandırıcı için bu daha hızlıdır.
Güncelleme 1
Güncelleme #2: Keras’taki tüm dağıtım stratejileri şimdi yalnızca bir strateji kapsamı kullanılarak uygulanmaktadır. `model.fit`, `model.evaluate`, `model.predict`, kapsam dışında çağrılabilir. Model, hangi donanım olduğunu hatırlar.) Bu arada, bu da çoklu GPU için çalışıyor. Örneğe bakınız: 
Güncelleme 2
Güncelleme #3: Küme (batch) büyüklüğü şimdi genel küme büyüklüğüdür. Birden fazla hızlandırıcı üzerinde çalıştırıyorsanız daha büyük partiler sağlamanız gerekir (Bir TPU’da sekiz çekirdek vardır).
Yapılandırırken bu parti boyutunu kullanın `tf.data` Dataset ve doğrudan Dataset üzerinde çalışın.
Güncelleme 3
Güncelleme #4: Bu içlerindeki en büyük güncellemedir. Keras artık işlem öncesi ve sonrası adımlar dahil olmak üzere standart `SavedModel` formatında modelleri dışa aktarabilir.
Her şey bir adımda hizmet veren AI Platform modeline yerleştirilebilir.
Güncelleme 4

TPU ile Yapay Sinir Ağlarınızı Çok Daha Hızlı Eğitin

Would you like to train deep learning models using a TPU?! Thanks to Martin Görner for letting us publish the work in Turkish!

🏋 Derin öğrenme modellerini bir de TPU kullanarak eğitmek ister misiniz?!

Biyolojik beyinlerimizden daha hızlı işlem yapabildiğini söyleyen Martin Görner tarafından, Google I/O 2019 Konferansında, GoogleCodeLabs altında sunulan çalışmayı Türkçe olarak yayınlamamıza izin verdiği için teşekkür ederiz! 😎 Bu çalışmayı Başak Buluz ve Yavuz Kömeçoğlu ile birlikte çevirdik ve düzenledik. 💁🏻 👨🏻 🙋🏻

🍭 Çalışmaya bu bağlantıdan ulaşabilirsiniz!!!

TPU ile Yapay Sinir Ağlarınızı Çok Daha Hızlı Eğitin

Ph.D. Candidate at Yıldız Technical University | AI Researcher at Bahçeşehir University | www.ayyucekizrak.com/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store