Fount References

Fount Workflow

Prerequisites


  1. Authentication

    Set your API key as an environment variable
    export FOUNT_API_KEY="your-api-key-here"
    
  2. Initialise Client
    from fount import Fount
    client = Fount()
  3. Upload Dataset
    # From DataFrame
    dataset = client.upload_dataframe(df, name="my_dataset")
    
    # From CSV
    dataset = client.upload_csv("data.csv", name="csv_dataset")
    
    # From Excel
    dataset = client.upload_excel("data.xlsx", sheet_name="Sheet1", name="excel_data")
  4. Train a Model
    job = client.train(
        dataset=dataset,
      	model_name="my_model",
    		series_id_cols=["category"]
        categorical_cols=["category","Year", "Month"],
        date_column="date",
        target_columns=["sales"],
        validation_data_required=True,
        validation_split=0.2,
        time_granularity="daily"
    )
  5. Execute & Monitor a job
    # Synchronous
    job.run(wait=True, poll_interval=30)
    
    # Asynchronous
    job.run(wait=False)
    
    # Check status
    status = job.status()
    print(f"Status: {status['status']}")
  6. Run inference
    inference_job = client.inference(
        dataset=dataset,
        model_name="my_model",
        batch_size=1000
    )
    
    # Synchronous
    inference_job.run(wait=True, poll_interval=30)
    
    # Asynchronous
    inference_job.run(wait=False)
    
    # Check status
    status = inference_job.status()
    print(f"Status: {status['status']}")
  7. Tune a model
    tuning_job = client.tune(
        dataset=dataset,
      	model_name="my_tuned_model",
        series_id_cols=["category"]
        categorical_cols=["category","Year", "Month"],
        date_column="date",
        target_columns=["sales"],
        validation_data_required=True,
        validation_split=0.2,
        time_granularity="daily"
    )
    
    # Synchronous
    tuning_job.run(wait=True, poll_interval=30)
    
    # Asynchronous
    tuning_job.run(wait=False)
    
    # Check status
    status = tuning_job.status()
    print(f"Status: {status['status']}")
  8. Run Inference on tuned model
    inference_job_on_tuned_model = client.inference(
        dataset=dataset,
        model_name="my_tuned_model",
        batch_size=1000
    )
    
    # Synchronous
    inference_job_on_tuned_model.run(wait=True, poll_interval=30)
    
    # Asynchronous
    inference_job_on_tuned_model.run(wait=False)
    
    # Check status
    status = inference_job_on_tuned_model.status()
    print(f"Status: {status['status']}")
  9. Retrieve results
    # Get metrics
    metrics = job.metrics()
    
    # Get predictions
    predictions = job.predictions()
    
    # Stop job if needed
    job.stop()
  10. Manage jobs and datasets
    # List all datasets
    datasets = client.get_all_datasets()
    
    # List all models
    models = client.get_all_models()
    
    # List all training jobs
    training_jobs = client.get_all_training_jobs()
    
    # List all tuning jobs
    tuning_jobs = client.get_all_tuning_jobs()