4.8 KiB
| id | title | status | priority | created | last_updated | owner | github_issue | dependencies | tags | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| parameter-tying-framework | Design parameter tying framework for GPy multioutput kernels | Ready | High | 2025-08-15 | 2025-08-15 | Neil Lawrence |
|
Investigate parameter tying limitations and create CIP for discussion
Description
During LFM kernel code review, we identified that GPy lacks systematic parameter tying capabilities compared to GPmat's modelTieParam() functionality. This limitation affects combination kernels such as multiouptut or additive kernels. We need to investigate the scope of this problem and create a CIP to discuss potential solutions with the community.
Problem Statement
- Current Limitation: GPy's parameter system doesn't support tying parameters across different kernel components
- Impact on LFM: Forces complex parameter handling in EQ_ODE1 and EQ_ODE2 kernels
- Broader Impact: May affect other multiple kernel scenarios where parameters should be shared
- Comparison: GPmat has
modelTieParam()functionality that GPy lacks
Investigation Needed
1. Scope Assessment
- Search existing GitHub issues for parameter tying discussions
- Identify other kernels/models that could benefit from parameter tying
- Assess impact on current GPy codebase
2. Community Input
- Create GitHub issue and associated CIP to discuss parameter tying needs
- Gather feedback from GPy maintainers and users
- Identify use cases beyond LFM kernels
- Assess priority relative to other GPy improvements
3. Technical Analysis
- Analyze GPmat's parameter tying implementation
- Review GPy's current parameter system architecture
- Identify potential integration points
- Assess complexity and maintenance burden
Acceptance Criteria
- Complete investigation of existing GitHub issues and discussions
- Document scope of parameter tying needs across GPy
- Create CIP for parameter tying framework discussion
- Gather community feedback on approach and priority
- Provide recommendations for next steps
Implementation Notes
- Focus on problem identification and community discussion
- Avoid prescribing specific solutions until community input is gathered
- Consider whether this should be a separate CIP or part of broader multioutput improvements
- Document trade-offs between different approaches
Related
- CIP: 0001 (LFM kernel implementation) - may depend on parameter tying
- GPy parameter system design
- GPmat parameter tying implementation
- Multioutput kernel architecture discussions
Progress Updates
2025-08-15
Task created after identifying parameter tying as a potential limitation during LFM kernel code review. Need to investigate scope and create CIP for community discussion.
2025-08-15 (GitHub Investigation)
Found existing GitHub issues confirming parameter tying limitations:
GPy Issues:
- Issue #462 (2016): "tie_params doesnt work ?" -
AttributeError: 'Add' object has no attribute 'tie_params' - Issue #789 (2019): "Non-implemented Param tying work-around options" - Confirms
tie_tofrom Parametrized is not implemented - Issue #878 (2020): "Constraining hyperparameters" - Open issue requesting parameter equality constraints in MultioutputGP
Paramz Issues:
- Issue #34 (2019): "What does m.name[0].tie_to(other) do?" -
tie_tois documented but not implemented - Issue #35 (2020): "Constraint that makes parameters sum to one?" - Also references missing
tie_tofunctionality
Key Findings:
- Parameter tying functionality has been missing/broken in both GPy and paramz for at least 5 years
tie_tomethod is documented in paramz but not implemented- Multiple users have requested this feature for different use cases
- Current workarounds involve manual parameter management
- No systematic solution exists in either codebase
- The problem is deeper than just GPy - it's a fundamental limitation in the paramz framework
2025-08-15 (Paramz Dependency Analysis)
Current State:
- GPy still actively depends on paramz:
"paramz>=0.9.6"in setup.py - No evidence of plans to remove paramz dependency
- Recent paramz-related work: Issue #978 (2022) fixing broken kernels due to
add_parameter→link_parameterrename
Implications for Parameter Tying:
- Option 1: Fix paramz first - implement
tie_toin paramz framework - Option 2: Work around paramz - create parameter tying within GPy without relying on paramz's missing features
- Option 3: Replace paramz - major migration away from paramz (unlikely given current dependency)
Recommendation: Focus on Option 1 or 2, as paramz remains actively maintained and GPy continues to depend on it.