Repository: pykeen/pykeen
Issue: Ability to fully disable evaluation in pipeline() for training-only workflows
Root cause: Unimplemented Feature Gap

### Problem Statement

Hi PyKEEN team,

I’m using PyKEEN 1.11.1 and encountered an issue with the pipeline() API related to the evaluation process. Even when my workflow is training-only and I set the following:

```python
result = pipeline(
    training=tf,
    testing=tf,
    validation=tf,
    model="RotatE",
    model_kwargs={"embedding_dim": embedding_dim},
    training_kwargs={"num_epochs": num_epochs},
    evaluator=None,
    use_testing_data=False,
    device="cpu",
)
```

I still observe that a forward evaluation pass is run on CPU at the end of training, which significantly slows down training for large datasets.

Key observations:

1. Setting evaluator=None does not stop the evaluation pass; it only disables metrics computation.
2. Providing testing and validation triples factories is required to satisfy the pipeline, but evaluation still occurs even if metrics are not needed.
3. `training_loop_kwargs={"evaluate_every": None}` is not available in 1.11.1, so it is impossible to fully skip evaluation using the current pipeline options.
4. This makes training-only scenarios (like extracting embeddings for downstream tasks) inefficient, especially on CPU-only machines.

Feature request / suggestion:

1. Allow truly disabling all evaluation in the pipeline() API when the user explicitly wants training-only, e.g., via a flag like skip_evaluation=True or full support for evaluate_every=None in 1.11.1+.

2. Or allow a training_only=True mode that bypasses testing/validation entirely.

This would help workflows where post-training evaluation is unnecessary, such as embedding extraction, pretraining for downstream tasks, or large knowledge graphs where CPU-only evaluation is too slow.

Thanks for considering this enhancement!

Best Regards
Applied mathe professor and ML developer
Saeed Karami 
IASBS

### Describe the solution you'd like

Feature request / suggestion:

1. Allow truly disabling all evaluation in the pipeline() API when the user explicitly wants training-only, e.g., via a flag like skip_evaluation=True or full support for evaluate_every=None in 1.11.1+.
2. Or allow a training_only=True mode that bypasses testing/validation entirely.

This would help workflows where post-training evaluation is unnecessary, such as embedding extraction, pretraining for downstream tasks, or large knowledge graphs where CPU-only evaluation is too slow.

Thanks for considering this enhancement!

### Describe alternatives you've considered

Feature request / suggestion:

1. Allow truly disabling all evaluation in the pipeline() API when the user explicitly wants training-only, e.g., via a flag like skip_evaluation=True or full support for evaluate_every=None in 1.11.1+.

2. Or allow a training_only=True mode that bypasses testing/validation entirely.

This would help workflows where post-training evaluation is unnecessary, such as embedding extraction, pretraining for downstream tasks, or large knowledge graphs where CPU-only evaluation is too slow.

Thanks for considering this enhancement!

Saeed Karami

### Additional information

_No response_

### Issue Template Checks

- [x] This is not a bug report (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)