class_docstr: A training engine hybrid pipeline, data, and model parallel training.
  
  This engine is created by ``deepspeed.initialize()`` when a :class:`PipelineModule`
  is provided.
docstr: Allocate a tensor of zeros on the engine's device.
  
  Arguments:
      shape: the shape of the tensor to allocate
      kwargs: passed to torch.zeros()
  
  Returns:
      A tensor from torch.zeros() allocated on self.device.
docstr_tok: ["Allocate","a","tensor","of","zeros","on","the","engine","'s","device",".","Arguments",":","shape",":","the","shape","of","the","tensor","to","allocate","kwargs",":","passed","to","torch.zeros","(",")","Returns",":","A","tensor","from","torch.zeros","(",")","allocated","on","self.device","."]
code: def _allocate_zeros(self, shape, **kwargs):
      """Allocate a tensor of zeros on the engine's device.
  
      Arguments:
          shape: the shape of the tensor to allocate
          kwargs: passed to torch.zeros()
  
      Returns:
          A tensor from torch.zeros() allocated on self.device.
      """
      if "dtype" not in kwargs:
          if self.fp16_enabled():
              kwargs["dtype"] = torch.half
          if self.bfloat16_enabled():
              kwargs["dtype"] = torch.bfloat16
  
      return torch.zeros(shape, device=self.device, **kwargs)
  
imports: from types import MethodType
  import torch
  from deepspeed import comm
  from deepspeed.utils import logger
  from deepspeed.utils.timer import ThroughputTimer
  from ..engine import DeepSpeedEngine, MEMORY_OPT_ALLREDUCE_SIZE
  from ..utils import PartitionedTensor
  from ..dataloader import RepeatingLoader
  from .module import PipelineModule, PipelineError
  from .None import p2p
  from .None import schedule
label_desc: Use image node_id 35 for calling the PipelineEngine obj's underlying member method code with example usage: obj._allocate_zeros(shape) and returns: torch