It's unfortunate. CUDA is a mess, but because it's the leading tech on the field, AMD has no choice but to come with an (equally messy) compatible solution. Vulkan was thought of as a something that could replace CUDA and (dead) OpenCL, but it's never going to take off due to the ML field being heavily CUDA, or well more of pytorch / python :)