Preheat oven to 350 degrees. Grease 2 9-inch cake pans with butter or oil.
In a large bowl, beat the butter and sugar until fluffy, about 3-4 minutes. Beat in the eggs, one at a time, until fully incorporated. Whip in the vanilla, vinegar, dye, and Greek yogurt. Add the flour, cocoa powder, baking soda, and salt. With the mixer running, slowly stream in the buttermilk, mixing until just combined. Do not overmix.
Divide the batter among the prepared cake pans. Bake 30-35 minutes until the center is set and an inserted toothpick emerges with just a few moist crumbs. Let cool in the pans for 10 minutes, then run a knife around the pans to loosen the layers and flip onto a wire rack. Cool completely.
When the cakes are cooled, make the frosting. In a bowl, whip the cream cheese, butter, and vanilla on low speed until combined. Add in 4 cups of powdered sugar and mix to combine, then increase the speed to medium high and whip until very light and fluffy. If needed, pour in more sugar 1/4 cup at a time until the frosting is soft and spreadable.
Place one cake layer on a flat plate or cake stand. Drop frosting onto the top of the layer and spread. Add the second cake layer and frost the top, then around the side until thoroughly coated. Garnish with a flower, as desired.