Alex Palou holds on to win Detroit Grand Prix