ML-SWE: SWE with ML focus - building architecture around models, feature engineering, distributed training, etc. Relatively limited ML knowledge needed (IMO). The math won't be helpful for this role. Much more important to have SWE background. If you want this, keep building your programming knowledge (Python) and read books. Would focus on understanding the popular frameworks PyTorch and TensorFlow b/c your work will likely interface with those.
Research engineer: Mostly for MS/PHD background. Farther away from the product and closer to actual research. This doesn't sound like what you want to do.
Data Scientist: ML is a subset of the knowledge needed. Applied statistics as important, if not more so. Doesn't sound like you want this.
A path forward:
(1) Program a lot. On what? Anything at all, b/c you need programming skill to work as a SWE.
(2) If you want to do ML-SWE, program with an eye towards ML applications. Maybe do a simple cloud project that leverages ML - Google Cloud makes this particularly easy for classification tasks. Focus on breadth here, not depth. No sane person outside of academia can keep up with state-of-the-art and truly understand it. Far too much material, so focus on fundamentals.
(3) Work towards your strengths. You aren't some hotshot kid out of college proclaiming to be an AI guru. That would be silly and no competent recruiter would believe it. You know hardware - and AI (neural networks) leverages a lot of hardware. Why not focus on the hardware side of AI? Demonstrate your knowledge of how/why TensorFlow is so effective across distributed hardware, or how CUDA accelerates NN computation, or why TPU claims vs. Nvidia may be up to interpretation, etc. This should be a natural transition given your background.
TLDR; Know what you really want to do. Your background is valuable. Play to your strengths. Don't ring the bell.