Take a look at these lines in the Trainer component 9 for how the run_fn is invoked.  The private function _GetFnArgs 5 is used to gather and create the fn_args which get passed through Trainer to the run_fn.