code: def test_embedding(self):
      B, T, embed_size, vocab_size = 4, 10, 20, 28
  
      layer = nn.Embedding(vocab_size, embed_size)
      x = Tensor(np.random.randint(0, vocab_size, (B, T)))
      z = layer(x)
  
      layer_sharded = nn.Embedding(vocab_size, embed_size)
      layer_sharded.weight.assign(
          layer.weight.shard((d0, d1), axis=1)
      ).realize()
      x_sharded = x.shard((d0, d1), axis=None)
      z_shard = layer_sharded(x_sharded)
  
      np.testing.assert_allclose(
          z.numpy(), z_shard.numpy(), atol=1e-6, rtol=1e-6
      )
  
imports: import functools
  import unittest
  from tinygrad import Tensor, Device, nn, GlobalCounters
  from tinygrad.device import _BufferCopy
  from tinygrad.helpers import CI
  from tinygrad.jit import TinyJit
  from tinygrad.nn.state import get_parameters
  import numpy
label_desc: Use image node_id 36 for calling the TestMultiTensor obj's underlying member method code with example usage: obj.test_embedding() without return types