def METHOD_NAME(searchspace: ModelSpace, dataset='cifar10', arch=None, retry=1):
    if arch is not None:
        model = searchspace.freeze(arch)
    else:
        for _ in range(retry):
            try:
                model = searchspace.random()
                break
            except ConstraintViolation as e:
                pass
        else:
            raise e
    if dataset == 'cifar10':
        train_data = FakeData(size=200, image_size=(3, 32, 32), num_classes=10, transform=transforms.ToTensor())
        valid_data = FakeData(size=200, image_size=(3, 32, 32), num_classes=10, transform=transforms.ToTensor())
    elif dataset == 'imagenet':
        train_data = FakeData(size=200, image_size=(3, 224, 224), num_classes=1000, transform=transforms.ToTensor())
        valid_data = FakeData(size=200, image_size=(3, 224, 224), num_classes=1000, transform=transforms.ToTensor())
    train_dataloader = pl.DataLoader(train_data, batch_size=4, shuffle=True)
    valid_dataloader = pl.DataLoader(valid_data, batch_size=6)
    evaluator = pl.Classification(
        train_dataloader=train_dataloader,
        val_dataloaders=valid_dataloader,
        export_onnx=False,
        max_epochs=1,
        limit_train_batches=2,
        limit_val_batches=3,
        num_classes=10 if dataset == 'cifar10' else 1000,
    )
    evaluator.evaluate(model)