def METHOD_NAME(self, X: pd.DataFrame, y: pd.Series, **kwargs):
    from tabpfn import TabPFNClassifier
    ag_params = self._get_ag_params()
    sample_rows = ag_params.get("sample_rows")
    max_features = ag_params.get("max_features")
    max_classes = ag_params.get("max_classes")
    if max_classes is not None and self.num_classes > max_classes:
        # TODO: Move to earlier stage when problem_type is checked
        raise AssertionError(f"Max allowed classes for the model is {max_classes}, " f"but found {self.num_classes} classes.")
    # TODO: Make sample_rows generic
    if sample_rows is not None and len(X) > sample_rows:
        X, y = self._subsample_train(X=X, y=y, num_rows=sample_rows)
    X = self.preprocess(X)
    num_features = X.shape[1]
    # TODO: Make max_features generic
    if max_features is not None and num_features > max_features:
        raise AssertionError(f"Max allowed features for the model is {max_features}, " f"but found {num_features} features.")
    hyp = self._get_model_params()
    N_ensemble_configurations = hyp.get("N_ensemble_configurations")
    self.model = TabPFNClassifier(device="cpu", N_ensemble_configurations=N_ensemble_configurations).fit(  # TODO: Add GPU option
        X, y, overwrite_warning=True
    )