Pemeriksaan kesehatan kami me-restart server model yang sehat sebanyak delapan kali dalam satu hari

Ops

Pada 22 Juli, sebuah watchdog me-restart server model lokal kami sebanyak delapan kali. Tidak ada satu pun dari restart tersebut yang disebabkan oleh crash. Pemeriksaan yang seharusnya menjaga model tetap aktif justru menjadi penyebab matinya model.

Apa yang terjadi

Server model menjalankan vLLM pada satu mesin NVIDIA GB10 dan menghasilkan sekitar 8 token per detik untuk satu permintaan. Setiap lima menit, sebuah watchdog mengirim permintaan chat nyata dan menunggu hingga 45 detik untuk jawaban. Lima pemeriksaan gagal berturut-turut berarti server macet, dan watchdog me-restart-nya. Sebuah restart menghilangkan model selama beberapa menit sementara sekitar 19 GB bobot dimuat ulang.

Hari itu, sebuah job batch membuat dua hingga empat permintaan sibuk di server selama beberapa menit sekaligus. Permintaan watchdog menunggu dalam antrean di belakang mereka, kehabisan waktu, dan dihitung sebagai kegagalan. Lima pemeriksaan seperti itu kemudian, server yang sehat di-restart. Kami memiliki file flag "busy" yang dihormati oleh watchdog, tetapi job batch tidak pernah mengaturnya.

Bagaimana satu restart palsu memicu restart berikutnya

Setiap restart membuat permintaan yang sedang berjalan gagal dengan error 500 ("cannot schedule new futures after shutdown"). Watchdog kedua menghitung error 500 dan me-restart server ketika jumlahnya terlalu banyak, dan semakin banyak error yang dilihatnya, semakin cepat ia bertindak. Jadi setiap restart palsu membuat restart berikutnya datang lebih cepat. Secara keseluruhan, empat watchdog terpisah dapat me-restart server tersebut, pada timer 5, 10, 15 dan 30 menit.

Aturan yang kami ambil dari kejadian itu

Pemeriksaan kesehatan tidak boleh menggunakan apa yang dijaganya. Sumber daya langka dari server model adalah slot untuk permintaan yang sedang berjalan. Pemeriksaan yang mengambil salah satu slot tersebut, atau menunggu satu slot, menjadi bagian dari beban yang seharusnya ia nilai. Periksa dengan murah, dan restart hanya ketika Anda dapat menunjukkan bahwa server macet.

Pemeriksaan yang menggantikannya

vLLM mempublikasikan penghitungnya sendiri di /metrics. Pemeriksaan baru membacanya terlebih dahulu:

Versi pertama menghitung token yang dihasilkan sebagai kemajuan. Ia lulus delapan tes, dan pada jalurnya yang pertama secara live, ia menemukan server sibuk dan sehat: 2 permintaan berjalan, 107 token baru antara dua pembacaan.

Apa yang kami ubah sejak itu

Perbedaannya mudah dilihat. Saat kami menulis catatan ini, kedua server model kami masing-masing menjalankan 12 permintaan, batas maksimalnya. Permintaan uji coba akan menunggu dalam antrean. Pemeriksaan baru melaporkan keduanya sibuk dan sehat, pada 126 dan 101 token per detik, tanpa mengirim satu pun.

Factory Floor 1.0.2 menyertakan pemeriksaan ini sebagai models/llm-health.py, dengan pengujian untuk server idle, sibuk, macet, dan yang baru di-restart, server tanpa metrik, proxy, dan backend yang mati.

Diperbarui: