Apply different function/module to each slice of a tensor along certain dimension

I have a list of modules f = nn.ModuleList[…] of length n and an input tensor x of shape say n*b. What will be the most efficient of of computing a new tensor y=[f_1(x_1) … f_n(x_n)]? It seems that the closest thing is vmap but does it only apply the same function/module?