I have deployed the taxi_simple example pipeline in KFP running on K8s outside of GCP. The artefacts are shared using a PV because of the current Beam limitation for S3.
I have noticed that the metadata features are not working. For example, every time I rerun the same pipeline (no code or data changes), every component is executed again and they are recomputing everything. I assumed that metadata would recognize, that the pipeline already ran and skip it (using the outputs of the "old" run).
Metadata is integrated into the Kubeflow ([884])(https://github.com/kubeflow/pipelines/pull/884).
I have the following ideas:
Can someone explain me how metadata works on a high level? Who is checking if there was a previous run? I assume it is each component for itself or is there another "metadata" component that runs these checks?
Thank you very much for your support!
@rummens This is a current limitation of how metadata is integrated in Kubeflow Pipelines. We're actively working on improving the metadata support so it's on par with the Airflow version. Currently, we record output artifacts, but we don't actually support caching using the recorded metadata. This will change very soon though. We're expecting to have metadata + caching mechanisms converge in both the Airflow and KFP versions of TFX pipelines over the next couple of months.
Thank you for the update. Would you be so kind and explain me how metadata works on a high level?
Every component stores a reference to its inputs/outputs in the metadata store and then when run again checks if there is an entry of itself? Then compares the entry input data with the actual one, and if they are the same stops, and the next component is started?
Or is there something else on top of the whole pipeline? Because if every component does it鈥檚 own checks, every component has to be started (pod creation etc.), which consumes time and resources.
Is my understanding kind of correct? ;-)
Thanks
each component has driver and executor, the metadata part are handled in driver, if cache hits, executor will be skipped. For kubeflow, we don't have driver fully supported yet.
This is our plan about addressing this issue:
cc + @ruoyu90 @neuromage @rcrowe-google
Awe some thanks for the update. Is there any ETA you can provide?
Also if there is anything I can do to help, don鈥檛 hesitate to ask ;-)
Since 0.14.0, TFX on Kubeflow Pipelines uses the same metadata-driven orchestration as the Airflow version, so caching should now work. I'll close this issue given that this is now done.
One missing piece is ensuring the container version is recorded as part of the execution metadata, so that caching will take this into account. We're working on adding that.
Most helpful comment
Since 0.14.0, TFX on Kubeflow Pipelines uses the same metadata-driven orchestration as the Airflow version, so caching should now work. I'll close this issue given that this is now done.
One missing piece is ensuring the container version is recorded as part of the execution metadata, so that caching will take this into account. We're working on adding that.