2 Eylül 2016 Cuma

CERN Günlükleri - GridKa Okulu ve Veri Bilimi

Haftanın başından beri Almanya'nın Karlsruhe şehrinde, on yılın üzerinde bir süredir düzenlenen GridKa adlı bir mini-okul için bulunuyorum. Konferansın teması, alt başlığında belirtildiği üzere Data Science on Modern Architectures (Modern Mimariler üzerinde Veri Bilimi). Şu ana kadar katıldığım en verimli ve dolu dolu geçen okullar hanesine yazılmayı hak eden bu etkinliği her gün aldığım notlar üzerinden bu konuya ilgili fakat katılma fırsatı olmayan ya da konuya dair bir fikri olmayıp da merak edenler için buradan paylaşmaya karar verdim. [Programın detayları, sunumlar ve atölye materyallerine web sitesinden ve wiki sayfasından ulaşılabilir.]




"Veri Bilimi"(Data Science) tüm dünyada şu anda sıkça dile getirilen, son zamanlarda Türkiye'de de içi bir türlü doldurulamasa da sürekli bahsedilen bir kavram. İnternet üzerinden veya günlük hayatımızdaki çeşitli dijital araçlarla insanların ya da herhangi bir sistemin ürettiği veriler sürekli toplanarak bir yerlerde toplanıyor. Bunlar DnR'dan aldığınız kitapların listesinden, internette tıkladığınız reklamlara, arabanızın yakıt kullanım bilgisinden, kameralarla gözlenen şehir trafiği verilerine kadar oldukça çeşitli alanlarda olabilir. Veri kavramı her ne kadar yeni bir şey olmasa da konunun dönüp dolaşıp  'Büyük Veri' ve 'Veri Bilimi' gibi slogan kelimelerle ifade ediliyor olmasını  sağlayan iki temel gelişme söz konusu: birisi verilerin günümüzde artık gelişen teknolojilerle çok kolay bir şekilde ve devasa ölçeklerde toplanıp oldukça ucuz bir maliyette depolanabiliyor olması, ikincisi gelişen bilgisayar performansı sayesinde bu verilerin etkili bir şekilde istatistiksel analizlerden geçirilerek bunlardan işe yarar, anlamlı bilginin çıkarılabilir noktaya ulaşılması. Okulun başında tekrar edilençok önemli bir nokta vardı: bilimin ilk zamanlarında teori ağır basıyordu, ardından gelişen gözlem araçları ve teknikler sayesinde deney ön plana çıktı, sonrasında gelişen bilgisayarlarla simulasyon büyük önem kazandı, son olarak da günümüzde yaşanan dönüşümle veri tüm bilim yapma süreçlerini yönlendirir noktaya geldi.

GridKa okulu özellikle bilimsel deneylerde ortaya konan devasa ölçekteki verilerin günümüz modern bilgisayar sistemleri ile efektif bir şekilde depolanıp, analize hazır hale getirilmesi ve en nihayetinde teknik analizlerinin yapılması konusuna eğiliyor. Burada bahsi geçen deneylerin en başında CERN'deki ATLAS, CMS, LHCb gibi neredeyse sürekli çalışarak saniyede terabaytlarca veri oluşturan dev ölçekli deneyler geliyor. Bunlara başka örnek örneğin insan genom örnekleri üzerinde yapılan biyoinformatik çalışmaları ya da Dünya etrafındaki uyduların sürekli gözlemleri sonucunda elde edilen haritalardan yola çıkarak yapılan jeoloji çalışmaları verilebilir... Listeyi uzatmak mümkün çünkü artık bilgisayarlar modern bilim pratiği içinde hayati bir rol oynuyorlar ve bunlarla elde edilen büyük ölçekli verilerin eldeki imkanlarla nasıl depolanacakları, bunlara nasıl erişileceği, güvenliğinin nasıl sağlanacağı, nasıl analiz edileceği gerçekten oldukça büyük problemle haline gelmiş durumda.

GridKa okuluna Almanya'da geçmişte nükleer enerji araştırmalarında oldukça aktif bir rol oynamış Karslruhe Teknik Üniversitesi'nin ve diğer ilgili kurumların insiyatifiyle oluşturulmuş Karlsruhe Teknoloji Enstitüsü(KIT) ev sahipliği yapıyor. Programın yapısı sabahtan dört konuşma, öğleden sonranın tamamı da uygulamalı workshoplara ayrılmış durumda. Okulun en hoşuma giden tarafı, konunun doğası itibariyle kaçınılmaz olanı bir şekilde başarmış olması, hem akademi hem de endüstriyi bir araya oldukça dengeli bir şekilde getirmiş olması. Yapılan sunumlar ve uygulamalar arasında bu konuda araştırmalar yürüten üniversite ve araştırma enstitülerinden hocaların yanında, Amazon, Hitachi, Nvdia gibi endüstri devlerinin de aktif katkıları yer alıyor. Bütün seminerlerin üzerinden geçmek mümkün değil elbette, daha çok uygulamalar üzerinden kısa notlar paylaşmayı planlıyorum.

İlk gün öğleden sonra başlayan program açılış konuşmaları ve konuya genel bir giriş yapan oturumlarla başladı. Bu oturumlardan birinde CERN'den bir grubun yakın zamanda geliştirdiği Jupyter üzerinden yüksek enerji fiziğinde veri analizi için geliştirilen ROOT programını bir servis olarak kullanılmasını sağlayan SWAN projesinden bahseden bir sunum vardı. Bu projeden öncesinde haberim olmuştu fakat burada bizzat geliştiricilerinden dinleyip yarını da uygulamasına katılmak benim için büyük bir fırsat oldu.

Jupyter Not Defterleri yakın zamanlarda oldukça popüler olan bir arayüz; standart bir şekilde kodunuzu yazıp çalıştırmaktan daha farklı olarak size tıpkı bir defter sayfası gibi oluşturulmuş bir web arayüzü üzerinden çalışıp Python, R, C++ diğer birçok dilleri destekler bir şekilde satır satır kodlarınızı yazıp, aralara açıklamalar, grafikler, denklemler hatta videolar eklemenizi sağlıyor. En önemli avantajı web arayüzü üzerinden çalışıyor olması; yani kodunuzu yazıp çalıştırmak için kendi bilgisayarınıza herhangi bir şey yüklemenize gerek yok. Nerede olursanız olun bir web tarayıcınız varsa hemen çalışmaya başlayabileceğiniz ortamı sağlıyor sizin için; platformdan bağımsız bir şey kısacası. Jupyter Not Defterleri aynı zamanda, bir projeyi yaparken yan tarafta da dokümante etmek istediğinizde, kodunuzu arka planda ne yaptığınızı da detaylı bir şekilde açıklamalarla sunmak için, en önemlisi bu arayüze erişen kişinin aynı kodları kendisinin de çalıştırabileceği bir ortam sunuyor. Katıldığım uygulamada istatistiksel analiz için kullanılan ROOT "programlama dilinin" Jupyter Not Defterleri ile entegre edilmiş hali olan SWAN sistemi üzerinde çalıştık.

Jupyter ile oluşturulmuş bir Python uygulaması örneği; daha detaylı bir örneği incelemek için tıklayınız.

Bu sistemin geliştirilmesindeki amaç, CERN'de araştırma yapan kişiler istedikleri zaman, istedikleri yerden -uzaktan- ulaşabilecekleri bir web arayüzü ile veriye yine uzaktan erişerek, detaylı analizleri de burada yaparak çalışmalarını sağlamak. SWAN ile Jupyter'in sağladıklarının ötesinde arka planda oldukça fazla kaynak gerektirecek uygulamalar için birden fazla işlemcinin ayrılacak olması, paralel programlama yapılabilme fırsatı gibi özellikler de beraberinde geliyor. Veri analizinin artık geleceği olarak görülen, verilerin de analizin de 'bulut'(cloud) adı verilen internet üzerindeki sunucularda tutulup gerçekleştirildiği yakın bir gelecek için tasarlanıyor SWAN ve üzerinde çalışan ekibin özenli çalışmalarıyla şimdiden çok iyi bir dokümantasyona ve ROOT'a yeni başlayanlar için birçok eğitici not defterine sahip bile. SWAN'a erişmek için şu anda aktif bir CERN ve CERNBox hesabınız olması gerekiyor (örnek uygulamalara buradan göz atabilirsiniz). Fakat bahsettiğim fonksiyonelliği denemek için Jupyter Not Defterlerini deneyebilirsiniz. Bu dönem bölümde asistanlığını yapacağım Deneysel Fizik Dersi'nde özellikle rapor yazarken bu arayüzün kullanılması için girişimlerde bulunacağım mutlaka!

İkinci gün katıldığım uygulama Amazon'un Web Servisleri (AWS) uygulamasıydı. Amazon'u belki sadece internet üzerinden kitap ve dekoratif yastıklar satan bir şirket olarak biliyorsunuz ama arka tarafta dünyanın en büyük bulut bilişim sistemlerinden birine ev sahipliği yapan ve Yüksek Performanslı Bilimsel Hesaplama (High Performance Scientific Computing - HPC) konusunda devasa bir altyapı sunan bir başka yüze daha sahip. Temelde şu şekilde bir hizmet veriyor: Elinizde oldukça yüksek hızda çalışması gereken, epey karmaşık, içerisinde birçok hesaplamalar bulunan bir kodunuz var. Bunu laptobunuzda çalıştırmanız günlerinizi hatta aylarınızı alabilir. Fakat aynı kodu sizin için özel olarak ayrılmış, fiziksel olarak muhtemelen dünyanın diğer bir ucunda olan bilgisayarların kaynakları birleştirilerek oluşturulmuş sanal bir süperbilgisayar üzerinde çalıştırarak birkaç dakika içinde sonuç almanız mümkün. Üstelik bu hizmet için 1 saat CPU kullanımı için 1 sent gibi bir para ödüyorsunuz. Tüm bunları yine bir web tarayıcısı üzerinden yapabiliyorsunuz. Yani kısacası oturduğunuz yerden işinize uygun bir süperbilgisayar oluşturup, istediğiniz işi bunun üzerinde çalıştırıp efektif bir şekilde çalışmanızı yürütebiliyorsunuz; işiniz bittiğinde de kapatıp işlemi sonlandırıyorsunuz. Fiziksel olarak devasa bir laboratuvarda bir süperbilgisayara erişiminiz olmasına gerek yok kısacası; bunu tamamen sanallaştırılmış bir ortamda edinip birkaç dakika içinde çalışır duruma getirebiliyorsunuz. Bu yöntem, büyük ölçekli bilim yapma şeklini alt üst edecek bir gelişme ki öyle de yapıyor zaten. İnsanlar artık karmaşık problemlerini Amazon üzerinden kiraladıkları 'cluster' adı verilen dağıtık mimariler üzerinde çözüp araştırmalarını yapıyorlar. Bu hem süreci kolaylaştırıyor hem de kaynakların birçok kişiye ulaşmasını sağlayarak bir nevi fırsat eşitliği sağlıyor.

Uygulamada bize sağlanan deneme hesaplarıyla (ki internet sitesinden bir yıllık ücretsiz deneme üyeliği alabiliyorsunuz) sisteme bağlanıp öncelikli olarak kendimize üzerinde Linux işletim sistemi çalışan bir bilgisayar oluşturup üzerine bir web sunucusu ve veri tabanı oluşturduk. Ardından daha büyük çaplı, birden fazla bilgisayardan oluşan bir cluster oluşturup bunun üzerinde Amazon'un bu mimari üzerinde çalışması için Alces Flight'ın geliştirdiği uygulamalardan biri ile, bir akışkanlar dinamiği problemini çözdürdük. Hesaplamalı Akışkanlar Dinamiği (Computational Fluid Dynamics - CFD) olarak bilinen alandaki problemler, oldukça karmaşık denklemleri ve zor sınır koşulları nedeniyle ancak yüksek performanslı bilgisayarlar tarafından çözülebiliyorlar ve Amazon'un sunduğu bulut sistemi bu tip bir problemi çözmek için ideal bir ortam. Normalde böylesi bir problemi çözebilmek için ancak bir süperbilgisayara erişime sahip olan şanslı bir akademisyen olmanız gerekirken oturduğumuz yerde sadece 40 dakikada web tarayıcımızdan bunu yapmayı başardık, ki öncesinde sistemi nasıl kullanacağımızı dahi bilmiyorduk.

Üçüncü gün katıldığım uygulama ise yüksek performanslı bilimsel hesaplamada gittikçe yaygınlaşan bir yöntem olan ve bilgisayarların grafik kartları ile aynı aileden olan GPU (Graphical Processing Unit)'leri hesaplama için kullanma yöntemi üzerineydi. Özellikle NVDIA'nın başı çektiği bu alanda GPU'ların içindeki yüzlerce çekirdek sayesinde aynı anda birden fazla işlemi yüksek performansla yapabilme becerisi için oldukça uygun mimarileri bilimsel hesaplama türü işler yapanların ilgisini çekmiş ve sonuçta bu alanda standart bilgisayar işlemcileri CPU'ların yerini GPU'lar almış durumda.

Mythbusters ekibinin CPU ve GPU karşılaştırması yapan ilginç bir videosu

Birden fazla işlemi CPU üzerinde birden fazla çekirdekle paralel bir şekilde gerçekleştirme konusunda geçmişte biraz deneyimim vardı fakat GPU'lar benim için tamamen yeni bir şey. Programlama için NVDIA'nın C++ tabanlı Cuda programlama arayüzünü kullandık ve CERN'de CMS deneyinde çalışma yürüten bir araştırmacı ile birlikte beş saatin üzerinde bir uygulama gerçekleştirdik. Yaptığımız örnekler için KIT'nin süperbilgisayar kompleksinde her kullanıcı bir GPU ayrılmıştı, bunlara terminalden uzaktan bağlanarak yazdığımız kodları bizzat GPU üzerinde deneme fırsatımız oldu. Sonuçta fiziksel olarak işlemci süreçlerini kontrol ettiğiniz için kaçınılmaz olarak 'düşük seviye' bir programlama yapmanız gerekiyor, bu da işlemcinin tüm bileşenlerini  kontrol etmek için ayrı ayrı kod yazmanızı gerektiriyor. En son elektronik okuduğum dönemlerden kalma mikroişlemci programlarken yaptıklarımızı çağrıştırdı yaptıklarımız. Yaptığımız uygulamalardan birinde örneğin 512 elemana sahip iki vektörü tek bir adımda topladık. Normalde karşılıklı her bir elemanı alıp toplayarak gerçekleştirilen bu işlemi, GPU üzerinde oluşturduğumuz paralel 'işlemciler' (thread) sayesinde senkronize bir şekilde yapabildik. Yapay öğrenme problemlerinde olduğu gibi milyonlarca parametre tuttuğunuz vektörler üzerinde yapacağınız işlemleri böyle bir paralel süreçten geçirdiğinizde performans artışı müthiş bir seviyede oluyor. Yapay sinir ağları ve derin öğrenme uygulamaları konusunda GPU'lar fazlasıyla kullanılıyorlar zaten.

Tüm bu uygulamarı göz önüne alınca gelinen bu nokta müthiş bir şey. Devasa bir devrim yaşanıyor şu anda. Bu konular artık yüksek sesle tartışılıyor, bunlar üzerine sistemler geliştirilip son kullanıcıları eğitmek için bu toplantı gibi birçok okullar düzenleniyor. Çünkü yaklaşan geleceğin farkında insanlar ve buna uyum sağlamak gerekliliğinin de... Konferanstaki uygulamalardan bahsettim sadece ama diğer yarısında da Alman Uzay Ajansı DLR'ın geliştirdiği otonom arabalardan, IBM'in sinir ağlarını modelleyerek oluşturdukları fiziksel yapay sinir ağları Synapse çiplerine, Hitachi firmasının Japonya ve Almanya'daki tren sistemlerini kontrol etmek için verileri kullanarak geliştirdikleri müthiş kontrol sistemlerinden, CERN'deki verilerin nasıl tutulup işleme hazır hale getirildiğine kadar her bir konuşmayı veren alanının en üst seviye insanlarından birbirinden kafa açıcı şeyler öğrenme fırsatım oldu. Büyük ölçekli bilimin nasıl bir şey olduğunu ve bununla birlikte gelen verinin depolanma, işlenip hazır hale getirilme ve analiz süreçlerinde yeni yaklaşımları görme fırsatım oldu.

Okulun yoğun programı nedeniyle şehirde pek gezme fırsatım olmadı maalesef; çok büyük bir şehir değil Karlsruhe fakat oldukça ilginç bir yapıya sahip. Şehrin tam ortasındaki şatonun etrafında daireler şeklinde genişleyerek oluşturulmuş. KIT'nin kuzey kampüsü şehrin biraz dışında, her sabah servisle 20 dakika gidiyoruz, akşam programlarıyla birlikte ancak 21:00-22:00 gibi dönüyoruz ki bu saatler tipik bir Avrupa şehrinin çoktan ölüm sessizliğine büründüğü saatlere karşılık geliyor.


Şehre indiğim gibi ana tren istasyonundaki büyük dergi mağazasına girerek almaya sabırsızlandığım Almanca dergilerimi raflarda aramaya başladım. Ne yazık ki Türkiye'de artık yayınlanmayan ve orijinalinden okuyabilmek için Almanca öğrenmeyi dahi göze alabileceğim kadar sevdiğim GEO dergisi rafını bulduğumda karşıma çıkan manzara nefesimi kesmeye yetti. Biz bir tane GEO'yu bulamazken burada bir ayda yedi-sekiz tane yayınlanıyor. Bunlar dışında astronomi dergisi Sterne und Weltraum, bilim dergisi Spektrum der Wissenschaft ve Almanca öğrenenler için özel hazırlanan dergi Deutsch Perfekt'i de hemen aldım, bunlar beni birkaç ay oyalar zaten.


Oldukça yorucu fakat bir o kadar verimli geçen bir haftayı kapatıyorum böylece; bu yazı CERN Günlükleri'nde 'Yedinci Hafta' yazısı yerini alacak. Haftasonu Karlsruhe'den Münih'e geçip biraz şehri keşfedip Cenevre'ye dönüyor olacağım. Önümüzdeki hafta CAST veri alımı nöbetleri ile neredeyse her gün sabahın dördünde kalkacağımı düşündükçe şu günlerimin değerini bilmeye çalışıyorum! Haftaya 'Sekizinci Hafta' raporunda görüşmek üzere!

1 yorum:

Ezgi dedi ki...

Yazılarınızı sürekli takip ediyorum, yaptığınız tüm bu bilgilendirmeler ve yol gösterici tavsiyeler için benim gibi meraklı arkadaşlar adına çok teşekkür ediyorum. Yeni yazınızı merakla bekliyorum , iyi çalışmalar :)

Paylaş!

 

Copyright © 2010 Gök Günce | Blogger Templates by Splashy Templates | Free PSD Design by Amuki