flyte支持快取機制,當任務多次執行並且輸入大多相同時,可以使用快取機制加快時間與減少資源使用。
依據augments與回傳值,如low、high、int等等參數輸入值,回傳值List[int]之變化決定是否取用過往minio紀錄結果。若無變化則取用;有變化則建立pod計算結果。
serialize=True則要求當多個該task運行時,都需等待第一個task運行結束後,才會依序運行(確保後面相同task有機會cache成功)。
@fl.task(cache=fl.Cache(version="1.0", serialize=True)
def gen_nums(low: int, high: int, length: int) -> List[int]:
return [random.randint(low, high) for _ in range(length)]
也可指定忽略特定input augment。
@fl.task(cache=fl.Cache(version="1.0", serialize=True, ignored_input=["length"])
def gen_nums(low: int, high: int, length: int) -> List[int]:
return [random.randint(low, high) for _ in range(length)]
因此執行兩次含有gen_nums的workflow,除了第一次是重新產生的值之外,其他執行都是引用s3紀錄之結果。
pyflyte run --remote mean_value_wf.py mean_val_wf --low="100" --high="200" --length="200"