code: def explicit_model(train_val_explicit_data, gpu_count):
      train, val = train_val_explicit_data
      model = MatrixFactorizationModel(
          train=train,
          val=val,
          embedding_dim=10,
          lr=1e-2,
          loss="mse",
          y_range=[1, 5],
      )
      model_trainer = CollieTrainer(
          model=model,
          gpus=gpu_count,
          max_epochs=10,
          deterministic=True,
          logger=False,
          enable_checkpointing=False,
      )
      model_trainer.fit(model)
      model.freeze()
  
      return model
  
file_path: collie/tests/fixtures/model_fixtures.py
imports: import os
  import tempfile
  import pytest
  import torch
  from collie.interactions import ApproximateNegativeSamplingInteractionsDataLoader, HDF5InteractionsDataLoader, InteractionsDataLoader
  from collie.model import ColdStartModel, CollaborativeMetricLearningModel, CollieMinimalTrainer, CollieTrainer, DeepFM, HybridModel, HybridPretrainedModel, MatrixFactorizationModel, MLPMatrixFactorizationModel, NeuralCollaborativeFiltering, NonlinearMatrixFactorizationModel
  from collie.utils import pandas_df_to_hdf5
label_desc: Use image node_id 3 for calling a global function with example usage: explicit_model(train_val_explicit_data, gpu_count) and returns: model