13 Milyon Bluesky Kullanıcısının Görselleştirilmesi
(joelgustafson.com)- Herkese açık olay akışı sayesinde, Twitter’da oluşturulması zor olan tam sosyal grafik haritası Bluesky’de 13 milyon kullanıcı ölçeğinde kurulabildi
- Toplama hattı,
bsky.networküzerindeki WebSocket firehose içinden yalnızca takip/takibi bırakma olaylarını süzüp SQLite’a kaydediyor; o sıradafollowstablosu 500 milyondan fazla satıra ve yaklaşık 30GB boyuta ulaşmıştı - 13 milyon düğüm ve 500 milyon kenarı yerleştirmek için Zig tabanlı çok iş parçacıklı bir force-directed layout motoru olan Andromeda geliştirildi, ancak büyük sosyal grafiklerde yerel yapının ezilerek kaybolduğu sınır ortaya çıktı
- GGVec gömmeleri ile UMAP birleştirilerek daha fazla ara yapı elde edildi; UMAP’teki nokta çakışmaları ise Andromeda ile birkaç tik daha simülasyon çalıştırılarak yoğun kümelerde düzeltildi
- Nihai harita, 7 Kasım 2024 itibarıyla filtrelemeden sonra 7,7 milyon düğüm gösteriyor ve bot halkaları, ülke bazlı kümeler ile yüksek takipçili medya/politika hesap kümelerinin keşfedilmesini sağlıyor
Bluesky’nin tüm ağ haritası neden mümkün oldu
- Twitter’da tüm verilere erişilememesi ve scraping’in hem zor hem de yasa dışı olabilmesi nedeniyle tam harita oluşturmak zor
- BlueSky, gereken verileri edinmeye izin veriyor ve 2024 boyunca birkaç ay içinde hızla büyüdü
- Bu büyümenin arka planında Twitter ile kullanıcı tabanı arasındaki süregelen çatışma ve Ekim 2024’te Brezilya’daki Twitter yasağı yer alıyor
- Ortaya çıkan sonuç aurora.ndimensional.xyz adresinde etkileşimli harita olarak keşfedilebiliyor
- WebGPU kullandığı için masaüstü Chrome/Chromium gerekiyor
Takip grafiği nasıl toplandı
- Tüm etkinlikler yerine yalnızca takip grafiği kullanılarak işin kapsamı daraltıldı
- Her takip, yönsüz tek bir kenar olarak ele alınıyor
- Karşılıklı takip varsa iki kenar oluşuyor ve bu da fiilen ağırlığın iki katına çıkması anlamına geliyor
- BlueSky, AT Protocol tabanlı ve kullanıcıların kendi PDS’lerini (personal data server) barındırabilmesi için tasarlanmış durumda
- Gerçek toplama işlemi, BlueSky ekibinin işlettiği
bsky.networkrelay üzerindeki WebSocket firehose kullanılarak yapıldı- Ana
*.bsky.socialPDS ile indekslenmesini isteyen bağımsız PDS’lerin olaylarını topluyor - Tüm ağ olayları gerçek zamanlı akıyor ve şu anda saniyede yaklaşık 500 olay düzeyinde
- Bunların içinden yalnızca takip ve takibi bırakma olayları süzülerek yerel SQLite veritabanına kaydediliyor
- Ana
- Başlangıçta indeksleyici fly.io üzerine dağıtıldı ve litestream ile veritabanı gerçek zamanlı olarak AWS S3’e kopyalandı, ancak aylık 40 dolarlık maliyet nedeniyle ev sunucusuna geçildi
- Sonrasında systemd servisleri, logrotate, tmux izleme ve TailScale bir araya getirilerek evdeki System76 masaüstünde çalıştırıldı
- Yazı yazıldığı sırada BlueSky 13 milyon kullanıcıyı aşmıştı;
followstablosu 500 milyondan fazla satıra sahipti ve diskte yaklaşık 30GB yer kaplıyordu
13 milyon düğümlü grafiğin hesaplama darboğazı
- Grafik yerleşimi için birçok yöntem var, ancak burada başlangıç noktası fizik simülasyonu gibi çalışan force-directed layout oldu
- Tüm düğümler birbirini iten bir kuvvete sahip
- Kenarlar kaynak ile hedef arasında çekici bir kuvvet oluşturuyor
- Her simülasyon tikinde düğüm başına net kuvvet hesaplanıp bir sıcaklık parametresiyle ölçeklenerek hareket ettiriliyor
- Darboğaz, grafiğin boyutundan çok n-body problem hesaplama karmaşıklığında yatıyor
- Basit algoritma, her tikte
O(n^2) + O(e)gerektiriyor - Milyonlarca düğüm ölçeğinde bu, GPU ile bile pratik değil
- Basit algoritma, her tikte
- Yaygın force-directed motorlarda olduğu gibi Barnes-Hut optimizasyonu kullanıldığında bu maliyet
O(n log(n)) + O(e)düzeyine iniyor- Bunun bedeli, uzaktaki düğümlerin etkisini yaklaşık hesaplamak
- Quadtree oluşturma ve sorgulama hiyerarşik olduğundan, GPU üzerinde düğüm kuvvetlerini kolayca hesaplamak zorlaşıyor
- Paralelleştirme için quadtree 4 ya da 16 parçaya bölünüp her tik başında paralel olarak yeniden kuruluyor; iş parçacıkları arasında da düğüm aralıkları bölünerek kuvvetler hesaplanıyor
- Her düğümün net kuvveti, her quadtree’den gelen kuvvetlerle giren ve çıkan kenarların oluşturduğu kuvvetlerin toplamı
- Böylece mevcut CPU neredeyse ek yük olmadan tam kullanılabiliyor
Andromeda ve force-directed yaklaşımın sınırları
- Zig ile çok iş parçacıklı bir force-directed grafik yerleşim motoru olan Andromeda geliştirildi; arayüz ise GTK4 ve OpenGL ile oluşturuldu
- Andromeda, Gephi ve ForceAtlas2 makalesinden güçlü biçimde etkilendi
- Büyük ölçekli grafik görselleştirmede, grafik değişirken simülasyon parametrelerini dinamik biçimde ayarlamayı sağlayan etkileşim kritik önem taşıyor
- Opak ve yineleme süresi uzun araçlarla iyi sonuç almak zor
- Andromeda’da “natural slider” adlı bir arayüz bileşeni de bulunuyor
- Bu, yeni grafikler, yeni motor sürümleri ve yeni parametrelerle çalışırken uygun değer aralığını önceden bilmenin zor olması sorununu azaltmak için tasarlanmış bir çözüm
- Değer aralığını e’nin kuvvetleri cinsinden dinamik olarak ayarlıyor
- 2’nin kuvvetlerinin fazla küçük, 10’un kuvvetlerinin ise fazla büyük olduğu düşünülmüş
- Eylül 2024’teki 5 milyon Bluesky kullanıcısı anlık görüntüsüne ForceAtlas2 yerleşimi uygulandığında, büyük kümelerin kütlesi ve yoğunluğu görünse de genel görünüm oldukça topaklanmış kaldı
- Düğümlerin çoğu, süperkümenin çevresindeki geniş ve ayırt etmesi zor alanlara dağılmıştı
- Yalnızca birkaç düzine küçük topluluk, çoğunlukla ülke bazlı topluluklar, belirgin biçimde ayrışıyordu
- Şubat 2024’te 2 milyon hesaplık sürüm yayımlandığında da küresel görünüm ilgi çekiciydi, ancak yerel görünüm hayal kırıklığı yaratmıştı
- Kullanıcılar kendi hesaplarını bulsalar bile çevredeki hesapları tanıyamayabiliyordu
- Yalnızca 2D düzlem yerleşimiyle tüm ağ bağlantı yapısını eksiksiz yakalamak zor
UMAP, renkler ve nihai harita
- Grafik yerleşimi, boyut indirgeme olarak da görülebilir; yani 13 milyon × 13 milyon komşuluk matrisini 2 boyutlu bir düzleme yansıtma problemi olarak ele alınabilir
- t-SNE ve UMAP, 2D görselleştirme için güçlü doğrusal olmayan boyut indirgeme teknikleri
- UMAP’e Bluesky matrisini doğrudan vermek, ev sunucusu ölçeğinde fazlasıyla büyük kalıyor
- Bunun yerine kullanıcı başına yaklaşık 32 boyutlu gömmeler oluşturulup bunlar UMAP’e veriliyor
- Açık kaynak düğüm gömme aracı olarak nodevectors seçildi; yayımlanmamış GGVec algoritması büyük grafiklerde paralel performans açısından en iyi seçenek gibi göründü
- Eylül 2024’teki 5 milyon düğümlü anlık görüntünün gömmeleri yalnızca 5 dakikada üretildi
- İlk UMAP görüntüsü de ek 10 dakika içinde elde edildi
- Böylece Andromeda’nın topaklı sonucuna kıyasla daha fazla ara yapı ortaya çıktı
- UMAP, bazı kümeleri aşırı yoğunlaştırarak noktaların üst üste binmesine yol açtı
- Özgün boyutlarda aynı olan noktaları hedef boyutlarda da aynı konuma yerleştirme amacı açısından bu doğal bir davranış
- Ancak hesap bazında profil fotoğraflarını yakınlaştırılmış düzeyde gösterecek bir harita için uygun değildi
- UMAP’in iç kısmı da son aşamada ağırlıklı k-en yakın komşu grafiği üzerinde bir force-directed layout kullanıyor
- UMAP, hesaplama kısıtları nedeniyle örnekleme kullandığından, tüm düğümler Barnes-Hut tarzında yaklaşık da olsa birbirini itmiş olmuyor
min_distparametresinin büyük grafiklerde noktalar arası ayrımı tutarlı biçimde kontrol edemediği düşünülmüş
- Çakışma sorunu, UMAP çıktısının Andromeda’ya verilmesi ve itme kuvveti denklemleri ayarlanarak birkaç tik daha çalıştırılmasıyla hafifletildi
- Böylece yoğun kümelerde bile düğümler katman katman üst üste binmek yerine alanı doldurur hale geldi
- Sonraki sürümde, UMAP’in oluşturduğu grafiğin ham ağırlıklarına erişilerek Andromeda’nın paralel quadtree yapısı ile UMAP makalesindeki kuvvet denklemlerinin doğrudan birleştirilmesi planlanıyor
- Renkler, UMAP sonucuna HDBScan uygulamak yerine, gömme uzayında k-means kümeleme yapılarak atandı
- Her kümeye bir hue verildi
- Her nokta için en yakın üç küme merkezinden yararlanılarak hue enterpolasyonu yapıldı
- Bu yöntem, PCA tabanlı renklere göre yerel yapıyı daha iyi ortaya çıkarıyor ve yakından bakıldığında benekli vitray benzeri bir doku veriyor
- Hue, 0 ile 1 arasında tek bir float değer ve hsluv renk uzayında RGB’ye eşleniyor
- Tüm düğümlerin doygunluğu sabit tutuluyor
- Parlaklık, kullanıcının takipçi sayısının
log10değeriyle ölçekleniyor; böylece büyük hesaplar parlak yıldızlar gibi görünürken az takipçili hesaplar daha sönük kalıyor - Büyük hesapları gerçekten daha büyük çizmek, büyük grafiklerde aşırı karmaşıklık yarattığı için tercih edilmedi
- 7 Kasım 2024 itibarıyla tüm ağ haritası, 50 binden fazla hesabı takip edenler ile 5’ten az hesabı takip edip 5’ten az takipçisi olan hesaplar hariç tutularak 7,7 milyon düğümden oluşturuldu
- Yüksek takipçili medya, politika ve yorum hesaplarının belirgin şeritleri, arka plandaki daha düşük ilişkili gruplardan ayrışıyor
- İzlanda kümesi hem uzak ölçekte hem yakın ölçekte hem de profil fotoğrafı seviyesinde görülebiliyor
- Bot halkaları da net biçimde ortaya çıkıyor
- Bir sonraki özellik olarak, mevcut ekranda görünen hesapların gönderi zaman akışını daraltılabilir bir yan panelde gösterme planlanıyor
- Hedef, bunu yeni tür bir sosyal ve meme keşif aracına dönüştürmek
1 yorum
Hacker News yorumları
BSKY akışı tamamen ölü bir alan gibi hissettiriyor. Gönderi paylaşarak, yanıt yazarak, beğenerek aktif biçimde katılmaya çalıştım ama hiçbir şeyin yerli yerine oturmadığı hissi var.
“Kendim için” paylaşım yapmanın da bir sınırı var; kısa süre sonra ilgim azalıyor. İlk dönem Twitter’da herkes yeni insanları takip etmeye hevesliydi; yeni bir sosyal ağın zaten yeni bağlantılar kurmak isteyen insanlarla dolu olması gerekmez mi diye düşünüyorum.
Bluesky ve atproto, hacklenebilir olacak şekilde tasarlanmış gibi görünüyor.
Topluluk yakın zamanda Bluesky “Starter Packs” için aranabilir bir dizin oluşturdu. Starter Packs, kullanıcıların takip edebileceği kişi ve akış paketlerini herkese açık şekilde sunarak yeni kullanıcıların ilk deneyimlerini hızla oluşturmasına yardımcı olan bir özellik.
https://blueskydirectory.com/starter-packs/all
Dan Abramov da bugün bunu olumlu karşıladı ve “Böyle bir şeyin ekosistem içinde mümkün olması harika. Ekosistemin kendi kendine pişmesine izin verelim” dedi [1].
Daha keskin biçimde, “atproto ekosisteminde rastgele projelerin ortaya çıktığını görünce, sosyal şirketlerin API’leri kapatmasıyla kamusal web’in ortak alanlarının ne kadar bastırıldığını yeniden fark ediyorum. Araçlardan oluşan koca bir manzara terk edilip bırakıldı” da dedi [2].
[1] https://bsky.app/profile/danabra.mov/post/3lar3sdna222d
[2] https://bsky.app/profile/danabra.mov/post/3lar3xpuu4c2d
Teknoloji şirketlerinin yaptığı ölümcül hatalardan birinin her şeyi kapalı tutmak olduğunu düşünüyorum. Bilgisayarları ve akıllı telefonları harika yapan şey hacklenebilir olmaları, ortam ve ekosistem yaratmalarıydı. Kilitlemek sadece hızı keser. Uygulamalar olmasaydı akıllı telefonlara el feneri veya kronometre gelmesi ne kadar sürerdi acaba. Bu özellikler işletim sistemine yerleşmeden önce uygulamaydı.
Bluesky geçen hafta belirli alanlarda ciddi biçimde patlamış gibi görünüyor. Cumartesiden beri takipçi sayım 5-6 kat arttı.
Son bir yıldır bir miktar aktiftim; çünkü çalıştığım enerji alanındaki Twitter sohbeti öyle bozuldu ki neredeyse kullanışsız hale geldi. Birçok açıdan saldırgandı ve spam de akıl almaz derecede fazlaydı. Buna karşılık Bluesky rahattı ama etkileşim yüksek değildi; şimdi ise ortam ısınıyor. Bu akının gerçek olmasını umuyorum ve bu sayede çok daha aktif kullanmaya başladım.
Son 3 haftada Bluesky çok daha hareketli hale geldi ve artık akışı tamamen yakalayamama bakımından X’e benzer hissettiriyor. Büyük bir topluluğun daha çeşitli bakış açıları yaratacağına inandığım için çok heyecanlıyım. Kendi Bluesky labeler’ımı ve Firehose toplayıcımı da çalıştırıyorum; son 3-4 ayda olay işleme hacminin kabaca ikiye katlandığını izledim.
Threads; üretim, seyahat ve sosyal içerik tarafında güçlü, yarı Twitter yarı Instagram bir karışım; Bluesky ise haber, siyaset ve bilimde güçlü erken dönem Twitter’a daha yakın. Bugünlerde her şeyi tek bir uygulamada yapmanın mümkün olup olmadığından pek emin değilim. Böyle olursa X de yeni 4chan olarak kalır.
Ara sıra kontrol ediyorum ama fiilen 0/50’ye yakın.
Geçen hafta Bluesky’a taşınan kullanıcı dalgasının bir parçası. Şu ana kadar gerçekten hoşuma gitti; daha önce Mastodon’dan hayal kırıklığına uğradığım için bu biraz şaşırtıcı oldu. Şimdiden Bluesky’da Twitter’dan daha fazla zaman geçiriyorum.
Bluesky’ın ne olduğunu bilmeyenler için anlatmak gerekirse, neredeyse 2015 civarı Twitter’ın bir kopyası ve UI’ı da neredeyse aynı. Ama gelirleştirme, reklam ve growth hacking olmadığı için temel özellikler kullanıcılar için var. Hoşuma giden bir örnek, basit bir Expo/React Native tabanlı mobil uygulama olması; işe yaramaz uygulama içi tarayıcı yerine linkleri Safari’de açmaya izin veriyor.
Dünya, ABD ya da Batı internet dramalarından çok daha büyük. Bir Avrupalı olarak BlueSky dahil ana akım sosyal medyayı okuyunca gözlerim devriliyor. Siyaset, cinsiyet kimliği, klavye aktivizmi ilgimi çekmiyor. Menüye başka bir şey konamaz mı diye düşünüyorum. Gerçekten herhangi bir şey olur. ABD siyaseti ya da özel hayatında kimin hangi cinsiyete ilgi duyduğu dışında yeni şeylere maruz kalmak için Rusça ya da Çince öğrenmem mi gerekiyor diye düşünür oldum. Kimin umurunda ki?
Nostr teknik olarak keyifliydi ama sonunda kripto bro aşamasını aşamaması üzücü.
Oldukça havalı. BlueSky API iyi tasarlanmış. Bir meslektaşım Firehose tabanlı böyle bir görselleştirme yaptı: https://bigmood.blue/
Kaynak: https://bsky.app/profile/even.westvang.com/post/3laob7tefxk2...
Bunu ne kadar sevdiğimi abartmak zor. Nihai sonuç yalnızca birçok boyutta bilgi aktarmakla kalmıyor, görsel olarak da çok çekici.
Muazzam sayıda düğümün render edilmesiyle ortaya çıkan parçacıklı his özellikle hoş bir etki katıyor. Bu, diğer grafik görselleştirmelerinde sık görülen bir unsur değil.
Bluesky’ın en iyi yanı, alan adını kullanıcı adı olarak kullanabilmek. Ben orada @bradgessler.com kullanıyorum; insanlar beni “doğrulamak” isterse mavi tikten çok daha anlamlı olan web sitemi görüyor.
Engellensem, yasaklansam ya da platformdan atılsam bile insanlar alan adımı görüp oraya giderek ne olduğunu kontrol edebilir. Bir anlamda sansürü görünür kılan bir yapı. Şirketler için de iyi olabilir. Bir şirkete @example.com diye hitap edip yanıt almak çok daha az muğlak. Rails tabanlı SaaS’lerden bunu halihazırda yapanları bir araya getirip bir başlangıç paketi de oluşturdum: https://go.bsky.app/JQyXa2u
BlueSky’ın yaptığı işi gerçekten seviyorum ve umarım ileride kalitesizleşmez. Öyle olsa bile şu an havasının çok iyi olduğu bir Goldilocks anı gibi görünüyor. Hesap oluşturup kendi alan adınıza bağlamak 5 dakika sürüyor; kesinlikle tavsiye ederim.
https://joinmastodon.org/verification
“BlueSky matrisini UMAP’e verirsek ne olur? En azından doğrudan yapamayız. UMAP teknik olarak seyrek matrisleri kabul etse de bu ölçek ev sunucum için fazla büyük. Bunun yerine başka bir teknikle tüm kullanıcıların embedding’lerini 32 gibi orta büyüklükte bir boyuta çıkarıp onu UMAP’e verebiliriz. Kolay!” denmiş; tam olarak embedding’lerin nasıl türetildiğini merak ediyorum.
“Dörtlü ağaç oluşturma ve sorgulama doğası gereği hiyerarşiktir” cümlesini görünce, hierarchy konusunda kafası karışan tek kişinin ben olmadığımı düşünmek hoşuma gitti.
Birçok katmanda ilginç bir çalışma. Kelime oyunu değil. Bluesky veri erişilebilirliğinden işleme ve görselleştirme algoritmalarına kadar bakılacak çok şey var. Yine de bu tür görselleştirmeyi veri bilimi spektrumunda nereye koymak gerektiği biraz belirsiz. Geleneksel sayısal grafikler zaman içinde oldukça rafine bir gramer geliştirdi; bu da görece doğru çıkarım ve yorumlamayı mümkün kılıyor. Bu yüzden bilimsel makalelerde, finans sektöründe vb. gerçek bilgi aktarımı için yaygın kullanılıyor; insanlar grafikleri tersine mühendislik ederek veriyi bile geri çıkarıyor.
Ağlar ve graflar ise topoloji, bağlantılılık ve kümeler hakkında genel bir his dışında hangi bilginin aktarıldığını belirlemeyi epey zorlaştırıyor. Böyle büyük ölçekli graflar için kullanışlı bir gramer henüz icat edilmedi mi, yoksa doğası mı böyle, emin değilim.
Bu veriye doğal dil işleme açısından daha fazla bakmak isterdim. Google Trends gibi hangi söylem konularının düzenli olarak ortaya çıktığını, belirli dönemlerde nelerin sıçrama yaptığını görebilmek güzel olurdu.
Ekonomistlerin neyi tartıştığını özetlemek mümkün mü? Birbirlerinin ağında olmayan ama aynı şey hakkında konuşan insanları bulabilir miyiz, merak ediyorum.