Petunjuk dan konteks
Sebuah platform menerima teks, gambar, audio, dan video. Pengguna mengharapkan postingan dapat terlihat dengan cepat, sementara platform harus bertindak sebelum konten berisiko tinggi menyebar luas. Desain pra-penyaringan unggahan, analisis mendalam asinkron, peninjauan manusia, banding, pemindaian ulang pasca-publikasi, dan iterasi kebijakan. Anda tidak perlu melatih model, tetapi Anda harus menjelaskan bagaimana keluaran model menjadi keputusan bisnis yang dapat diaudit.
Materi wawancara system-design publik membingkai masalah ini sebagai pipeline berlapis dengan pita keyakinan (confidence bands), antrean manusia, dan jalur banding. Untuk asumsi kapasitas yang dapat dihitung ulang, mulailah dengan 1.000.000 unggahan per jam, sekitar 278 permintaan per detik rata-rata dan sekitar 2.778 pada beban puncak 10x; pra-penyaringan sinkron dapat menambah paling banyak 100 ms pada publikasi, dan peninjau dapat menangani 100.000 kasus per hari. Ganti angka-angka ini jika pewawancara memberikan angka yang berbeda.
Apa yang sedang diuji oleh pewawancara
Pewawancara ingin melihat apakah Anda membagi moderasi menjadi keputusan-keputusan dengan latensi dan risiko yang berbeda, alih-alih hanya menggambarkan satu pengklasifikasi. Jawaban yang kuat memisahkan pemblokiran langsung, publikasi-lalu-pindai-ulang, dan peninjauan manusia; menetapkan ambang batas per kebijakan; mencatat versi model dan bukti; serta menjelaskan bagaimana keputusan yang salah diperbaiki.
Sinyal system-design juga mencakup kapasitas puncak, usia antrean (queue age), pekerjaan duplikat, pemadaman model, masukan berbahaya (adversarial inputs), keselamatan peninjau, tenggat waktu banding, dan isolasi penyewa (tenant) atau regional. Akurasi saja tidak menyediakan tata kelola daring tanpa pengaturan default yang aman, bukti yang dapat diputar ulang, dan metrik operasional.
Klarifikasi yang perlu ditanyakan terlebih dahulu
Apa yang harus diblokir
Tanyakan apakah setiap item memerlukan moderasi pra-publikasi atau hanya kategori yang jelas-jelas berisiko tinggi yang harus diblokir secara sinkron. Dengan anggaran sinkron sekitar 100 ms, analisis video mendalam termasuk dalam jalur asinkron; jika suatu kategori harus dihapus tanpa penundaan, sediakan pemeriksaan sinkron yang lebih berat untuk kategori tersebut.
Bagaimana urutan biaya kesalahan seharusnya diatur
Tanyakan apakah menghapus ucapan yang sah atau melewatkan konten yang sangat berbahaya lebih merugikan, dan apakah pertukaran (tradeoff) tersebut berubah berdasarkan negara, usia, atau kategori kebijakan. Jawabannya menentukan ambang batas, ukuran pita peninjauan manusia, dan apakah tindakan otomatis dapat langsung menghapus konten.
Berapa lama bukti peninjauan harus disimpan
Klarifikasi jendela banding, bukti regulasi, retensi media, dan persyaratan penghapusan. Jika suatu keputusan harus diputar ulang, simpan versi kebijakan dan model, ringkasan masukan (input digest), skor, bukti yang dikutip, dan tindakan peninjau, bukan hanya label akhir.
Apa saja batasan model dan peninjau
Tanyakan apakah publikasi dapat diturunkan kualitasnya (degradasi) saat model tidak tersedia, berapa banyak kasus yang dapat diproses peninjau setiap hari, dan waktu tunggu maksimum. Ketika kapasitas terbatas, kurangi penerimaan asinkron berisiko rendah atau tunda pekerjaan non-kritis; jangan pernah biarkan antrean tanpa batas secara diam-diam meloloskan konten berisiko tinggi.
Jawaban 30 detik
“Saya akan membagi jalur menjadi pra-penyaringan sinkron dan peninjauan mendalam asinkron. Saat pengunggahan, jalankan pencocokan hash, pemeriksaan format dan ukuran, pengklasifikasi ringan, dan pemeriksaan kebijakan dasar. Blokir hasil yang jelas berisiko tinggi, kirim pita keyakinan ke antrean manusia yang diurutkan berdasarkan risiko dan perkiraan paparan, serta publikasikan konten berisiko rendah dengan penanda pemindaian ulang pasca-publikasi. Setiap keputusan menyimpan model, kebijakan, bukti, dan versinya, sementara banding diarahkan ke peninjau yang berbeda. Saya akan menskalakan pra-penyaringan untuk beban puncak 2.778 permintaan per detik, mengisolasi antrean berdasarkan tenant dan risiko, serta memantau konten yang terlewat, positif palsu, usia antrean, waktu paparan, dan beban peninjau. Kegagalan model atau antrean menggunakan default yang aman dan fallback manusia yang eksplisit.”
Pembahasan mendalam langkah demi langkah
Langkah 1: Pisahkan keputusan sinkron dan asinkron
Setelah menerima konten, ingress menulis contentId yang tidak dapat diubah dan referensi media. Lapisan sinkron melakukan pencocokan hash cepat, pemeriksaan format dan ukuran, model teks atau gambar ringan, serta pemeriksaan kebijakan regional. Hasil yang jelas berisiko tinggi diblokir; hasil yang tidak pasti masuk ke PENDING_REVIEW; hasil berisiko rendah dapat dipublikasikan dengan penanda pemindaian ulang. Pengambilan sampel bingkai video, pengenalan suara, dan fusi multi-model berjalan secara asinkron sehingga analisis mendalam tidak memblokir setiap postingan.
Langkah 2: Bertindak berdasarkan kategori, bukan satu skor global
Jangan gunakan satu ambang batas global untuk setiap kategori kebijakan. Kategori yang sangat berbahaya dapat menggunakan ambang pemblokiran otomatis yang lebih rendah dan mengirim kasus perbatasan ke manusia; kategori yang sangat bergantung pada konteks dapat menggunakan pita manusia yang lebih luas untuk mengurangi positif palsu. Konfigurasi ambang batas membawa versi kebijakan dan wilayah, dan peristiwa keputusan menyimpan skor mentah serta ambang batas sehingga tindakan tersebut dapat dijelaskan kemudian.
Langkah 3: Bangun antrean peninjauan yang terukur
Tulis tugas peninjauan ke antrean yang tahan lama (durable queue) dan hitung prioritas dari risiko, perkiraan paparan, laporan pengguna, dan tenggat waktu. Setiap tugas membawa tenant atau wilayah, versi konten, versi kebijakan, dan sewa (lease); peninjau memegangnya sebentar, dan kedaluwarsa akan mengembalikannya ke antrean. Lakukan sharding berdasarkan kategori dan wilayah sehingga satu kategori populer tidak menghabiskan seluruh peninjau. Ketika usia antrean melewati ambang batas, kurangi penerimaan untuk pekerjaan asinkron berisiko rendah dan picu peringatan.
Langkah 4: Buat banding dan umpan balik dapat diputar ulang
Banding membuat kasus baru alih-alih menimpa keputusan awal. Peninjau kedua melihat bukti asli, kebijakan, dan versi model dengan serangkaian izin yang berbeda. Pembatalan keputusan akan memulihkan atau mempertahankan pembatasan dan memancarkan peristiwa audit. Hasil sampel peninjauan manusia, pembatalan banding, dan contoh penghindaran baru menjadi masukan bagi set evaluasi, bukan data pelatihan yang belum ditinjau yang dapat memperkuat label yang buruk.
Langkah 5: Amati risiko, pengalaman, dan biaya
Metrik langsung mencakup latensi pra-penyaringan, tingkat pemblokiran per kategori, panjang dan usia antrean asinkron, kesalahan model, throughput peninjau, dan kesalahan layanan. Setelah label matang, hitung presisi, recall, positif palsu, negatif palsu, dan pembatalan banding berdasarkan kategori dan wilayah. Ukur juga jumlah paparan berisiko tinggi dikalikan dengan waktu online, paparan peninjau, dan biaya per item; akurasi model saja tidak dapat mengungkap kegagalan tata kelola.
Langkah 6: Tangani kegagalan dan masukan berbahaya
Ketika model mengalami waktu habis (timeout) atau tidak tersedia, pertahankan pemblokiran aturan dan hash. Konten dengan risiko yang tidak diketahui dialihkan ke publikasi terbatas atau manusia; “tidak ada hasil” tidak sama dengan aman. Terapkan pembatasan laju (rate limit) dan anggaran pada media yang dienkode ulang, teks yang dikaburkan, unggahan duplikat, dan upaya untuk membuat beban antrean artifisial. Setiap tindakan otomatis harus dapat diputar ulang oleh contentId untuk analisis insiden dan rollback kebijakan.
Contoh jawaban berkualitas tinggi
Pertama-tama saya akan mengonfirmasi anggaran sinkron dan kategori berisiko tinggi. Dengan asumsi rata-rata 278 permintaan per detik dan 2.778 pada puncaknya, saya akan membatasi jalur sinkron pada hash, pemeriksaan format, model ringan, dan aturan regional, dengan target tidak lebih dari 100 ms. Konten yang jelas berbahaya akan langsung ditolak; pita tengah masuk ke antrean manusia yang tahan lama; konten berisiko rendah dipublikasikan dengan penanda pemindaian ulang. Analisis video dan audio mendalam berjalan melalui antrean dan worker alih-alih memblokir setiap pengguna.
Ambang batas dikonfigurasi per kategori kebijakan, bukan sebagai satu skor untuk semua risiko. Setiap keputusan menyimpan ID dan versi konten, versi model dan kebijakan, skor, ringkasan bukti, serta tindakan. Tugas peninjauan diurutkan berdasarkan perkiraan paparan, risiko, laporan, dan tenggat waktu, dan sistem sewa mencegah klaim ganda. Tekanan antrean melindungi pekerjaan berisiko tinggi terlebih dahulu. Keputusan dan pembatalan peninjau adalah peristiwa yang tidak dapat diubah, dan banding ditangani oleh peninjau yang berbeda dengan bukti asli.
Saya akan memantau latensi pra-penyaringan, usia antrean, positif palsu dan konten yang terlewat per kategori, waktu paparan, pembatalan banding, kapasitas peninjau, dan biaya unit. Pemadaman model tetap menjalankan pemblokiran hash dan aturan; hasil yang tidak diketahui menggunakan publikasi terbatas atau fallback manusia. Perubahan model, kebijakan, dan regional diputar ulang secara offline dan kemudian diuji coba secara canary. Tujuannya adalah sistem yang dapat dijelaskan dan dapat dibatalkan yang terus mengurangi bahaya, bukan sekadar angka akurasi offline tunggal.
Kesalahan umum
- Menjalankan model berat secara sinkron untuk setiap item → Latensi video dan audio membebani jalur publikasi → Batasi pekerjaan sinkron pada pra-penyaringan cepat dan pindahkan analisis mendalam ke antrean.
- Menggunakan satu ambang batas untuk setiap kategori → Konten terlewat yang berbahaya tinggi dan positif palsu kontekstual tidak dapat dikontrol keduanya sekaligus → Konfigurasikan ambang batas berdasarkan kebijakan dan wilayah, dengan pita manusia.
- Mengizinkan konten saat model tidak memberikan hasil → Waktu habis menjadi konten terlewat yang tidak diaudit → Pertahankan pemblokiran aturan dan hash serta rute hasil yang tidak diketahui ke penanganan terbatas atau manusia.
- Hanya menyimpan label akhir → Banding tidak dapat merekonstruksi keputusan → Simpan versi konten, model, kebijakan, skor, bukti, dan tindakan.
- Melayani antrean secara strictly FIFO → Lalu lintas populer atau bernilai rendah membuat kasus berisiko tinggi kelaparan (starvation) → Urutkan berdasarkan risiko, perkiraan paparan, dan tenggat waktu sambil mengisolasi kapasitas.
Pertanyaan lanjutan
Pertanyaan lanjutan 1: Apakah meninjau hanya 1% dari total volume sudah cukup?
Persentase bukanlah tujuannya. Dokumentasi AWS menggunakan alur kerja gambar dan videonya sebagai contoh di mana pemfilteran mesin dapat menyisakan sekitar 1%–5% untuk peninjauan manusia; sistem Anda tetap memvalidasi recall kategori, bahaya dari konten yang terlewat, usia antrean, dan waktu paparan daripada memperlakukan rentang tersebut sebagai jaminan universal. Jika kategori berisiko tinggi terlewatkan, perluas pita manusia atau perketat penerimaan publikasi.
Pertanyaan lanjutan 2: Bagaimana jika antrean peninjauan menumpuk selama sehari?
Urutkan ulang berdasarkan risiko dan perkiraan paparan, jeda pekerjaan batch bernilai rendah, tambahkan kapasitas peninjauan berisiko tinggi, dan naikkan peringatan. Pindai ulang dan batasi laju item yang sudah dipublikasikan; jangan menurunkan angka backlog dengan menghapus tugas secara diam-diam. Jika tenggat waktu berisiko tinggi masih tidak dapat dipenuhi, perketat publikasi dan paparkan kekurangan kapasitas kepada bisnis.
Pertanyaan lanjutan 3: Bagaimana Anda mencegah banding yang berhasil agar tidak salah diklasifikasikan lagi?
Simpan versi kebijakan dan model dari sebelum dan sesudah banding, tambahkan pembatalan ke set evaluasi independen berdasarkan kategori, dan periksa bias regional, bahasa, atau kelompok. Putar ulang sampel historis sebelum mengubah ambang batas atau aturan, lalu terapkan perubahan secara canary. Hasil banding bukanlah label pelatihan yang belum ditinjau.
Pertanyaan lanjutan 4: Bagaimana Anda menjaga keterlacakan saat mengganti vendor model?
Tentukan output dan versi adaptor yang dinormalisasi untuk setiap model, serta simpan ringkasan hasil vendor ditambah aturan pemetaan. Bandingkan model baru pada set pemutaran ulang tetap dan peninjauan manusia buta (blind review) untuk kesalahan kategori, konten yang terlewat, latensi, dan biaya sebelum canary regional atau lalu lintas. Jika terjadi regresi, lakukan rollback berdasarkan versi kebijakan ke adaptor lama.