code: def main(num_vi_steps, num_bo_steps, seed):
      pyro.set_rng_seed(seed)
      pyro.clear_param_store()
  
      est_ape = partial(estimated_ape, num_vi_steps=num_vi_steps)
      est_ape.__doc__ = "Estimated APE by VI"
  
      estimators = [true_ape, est_ape]
      noises = [0.0001, 0.25]
      num_acqs = [2, 10]
  
      for f, noise, num_acquisitions in zip(
          estimators, noises, num_acqs
      ):
          X = torch.tensor([25.0, 75.0])
          y = f(X)
          gpmodel = gp.models.GPRegression(
              X,
              y,
              gp.kernels.Matern52(
                  input_dim=1, lengthscale=torch.tensor(10.0)
              ),
              noise=torch.tensor(noise),
              jitter=1e-6,
          )
          gpbo = GPBayesOptimizer(
              constraints.interval(0, 100),
              gpmodel,
              num_acquisitions=num_acquisitions,
          )
          pyro.clear_param_store()
          for i in range(num_bo_steps):
              result = gpbo.get_step(f, None, verbose=True)
  
          print(f.__doc__)
          print(result)
  
file_path: pyro/examples/contrib/oed/ab_test.py
imports: import argparse
  from functools import partial
  import numpy
  import torch
  from gp_bayes_opt import GPBayesOptimizer
  from torch.distributions import constraints
  import pyro
  import pyro.contrib.gp
  from pyro import optim
  from pyro.contrib.oed.eig import vi_eig
  from pyro.contrib.oed.glmm import analytic_posterior_cov, group_assignment_matrix, zero_mean_unit_obs_sd_lm
  from pyro.infer import TraceEnum_ELBO
label_desc: Use image node_id 3 for calling a global function with example usage: main(num_vi_steps, num_bo_steps, seed) without return types