
Ini Dia Cara Ngalahin Hasil yang Beda-Beda Terus!
Pernah nggak sih kamu ngerjain sesuatu yang harusnya sama persis hasilnya, tapi kok ya tiap kali dicoba malah beda? Nah, di dunia large language model (LLM) alias si pintar yang bisa ngobrol itu, masalah yang sama lagi nongol! Para peneliti di Thinking Machines Lab, dipimpin Horace He, lagi serius banget nih nyariin jalan keluar buat "nondeterminisme" di inferensi LLM. Kenapa penting? Soalnya, kalau hasilnya aja nggak konsisten, gimana mau dibilang ilmiah coba?
Bukan Salah Settingan, Tapi Cara Kerjanya!
Jadi gini, masalahnya bukan karena kamu salah atur parameter temperature LLM sampai nol (yang katanya sih harusnya bikin hasilnya deterministik alias nggak berubah). Ternyata, biang keroknya ada di cara kerja si LLM saat memproses data di hardware kayak GPU.
Horace He dan timnya menemukan bahwa inti masalahnya terletak pada ketidak-asosiatifan floating-point (ini soal gimana angka desimal dihitung) dan cara kernel (program kecil di GPU) itu dibikin. Gampangnya, urutan perhitungan yang dilakuin sama GPU itu bisa berubah-ubah. Ini dipengaruhi sama ukuran batch (berapa banyak data yang diproses barengan) dan eksekusi paralelnya. Bayangin aja, tiap kali ukuran batch-nya ganti, atau cara datanya dibagi-bagi ke banyak prosesor kecil, hasilnya bisa jadi beda deh! Nggak heran kalau peneliti sampai pusing tujuh keliling buat dapetin hasil yang sama persis.
Solusi nya Bikin Kernel yang "Nggak Peduli" Ukuran Batch
Gimana dong cara ngatasinnya? Nah, ini nih bagian kerennya. Tim Thinking Machines Lab ngasih solusi yang namanya "batch-invariant kernel". Artinya, hasil perhitungan buat tiap data di dalam batch itu nggak boleh terpengaruh sama ukuran batch-nya sendiri, apalagi sama urutan data lain di dalamnya.
Gimana caranya? Mereka memastikan semua operasi penting kayak reduksi (ini proses menjumlahkan atau mengumpulkan hasil) di bagian-bagian krusial seperti RMSNorm, perkalian matriks, dan mekanisme attention (yang bikin LLM ngerti bagian mana dari input yang penting) itu dilakuin secara konsisten. Nggak peduli datanya diparalelkan kayak gimana atau dibagi ke core GPU seberapa banyak, hasilnya harus tetep sama.
Ini mereka praktekin keren banget pakai FlexAttention di backend vLLM. Hasilnya? Lumayan bikin lega!