Good question! Those sample, param,… statements are Pyro primitives, which are used to construct a generative model: i.e. a model to generate your data. It has nothing to do with evaluating probabilities, elbo, loss,… So those computations do not happen when you call the model.
If you want to get some additional information from the model like elbo, you can use some inference utilities like pyro.infer.Trace_ELBO. If you want to play with some of this stuff, you can start with Trace, like
trace = pyro.poutine.trace(model).get_trace(data)
logp = trace.log_prob_sum()