def METHOD_NAME(lbann):
    """Construct LBANN model.
    Args:
        lbann (module): Module for LBANN Python frontend
    """
    # Input data
    # Note: Multiply with a weights layer so that gradient checking
    # will verify that error signals are correct. We multiply instead
    # of adding so that each batch sample contributes a different
    # gradient.
    x_weights = lbann.Weights(
        optimizer=lbann.SGD(),
        initializer=lbann.ConstantInitializer(value=1.0),
        name='input_weights'
    )
    x = lbann.Multiply(
        lbann.Input(data_field='samples'),
        lbann.WeightsLayer(weights=x_weights, dims=_sample_size),
    )
    # Compute variance along batch dimension
    sum_x = lbann.BatchwiseReduceSum(x)
    sum_x2 = lbann.BatchwiseReduceSum(lbann.Square(x))
    mini_batch_size = lbann.Tessellate(lbann.MiniBatchSize(), hint_layer=x)
    mean_x = lbann.Divide(sum_x, mini_batch_size)
    mean_x2 = lbann.Divide(sum_x2, mini_batch_size)
    var = lbann.Subtract(mean_x2, lbann.Square(mean_x))
    obj = lbann.L2Norm2(var)
    # Objects for LBANN model
    layers = list(lbann.traverse_layer_graph(x))
    metric = lbann.Metric(obj, name='obj')
    obj = lbann.ObjectiveFunction(obj)
    callbacks = []
    # Compute expected metric value
    var = np.var(_samples, axis=0)
    val = tools.numpy_l2norm2(var)
    tol = 8 * val * np.finfo(np.float32).eps
    callbacks.append(lbann.CallbackCheckMetric(
        metric=metric.name,
        lower_bound=val-tol,
        upper_bound=val+tol,
        error_on_failure=True,
        execution_modes='test'))
    # Gradient checking
    callbacks.append(lbann.CallbackCheckGradients(error_on_failure=True))
    # Construct model
    num_epochs = 0
    return lbann.Model(num_epochs,
                       layers=layers,
                       objective_function=obj,
                       metrics=[metric],
                       callbacks=callbacks)