Quick Start
This example demonstrates the basic operations of the Pacha registry.
Running the Example
cargo run --example quick_start
What It Does
- Creates a temporary registry - Uses
tempfilefor isolated testing - Registers a model - Creates a fraud detector with metrics and documentation
- Registers a dataset - Adds transaction data with a datasheet
- Queries artifacts - Retrieves and displays model information
- Transitions stages - Promotes the model from development to staging
- Shows statistics - Displays registry usage metrics
Code Walkthrough
Creating the Registry
let temp_dir = TempDir::new().expect("Failed to create temp dir");
let config = RegistryConfig::new(temp_dir.path());
let registry = Registry::open(config)?;
Registering a Model
let card = ModelCard::builder()
.description("Fraud detection model")
.metrics([("auc", 0.95), ("f1", 0.88)])
.primary_uses(["Fraud detection in payment transactions"])
.build();
let model_id = registry.register_model(
"fraud-detector",
&ModelVersion::new(1, 0, 0),
model_data,
card,
)?;
Registering a Dataset
let datasheet = Datasheet::builder()
.purpose("Transaction data for fraud detection")
.creators(["Data Engineering Team"])
.instance_count(1_000_000)
.license("Internal Use Only")
.build();
let dataset_id = registry.register_dataset(
"transactions",
&DatasetVersion::new(1, 0, 0),
dataset_data,
datasheet,
)?;
Stage Transition
registry.transition_model_stage(
"fraud-detector",
&ModelVersion::new(1, 0, 0),
ModelStage::Staging,
)?;
Expected Output
=== Pacha Quick Start ===
1. Registering a model...
Registered model ID: 1cd6809b-6b55-48f5-b619-a5ac4930339b
2. Registering a dataset...
Registered dataset ID: b6cd66ab-5b48-4e7d-ab75-4dd229edc6c8
3. Querying the model...
Model: fraud-detector:1.0.0
Stage: development
4. Promoting model to staging...
New stage: staging
5. Registry statistics:
Models: 1
Datasets: 1
Objects: 2
Total size: 89 bytes
✅ Quick start complete!