2 large heads cauliflower, broken into bite-size florets
2 1/2 teaspoons kosher salt, divided, plus more to taste
2 large yellow onions, thinly sliced
6 garlic cloves, grated
1 (2 1/2-inch) piece fresh ginger, peeled and grated
2 teaspoons garam masala
1 teaspoon freshly ground black pepper
Pinch of ground cardamom
Pinch of cayenne pepper
1 cup ground almonds
2 tablespoons honey
2 cups plain whole-milk Greek yogurt
3/4 cup whole milk
1/2 cup raisins
1/2 cup sliced almonds
Heat oven to 350°F. Toss cauliflower with 1/4 cup oil and 1 teaspoon salt. Arrange in a single layer on 2 aluminum foil–lined rimmed baking sheets. Roast cauliflower until tender and browned, 30 to 40 minutes.
Meanwhile, heat 3 tablespoons oil in a large skillet over medium. Add onions and cook, stirring often, until softened and lightly caramelized, 12 to 15 minutes.
Add garlic and ginger and cook, stirring often, until fragrant.
Stir in garam masala, black pepper, cardamom, and cayenne.
Add ground almonds, honey, and 1 1/2 teaspoons salt. Cook, stirring, until almonds cling to onions, about 3 minutes.
Stir in yogurt and reduce heat to low. Simmer until sauce is thickened and a rich golden color, about 10 minutes.
Add milk and cook, stirring, until the sauce is smooth and coats the back of a spoon. Season to taste with salt and remove from heat.
Heat a small frying pan over medium. Add raisins and sliced almonds; cook, shaking pan to keep raisins and almonds moving, until raisins start to blacken and puff up and almonds are golden brown, about 2 minutes.
Spoon sauce onto a platter. Top with cauliflower, and sprinkle with raisins and almonds.