-
Notifications
You must be signed in to change notification settings - Fork 357
Description
Question
Hi,
I'm using Ax + BoTorch for a physical experiment involving a custom drone propeller.
For every trial, I choose a set of input parameters being:
camber, root chord, tip chord, corner radius, angle of attack, and symmetric (as a yes/no value)
After running each trial, I measure four outputs: lift, drag, rpm, and vibration
My goal is to perform Bayesian optimization where the inputs are the propeller geometry parameters, and the outputs are the physical measurements above (e.g., maximizing lift/drag while also modeling rpm and vibration).
Because I have multiple outputs per experiment, I attempted to use MultiTaskGP from BoTorch. However, Ax skips the MultiTaskGP model and eventually throws the error:
ModelFittingError: Cannot fit MultiTaskGP without task feature.
I now understand that MultiTaskGP requires a task feature dimension, but in my setup: each trial has multiple metrics, not multiple “tasks.” I do not have different fidelities, environments, or conditions, but all metrics are recorded from the same physical experiment
So my questions are:
- Is MultiTaskGP appropriate for multi-output data like this?
My understanding is now that tasks ≠ metrics. But I want to confirm whether MultiTaskGP is intended for: multi-output regression or only multi-fidelity / multi-environment modeling
- If MultiTaskGP is the correct model, what should the task_feature be?
Since I have outputs like lift, drag, rpm, and vibration, would each metric need to become a separate “task”? And would that require reshaping the data into long-form with a task column and only one metric per row?
- If MultiTaskGP is not the intended solution, what model should I be using for multi-output BO?
Is the recommended approach: independent SingleTaskGPs (one per metric), ModelListGP in BoTorch, or something else supported by Ax?
- Is there a built-in way in Ax’s modular BoTorch backend to jointly model multiple outputs?
I want to follow Ax/BoTorch best practices for multi-output optimization. Any guidance on which model class is correct for this scenario—and how the task feature should be defined, if applicable—would be greatly appreciated.
Thanks.
Please provide any relevant code snippet if applicable.
Code of Conduct
- I agree to follow this Ax's Code of Conduct