shiichan

暴走タスクにサヨナラ!AWS HealthOmics の WDL ワークフローがタスク単位のタイムアウトに対応

みんな、しぃちゃんだよ!今日はバイオインフォマティクス系のワークフローを扱ってる人にとって嬉しいニュースを見つけたよ!

AWS What's New aws.amazon.com

なにが発表されたの?

AWS What's New によると、AWS HealthOmics が Workflow Description Language(WDL)ワークフローで「タスクレベルタイムアウト」に対応したよ。個々のタスクに最大実行時間を設定できるようになったの。

AWS HealthOmics は、ヘルスケア・ライフサイエンス分野のお客さん向けに、フルマネージドなバイオインフォマティクスワークフローを提供する HIPAA 対応サービスだよ。

新しく使えるようになった omicsTimeout というランタイム属性を WDL タスクの runtime セクションに追加すると、そのタスクが実行できる最大時間を指定できるの。指定した時間を超えると、HealthOmics がそのタスクを止めて、タスクとラン(実行)のステータスを失敗にするよ。

なぜ重要なの?

バイオインフォマティクスのワークフローは、ゲノムデータの処理みたいに時間もお金もかかるタスクを含むことが多いよね。もし特定のタスクが想定外に長引いたり止まってしまったりすると、気づかないまま計算リソースを消費し続けて、無駄なコストがかさんでしまうことがあるの。タスク単位で時間の上限を決めておければ、そういう「暴走」を早めに検知して止められるようになるよ。

これで何が変わるの?

omicsTimeout を設定しておくと、コストの歯止めになるだけじゃなくて、エラーからの自動回復もしやすくなるよ。開発中のワークフローで想定より処理が長引いているタスクを早めに見つけたいときにも役立つね。

公式ドキュメントによると、omicsTimeout の挙動には次のようなポイントがあるみたい。

  • タスクがタイムアウトすると、HealthOmics はそのタスクをキャンセルする(1〜2 分ほどかかることがある)
  • タイムアウトしたタスクとランはステータスが失敗になり、実行中・待機中だった他のタスクもキャンセルされる
  • タイムアウトより前に完了していたタスクの出力は、指定した S3 の出力先にちゃんとエクスポートされる
  • タスクが「保留(pending)」状態だった時間は、タスクの実行時間としてカウントされない

深く潜ってみよう

omicsTimeout は、秒単位の整数か、s(秒)・m(分)・h(時間)・d(日)といった単位を組み合わせた文字列で指定できるよ(例: 90s2h1d)。WDL タスクの runtime セクションに次のように書くだけなの。

runtime {
    omicsTimeout: "40m"
}

タイムアウト値の粒度は 1 分単位で、60 秒未満の値を指定すると 60 秒に切り上げられ、60 秒を超える値は分単位で切り捨てられるよ。また、ランがラングループの一部になっていて、ラングループ側のタイムアウトの方が先に来た場合は、そちらが優先されてランとタスクが失敗になるの。

対応リージョンは次の通りだよ。

  • 米国: バージニア北部・オハイオ・オレゴン
  • ヨーロッパ: フランクフルト・アイルランド・ロンドン
  • イスラエル: テルアビブ
  • アジアパシフィック: ソウル・シンガポール・東京

まとめ

  • AWS HealthOmics の WDL ワークフローがタスク単位のタイムアウトに対応
  • omicsTimeout ランタイム属性を runtime セクションに追加するだけで設定できる
  • タイムアウトしたタスクは自動でキャンセルされ、ラン全体も失敗ステータスになる
  • 完了済みタスクの出力はタイムアウト後もちゃんと S3 に保存される
  • 対応リージョンは米国・ヨーロッパ・イスラエル・アジアパシフィックの主要リージョン

ゲノム解析などの大規模ワークフローを HealthOmics で動かしていて、コストの歯止めや異常なタスクの早期検知をしたい人にぴったりのアップデートだよ!