code: def function_compose(steps: List[List[Callable]]) -> Callable:
      assert len(steps) != 0
  
      @ray.remote
      def finish(*args):
          return args
  
      def entry(*args, **kw_args):
          layer_0 = steps[0]
          wf = [ray.remote(f).bind(*args, **kw_args) for f in layer_0]
          for layer_i in steps[1:]:
              new_wf = [
                  ray.remote(f).bind(w) for f in layer_i for w in wf
              ]
              wf = new_wf
          return finish.bind(*wf)
  
      return entry
  
label_desc: Use image node_id 2 for calling a global function with example usage: function_compose(steps) and returns: entry, args, finish