class_docstr: Base class for MF models running on the GPU.
  
  This adds support for inference to run on the GPU as well as training.
  
  Attributes
  ----------
  item_factors : implicit.gpu.Matrix
      Array of latent factors for each item in the training set
  user_factors : implicit.gpu.Matrix
      Array of latent factors for each user in the training set
code: def __getstate__(self):
      state = self.__dict__.copy()
      # _knn is unpickleable - the rest are cached attributes that don't need to be saved
      for attr in [
          "_knn",
          "_user_norms",
          "_user_norms_host",
          "_item_norms",
          "_item_norms_host",
      ]:
          state[attr] = None
      state["item_factors"] = (
          self.item_factors.to_numpy() if self.item_factors else None
      )
      state["user_factors"] = (
          self.user_factors.to_numpy() if self.user_factors else None
      )
      return state
  
imports: import time
  import numpy
  from scipy.sparse import csr_matrix
  import implicit.gpu
  from ..cpu.matrix_factorization_base import _filter_items_from_sparse_matrix
  from ..recommender_base import RecommenderBase
label_desc: Use image node_id 12 for calling the MatrixFactorizationBase obj's underlying member method code with example usage: obj.__getstate__() and returns: state