veri bilimi etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
veri bilimi etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
0
yorum

7 Aralık 2023 Perşembe

Fizikten Elektrik Piyasalarına 'Quant' Yolu

Fizikten uzaklaşalı beri büyük ölçüde yazmayı da bir kenara bıraktım; blogun mevcut suskunluğuna bakarsak artık bir 'günlük'ten ziyade ayda-yılda bir şeyler paylaştığım bir yer haline geldi GökGünce. Her heveslendigimde oturup bir genel toparlama yazısı yazayım, sonra asıl konulara gireriz deyip hiç devam ettirmemektense, bugün dinlediğim bir röportajdan yola çıkarak Twitter'da paylaştığım videoya naçizane kendi deneyimlerimi eklemek istedim.

 


Konu Fizik doktorasından sonra Finans alanına geçmenin yolları, zorlukları ve mükâfatları üzerine. Iki yıl önce, kendi yaptığım geçişin birinci yılındaki güncelleme yazısında kısaca bahsettiğim bu konu üzerine [Gökgünce: Parçacık Fiziği'nden Finansal Piyasalara], biraz daha etraflıca ve videoda değinilen noktaları kendi perspektifimden çoğu zaman onayladıgım ve çalıştığım alan özelinde biraz daha detaylandırdıgım bir yazı aklımdaki. Öncelikle eğer böyle bir geçişi düşünüyorsanız, finans özelinde bu kadar pratik ve nokta atış önerileri bulabileceğiniz bir kaynakla su ana kadar karşılaşmamıştım, mutlaka videoyu izleyin. Ben bu vesileyle biraz daha kendim ne tip şeylerle uğraşıyorum ve çoğu zaman videoya atıfta bulunup benim gittiğim 'quant' yolu için ne tip önerilerde bulunabilirimi anlatmaya çalışacağım.

 

Finans çok geniş bir alan ve dolayısıyla içine bir 'quant' yada araştırmacı olarak daldığınızda genellikle çalıştığınız şirketin yada ekibin odaklandığı finansal enstrümanlara bağlı olarak bir 'asset class'a yonelirsiniz. Benim durumumda bu emtia (commodity) oldu ve bu alanın günün sonunda bir şekilde fiziksel dünyaya dokunuyor olması benim gibi bir fizikçi için bulunmaz nimet niteliğindeydi. Alternatif olarak kripto-paralar, hisse senetleri ve faiz gibi alanlarda bu fizikselliği bulmak biraz daha zor. Emtia piyasası da kendi içinde birçok farklı alana dallanıp budaklanıyor elbette; benim uğraştığım alan genel olarak enerji, spesifik olarak da elektrik ticareti. Kısacası çalıştığım şirketler uluslararası enerji borsalarında çeşitli enerji ürünlerini (petrol, doğalgaz, elektrik, karbon salınım hakkı vb.) alıp satıyorlar. Benim icinde bulundugum ekipler ise yoğunluklu olarak bu borsalarda elektrik kontratlarını alıp satıyorlar; ben ise bu 'ticaret' (trading) sürecinde ekibi, elektrik borsalarını yönlendiren fiziksel koşulların tahmininde, özellikle Avrupa ozelinde elektrik üretim ve talebinin modellenmesi, elektrik ağındaki akışların analizi ve tüm bunların fiyata yansımaları konusunda analitik çalışmalarla destekliyorum.

 

Hızlıca ifade ettiğim şeylerin biraz daha anlam ifade etmesi için bir seviye daha detaya inmem faydalı olabilir. Elektriğin borsada ticaretinin yapıldığını ben de bu alana girmeden önce bilmiyordum, dolayısıyla kendinizi 'Fransız' hissetmeniz çok normal. Düğmeye her bastığımızda 'mucizevi' bir şekilde yanan ampulün elektriğinin anlık olarak nasıl sağlandığını bilmememiz, günlük hayatın arkasında yatan teknik detaylardan sadece biri aslında. 'Anlık' kısmı çok vurucu, çünkü finansal ve fiziksel olarak baktığımızda arz ve talebin anlık olarak birbirine eşit olmak zorunda olduğu yegane emtia diyebiliriz elektrik için; çünkü henüz elektriği (büyük ölçekte) etkin bir şekilde depolamanın bir yolunu bulamadık. Üstüne bir de güneş ve ruzgar gibi doğanın kontrolünde olan kaynaklara yaptığımız yatırımlarla üretim değişkenliğinin ne kadar arttığını düşünürseniz, bahsi geçen denkleştirmeyi yapmanın ne kadar büyük bir zorluk olduğunu hayal edebilirsiniz. Mevcut liberalleştirilmiş elektrik piyasalarında bu durum elektriğin şebekeye verilme anına kadar alıp satımının devam etmesine neden oluyor. Örneğin bir gün öncesinden, yarın 13:00-14:00 saat aralığında 100MW elektrik üreteceğini belirten bir rüzgar santrali, o saat gelene kadar söz verdiği elektriği şebekeye vermek üzere o ana dair üretim tahminini en son hava durumuna göre güncelleyip revize edebilir. Çünkü söz verdiğinin altında ya da üstünde üretim yapması, şebekenin o anki dengesine göre finansal olarak cezalandırılmasına  (para kaybetmesine) neden olabilir. 

 

Görüldüğü gibi hava durumunun büyük rol oynadığı, anlık değişimlerin ciddi farklar yarattığı ve çok iyi talep/üretim tahminlerinin ve bunlara bağlı fiyat modellerinin inanılmaz fark yarattığı bir alan elektrik piyasaları. Alım satımı yapan 'trader' dediğimiz tayfa bu modellere bakıp kararlar veriyor, geçmişteki oruntulerden yola çıkarak geleceğe dair öngörulerde bulunuyor ve piyasada doğru fiyatlanmamış kontratları topluyor (yani olması gerekenden düşük olanları alıyor, olması gerekenden yüksek olanları ise satıyor - bir şeyi satmak için her zaman ona sahip olmak zorunda değilsiniz bu arada). Ben arkaplanda çalışan bölge ve ülke düzeyinde toplam elektrik talebinin kısa ve orta vadeli tahminlerinin yapılması, rüzgar, güneş ve hidroelektrik üretimi gibi değişken üretim kaynaklarının hava durumu temelli modellerinin oluşturulması ile bu tahminlerin piyasalara yansıması olarak bahsi geçen elektrik kontratının 'adil' fiyatının tahmini gibi problemler üzerine çalışıyorum. Çalıştığım ekiplerde, bu tip tahmin modellerini tipik olarak istatistik ve 'machine learning' temelli öğrenme algoritmalari ile modelleyip, tüm bunların sürekli ve düzenli bir şekilde karar alma süreçlerine entegre olması için gerekli yazılım altyapısını kuruyoruz.

 

Birbirine bagli bircok hattan olusan Avrupa Elektrik sebekesi (grid) - Bu baglantilar sayesinde bir ulkede uretilen elektrik sinir otesi baska bir ulkeye satilabiliyor - Kaynak: Flow Allocation in Meshed AC-DC Electricity Grids


Benim rolum, videoda bahsi geçen üç tip 'quant' profilinden, araştırma ve yazılım geliştirme eğilimin neredeyse yarı yarıya olan 'Quant Analyst' rolüne daha yakin. Ilk girdiğim şirkette ağırlıklı olarak araştırma sorumluluklarim vardı. Quant denince ilk akla gelen 'options' adı verilen karmaşık finansal enstrümanların fiyatlanmasi konularına epey kafa yormustum, fakat işin ilerleyişi ve benim yüksek lisans/doktorada ağırlıklı olarak machine learning/deep learning yönündeki deneyimim sayesinde kendimi daha çok fiziksel modelleme ve 'tahminleme' problemleri üzerinde çalışırken buldum. Bu konular üzerinde sadece pür araştırma yapmıyor, aynı zamanda bu tıp tahminleri örneğin günde 4 kez gelen hava durumu güncellemesi verisinin sisteme girişinden itibaren düzenli ve hatasız bir şekilde son kullanıcıya ulaştıran tüm sistemin yazılım tasarım ve geliştirmesine de katkı veriyorum. Kısacası rolüm gereği ne sadece "Quant Researcher" gibi oturup stochastic calculus kullanıp PDE'ler çözüyorum, ne de "Quant Developer" gibi büyük yazılım sistemlerinin komponentlerini yazıyorum. Ikisinin arası, bana göre 'best of both worlds"... Ama tahmin edilebileceği üzere, bahsettiğim her iki rolün de gerekliliklerini az çok sağlamanın beklendiği pozisyonlar "Quant Analyst" pozisyonları; yani hem araştırma hem de yazılım tarafında güçlü olmanız ve ortaya kısa sürede elle tutulur işler koymanız bekleniyor.


Kısa süre demişken videoda haklı olarak üzerinde durulan bir diğer konu, akademi ve endustrideki 'zaman kısıtlaması' farkı. Çalıştığınız ekibe bağlı olarak, endüstride size atanan bir görevden genelde birkaç haftalık zaman zarfında bir ilerleme göstermiş olmanız ya da kaba bir prototip geliştirmiş olmanız beklenir. Bunu özellikle temel bilimler gibi her şeyin en temeline girme zorunluluğu olan bir alanda sürekli hale getirmek pek mümkün değil. Endustride bunun olmasını sağlayan da aslında tam olarak bu; uğraştığınız bir problemin 'gaz ve toz bulutu' seviyesinde temellerine inmeniz genelde beklenmez; eğer problem iyi formüle edilmişse, çoğu zaman işe yarar bir kaba prototip çoğu zaman ilk aşamada iş gorur; sonrasında gerekli geri donuşlerle adım adım iyileştirmeler yapılabilir. Fakat beklenen şey (eğer sistem seviyesinde büyük problemlerle ugraşılmıyorsa) spesifik problemin kendisine odaklanıp çözüm için adım atmaktır, konuyu etraflıca ele alıp temellerine inmekten ziyade. Bunu günlük hayatımda her gün yaşıyorum. Modellemeye çalıştığım sistemler fiziksel olarak girişilebilecek en zor problemler: atmosfer dinamiği, rüzgar/bulut değişkenliği, yağış tahmini gibi fiziğe dayalı problemler ya da birbirine bağlı binlerce noktanın karmaşık etkileşimi ile ortaya çıkan elektrik şebekesi ağı ya da her birbirinden farklı motivasyonlarla borsaya gelen oyunculularin kollektif olarak oluşturdukları fiyat dinamiği... Her bir başlık üzerine onlarca doktora tezi yazılır muhtemelen ama bir yıl içerisinde bu konularla defalarca değinip çeşitli projeler yaptığımı biliyorum... Akademiden geçiş yapacak birisinin bu zihin setine geçiş yapması epey kritik, zira akademideki gibi geniş ve özgürce (çoğu zaman harcanan!) zamana sahip olmuyorsunuz malesef.


Röportajda hoşuma giden bir başka şey de, dönüp dolaşıp temellere odaklanmak gerektiği üzerinde durulması. Özellikle de işin başlangıcında, çalışılan alanın detaylarını bilmezken bu cok onemli. Bunun için de saydığı liste temel olarak istatistik, olasılık, uygulamalı matematik ve programlamayı içeriyor. Gerçekten de yaptığımız, ugrastıgımız problemi bunlar aracılığıyla formal bir hale getirip elinizdeki araçlarla çözmeye çalışmaktan ibaret aslında. Bunu yaparken alet cantamızdakı araçların nasıl kullandığını öğrenmek büyük önem taşıyor. Temel bir istatistiksel test yapmak, veriyi bir olasılık dağılımı ile modellemek, eğer bir opsiyon modeli kuruyorsanız temel seviyede PDE ve stochastic calculus bilmek kaçınılmaz. Bu temellere bu arada sürekli dönüp dolaşıp geri dönüyorsunuz çünkü birçok problemin çözümünün altında bunların varyasyonları yatıyor. Benim çalıştığım problemler büyük ölçüde zaman serisi tahmin modelleri olduğundan istatistik ve 'machine learning' bilgisi büyük önem taşıyor. Genelde hava durumu gibi 'büyük ve yüksek frekanslı' veri ile ugraştıgımızdan iyi bir veri tabanı ve paralel programlama bilgisi epey şe yarıyor.


Son olarak değinmek istediğim nokta ise işin 'iletişim' tarafı. Bu kısım genelde bu tarz işlere hazırlanırken pek göz önüne alınmayan fakat işin içindeyken önemi fark edilen konulardan. Teknik yönü ağır bir iş yaptiginizdan genelde yaptıgınız calışmaları sunduğunuz son kullanıcılar ya da işten sorumlu yöneticiler genelde sizin kadar teknik donanımlı olmuyorlar. Dolayısıla siz istediğiniz kadar machine learning ile harikalar yaratın, karşınızdaki kişi sizden ya sezgisel bir açıklama ya da nihayetinde anlamlandirabilecegi bir sonuç bekliyor olacak. Benim durumumda, her gün muhatap olduğum trader'lar, belki de tanıdığım en zeki insan grubu olsalar da, matematik ve fizik konusunda ortalamanın bir tık üstündeler; haliyle onlara sunduğum yeni bir modeli, girdi olarak kullandığım verilerden, modelin içeride nasıl bir örüntü yakalamaya çalıştığı ve sonuç olarak verdiği tahminlerin de belirli değişken etkileşimlerinden kaynaklandığını mutlaka göstermem gerekiyor. Tüm bunlar karmaşık süreçlerin basitlestirilerek ifade edilmesi, konuya yabancı bir kişiye kullandığım yöntemin zayıf ve güçlü yanlarını açık bir şekilde anlatılmasını ve çoğu zaman sonucu en başta belirsiz olan projeler için zaman ve bütçe alabilmek icin ekibin ikna edilmesini içeriyor. Aynı şey sürekli iletişimde olduğunuz yazılım/veri ekipleri ile kurulan etkileşimler için de geçerli. Akademide de azami ölçüde iletişim olsa da, bunu günlük süreçlerinizde sürekli olarak kullanmanız gerekmiyor. Özellikle quant gibi birden fazla fonksiyonu/işlevi yerine getiren 'cross-functional' rollerde iletişim büyük önem taşıyor.


Zamanında yazdığım 'Yeni Mezundan Lisans/Yüksek Lisans Ravsiyeleri' yazı dizisine 'profesonel dunyadan' bir ek niteliğinde olacak bu yazıyı yavaş yavaş noktalamak gerekirse; hali hazırda görüştüğüm doktora ya da doktora sonrası araştırma yapan fizikçilerin büyük bir kısmının derdi, mevcut şartları göz önüne alarak, akademiden çıkmak fakat bunu nasıl ve ne yöne dokgru yapacaklarını bilmemeleri. Malesef akademideki danışmanlık sistemi dış dünyaya bu kadar kapalı olduğu sürece bu böyle olmaya da devam edecek gibi duruyor. En azından benim gibi geçişi yapmış kişilerin deneyimlerinin de benzer kaygılar taşıyan kişilere fikir vereceğini düşünüyorum. Konuyla ilgili merak ettiğiniz yada sormak istediğiniz şeyler olursa "Yorumlar" kısmında bir etkileşim baslatabilirsem de ne ala...


Son olarak da, yukarıda bahsettiğim konulara giriş niteliğinde birkaç şey okumak/izlemek isteyenlere önerilerde bulunayım:

 

  • Elektrik piyasasının nasıl işledigine dair giriş seviyesinde bilgiler icin Avrupa Elektrik Borsasının yayınladıgı bir rehber: Basics of Power Market
  • Finans matematigine bir fizikci gozunden yaklaşan, harika bir 'populer' bir kitap: Physics of Wall Street [Yazarin kitap hakkında bir saatlik konusması da epey fikir verebilir]
  • Bu alanda bir efsane olarak bilinen Jim Simons'in ve Millenium Fonu'nun hikayesini anlatan bir kitap: The Man Who Solved The Market  - kendisinin Youtube'daki roportaji da epey guzel [Kitabin Turkce'si de 'Jim Simons Piyasaların Şifresini Çözen Adam' adiyla Scala Yayinciliktan cikti.]



19
yorum

6 Nisan 2017 Perşembe

Yapay Zeka ve Yapay Öğrenme - I

Günlük hayatımızın her köşesinde artık bir uygulamasını bulduğumuz 'yapay zeka', bilim kurgu kitap ve filmlerinden fırlamışçasına son zamanlarda epey sesini duyurmaya başladı. Konunun ismi gereği epey iddialı olduğu kesin; fakat bahsedilenler ve elimizdeki teknoloji ne ölçüde 'zeki' bilgisayarlar iddiasını karşılıyor? Konuyu robotlar ve zeki bilgisayarlar düzleminden biraz daha pratik ve günümüz problemlerine getirilen yeni yaklaşımlar perspektifinden incelemek çok daha sağlıklı olacak. Kendim de fizik tarafında son dönemlerde uygulamalarıyla ilgilenmeye başladığım bu konu birçok alanda çığır açma eşiğinde (örnekler için tıklayınız). Yakın zamanda yayınlanmaya başlayan ve sinir-bilim konusunda güncel tartışmalara yer veren 'Nöroblog Podcast' sesli yayınının geçen haftaki bölümünde, programın yapımcıları Onur Arpat ve Taner Yılmaz ile bu konuyu tartıştık.


Yayını yukarıdaki arayüz (Soundcloud) üzerinden (şu bağlantıdan) ya da iTunes'dan abone olarak dinleyebilirsiniz. 

Programın temeli benim de kitaplarını ilgiyle okuduğum (biri Pulitzer ödüllü: 'Tüm Hastalıkların Şahı-Kanserin Biyografisi'), kendisi aynı zamanda kanser uzmanı bir doktor olan Siddhartha Mukherjee'nin New Yorker'ın 3 Nisan tarihli sayısında yayınlanan yazısı: AI vs MD: 'Yapay zeka tıp doktoruna karşı'. Programda, makalede dile getirilen konuları detaylıca tartışmaya çalıştık; klasik 'kural tabanlı sistemler'den günümüz öğrenen sistemlerine ve bunların başardıkları ve eksikliklerine işaret ettik; aynı zamanda bu sistemlerin bir takım rutin işleri yapmak konusunda biz insanların yerini alıp alamayacaklarına dair 'spekülasyon' seviyesinde olsa da birkaç şey söylemeye çalıştık.

Bu konu artık gündemin büyük bir kısmını oluşturuyor. Her geçen gün insanı en zorlu oyunlarda yenen yapay zeka sistemlerinden, sürücüsüz arabalara, Elon Musk ve diğer Silikon Vadisi tayfasının beyin-bilgisayar arayüzü üzerine 'vizyoner' girişimlerinden ses ve görsel tanımada insanları çoktan geride bırakmış sistemlere kadar birçok ilginç ve belki de haklı  olarak 'kaygılandıran' gelişmelere tanık oluyoruz. İnsanı tanımlayan ve birçoklarına göre diğer tüm canlılardan ayıran 'bilinç' ve 'zeka' özelliklerinin artık yavaş yavaş bilgisayarlar için kullanılmaya başlaması bu tartışmaları alevlendiren şeyler. Bu gibi tartışmaları sağlıklı bir şekilde yapmak, konuyu abartılardan ve 'naif iyimserlik'ten uzak bir düzlemde, yanlış anlaşılmalara neden olmayacak bir şekilde yapmak için her yönden inceleyip, açık bir şekilde ele almak büyük önem taşıyor.

Sesli yayında konuştuklarımız üzerine birkaç ekleme yapıp, podcast ortamında yalnızca konuşarak ifade edemediğimiz kavramları biraz daha detaylı bir şekilde ele almak amacım. İki bölüm olacak bu yazının ilk kısmında ele alacağım konu, şu anda elimizdeki yapay öğrenme yöntemlerinin ne olduğu ve ne olmadığı.

Yapay öğrenme (İng: machine learning) 'yapay zeka' olarak bilgisayar bilimleri-matematik-istatistiğin kesiştiği alanda kullanılan yöntemlerin bir kısmını ifade ediyor. Bu alanda temelde üç farklı yöntem var:
  • Güdümlü öğrenme (supervised learning): Elinizde bir probleme dair verileriniz var ve bu verilerin her biri etiketlenmiş. Örneğin kanser hücrelerini tanıyabilen, öğrenebilen bir sistem oluşturmak istiyorsunuz. Bu sisteme öncelikle kanser hücresi olduğu ya da olmadığı bilinen örnekleri gösterip sistemi eğitiyorsunuz. Sistem bu örnekler ve örneklerin etiketleri ('sınıfları') üzerinden istatistiksel çıkarımlarda ve genellemelerde bulunup öğreniyor. Artık sisteme etiketlenmemiş, örneğin kanserli olup olmadığı bilinmeyen bir doku örneği verdiğinizde sistem size bu dokunun kanserli olup olmadığını (belirli bir olasılık dahilinde) çıktı olarak veriyor. Günümüzdeki yapay öğrenme yöntemlerinin büyük bir çoğunluğu (Google'ın metin çevirme sisteminden, Facebook'un yüz tanıma sistemine, Whatsapp'ın yazdıklarınızı tanımlama sisteminden sürücüsüz arabalara kadar) bu yöntemle çalışıyor. 
  • Güdümsüz öğrenme (unsupervised learning): Elinizde yine verileriniz var fakat bu verilerin etiketleri yok. Yine aynı örnek üzerinden ilerleyelim; kanserli doku hücreleri görüntüleriniz var fakat bunlardan hangisinin kanserli hücre barındırdığını bilmiyorsunuz. Bir model kurup, görüntüler üzerinde bir takım özellikler belirleyerek (örneğin hücrelerin yarıçapı, renk yoğunlukları vb.) bu özellikler üzerinden verinizin birbirinden ayrılabilir belirgin kümeler oluşturup oluşturmadığına bakıyorsunuz. Oluşan kümeleri de sonrasında inceleyerek hangi durumlara karşılık geldiğine bakıp eline geçecek yeni bir veriyi bu kümelerden hangisine düşeceğine bakarak karar veriyorsunuz. Hatta daha da ileri giderek, sınıflandırma için herhangi bir özellik tanımlamadan sistemin bu örnekleri birbirinden ayıran özellikleri kendisinin bulmasını sağlıyorsunuz. Eldeki verileri tek tek etiketlemenin kolay olmadığı durumlar için kullanılan bu yöntem kendi içinde birçok teknik zorluklar barındırıyor ve bu nedenle güdümlü öğrenme gibi 'popüler' değil, fakat geleceğin en etkili öğrenme biçimlerinden biri olacağı düşünülüyor.
Solda güdümlü öğrenme (supervised learning) yönteminde çarpı ve yuvarlak ile etiketlenmiş örnek veriler üzerinden öğrenme gösterilirken, sağda aynı veriler etiketlenmeden güdümsüz öğrenme (unsupervised learning) ile elde edilen farklı gruplar gösterilmiş (Kaynak: Andrew Ng. Coursera Machine Learning dersi materyalleri)
  • Ödüllendirme ile öğrenme (reinforcement learning): İnsanın öğrenmesine en yakın yöntem olan bu yöntemde elinizde eğitmek istediğiniz belirli bir amaca sahip bir sistem var. Örneğin satranç ya da Go gibi bir oyunda karşıdaki kişiyi yenmeye çalışan ya da  bir atari oyununda en yüksek skoru almaya çalışan bir sistem. Bu sistem belirli hareketleri yaparak ilerliyor: satranç ya da Go'da yaptığı hamleler, atari oyununda ise sağ-sol-ileri-geri gibi hareketler. Sistemin şu anki durumu üzerinden yapacağı hamlelere karşılık olarak amaca yaklaşma ihtimali yüksek olanlar için sistemi ödüllendirip bu tip hareketleri teşvik edip, aksi durumda olanları yani kaybetmeye doğru götürme ihtimali yüksek olan hamleleri baskılayıp cezalandırıyorsunuz. Böyle böyle binlerce kez deneme-yanılma yapan sistem sonunda hedefe doğru hızla koşan etkili bir sistem haline geliyor. Aşağıda AlphaGo projesi ile dünya Go şampiyonlarını deviren Google'ın Deepmind şirketinin geliştirdiği, atari oyunlarını birkaç yüz deneme sonunda öğrenen sistemleri görebilirsiniz.


Google Deep Mind'ın geliştirdiği öğrenen sistem yukarıda atari oynuyor. İlk 100 oyun sonunda epey başarısız görünen sistem birkaaç yüz oyun sonunda kısa yollar bulup adeta uzmanlaşıyor. (Kaynak: Google Deepmind)

Bu üç yöntemden şu anda 'yapay zeka'ya doğru giden yolun 'güdümsüz öğrenme' ve 'ödüllendime ile öğrenme' olduğu düşünülüyor. Fakat günümüzde en çok revaçtaki yöntem ise güdümlü öğrenme; bunun iki sebebi var:
  • Birincisi ilgili-ilgisiz herkesin 'büyük veri' diye bahsettiği konu. Artık elimizdeki tüm araçlarla sürekli veri topluyoruz. Girdiğiniz bir internet sitesinde tıkladığınız bağlantılardan, kameranız açıksa gözünüzün hareketlerine; okulda, metroda, her yerde dijital kameralarla, üzerimizdeki cep telefonları ile sürekli güncellenen konum bilgilerimizden, yürüyüş hızımıza, hangi uygulamayı ne kadar kullandığımıza türlü türlü gerekli-gereksiz tüm verileri alıp bunları kaydedip saklayabiliyoruz. Çünkü artık bunu kolaylıkla ve ucuz bir şekilde yapabiliyoruz (yapabiliyor olmamız 'yapmamız' gerekliliğini doğuruyor mu? İşte bu tartışılır!). Evimizde ufacık bir alet üzerine yerleştirilen mikroçip saniyede milyonlarca veri alma kapasitesine sahip. Üstelik bunları saklayacağı hafızalar da hızla büyüyüp ucuzlaşıyor; bu veriyi bir yerden başka bir yere aktarırken artık geniş bant internet bağlantısı sayesinde hiçbir zorluk da yaşamıyoruz.
  • İkincisi bu veriyi işleme gücümüzdeki muazzam artış. Bilgisayar işlemcilerinin performanslarındaki üssel artış (ve aynı zamanda ucuzlama), birden fazla işlemi 'paralel' bir şekilde yapabilme imkanı, tipik bilgisayarların merkezi işlemci birimlerinden (CPU-Central Processing Unit) farklı olarak ilk başta oyun ve grafik amaçlı geliştirilmiş 'grafik işlemci birimleri' (GPU-Graphical Processing Unit), hatta son zamanlarda sırf yapay öğrenme uygulamaları için Google tarafından geliştirilen özelleştirilmiş işlemciler (TPU-Tensor Processing Units) bu konuda bir devrim yaratmış durumda. Öğrenilmesi gereken milyonlarca parametre barındıran yapay öğrenme uygulamalarında milyonlarca örneği ele alıp birkaç saat/gün mertebesinde sonuç üretebilen sistemler var artık elimizde. Yakın geçmişe kadar bunun hayali bile kurulamıyordu. Donanım tarafındaki bu gelişmenin yanında, yazılım tarafında da yapay öğrenme ve istatistiksel örüntü tanıma konusunda geliştirilen programları ve bunların 'açık kaynak kodlu' olarak sunulup birçok kişi tarafından özenle geliştiriliyor olması tüm bu gelişmelere büyük bir ivme kazandırdı.

Bu gelişmeler sayesinde beş yıl öncesine kadar bir kediyi, köpekten ayırmakta zorlanan sistemler şu anda kedinizin hangi açıdan çekilmiş olursa olsun bir fotoğrafından hangi tür olduğunu söyleyebiliyor. Aynı şey tıp görüntülemelerinde kanser öncesi oluşumları erkenden tanımlayabilen sistemler için de geçerli. Örnekler birçok alan için çoğaltılabilir.

Peki bu ilerlemelere ve tüm bu çığır açan uygulamalara bakarak her şeyin kusursuz olduğunu iddia edebilir miyiz? Maalesef hayır; çünkü:
  • Şu anda kullanılan yöntemler büyük ölçüde 'veriye aç' yöntemler. Etkili sonuçlar elde edebilmeniz için sistemi kurarken çok fazla veriye ihtiyacınız var, ki sonunda size etkili örüntüler oluşturup yeni bir durumlar için daha iyi 'genellemeler' yapabilsin. Birçok alanda bu ölçekte veri bulmak çoğu zaman zor ya da tıp gibi alanlarda bu veriye erişmek 'gizlilik' sebebiyle mümkün değil. Bunu aşmak için birçok çözümler uygulanıyor (Amazon'un 'Mechanical Turk' servisi ya da daha 'pratik' doktora öğrencilerini verileri etiketlemek için kullanmak gibi) fakat bu çözümler sistemlerin veriye açlığını gidermeye yetecek gibi durmuyor. Tıpkı insan gibi birkaç örnek üzerinden etkili bir şekilde öğrenen sistemlere ihtiyaç var ve bu konuda çalışmalar bu işin geleceği olarak görülüyor (bknz: one-shot learning).
  • Kullanılan yöntemler her ne kadar bilgisayar gibi tamamen 'mantık' üzerine kurulu bir sistem üzerinde gerçekleniyor olsa da bu sistemlerin programlanmasından, sistemi eğitmek için sağlanan verilerin seçimine kadar onlarca faktör kaçınılmaz bir şekilde 'yanlılık' (bias) oluşturuyor. Örneğin bankalar kredi verecekleri müşterileri artık bu yöntemlerle belirliyorlar. Algoritmalar kredi başvurusunda bulunan kişinin sosyo-ekonomik bir takım bilgilerini değerlendirip bir sonuç çıkarıyor ve şu kişiye şu kadar riskle kredi verilebilir diyor. Fakat bu sistemi eğitirken kullanılan veri içinde tüm sosyal grupların eşit bir şekilde temsil edilip edilmemesi, çıkacak sonucu doğrudan etkileyebilme gücüne sahip. Bir sonraki yazıda da göreceğimiz gibi bu sistemler çoğu zaman geriye dönük sorgulanamadığı yani bu kararı neden verdiğinin cevabını bize vermediği için bu yanlılıkları fark etmek çok çok güç. Bu özellikle toplumsal-sosyal konularda büyük tehlikeler barındırıyor. Bu konular 'teknoloji çılgınlığı' ve fütürizm modunda ilerleyen tartışmalara henüz yansımasa da günlük hayatta bizi çoktan etkilemeye başladı bile. (Konuyla ilgili şu etileyici kitabı tavsiye ederim: Weapons of Math Destruction: How Big Data Increases Inequality and Threatens Democracy)
  • Her ne kadar tüm sorunlarımıza çare olacak gibi pazarlansa da bu yöntemler şu anda kabaca tahmin etme, sınıflandırma gibi 'alt-seviye' işler yapıyor; 'karar alma', 'muhakeme etme', 'karşılaştırma' gibi daha üst-seviye işler yapabilmeleri için mevcut yöntemlerin üzerine tamamen farklı bir perspektif gerektiği vurgulanıyor. Şu anki baş döndürücü gelişim hızına bakarak bunun için yakın gelecek için umutluyuz, fakat bahsi geçen problemlerin epey çetin problemler olduğunu göz önünden çıkarmamak gerek!
Bir sonraki yazıda sesli yayında da bahsettiğimiz 'Yapay Sinir Ağları' konusunu biraz daha detaylı ve bir örnekle açıklamayı planlıyorum.

Kaynaklar:

1 yorum

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!

Paylaş!

 

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