class_docstr: Interface to build a `tf.keras.Model` for ranking.
  
  The `AbstractModelBuilder` serves as the interface between model building and
  training. The training pipeline just calls the `build()` method to get the
  model constructed in the strategy scope used in the training pipeline, so for
  all variables in the model, optimizers, and metrics. See `ModelFitPipeline` in
  `pipeline.py` for example.
  
  The `build()` method is to be implemented in a subclass. The simplest example
  is just to define everything inside the build function when you define a
  tf.keras.Model.
  
  ```python
  class MyModelBuilder(AbstractModelBuilder):
  
    def build(self) -> tf.keras.Model:
      inputs = ...
      outputs = ...
      return tf.keras.Model(inputs=inputs, outputs=outputs)
  ```
  
  The `MyModelBuilder` should work with `ModelFitPipeline`. To make the model
  building more structured for ranking problems, we also define subclasses like
  `ModelBuilderWithMask` in the following.
docstr: The build method to be implemented by a subclass.
docstr_tok: ["The","build","method","to","be","implemented","by","a","subclass","."]
code: def build(self) -> tf.keras.Model:
      """The build method to be implemented by a subclass."""
      raise NotImplementedError("Calling an abstract method.")
  
imports: import abc
  from typing import Any, Callable, Dict, List, Optional, Tuple, Union
  from absl import logging
  import tensorflow
  from tensorflow_ranking.python.keras import feature
  from tensorflow_ranking.python.keras import layers
label_desc: Use image node_id 1 for calling the AbstractModelBuilder obj's underlying member method code with example usage: obj.build() without return types