Collaborating Across Teams on Data and Models
Shared surfaces you must be able to name
Cross-team ML work happens through a small set of shared assets:
- BigQuery for curated, governed data (datasets, authorized views, row-level and column-level access policies).
- Dataplex Universal Catalog (the successor to Data Catalog) for metadata, tagging, search, data quality, and lineage - this is how a data team tells a model team what a table means.
- Analytics Hub for publishing data products to other projects or organizations without copying it.
- Vertex AI Model Registry for model versions, aliases, evaluation results, and governance of what is deployable.
- Vertex ML Metadata and Vertex AI Experiments for lineage from dataset to training run to model.
- Vertex AI Workbench notebooks (managed or user-managed) with Git integration for shared, reviewable experimentation.
Traps
- Model Registry vs Model Garden. Registry stores your versions; Model Garden is a catalog of available models.
- "Share the data" ambiguity. Authorized views and BigQuery sharing rules keep one copy; exporting to GCS creates copies and drift.
- Lineage confusion. Experiments track runs and metrics; ML Metadata tracks artifacts and executions; Catalog tracks data lineage. Questions about "which run produced this model" want the Registry/ML Metadata pair.
- IAM granularity. Don't hand out
roles/owner; the common pattern isaiplatform.userfor the ML team, read-only BigQuery roles for data consumers, and a distinct service account per pipeline. - Notebook hygiene. User-managed notebooks persist but you patch them; managed notebooks are ephemeral and scheduled - pick per team need.
Rule of thumb
Promote models through Registry aliases (e.g., staging, prod) and have serving configs reference the alias, never a raw model ID. Rollback then becomes an alias move.
Worked example
A data engineering team publishes a feature table; the ML team needs read-only access in another project. Use an authorized view or Analytics Hub listing, tag the table in Dataplex, and record the table version as an artifact input so lineage links it to the resulting model version.