1 poin oleh GN⁺ 2024-11-14 | 1 komentar | Bagikan ke WhatsApp
  • Berkat stream event publik, di Bluesky dimungkinkan untuk menyusun peta keseluruhan social graph berskala 13 juta pengguna, sesuatu yang sulit dibuat di Twitter
  • Pipeline pengumpulan memfilter hanya follow dan unfollow dari WebSocket firehose milik bsky.network, lalu menyimpannya ke SQLite; saat itu tabel follows berisi lebih dari 500 juta baris dan berukuran sekitar 30GB
  • Untuk menata 13 juta node dan 500 juta edge, dibuat Andromeda, engine force-directed layout multithread berbasis Zig, tetapi pada social graph besar terlihat batasannya: struktur lokal menjadi kabur
  • Dengan menggabungkan embedding GGVec dan UMAP, diperoleh lebih banyak struktur tingkat menengah; tumpang-tindih titik pada UMAP kemudian dirapikan dengan menjalankan simulasi Andromeda beberapa tick lagi untuk memperhalus cluster yang padat
  • Peta akhir menampilkan 7,7 juta node setelah filtering per 7 November 2024, dan memungkinkan eksplorasi bot ring, cluster per negara, serta kumpulan akun media/kebijakan dengan follower tinggi

Mengapa peta seluruh jaringan Bluesky bisa dibuat

  • Twitter sulit dibuatkan peta keseluruhan karena data lengkapnya tidak tersedia, scraping juga sulit dan bisa saja ilegal
  • BlueSky menyediakan data yang diperlukan, dan tumbuh pesat selama beberapa bulan pada 2024
    • Latar belakang pertumbuhan ini mencakup konflik berkelanjutan antara Twitter dan basis penggunanya, serta pemblokiran Twitter di Brasil pada Oktober 2024
  • Hasilnya dapat dijelajahi sebagai peta interaktif di aurora.ndimensional.xyz
    • Karena menggunakan WebGPU, diperlukan Chrome/Chromium desktop

Cara mengumpulkan follow graph

  • Untuk memperkecil cakupan pekerjaan, yang digunakan hanya follow graph, bukan seluruh aktivitas
    • Setiap follow diperlakukan sebagai satu edge tak berarah
    • Jika dua pengguna saling follow, terbentuk dua edge sehingga bobotnya secara efektif menjadi dua kali lipat
  • BlueSky berbasis AT Protocol, dan dirancang agar pengguna dapat meng-host PDS (personal data server) mereka sendiri
  • Pengumpulan aktual menggunakan WebSocket firehose dari relay bsky.network yang dioperasikan tim BlueSky
    • Relay ini mengagregasi event dari PDS utama *.bsky.social dan PDS independen yang meminta pengindeksan
    • Event seluruh jaringan di-stream secara real-time, saat ini sekitar 500 event per detik
    • Dari sini, hanya follow dan unfollow yang difilter lalu disimpan ke database SQLite lokal
  • Awalnya indexer dideploy ke fly.io dan database direplikasi secara real-time ke AWS S3 dengan litestream, tetapi karena biaya 40 dolar per bulan, operasinya dipindahkan ke home server
    • Setelah itu dijalankan di desktop System76 di rumah dengan kombinasi service systemd, logrotate, monitor tmux, dan TailScale
  • Pada saat penulisan, BlueSky telah melampaui 13 juta pengguna, dan tabel follows berisi lebih dari 500 juta baris dengan penggunaan disk sekitar 30GB

Bottleneck komputasi pada graph 13 juta node

  • Ada berbagai cara untuk membuat graph layout, tetapi di sini titik awalnya adalah force-directed layout yang bekerja seperti simulasi fisika
    • Semua node memiliki gaya saling menolak
    • Edge menciptakan gaya yang menarik antara source dan target
    • Pada setiap tick simulasi, gaya total per node dihitung lalu diskalakan dengan parameter temperatur untuk memindahkannya
  • Bottleneck-nya bukan hanya ukuran graph itu sendiri, melainkan kompleksitas komputasi n-body problem
    • Algoritme sederhana membutuhkan O(n^2) + O(e) per tick
    • Pada skala jutaan node, ini tidak realistis bahkan dengan GPU
  • Jika memakai optimisasi Barnes-Hut seperti engine force-directed pada umumnya, kompleksitasnya turun menjadi O(n log(n)) + O(e)
    • Ada harga yang harus dibayar: efek node yang jauh didekati secara aproksimatif
    • Karena pembuatan dan query quadtree bersifat hierarkis, gaya pada node sulit dihitung dengan mudah di GPU
  • Untuk paralelisasi, quadtree dibagi menjadi 4 atau 16 bagian, dibangun ulang secara paralel pada awal setiap tick, lalu rentang node dibagi per thread untuk menghitung gaya
    • Gaya total setiap node adalah jumlah gaya dari tiap quadtree serta gaya dari edge masuk dan keluar
    • CPU yang tersedia dapat dimanfaatkan nyaris tanpa overhead

Andromeda dan batasan pendekatan force-directed

  • Dibuat Andromeda, engine force-directed graph layout multithread dalam Zig, dengan GUI berbasis GTK4 dan OpenGL
  • Andromeda sangat dipengaruhi oleh Gephi dan paper ForceAtlas2
    • Dalam visualisasi graph berskala besar, interaktivitas untuk melihat perubahan graph sambil menyesuaikan parameter simulasi secara dinamis sangat penting
    • Sulit mendapatkan hasil bagus dengan tool yang tidak transparan dan membutuhkan waktu iterasi panjang
  • Andromeda juga memiliki widget UI bernama “natural slider”
    • Ini adalah alat untuk mengurangi masalah sulitnya mengetahui rentang nilai yang tepat sebelumnya saat menangani graph baru, versi engine baru, atau parameter baru
    • Rentang nilai disesuaikan secara dinamis dalam satuan pangkat e
    • Pangkat 2 dinilai terlalu kecil, sedangkan pangkat 10 terlalu besar
  • Saat layout ForceAtlas2 diterapkan pada snapshot 5 juta pengguna BlueSky pada September 2024, massa dan kepadatan cluster besar memang terlihat, tetapi secara keseluruhan bentuknya sangat menggumpal
    • Sebagian besar node tersebar di area luas di sekitar supercluster yang sulit dibedakan
    • Hanya beberapa puluh komunitas kecil, terutama komunitas berbasis negara, yang terpisah dengan jelas
  • Ketika versi 2 juta akun pada Februari 2024 dipublikasikan, tampilan global memang menarik, tetapi tampilan lokal mengecewakan
    • Ada kasus ketika pengguna mencari akunnya sendiri tetapi tidak mengenali akun-akun di sekitarnya
    • Sulit menangkap seluruh struktur koneksi jaringan hanya dengan penempatan pada bidang 2D

UMAP, warna, dan peta akhir

  • Graph layout juga dapat dilihat sebagai reduksi dimensi, sehingga masalahnya bisa diperlakukan sebagai proyeksi matriks adjacency 13 juta × 13 juta ke bidang 2D
  • t-SNE dan UMAP adalah teknik reduksi dimensi nonlinier yang kuat untuk visualisasi 2D
    • Memasukkan matriks BlueSky langsung ke UMAP terlalu besar untuk skala home server
    • Sebagai gantinya, dibuat embedding sekitar 32 dimensi per pengguna, lalu hasilnya dimasukkan ke UMAP
  • Sebagai tool embedding node open source dipilih nodevectors, dan algoritme GGVec yang belum dipublikasikan tampak memiliki performa paralel terbaik pada graph berskala besar
    • Embedding untuk snapshot 5 juta node pada September 2024 dibuat dalam 5 menit
    • Gambar UMAP pertama diperoleh dalam tambahan 10 menit
    • Muncul lebih banyak struktur tingkat menengah dibanding hasil Andromeda yang menggumpal
  • UMAP membuat sebagian cluster terlalu padat sehingga titik-titik saling bertumpuk
    • Untuk tujuan reduksi dimensi murni, yaitu menempatkan titik yang sama pada dimensi asli ke lokasi yang sama juga di dimensi target, ini adalah perilaku yang wajar
    • Namun ini tidak cocok untuk peta yang menampilkan foto profil tiap akun pada zoom dekat
  • Di tahap akhir, bagian internal UMAP juga menggunakan force-directed layout pada graph weighted k-nearest neighbor
    • Karena batasan komputasi, UMAP menggunakan sampling, sehingga tidak semua node saling menolak, bahkan secara aproksimatif seperti pada Barnes-Hut
    • Parameter min_dist dinilai tidak mampu mengontrol pemisahan antartitik secara konsisten pada graph besar
  • Masalah tumpang-tindih dikurangi dengan memasukkan output UMAP ke Andromeda, menyesuaikan persamaan gaya tolak, lalu menjalankannya beberapa tick lagi
    • Bahkan pada cluster padat, node mengisi ruang tanpa bertumpuk seperti lapisan
    • Pada versi berikutnya, rencananya adalah mengakses bobot mentah graph yang dibuat UMAP lalu langsung menggabungkan quadtree paralel Andromeda dengan persamaan gaya dari paper UMAP
  • Warna diberikan dengan menjalankan k-means clustering di ruang embedding, alih-alih menerapkan HDBScan pada hasil UMAP
    • Hue diberikan untuk tiap cluster
    • Setiap titik menginterpolasi hue menggunakan tiga pusat cluster terdekat
    • Ini menampilkan struktur lokal lebih baik daripada warna berbasis PCA, dan jika dilihat dari dekat memberi tekstur seperti kaca patri bernoda
  • Hue adalah satu float antara 0 dan 1, lalu dipetakan ke RGB dengan ruang warna hsluv
    • Saturasi semua node dijaga tetap konstan
    • Kecerahan diskalakan dengan log10 dari jumlah follower pengguna, sehingga akun besar tampak seperti bintang terang dan akun dengan sedikit follower tampak redup
    • Cara merender akun besar benar-benar lebih besar dikecualikan karena akan menjadi terlalu rumit pada graph besar
  • Peta seluruh jaringan per 7 November 2024 terdiri dari 7,7 juta node setelah mengecualikan akun dengan lebih dari 50 ribu follow, serta akun yang memiliki kurang dari 5 follow sekaligus kurang dari 5 follower
    • Garis-garis jelas dari akun media, kebijakan, dan komentar dengan follower tinggi dapat dibedakan dari kelompok rendah terkait di latar belakang
    • Cluster Islandia juga dapat dilihat dari jarak jauh, jarak dekat, hingga level foto profil
    • Bot ring juga tampak jelas
  • Fitur berikutnya yang ingin ditambahkan adalah sidebar yang dapat dibuka-tutup berisi timeline posting dari akun-akun yang terlihat di layar saat ini
    • Tujuannya adalah mengembangkannya menjadi jenis baru tool eksplorasi sosial dan meme

1 komentar

 
GN⁺ 2024-11-14
Opini Hacker News
  • Feed BSKY terasa benar-benar seperti ruang mati. Saya sudah mencoba berpartisipasi aktif dengan menulis postingan, membalas, dan memberi suka, tetapi rasanya tidak ada yang benar-benar menempel
    Postingan “untuk diri sendiri” pun ada batasnya, jadi minat cepat menurun. Twitter pada masa awal punya suasana semua orang antusias mengikuti orang baru; bukankah jejaring sosial baru semestinya dipenuhi orang-orang yang ingin membangun jaringan relasi baru?

    • Akun dengan handle itu tampaknya punya sangat sedikit orang yang diikuti, dan terlihat lebih seperti menyiarkan konten daripada ikut dalam percakapan. Mungkin sebaiknya mencoba melakukan kebalikannya
    • Saat ini di BSKY ada masalah yang kaya makin kaya, yang miskin makin miskin yang besar karena starter pack. Jika masuk ke starter pack yang dibuat orang berpengaruh, follower bertambah tanpa henti secara gratis, tetapi jika ingin membangun kehadiran sendiri dari nol, hampir tidak akan ditemukan
    • Penasaran apakah sudah mencoba Mastodon juga. Banyak orang mendapat pengalaman yang lebih baik di sana
  • Bluesky dan atproto tampaknya dibuat dengan mempertimbangkan agar bisa di-hack
    Komunitas baru-baru ini membuat direktori untuk mencari “Starter Packs” Bluesky. Starter Packs adalah fitur yang memublikasikan kumpulan orang dan feed yang mungkin ingin diikuti pengguna, membantu pengguna baru menyusun pengalaman awal dengan cepat
    https://blueskydirectory.com/starter-packs/all
    Dan Abramov juga hari ini menilainya positif, dan berkata, “Keren bahwa hal seperti ini bisa terjadi di dalam ekosistem. Biarkan ekosistemnya memasak” [1]
    Lebih tajam lagi, ia juga berkata, “Melihat proyek-proyek acak bermunculan di ekosistem atproto membuat saya kembali merasakan betapa common web publik telah ditekan ketika perusahaan-perusahaan sosial menutup API mereka. Seluruh lanskap alat telah ditinggalkan dan dibiarkan terbengkalai” [2]
    [1] https://bsky.app/profile/danabra.mov/post/3lar3sdna222d
    [2] https://bsky.app/profile/danabra.mov/post/3lar3xpuu4c2d

    • Saya sedang mempertimbangkan untuk pindah, dan komentar ini terasa paling meyakinkan
      Menurut saya salah satu kesalahan fatal yang dilakukan perusahaan teknologi adalah mengurung semuanya. Yang membuat komputer dan smartphone hebat adalah sifatnya yang bisa di-hack, serta kemampuan menciptakan lingkungan dan ekosistem. Penguncian hanya memperlambat. Tanpa aplikasi, berapa lama waktu yang dibutuhkan sampai smartphone punya senter atau stopwatch? Sebelum tertanam di sistem operasi, fitur-fitur seperti ini adalah aplikasi
    • Rasanya Twitter dulu juga punya sebagian karakteristik seperti ini. Seingat saya, fitur populer saat ini seperti retweet awalnya adalah kebiasaan ad hoc yang dibuat pengguna
    • Benar, memang sengaja dibuat agar bisa di-hack. Kami percaya media sosial menjadi lebih baik ketika orang punya kebebasan untuk membangun di atasnya, mengubah, mem-fork, dan me-remix. Ekosistem Bluesky dan atproto dapat berevolusi secepat yang diinginkan pengguna dan pengembang
    • Starter Packs sangat bagus. Bagaimana kalau melihat akun yang saat ini paling banyak berinteraksi: https://www.graphtracks.com
    • Sebaliknya, ini juga bisa mengarah ke masalah bot yang 10 kali lebih parah daripada Twitter
  • Sepertinya Bluesky meledak besar di bidang-bidang tertentu minggu lalu. Sejak Sabtu follower saya naik 5–6 kali lipat
    Saya cukup aktif selama setahun terakhir karena percakapan Twitter di bidang energi tempat saya bekerja sudah sangat rusak sampai hampir tidak berguna. Dalam banyak hal agresif, dan spamnya juga tidak masuk akal banyaknya. Sebaliknya Bluesky santai tetapi responsnya tidak besar, dan sekarang suasananya mulai memanas. Semoga arus masuk ini sungguhan, dan karenanya saya jadi jauh lebih aktif menggunakannya

    • X saya tidak terlalu rusak. Saya banyak memakai X berbahasa Jepang, jadi mungkin itu ekosistem yang berbeda. Meski begitu, saya juga memakai Bluesky selama setahun terakhir, dan untuk sementara itu jaringan yang menyenangkan tetapi cukup sepi. Kadang sekitar satu jam tidak ada postingan baru
      Dalam 3 minggu terakhir Bluesky menjadi jauh lebih aktif, dan sekarang terasa mirip X dalam arti saya tidak bisa mengikuti seluruh feed sampai habis. Saya percaya komunitas besar menciptakan sudut pandang yang lebih beragam, jadi saya sangat antusias. Saya juga menjalankan labeler Bluesky dan pengumpul Firehose sendiri, dan selama 3–4 bulan terakhir saya melihat throughput pemrosesan event kira-kira berlipat dua
    • Spammer dan troll juga akan segera datang. Tempat yang populer tidak akan lama dibiarkan begitu saja
    • Bagi saya semuanya sedang menemukan tempatnya
      Threads adalah campuran setengah Twitter dan setengah Instagram yang kuat di konten kreator, perjalanan, dan sosial, sedangkan Bluesky lebih mirip Twitter awal yang kuat di berita, politik, dan sains. Belakangan saya tidak yakin apakah mungkin melakukan semuanya dalam satu aplikasi. Kalau begitu, X akan tersisa sebagai 4chan baru
    • Pengalaman saya juga seperti itu dalam segala hal. Arus masuk mendadak, banyak orang menarik dan bermakna untuk diikuti, dan seluruh pengalaman dengan cepat menjadi lebih imersif
    • Saya masih belum menemukan akun utilitas di Bluesky. Di Twitter, saya mengikuti akun untuk melihat kabar tentang game, studio dan penerbit game, situs berita, band, NASA, dan semacamnya. Di Bluesky belum ada yang seperti itu, dan saya tidak tertarik pada individu yang tidak saya kenal. Di Twitter pun sama
      Sesekali saya mengecek, tetapi pada dasarnya mendekati 0/50
  • Ini bagian dari gelombang pengguna yang pindah ke Bluesky minggu lalu. Sejauh ini saya sangat menyukainya, dan agak terkejut karena dulu saya kecewa dengan Mastodon. Saya sudah menghabiskan lebih banyak waktu di Bluesky daripada di Twitter
    Untuk menjelaskan kepada orang yang belum tahu Bluesky itu apa: ini hampir seperti tiruan Twitter sekitar 2015, dan UI-nya juga nyaris sama. Bedanya, karena tidak ada monetisasi, iklan, atau growth hacking, fitur-fitur utamanya ada demi pengguna. Contoh yang saya suka: aplikasi mobile sederhana berbasis Expo/React Native yang memungkinkan tautan dibuka di Safari, bukan browser dalam aplikasi yang tidak berguna

    • Karena Bluesky menerima investasi VC, sepertinya tinggal menunggu waktu sampai monetisasi, iklan, dan growth hacking dimulai. Sampai saat itu, nikmati saja
    • Saya sudah mencobanya; teknologinya terlihat keren, tetapi saya berharap isinya lebih beragam. Sekarang Twitter sebagian besar sudah menjadi penipuan aset kripto dan omong kosong politik kanan jauh AS, jadi saya menginginkan sesuatu yang sedikit lebih menarik daripada omong kosong politik kiri jauh AS
      Dunia jauh lebih besar daripada drama internet Amerika atau Barat. Sebagai orang Eropa, membaca media sosial arus utama, termasuk BlueSky, rasanya sampai ingin memutar mata. Saya tidak tertarik pada politik, identitas gender, atau aktivisme keyboard. Rasanya ingin ada pilihan lain di menu. Apa saja sungguh tidak masalah. Sampai-sampai saya bertanya-tanya apakah saya harus belajar bahasa Rusia atau Mandarin agar bisa terpapar hal-hal baru selain politik AS atau siapa tertarik pada gender apa dalam kehidupan pribadi mereka. Siapa juga yang peduli
      Nostr secara teknis menyenangkan, tetapi sayang akhirnya tidak pernah keluar dari fase crypto bro
    • Kalau “tiruan Twitter sekitar 2015, dan karena tidak ada monetisasi, iklan, atau growth hacking, fiturnya ada demi pengguna”, itu sama persis dengan Mastodon
    • Penasaran bagaimana perbandingannya dengan Threads
  • Cukup keren. BlueSky API dibuat dengan baik. Rekan saya membuat visualisasi seperti ini berbasis Firehose: https://bigmood.blue/
    Sumber: https://bsky.app/profile/even.westvang.com/post/3laob7tefxk2...

  • Sulit untuk melebih-lebihkan betapa saya menyukai ini. Hasil akhirnya tidak hanya menyampaikan informasi dalam banyak dimensi, tetapi juga sangat menarik secara visual
    Kesan partikel yang muncul saat merender jumlah node yang luar biasa besar terasa sangat bagus. Ini elemen yang jarang terlihat di visualisasi graf lain

  • Hal terbaik dari Bluesky adalah bisa memakai domain sebagai nama pengguna. Saya memakai @bradgessler.com di sana, dan kalau orang ingin “memverifikasi” saya, mereka akan melihat situs web saya, yang jauh lebih bermakna daripada tanda centang biru
    Bahkan jika saya diblokir, dilarang, atau ditendang dari platform, orang masih bisa melihat domain saya, pergi ke sana, dan memeriksa apa yang terjadi. Dalam arti tertentu, ini adalah struktur yang membuat sensor terlihat. Sepertinya ini juga bagus untuk perusahaan. Memanggil perusahaan sebagai @example.com dan mendapatkan respons jauh lebih tidak ambigu. Saya juga membuat starter pack yang mengumpulkan SaaS berbasis Rails yang sudah melakukan ini: https://go.bsky.app/JQyXa2u
    Saya sangat menyukai apa yang sedang dilakukan BlueSky, dan berharap tidak menurun kualitasnya. Bahkan kalaupun nanti begitu, saat ini tampaknya seperti momen Goldilocks dengan suasana yang sangat baik. Sangat saya rekomendasikan; membuat akun dan menghubungkannya ke domain sendiri hanya butuh 5 menit

    • Verifikasi identitas Mastodon juga terbuka untuk semua orang dan berbasis standar web terbuka
      https://joinmastodon.org/verification
    • Alamat .bsky.social yang menjadi handle bawaan saat mendaftar juga pada dasarnya mengalihkan ke profil di bsky.app. Bahkan orang yang sama sekali tidak tahu apa itu Bluesky, jika membuka URL itu, bisa langsung melihat profil sosialnya meskipun ada @ di depannya
  • Tertulis: “Apa yang terjadi jika matriks BlueSky dimasukkan ke UMAP? Setidaknya tidak bisa secara langsung. UMAP secara teknis memang menerima matriks sparse, tetapi skala ini terlalu besar untuk home server saya. Sebagai gantinya, kita bisa memakai teknik lain untuk mengekstrak embedding semua pengguna ke dimensi menengah seperti 32, lalu memasukkannya ke UMAP. Mudah!” Saya penasaran, tepatnya bagaimana embedding itu diturunkan

  • Saat melihat kalimat “pembuatan dan kueri quadtree pada dasarnya bersifat hierarkis”, saya senang karena merasa bukan hanya saya yang bingung dengan hierarchy
    Ini pekerjaan yang menarik di banyak lapisan. Bukan permainan kata. Ada banyak hal untuk dilihat, mulai dari ketersediaan data Bluesky, pemrosesan, hingga algoritma visualisasi. Namun, agak tidak jelas visualisasi seperti ini harus ditempatkan di mana dalam spektrum data science. Grafik numerik tradisional seiring waktu telah mengembangkan tata bahasa yang cukup canggih, sehingga memungkinkan inferensi dan interpretasi yang relatif akurat. Karena itu grafik banyak dipakai untuk penyampaian informasi nyata, misalnya di makalah ilmiah atau dunia finansial, dan orang bahkan merekayasa balik grafik untuk memulihkan datanya
    Untuk network dan graph, selain memberi gambaran umum tentang topologi, keterhubungan, dan klaster, cukup sulit menentukan informasi apa yang sebenarnya disampaikan. Saya tidak yakin apakah tata bahasa yang berguna untuk menangani graf berskala besar seperti ini belum ditemukan, atau memang begitulah sifatnya

  • Saya ingin melihat data ini lebih jauh dari sudut pandang pemrosesan bahasa alami. Akan menarik jika bisa melihat topik diskursus apa yang muncul secara berkala, seperti Google Trends, dan apa yang melonjak pada periode tertentu
    Bisakah kita merangkum apa yang dibahas para ekonom? Saya penasaran apakah kita bisa menemukan orang-orang yang tidak berada dalam jaringan satu sama lain tetapi membicarakan hal yang sama