code: def from_dict(data: dict) -> "GCPSlimInstanceConfig":
      assert data["version"] == GCP_INSTANCE_CONFIG_VERSION
  
      machine_type = data["machine_type"]
      preemptible = data["preemptible"]
      local_ssd_data_disk = data["local_ssd_data_disk"]
      data_disk_size_gb = data["data_disk_size_gb"]
      boot_disk_size_gb = data["boot_disk_size_gb"]
      job_private = data["job_private"]
  
      assert "resources" in data and data["resources"] is not None
      resources = [
          gcp_resource_from_dict(data) for data in data["resources"]
      ]
  
      return GCPSlimInstanceConfig(
          machine_type,
          preemptible,
          local_ssd_data_disk,
          data_disk_size_gb,
          boot_disk_size_gb,
          job_private,
          resources,
      )
  
file_path: hail/batch/batch/cloud/gcp/instance_config.py
imports: from typing import List, Union
  from ...driver.billing_manager import ProductVersions
  from ...instance_config import InstanceConfig
  from .resource_utils import gcp_machine_type_to_parts, machine_family_to_gpu
  from .resources import GCPAcceleratorResource, GCPComputeResource, GCPDynamicSizedDiskResource, GCPIPFeeResource, GCPLocalSSDStaticSizedDiskResource, GCPMemoryResource, GCPResource, GCPServiceFeeResource, GCPStaticSizedDiskResource, GCPSupportLogsSpecsAndFirewallFees, gcp_resource_from_dict
label_desc: Use image node_id 5 for calling the GCPSlimInstanceConfig obj's underlying member method code with example usage: obj.from_dict(data) and returns: GCPSlimInstanceConfig