MCMC and Marginal Likelihood

I’m following the tutorial at using Pyro and would like to clarify something for my own understanding.
From the following cell in PyMC3

import pymc3 as pm
import numpy as np

y = np.repeat([1, 0], [50, 50])  # 50 "heads" and 50 "tails"
priors = ((1, 1), (30, 30))
n_chains = 1000

models = []
traces = []
for alpha, beta in priors:
    with pm.Model() as model:
        a = pm.Beta('a', alpha, beta)
        yl = pm.Bernoulli('yl', a, observed=y)
        trace = pm.sample(1000, step=pm.SMC(), random_seed=42)

BF_smc = models[1].marginal_likelihood / models[0].marginal_likelihood

I’ve converted the above tutorial code to the following in Pyro:

import numpy as np
import pyro
import pyro.distributions as dist
from pyro.infer import MCMC, NUTS
import torch

def model(y, alpha, beta):
    a = pyro.sample('a', dist.Beta(alpha, beta))
    yl = pyro.sample('yl', dist.Bernoulli(a), obs=y)
    return yl

y = np.repeat([1, 0], [50, 50])  # 50 "heads" and 50 "tails"
priors = ((1, 1), (30, 30))
y_tensor = torch.from_numpy(y)

models = []
traces = []
for alpha, beta in priors:
    nuts_kernel = NUTS(model)
    mcmc = MCMC(nuts_kernel, num_samples=1000, warmup_steps=200), alpha, beta)
    mcmc_samples = mcmc.get_samples()

My question is: What is the parallel in pyro for models[1].marginal_likelihood? My ideas so far are to use something in poutine.trace or perhaps some functionality in arviz? I feel that I’m missing something obvious here but extended searches of the docs and examples haven’t revealed anything to me so far. Thanks for the help!