Repository: pykeen/pykeen
Issue: RGCN Hyper parameter optimization error
Root cause: Interface Contract Mismatch

### Describe the bug

When I try to use the hpo_pipeline to optimize the RGCN model, I get the error:
```python-traceback
TypeError: Model.__init__() got an unexpected keyword argument 'use_batch_norm'
```

### How to reproduce

```python
from pykeen.hpo import hpo_pipeline
hpo_pipeline_result = hpo_pipeline(
    dataset='Nations',
    model='RGCN',
    model_kwargs_ranges=dict(
        embedding_dim=dict(type=int, low=4, high=800, q=50)  # Use 'q' for quantization step
    ),
)
```

### Environment

| Key             | Value                        |
|-----------------|------------------------------|
| OS              | posix                        |
| Platform        | Linux                        |
| Release         | 4.18.0-305.19.1.el8_4.x86_64 |
| Time            | Sun Feb 18 15:29:43 2024     |
| Python          | 3.10.11                      |
| PyKEEN          | 1.10.1                       |
| PyKEEN Hash     | UNHASHED                     |
| PyKEEN Branch   |                              |
| PyTorch         | 2.0.1                        |
| CUDA Available? | true                         |
| CUDA Version    | 11.8                         |
| cuDNN Version   | 8700                         |

### Additional information

The pipeline itself does not seem to have  a problem. The following runs well:

```python
from pykeen.pipeline import pipeline
pipeline_result = pipeline(
    dataset='Nations',
    model='RGCN',
)
pipeline_result.save_to_directory('nations_rgcn')
```

### Issue Template Checks

- [X] This is not a feature request (use a different issue template if it is)
- [X] This is not a question (use the [discussions](https://github.com/pykeen/pykeen/discussions/new) forum instead)
- [X] I've read the text explaining why including environment information is important and understand if I omit this information that my issue will be dismissed

Hi, this should be solved now. Until our next release, please install from source: https://github.com/pykeen/pykeen?tab=readme-ov-file#installation--

I get a similar error when trying to tune RGCN using the hpo_pipeline:
TypeError: ERMLPInteraction.__init__() missing 1 required positional argument: 'embedding_dim'
and if i try to remove ERMLP as a base model choice I get an error that 
TypeError: Model.__init__() got an unexpected keyword argument 'activation_cls'

Here is my code for reference:

```python
config = {'model': {'name': 'RGCN'},
 'num_layers': {'type': 'int', 'low': 1, 'high': 5, 'step': 1},
 'edge_dropout': {'type': 'float', 'low': 0.0, 'high': 0.5, 'step': 0.1},
 'self_loop_dropout': {'type': 'float', 'low': 0.0, 'high': 0.5, 'step': 0.1},
 'activation_cls': {'type': 'categorical',
  'choices': [torch.nn.modules.activation.ReLU,
   torch.nn.modules.activation.LeakyReLU,
   torch.nn.modules.activation.Tanh]},
 'base_model_cls': {'type': 'categorical',
  'choices': [pykeen.models.unimodal.distmult.DistMult,
   pykeen.models.unimodal.complex.ComplEx]},
 'embedding_dim': {'type': 'int', 'low': 16, 'high': 512, 'step': 16},
 'train_epochs': {'type': 'int', 'low': 100, 'high': 1000, 'step': 100},
 'lr': {'type': 'float', 'low': 0.001, 'high': 0.1, 'scale': 'log'},
 'negs_per_pos': {'type': 'int', 'low': 1, 'high': 100, 'step': 10}}

pipeline_result = hpo_pipeline(
    study_name="RGCN_hpo",
    device='cpu',
    n_trials=1, 
    training = training,
    validation = validation,
    testing = testing,
   
    # model parameters
    model=config["model"]['name'],
    model_kwargs_ranges=dict(
        embedding_dim=config["embedding_dim"],
        num_layers=config["num_layers"],
        edge_dropout=config["edge_dropout"],
        self_loop_dropout=config["self_loop_dropout"],
        activation_cls=config["activation_cls"],
        base_model_cls=config["base_model_cls"]
    ),

    # training parameters
    training_loop='sLCWA',
    training_kwargs=dict(sampler="schlichtkrull"),
    training_kwargs_ranges=dict(num_epochs=config["train_epochs"]),

    # optimizer parameters
    optimizer=Adagrad,
    optimizer_kwargs_ranges=dict(lr=config["lr"]),

    # negative sampling
    negative_sampler="bernoulli",
    negative_sampler_kwargs=dict(filtered=True),
    negative_sampler_kwargs_ranges=dict(num_negs_per_pos=config["negs_per_pos"]),

    # optuna sampler
    sampler = TPESampler(),

    # evaluation metrics
    evaluator = RankBasedEvaluator(),
    evaluator_kwargs=dict(filtered=True),

    # early stopping
    stopper = 'early',
    stopper_kwargs = dict(frequency=10, patience=3, metric='mrr', use_tqdm=True)
    )
```