🐙

Argo Workflowsの進捗表示カスタマイズとその注意点

2023/12/18に公開

はじめに

こんにちは、kackyと申します。
この記事では、Web系データエンジニアの皆様に向けて、Argo Workflowsの進捗表示のカスタマイズ方法とその注意点についてご紹介します。

Argo Workflowsの概要

Argo Workflows v3.3から、進捗表示のカスタマイズ機能が追加されました。※公式ドキュメントこれにより、以前は0/1でしか表現できなかったタスクの進捗を、より詳細に表現できるようになりました。

進捗表示のカスタマイズ方法

カスタマイズする方法は、以下のサンプルのように、$ARGO_PROGRESS_FILEN/M(N,Mは自然数)形式で書き込むだけです。

# サンプルコード
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: progress-
spec:
  entrypoint: main
  templates:
    - name: main
      dag:
        tasks:
          - name: progress
            template: progress
    - name: progress
      metadata:
        annotations:
          workflows.argoproj.io/progress: 0/100
      container:
        image: alpine:3.14
        command: [ "/bin/sh", "-c" ]
        args:
          - |
            for i in `seq 1 10`; do sleep 10; echo "$(($i*10))"'/100' > $ARGO_PROGRESS_FILE; done

進行状況の更新頻度はデフォルトで1分ですが、これを変更したい場合はARGO_PROGRESS_PATCH_TICK_DURATION環境変数をcontrollerに設定することができます。

※helmマニフェストの設定例

controller:
  extraEnv:
    - name: ARGO_PROGRESS_PATCH_TICK_DURATION
      value: 10s

利用上の注意点

進捗の分母は実行時点で判明している総和を示します。たとえば、A -> B -> Cの順序で実行する場合、Bが実行中であれば、分母にはA + Bが表示されます。このため、分母の変化により進捗が単調に増加しない場合があります。これを避けるためには、A + B + Cの値を予め定めるか、分子と分母を両方表示する必要があります。

まとめ

本記事では、Argo Workflowsの進捗表示のカスタマイズ方法と注意点を紹介しました。これがWorkflow管理の手助けになることを願います。社内のMLOps環境についてのさらなる情報は、こちらをご参照ください。

Argo Workflowsを使った機械学習環境の構築手順

Discussion