I wrote down a model for a multivariate OU process (see below). How can I infer this forecasting model on multiple independent realizations of the same process?

I saw in this tutorial that one can do that using the ‘origin’ plate. However, I am not sure how to adapt their solution to my multivariate case (the forecasting module does some internal reshaping which I cannot follow). Do you have any suggestions? Thanks!

```
class Model(ForecastingModel):
def model(self,zero_data,covariates):
duration, dim = zero_data.shape[-2:]
#init
init_dist = dist.Normal(torch.zeros(dim), 100).to_event(1)
# transition
trans_mat= pyro.sample("transition_matrix", dist.Dirichlet(torch.ones(dim)).expand([dim]).to_event(1))#.transpose(-2,-1)
trans_mat=(torch.ones(dim).diag_embed()+trans_mat)/2
trans_scale = pyro.sample("trans_scale", dist.LogNormal(torch.zeros(dim), 1).to_event(1)).diag_embed()
trans_dist = dist.MultivariateNormal(torch.zeros(dim), scale_tril=trans_scale)
# observation model
obs_mat = torch.eye(dim)
obs_scale = pyro.sample("obs_scale", dist.LogNormal(torch.zeros(dim), 1).to_event(1)).diag_embed()
obs_dist = dist.MultivariateNormal(torch.zeros(dim), scale_tril=obs_scale)
noise_model = dist.GaussianHMM(init_dist, trans_mat, trans_dist, obs_mat, obs_dist, duration=duration)
assert noise_model.event_shape == (duration, dim)
self.predict(noise_model,zero_data)
```