First-Order Penalty Methods for Bilevel Optimization | Synapse