Thanks for the feedback! The documentation starts from the abstract before ending in the specific, and it sounds like the better user experience would be to map the specific to the abstract upfront.
If you take the colab Penguin identifier example:
Artifacts:

Palmer Penguins dataset
Penguin species identifier model

ArtifactTypes:

Dataset
Model

Where “Artifacts” are instances of an “ArtifactType”. If you are trying multiple different training strategies, you can imagine you will end up with multiple models penguinGuesserA, penguinGuesserB, penguinGuesserC, etc. of type “Model” for each strategy you are experimenting with.
Possible things an ArtifactType can store:


Dataset artifact type in this penguins example stores:



species            Adelie, Adelie, Adelie, Adelie, Adelie, Adelie, Ade…

bill_length_mm     39.1, 39.5, 40.3, NA, 36.7, 39.3, 38.9, 39.2, 34.1,…

bill_depth_mm      18.7, 17.4, 18.0, NA, 19.3, 20.6, 17.8, 19.6, 18.1,…

flipper_length_mm  181, 186, 195, NA, 193, 190, 181, 195, 193, 190, 18…

body_mass_g        3750, 3800, 3250, NA, 3450, 3650, 3625, 4675, 3475,…

year               2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 200…
where each field (species, bill_length, etc.) is a property




PushedModel artifact type in this penguins example stores:





property
value




tfx_version
1.0.0


producer_component
Pusher


pushed
1


state
published


name
pushed_model


pushed_version
1627118772


pushed_destination
/tmp/tmpgs_w7rwz/serving_model/penguins_classi…



If this is helpful, I’ll keep going through explaining the other concepts in a similar way, but if not, I’ll let others chime in.