code: def swap_in(self, params, async_op=True, swap_in_buffers=None):
      assert all(
          [
              param.ds_tensor.status
              == PartitionedParamStatus.NOT_AVAILABLE
              for param in params
          ]
      ), "Some params are already available or in flight"
      swap_in_paths = self._get_swap_paths(params)
  
      if swap_in_buffers is None:
          if len(self.available_buffer_ids) < len(swap_in_paths):
              ids = [p.ds_id for p in params]
              print_rank_0(
                  f"Not enough swap in buffers {len(self.available_buffer_ids)} for {len(swap_in_paths)} params, ids = {ids}",
                  force=True,
              )
              print_rank_0(
                  f"Num inflight: params {len(self.inflight_params)}, buffers {len(self.inflight_swap_in_buffers)}, numel = {self.inflight_numel}",
                  force=True,
              )
              print_rank_0(
                  f"Num available params: count = {len(self.available_params)}, ids = {self.available_params}, numel = {self.available_numel}",
                  force=True,
              )
  
          assert len(swap_in_paths) <= len(
              self.available_buffer_ids
          ), f"Not enough buffers {len(self.available_buffer_ids)} for swapping {len(swap_in_paths)}"
          (
              compute_buffers,
              swap_in_buffers,
          ) = self._allocate_and_return_buffers_for_swap_in(params)
          inflight_numel = sum([t.numel() for t in compute_buffers])
      else:
          inflight_numel = sum([t.numel() for t in swap_in_buffers])
  
      swap_in_tensors(
          self.aio_read_handle, swap_in_buffers, swap_in_paths
      )
  
      self._update_inflight_swap_in(
          params, swap_in_buffers, inflight_numel
      )
  
      if not async_op:
          self.synchronize_reads()
  
imports: import os
  import shutil
  from enum import Enum
  import torch
  from deepspeed import comm
  from deepspeed.ops.aio import AsyncIOBuilder
  from .constants import *
  from .utils import swap_in_tensors, swap_out_tensors, MIN_AIO_BYTES, AIO_ALIGNED_BYTES, print_object, SwapBufferPool
label_desc: Use image node_id 16 for calling the AsyncPartitionedParameterSwapper obj's underlying member method code with example usage: obj.swap_in(params, async_op, swap_in_buffers) without return types