- X menggabungkan sistem rekomendasi berbasis machine learning yang dikembangkan untuk meningkatkan kualitas rekomendasi konten yang dipersonalisasi pada feed "For You"
- Feed disusun dengan menggabungkan dua sumber: akun yang diikuti (Thunder) dan konten dari akun yang tidak diikuti (Phoenix Retrieval)
- Semua kandidat posting dievaluasi dengan Phoenix, model Transformer berbasis Grok, untuk menghasilkan peringkat akhir
- Model ini memprediksi probabilitas engagement untuk setiap posting
- Semua fitur yang dirancang manual dan sebagian besar algoritme heuristik di dalam sistem telah dihapus
- Riwayat aktivitas pengguna (like, balasan, bagikan) dianalisis untuk memahami konten yang relevan
Arsitektur sistem
- Home Mixer adalah lapisan orkestrasi yang mengoordinasikan seluruh pipeline
- Mencakup tahap Query Hydration yang mengumpulkan riwayat perilaku pengguna dan informasi following
- Mengelola rangkaian tahap mulai dari pengambilan kandidat, pengayaan data, filtering, scoring, hingga pemilihan akhir
- Mengembalikan posting yang sudah diurutkan per pengguna melalui ScoredPostsService berbasis gRPC
- Thunder adalah penyimpanan in-memory yang mengumpulkan posting secara real-time melalui Kafka event stream
- Mengelola penyimpanan per pengguna untuk posting asli, balasan/repost, dan posting video
- Menyediakan kandidat posting in-network dari akun yang diikuti oleh pengguna yang meminta
- Menyajikan posting terbaru dari akun yang diikuti dengan latensi sangat rendah
- Mencapai performa query tingkat sub-milidetik tanpa akses ke database eksternal
- Phoenix adalah komponen ML inti untuk rekomendasi, terdiri dari dua tahap: Retrieval dan Ranking
- Retrieval: menggunakan model Two-Tower untuk menghitung kemiripan antara embedding fitur/riwayat engagement pengguna dan embedding posting, lalu mengambil posting Top-K
- Ranking: menggunakan arsitektur Transformer with Candidate Isolation agar setiap kandidat dievaluasi secara independen
- Menerima konteks pengguna (riwayat engagement) dan posting kandidat sebagai input
- Memprediksi berbagai probabilitas aksi seperti like, reply, repost, klik, dan lainnya untuk tiap posting
- Candidate Pipeline adalah framework pipeline rekomendasi yang dapat digunakan ulang
- Mendefinisikan trait seperti
Source, Hydrator, Filter, Scorer, Selector
- Memiliki eksekusi paralel, penanganan error, dan logging bawaan untuk memastikan skalabilitas dan stabilitas
Cara kerja
-
Tahap pipeline
- 1. Mengambil data query: mengambil riwayat aktivitas terbaru pengguna dan metadata (misalnya daftar following)
- 2. Menemukan kandidat: mencari posting kandidat dari sumber berikut
- Thunder: posting terbaru dari akun yang diikuti (di dalam jaringan)
- Phoenix Retrieval: posting yang ditemukan dengan machine learning dari korpus global (di luar jaringan)
- 3. Hydration kandidat menggunakan informasi berikut:
- Data inti posting (teks, media, dll.)
- Informasi penulis (nama pengguna, status verifikasi)
- Durasi video (untuk posting video)
- Status langganan
- 4. Filter pra-skoring: menghapus posting yang memenuhi kondisi berikut
- Duplikat
- Terlalu lama
- Milik penonton itu sendiri
- Dari akun yang diblokir/dibisukan
- Mengandung kata kunci yang dibisukan
- Sudah pernah dilihat atau baru-baru ini sudah disajikan
- Konten yang tidak bisa dilanggan
- 5. Metode penilaian: beberapa scorer diterapkan secara berurutan
- Phoenix Scorer: mengambil hasil prediksi machine learning menggunakan model Transformer Phoenix
- Weighted score calculator: menggabungkan hasil prediksi untuk menghasilkan skor relevansi akhir
- Author diversity score calculator: mengurangi pengaruh skor dari penulis yang berulang demi keberagaman
- OON scorer: menyesuaikan skor untuk konten di luar jaringan
- 6. Seleksi: mengurutkan berdasarkan skor dan memilih kandidat Top-K
- 7. Prosedur pascaseleksi: validasi akhir terhadap posting kandidat
-
Scoring dan ranking
- Nilai prediksi model Phoenix digabungkan dengan metode weighted sum
- Aksi positif (like, bagikan, dll.) diberi bobot lebih tinggi, sedangkan aksi negatif (blokir, laporkan, dll.) diberi pengurangan skor
-
Filtering dua tahap
- Filter sebelum perhitungan skor: menghapus duplikat, posting yang lebih lama dari ambang batas, posting sendiri, konten berbayar yang tidak bisa dilihat, posting yang sudah dilihat atau disajikan, akun yang diblokir, kata kunci yang dibisukan, dll.
- Filter setelah seleksi: menghapus posting yang sudah dihapus, spam, konten kekerasan, posting sadis, serta duplikasi banyak cabang dalam thread percakapan yang sama
Prinsip desain utama
- Menghapus feature engineering manual, Transformer belajar langsung dari urutan perilaku pengguna
- Evaluasi kandidat independen (Candidate Isolation) untuk menghasilkan skor yang konsisten dan memudahkan caching
- Embedding berbasis hash sehingga baik retrieval maupun ranking menggunakan beberapa fungsi hash untuk lookup embedding
- Prediksi multi-aksi (Multi-Action Prediction), bukan satu skor tunggal "relevansi" melainkan prediksi untuk beberapa aksi
- Arsitektur pipeline modular
- Memisahkan eksekusi dan pemantauan pipeline dari logika bisnis
- Mendukung eksekusi paralel pada tahap-tahap independen dan penanganan error yang tepat
- Memungkinkan penambahan source, hydration, filter, dan scorer baru dengan mudah
Lisensi
2 komentar
"Rust 62,9%"
트위터의 추천알고리즘을 오픈소스로 공개
Apakah ini sesuatu yang berbeda lagi dengan yang itu? Sepertinya saya harus meluangkan waktu di akhir pekan untuk membacanya...