Preheat the oven to 350°F. Line a 15×10-inch jelly roll pan with parchment paper, leaving some overhang for easy removal.
In a medium bowl, whisk together the flour, baking powder, baking soda, cinnamon, ginger, nutmeg, and salt until evenly combined.
In a large bowl, beat the eggs, granulated sugar, and light brown sugar together until thick and creamy, about 3 to 4 minutes.
Add 2 teaspoons vanilla extract to the egg mixture and mix until combined.
Gradually add the flour mixture to the egg mixture, beating gently until just combined.
Fold in the finely grated carrots and the chopped walnuts if using.
Pour the batter into the prepared pan and spread it evenly with an offset spatula.
Bake for 10 to 12 minutes, or until the cake springs back lightly when touched.
While the cake bakes, dust a clean kitchen towel generously with powdered sugar.
As soon as the cake is out of the oven, carefully invert it onto the prepared towel. Peel off the parchment paper.
Starting from a short end, roll the cake up in the towel and place it seam-side down on a wire rack. Let it cool completely while rolled.
Meanwhile prepare the filling: in a medium bowl, beat the softened cream cheese, powdered sugar, softened butter, and 1 teaspoon vanilla extract until smooth and creamy.
Once the cake is completely cool, carefully unroll it and spread the cream cheese filling evenly over the surface.
Roll the cake back up gently without the towel, wrap it tightly in plastic wrap, and refrigerate for at least 1 hour.
When ready to serve, unwrap, slice with a serrated knife, and enjoy chilled or slightly warmed.