def METHOD_NAME(config, cloud="aws"):
    gpu_config = GPU_CONFIG.get(cloud)
    if not gpu_config:
        raise ValueError(f"GPU not supported/tested on {cloud}")
    if cloud == "aws":
        gpu_node_group = AWSNodeGroup(
            instance=gpu_config.gpu_name,
            min_nodes=gpu_config.min_nodes,
            max_nodes=gpu_config.max_nodes,
            single_subnet=gpu_config.extra_config["single_subnet"],
            gpu=gpu_config.extra_config["gpu"],
        )
        kubespawner_overrides = KubeSpawner(
            image=gpu_config.docker_image,
            cpu_limit=4,
            cpu_guarantee=3,
            mem_limit="16G",
            mem_guarantee="10G",
            extra_resource_limits={"nvidia.com/gpu": 1},
            node_selector={
                gpu_config.node_selector: gpu_config.node_selector_val,
            },
        )
    jupyterlab_profile = JupyterLabProfile(
        display_name="GPU Instance",
        description="4 CPU / 16GB RAM / 1 NVIDIA T4 GPU (16 GB GPU RAM)",
        access="yaml",
        groups=["gpu-access"],
        kubespawner_override=kubespawner_overrides,
    )
    cloud_section = getattr(config, gpu_config.cloud, None)
    cloud_section.node_groups[gpu_config.node_group_name] = gpu_node_group
    config.profiles.jupyterlab.append(jupyterlab_profile)
    config.environments["environment-gpu.yaml"] = _create_gpu_environment()
    return config