code: def _swap_out_unpinned_tensors(
      self, aio_handle, unpinned_tensors, dest_paths, pinned_buffers
  ):
      swap_buffer_count = len(pinned_buffers)
      unpinned_tensor_count = len(unpinned_tensors)
  
      for i in range(0, unpinned_tensor_count, swap_buffer_count):
          swap_tensor_count = min(
              (unpinned_tensor_count - i), swap_buffer_count
          )
  
          src_tensors = unpinned_tensors[i : (i + swap_tensor_count)]
          compute_lengths = [t.numel() for t in src_tensors]
          compute_buffers = get_sized_buffers(
              pinned_buffers, compute_lengths
          )
  
          for dst, src in zip(compute_buffers, src_tensors):
              dst.data.copy_(src.data)
  
          swap_lengths = [
              self._io_aligned_numel(t.numel()) for t in src_tensors
          ]
          swap_buffers = get_sized_buffers(pinned_buffers, swap_lengths)
  
          swap_paths = dest_paths[i : (i + swap_tensor_count)]
          swap_out_tensors(aio_handle, swap_buffers, swap_paths)
  
          assert aio_handle.wait() == swap_tensor_count
  
imports: import os
  import torch
  from deepspeed import comm
  from deepspeed.utils.logging import logger
  from deepspeed.runtime.swap_tensor.constants import *
  from deepspeed.runtime.swap_tensor.utils import swap_in_tensors, swap_out_tensors, MIN_AIO_BYTES, AIO_ALIGNED_BYTES, get_sized_buffers
  from deepspeed.runtime.swap_tensor.utils import SwapBufferManager, SwapBufferPool
  from deepspeed.accelerator import get_accelerator
label_desc: Use image node_id 15 for calling the OptimizerSwapper obj's underlying member method code with example usage: obj._swap_out_unpinned_tensors(aio_handle, unpinned_tensors, dest_paths, pinned_buffers) without return types