def METHOD_NAME(self, covariates, data=None):
    coeff = pyro.sample("coeff", dist.Normal(0, 1))
    bias = pyro.sample("bias", dist.Normal(0, 1))
    scale = pyro.sample("scale", dist.LogNormal(0, 1))
    # Since we'll use a distributed dataloader during training, we need to
    # manually pass minibatches of (covariates,data) that are smaller than
    # the full self.size. In particular we cannot rely on pyro.plate to
    # automatically subsample, since that would lead to all workers drawing
    # identical subsamples.
    with pyro.plate("data", self.size, len(covariates)):
        loc = bias + coeff * covariates
        return pyro.sample("obs", dist.Normal(loc, scale), obs=data)