def METHOD_NAME(lbann):
    """Construct LBANN model.
    Args:
        lbann (module): Module for LBANN Python frontend
    """
    # Input data
    # Note: Sum with a weights layer so that gradient checking will
    # verify that error signals are correct.
    x_weights = lbann.Weights(optimizer=lbann.SGD(),
                              initializer=lbann.ConstantInitializer(value=0.0),
                              name='input_weights')
    x = lbann.Sum(lbann.Reshape(lbann.Input(data_field='samples'),
                                dims=_sample_size),
                  lbann.WeightsLayer(weights=x_weights,
                                     dims=_sample_size))
    x_lbann = x
    # Objects for LBANN model
    obj = []
    metrics = []
    callbacks = []
    # ------------------------------------------
    # Data-parallel layout
    # ------------------------------------------
    # LBANN implementation
    x = x_lbann
    y = lbann.L1Norm(x, data_layout='data_parallel')
    z = lbann.L2Norm2(y)
    obj.append(z)
    metrics.append(lbann.Metric(z, name='data-parallel layout'))
    # NumPy implementation
    vals = []
    for i in range(num_samples()):
        x = get_sample(i).astype(np.float64)
        y = np.linalg.norm(x, 1)
        z = tools.numpy_l2norm2(y)
        vals.append(z)
    val = np.mean(vals)
    tol = 8 * val * np.finfo(np.float32).eps
    callbacks.append(lbann.CallbackCheckMetric(
        metric=metrics[-1].name,
        lower_bound=val-tol,
        upper_bound=val+tol,
        error_on_failure=True,
        execution_modes='test'))
    # ------------------------------------------
    # Model-parallel layout
    # ------------------------------------------
    # LBANN implementation
    x = x_lbann
    y = lbann.L1Norm(x, data_layout='model_parallel')
    z = lbann.L2Norm2(y)
    obj.append(z)
    metrics.append(lbann.Metric(z, name='model-parallel layout'))
    # NumPy implementation
    vals = []
    for i in range(num_samples()):
        x = get_sample(i).astype(np.float64)
        y = np.linalg.norm(x, 1)
        z = tools.numpy_l2norm2(y)
        vals.append(z)
    val = np.mean(vals)
    tol = 8 * val * np.finfo(np.float32).eps
    callbacks.append(lbann.CallbackCheckMetric(
        metric=metrics[-1].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=lbann.traverse_layer_graph(x_lbann),
                       objective_function=obj,
                       metrics=metrics,
                       callbacks=callbacks)