code: def test_case_small_random(
      self, device, k2_is_appropriate, k2_cuda_is_enabled
  ):
      skip_test_if_unsupported(
          device, k2_is_appropriate, k2_cuda_is_enabled
      )
  
      rng = np.random.RandomState(0)
      acts = rng.randn(1, 4, 3, 3)
      labels = [[1, 2]]
  
      fn_k2 = init_k2_rnnt(
          num_classes=acts.shape[-1], blank=0, reduction="sum"
      )
      k2_cost, k2_grads = wrap_and_call(fn_k2, acts, labels, device)
  
      fn_np = RNNTLoss_Numpy()
      np_cost, np_grads = wrap_and_call(fn_np, acts, labels, device)
  
      assert np.allclose(
          k2_cost, np_cost, rtol=1e-6
      ), "small_random_test costs mismatch."
      assert np.allclose(
          k2_grads, np_grads, atol=1e-6
      ), "small_random_test gradient mismatch."
  
file_path: NeMo/tests/collections/asr/k2/test_rnnt.py
imports: import numpy
  import pytest
  import torch
  from nemo.collections.asr.parts.numba.rnnt_loss.rnnt_numpy import RNNTLoss
label_desc: Use image node_id 3 for calling the TestRNNTLossK2 obj's underlying member method code with example usage: obj.test_case_small_random(device, k2_is_appropriate, k2_cuda_is_enabled) without return types