acoustic-carpenter-78188
11/22/2025, 12:09 AM@dynamic workflows and then passed along to tasks called within the dynamic workflow, this behaviour always leads to cache misses. The reason is that in the dynamic workflow, the objects are deserialized and then again serialized to a different random remote path.
### Expected behavior
There should not be cache misses in this situation.
### Additional context to reproduce
Let us consider this example workflow:
import torch.nn as nn
from flytekit import task, workflow, dynamic
@task(cache=True, cache_version="0.1")
def train(model: nn.Module) -> nn.Module:
print(f"Training model {model}")
return model
@task(cache=True, cache_version="0.1")
def other_task(param: int) -> int:
print(f"Doing something else with param {param}")
return param
@dynamic(cache=True, cache_version="0.1")
def sub_wf(model: nn.Module, param: int) -> tuple[nn.Module, int]:
other_task(param=param)
train(model=model)
return model, param
@task(cache=True, cache_version="0.1")
def create_model() -> nn.Module:
return nn.Linear(1, 1)
@workflow
def wf(param: int = 1):
model = create_model()
sub_wf(model=model, param=param)
### Screenshots
The first execution with param=1 results in cache puts for all tasks:
[Screenshot 2023-07-06 at 15 57 48](https://private-user-images.githubusercontent.com/36511035/251487490-50a7e5d7-996f-4be1-8905-71fbe578fd8f.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjM3NzA0NjUsIm5iZiI6MTc2Mzc3MDE2NSwicGF0aCI6Ii8zNjUxMTAzNS8yNTE0ODc0OTAtNTBhN2U1ZDctOTk2Zi00YmUxLTg5MDUtNzFmYmU1NzhmZDhmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTExMjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMTIyVDAwMDkyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTMzZDM1YzA0NjE5NTFmODAyMjkyYjQ3MmFhMDQwMjQ1YWU2MzU4ODE2OWJlNDBiMDY0YWNjMmRiMzMzMzViZDgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ZUToEyayYAVlkdF-KJteHXUpPhfo7_pz-bKIO2Xdgjc)
Next, let's re-run the workflow but with `param=2`:
[Screenshot 2023-07-06 at 16 09 30](https://private-user-images.githubusercontent.com/36511035/251487820-3b8b5b3e-c51a-4da2-9a86-6883323bf294.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjM3NzA0NjUsIm5iZiI6MTc2Mzc3MDE2NSwicGF0aCI6Ii8zNjUxMTAzNS8yNTE0ODc4MjAtM2I4YjViM2UtYzUxYS00ZGEyLTlhODYtNjg4MzMyM2JmMjk0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTExMjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMTIyVDAwMDkyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVjODY4ZTVhYzI4YmFmMGY4MWMyMDc5YTVlY2EzMmY3NTY4ZTg4MzYwNzQzYTNhMzM2MDAyM2Y1ODY2Y2ZlYTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.z-USEpl7L38VkQ4DSRtYmeKpkSlJgZc_8InkCduFNTU)
It is expected that other_task has a cache miss since we changed param. However, since create_model had a cache hit, so should have train.
Instead, one can observe that the output of create_model (retrieved from cache) ...
[Screenshot 2023-07-06 at 16 09 44](https://private-user-images.githubusercontent.com/36511035/251488363-6f838d18-a064-4f8a-94fc-a1091ef41363.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjM3NzA0NjUsIm5iZiI6MTc2Mzc3MDE2NSwicGF0aCI6Ii8zNjUxMTAzNS8yNTE0ODgzNjMtNmY4MzhkMTgtYTA2NC00ZjhhLTk0ZmMtYTEwOTFlZjQxMzYzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTExMjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMTIyVDAwMDkyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg2ODlkZWU2ZjEyNjBjN2QzZjdhNWU5MzI0MjUxYzJhMzkxNTQ2YTllMTE2ODA1NTJkZWFkYTNjZGVhOTE0ZDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.BoK7k5sU1zn2vSLX0s-LWcG-XXQL49Eas1xAdOo6RjM)
... is not the same is as the input to `train`:
<https://private-user-images.githubusercontent.com/36511035/251488469-44b0b004-8237-4983-b692-acff144a14c7.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjM3NzA0NjUsIm5iZiI6MTc2Mzc3MDE2NSwicGF0aCI6Ii8zNjUxMTAzNS8yNTE0ODg0NjktNDRiMGIwMDQtODIzNy00OTgzLWI2OTItYWNmZjE0NGExNGM3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTExMjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMTIyVDAwMDkyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYxMzZiNmYxNzNhZGRjMmM4NDMwOWU2MWM2Y2Y3MTJiNjEyNTE3OTZiYWJmOGExZGM1YmViYzQ0NWEwN2FhMGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.eZRmI3X3OPsVhZ3d7dtUZH8iAy-XvODCOfxZposqBig|[Screenshot 2023-07-06 at 16 09 55](https://private-user-images.githubusercontent.com/36511035/251488469-44b0b004-8237-4983-b692-acff144a14c7.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSI…
flyteorg/flyteacoustic-carpenter-78188
11/22/2025, 12:09 AM