終了値0は「成功」とは限らない。AIバッチをVPSに載せる前の確認
AIのCLIやスクリプトをcronやsystemdに載せると、ログに「完了」と出ることがあります。でも、シェルが終了値0を返したことと、頼んだとおりに処理が終わったことは別です。VPSに載せる前に確かめることを、noteにまとめました。
先に決めるのは「成功の定義」
次の3つがそろって、はじめて成功とします。どれかが欠けたら、失敗か未実行です。
- プロセスの終了値が、あらかじめ決めた成功値である
- 期待する成果物(ファイル、件数、判定フラグ)がある
- 「やってはいけない操作」が実行されていない
「ログに文字が出た」「モデルが返事をした」は、成功の条件に入れません。
取り違えやすいところ
- 終了値0なら全部うまくいった:権限不足や途中の打ち切りでも0を返すことがあります。終了値は0なのに、実際は権限待ちで処理が進んでいなかったこともありました。
- 再試行すれば直る:外部への送信、課金、本番への書き込みは、繰り返すほど被害が広がります。
- VPSに移せば安全:成功の判定があいまいなままなら、場所を変えても同じ問題が残ります。
先に紙に書いておくこと
対象にする処理を1つ選び、成功したときに必ずある成果物、一度失敗したら自動では繰り返さない操作(最低3つ)、ログに残してよい情報と残してはいけない情報を書き出します。書けなければ、まだサーバーに載せないほうが安全です。
続きはnoteへ
終了値と成果物を同じ判定に載せる手順は、noteの「終了値0を成功にしていませんか?AIバッチをVPSに載せる前の確認」(有料)にまとめています。再試行してはいけない操作の決め方は「cronに載せる前に決める『再試行してはいけない操作』」で書いています。