code: def run_job(
      self,
      run: Run,
      job: Job,
      instance_offer: InstanceOfferWithAvailability,
      project_ssh_public_key: str,
      project_ssh_private_key: str,
  ) -> LaunchedInstanceInfo:
      location = instance_offer.region
      logger.info(
          "Requesting %s %s instance in %s...",
          instance_offer.instance.name,
          "spot" if instance_offer.instance.resources.spot else "",
          location,
      )
      ssh_pub_keys = [
          run.run_spec.ssh_key_pub.strip(),
          project_ssh_public_key.strip(),
      ]
      try:
          disk_size = round(
              instance_offer.instance.resources.disk.size_mib / 1024
          )
          vm = _launch_instance(
              compute_client=self._compute_client,
              subscription_id=self.config.subscription_id,
              location=location,
              resource_group=self.config.resource_group,
              network_security_group=azure_utils.get_default_network_security_group_name(
                  resource_group=self.config.resource_group,
                  location=location,
              ),
              network=azure_utils.get_default_network_name(
                  resource_group=self.config.resource_group,
                  location=location,
              ),
              subnet=azure_utils.get_default_subnet_name(
                  resource_group=self.config.resource_group,
                  location=location,
              ),
              managed_identity=azure_utils.get_runner_managed_identity_name(
                  resource_group=self.config.resource_group
              ),
              image_reference=_get_image_ref(
                  compute_client=self._compute_client,
                  location=location,
                  cuda=len(instance_offer.instance.resources.gpus) > 0,
              ),
              vm_size=instance_offer.instance.name,
              # instance_name includes region because Azure may create an instance resource
              # even when provisioning fails.
              instance_name=f"{get_instance_name(run, job)}-{instance_offer.region}",
              user_data=get_user_data(
                  backend=BackendType.AZURE,
                  image_name=job.job_spec.image_name,
                  authorized_keys=ssh_pub_keys,
                  registry_auth_required=job.job_spec.registry_auth
                  is not None,
              ),
              ssh_pub_keys=ssh_pub_keys,
              spot=instance_offer.instance.resources.spot,
              disk_size=disk_size,
              computer_name="runnervm",
          )
          logger.info("Request succeeded")
          public_ip = _get_vm_public_ip(
              network_client=self._network_client,
              resource_group=self.config.resource_group,
              vm=vm,
          )
          return LaunchedInstanceInfo(
              instance_id=vm.name,
              ip_address=public_ip,
              region=location,
              username="ubuntu",
              ssh_port=22,
              dockerized=True,
              backend_data=None,
          )
      except NoCapacityError:
          logger.info("Failed to request instance in %s", location)
      logger.info("Failed to request instance")
      raise NoCapacityError()
  
imports: import base64
  import re
  from typing import List, Optional
  from azure.core.credentials import TokenCredential
  from azure.core.exceptions import ResourceExistsError
  from azure.mgmt import compute
  from azure.mgmt import network
  from azure.mgmt.compute.models import DiskCreateOptionTypes, HardwareProfile, ImageReference, LinuxConfiguration, ManagedDiskParameters, NetworkProfile, OSDisk, OSProfile, ResourceIdentityType, ResourceSku, SshConfiguration, SshPublicKey, StorageAccountTypes, StorageProfile, SubResource, UserAssignedIdentitiesValue, VirtualMachine, VirtualMachineIdentity, VirtualMachineNetworkInterfaceConfiguration, VirtualMachineNetworkInterfaceIPConfiguration, VirtualMachinePublicIPAddressConfiguration
  from dstack import version
  from dstack._internal.core.backends.azure import utils
  from dstack._internal.core.backends.azure.config import AzureConfig
  from dstack._internal.core.backends.base.compute import Compute, get_gateway_user_data, get_instance_name, get_user_data
  from dstack._internal.core.backends.base.offers import get_catalog_offers
  from dstack._internal.core.errors import NoCapacityError
  from dstack._internal.core.models.backends.base import BackendType
  from dstack._internal.core.models.instances import InstanceAvailability, InstanceOffer, InstanceOfferWithAvailability, LaunchedGatewayInfo, LaunchedInstanceInfo
  from dstack._internal.core.models.runs import Job, Requirements, Run
  from dstack._internal.utils.logging import get_logger
label_desc: Use image node_id 3 for calling the AzureCompute obj's underlying member method code with example usage: obj.run_job(run, job, instance_offer, project_ssh_public_key, project_ssh_private_key) and returns: LaunchedInstanceInfo