In current TFX DSL, the node id generation logic is hidden in the code: users can optionally pass in an `instance_name` when creating a node instance. This is required when a pipeline consists of multiple instances of the same node definition. The node id generation logic then becomes:
In current TFX DSL, the node id generation logic is hidden in the code: users can optionally pass in an `instance_name` when creating a node instance. This is required when a pipeline consists of multiple instances of the same node definition. The node id generation logic then becomes:

* If an `instance_name` is not provided by the user, the id of the node will simply be `{class_name}` where `class_name` is the name of the python class of the node / component definition.
* If an `instance_name` is provided by the user, the id will become `{class_name}.{instance_name}`

This works fine if the id is only used by the system. However, as we are introducing deployment config to enhance support for different running backends, there are increasing  needs to side-load per-node configs through CLI. Asking users to be aware of the implicit details in our implementation is not the best we can provide.

This cl proposes to deprecate the `instance_name` and provide an interface to let users to directly set the id of the node instead. In the meanwhile, the `instance_name` and its utilities will not be removed immediately but will stay for a couple of releases for backward compatibility.

PiperOrigin-RevId: 341705097

google/nitroml