Preheat oven to 400°F and line a rimmed baking sheet with foil or parchment. Scrub 3 medium sweet potatoes and poke each 6 to 8 times with a fork.
Roast sweet potatoes for 50 to 60 minutes until skins are wrinkled and a knife slides in with no resistance. Cool 15 minutes, then scoop flesh into a bowl and mash until mostly smooth.
Reduce oven to 350°F. Grease a 9x13-inch baking dish and line with parchment paper, leaving a 2-inch overhang on the long sides.
Stir together graham cracker crumbs, sugar, cinnamon, and salt. Pour in melted butter and mix until every crumb is moistened and the mixture holds together when squeezed.
Press crumbs firmly into the prepared pan using the flat bottom of a measuring cup. Bake for 10 minutes until toasty and set, then cool on a rack while keeping the oven at 350°F.
Beat mashed sweet potato, brown sugar, and melted butter with a hand mixer for 1 to 2 minutes until smooth and glossy. Add eggs one at a time, beating about 20 seconds after each.
Mix in half-and-half and vanilla on low speed. Add cinnamon, nutmeg, ginger, and salt, then mix until completely smooth, scraping down the bowl as needed.
Pour filling over the warm crust and spread into the corners. Tap the pan on the counter 3 or 4 times to release air bubbles.
Bake at 350°F for 35 to 40 minutes until edges are set and the center jiggles just slightly. Cool at room temperature for 1 hour.
Cover loosely and refrigerate for at least 2 hours or overnight. Chilled bars slice cleanly into neat squares.
Move an oven rack to the upper third and turn broiler to high. Lift the chilled slab out using parchment handles and cut into 24 bars (3 lengthwise and 5 crosswise cuts).
Arrange bars on a parchment-lined baking sheet and scatter marshmallows over them in a single snug layer. Broil for 1 to 2 minutes, watching constantly, until puffed and golden brown.
Let bars sit for 5 minutes so marshmallows set slightly, then serve. Alternatively, toast marshmallows one bar at a time with a kitchen torch.