When I feed the position to Stockfish (12), it's first impression (depth<20) is that it is won for Black (evaluation at around -8.0). But that's probably just counting material.
After some calculation, the evaluation changes to 0.0 - for four different first moves by Black: 1...h6, 1...h5, 1...Nxa3 and 1...Ne3 (still holds at depth 43).
That's probably enough options to claim that White cannot bust them all and win.
Example analysis of 1. Ng5 h5 2. Bxh5 Nxa3 (0.0 by Stockfish at depth 41)
2...gxh5 3.Bf2 with mate in 6.
3. bxa3 b2 4. Rb1 gxh5 5. Rxh5 Qb3 6. Rh7 Qc2 7. Rg7+ Kh8 8. Rh7 Qxh7** -+.
The sacrifice 3. Bxg6 fxg6 is harmless, Black can bring in defenders via the opened 7th rank.
After 3. Bg4 or 3. Bf3 or 3.Be2, it's a draw, e.g. 3. Bf3 Nc2 4. Bd2 a3 7. Rg1 axb2 and White is one move short. 8. Rg4 b1=Q+ 2. Kg2 Ne1+ loses, the queen either goes to e1 or to f5 and takes one rook.
However, White seems to actually gain a small advantage by 3.Bd2 Nb5 4.Rg1 Qa7 5.Rg4 Nd6 6.Nxf7 Qxf7 7.Bxg6 Qxg6 8.Rxg6+ Kf7 9.Rg7+ Ke8 10.exd6 with +1.0 ~ +2.0.
Never mind, 3. Bf2 wins for White (because he can later shield his king by Bg1, allowing the king to stay out of reach of the Nc2 and thus gain that critical one tempo he needs to mate). Neat.
The same idea applies in the 1...Nxa3 variation: 2. Rxh7 Nc2 3. Bf2! a3 4. Rg1 axb2 5. Rg7+ Kh8 6. Rg3 b1=Q+ 7. Bg1 and Black can't stop the mate.
Well, it looks like the position is won for White after all, the engine just can't see it from the beginning.
Why it can't is a different question - that is already answered in length elsewhere on this site. In this instance, I guess the constant option of perpetual check combined with the serious material disadvantage completely throws off the pruning mechanism.