well seems to be related to this thread. Note that Levenberg Marquardt is not the robustest Method for such kind of problems (multiple local minima).
Optim.jl provides a simple SA-Optimizer which tend to be more robust for this task
using Optim
loss(u) = sum((data .- model(t,u)).^2)
res = optimize(loss, p0_bounds, SimulatedAnnealing())
# Plot result
scatter(t, data)
plot!(t, model(t, Optim.minimizer(res)))
Or you can try the awesome BlackBoxoptim.jl
EDIT: To elaborate a bit on this:
By simply plotting the value of loss(u) around the p₀ you can visualize how challenging your problem actually is:

you can see multiple local minima next to the global one