Pembekuan Autopilot AI: Bahaya Bergantung pada Cap Masa

Ejen AI kami bekerja 24/7.

Mereka menukarkan keperluan kepada tugasan. Mereka menulis kod. Mereka membuka permintaan tarik (pull requests). Seorang penyemak AI meluluskan kerja tersebut. Kemudian, sistem menggabungkan kod tersebut secara automatik.

Pada suatu pagi, kami mendapati sifar tugasan yang selesai selama tiga hari.

Sistem kelihatan sihat. Setiap komponen melaporkan status hijau. Pelan sedang dijana. Ejen sedang bekerja. Penyemak sedang meluluskan. Satu-satunya perkara yang hilang hanyalah proses penggabungan (merge).

Puncanya adalah semakan kesegaran (freshness check) yang kami bina sendiri.

Kami ingin mengelakkan ralat tertentu. Kami tidak mahu menggabungkan kod jika penyemak telah meluluskannya, tetapi kemudian meminta perubahan. Untuk mengatasi ini, kami memberitahu sistem: "Hanya percayai semakan yang berlaku selepas kita mula menunggu."

Logik ini gagal semasa pemulihan sistem (system recoveries).

Jika sistem dimulakan semula atau memindahkan tugasan ke pelayan baharu, ia menetapkan semula cap masa "mula menunggu" kepada waktu semasa.

Jika penyemak meluluskan kod pada jam 10:00 pagi, tetapi sistem dimulakan semula pada jam 10:30 pagi, sistem akan mengabaikan kelulusan jam 10:00 pagi tersebut. Ia menganggap kelulusan itu sudah terlalu lama.

Kelulusan tersebut masih ada di GitHub. Tetapi kod kami tidak dapat melihatnya. Sistem memasuki keadaan kebuntuan (deadlock) yang kekal.

Saya mempelajari tiga pengajaran penting daripada perkara ini:

  • Anggap keadaan luaran sebagai satu tangkapan (snapshot), bukan satu peristiwa. Jangan tanya "adakah sesuatu yang baharu berlaku?" Sebaliknya, tanya "apakah keadaan semasa sekarang?" Jika anda melihat keadaan semasa, proses mulakan semula tidak akan menjadi masalah.

  • Jangan tetapkan semula cap masa semasa pemulihan. Jika anda menetapkan semula masa "mula pada" semasa cubaan semula (retry), anda memadamkan semua fakta yang berlaku sebelum saat itu. Hanya tetapkan semula cap masa apabila kerja sebenar berubah.

  • Pantau di mana tugasan terhenti, bukan sekadar sama ada ia selesai. Bilangan "selesai" memberitahu anda bahawa anda mempunyai masalah. Taburan tugasan mengikut langkah memberitahu anda di mana masalah itu berada. Kami menemui isu ini kerana kami melihat 28 tugasan tersangkut pada langkah "tunggu semakan".

Proses aktif yang mengikut peraturan yang salah tidak akan pernah muncul dalam semakan kesihatan (health check). Ia kelihatan sihat kerana ia berfungsi tepat seperti yang diprogramkan.

Jika anda membina sistem automatik, jangan hanya memerhatikan ralat. Perhatikan di mana proses anda bertimbun.

Sumber: https://dev.to/zoetaka38/our-ai-autopilot-merged-nothing-for-3-days-the-culprit-was-a-review-freshness-check-1240

Komuniti pembelajaran pilihan: https://t.me/GyaanSetuAi