code: def _create_run(
      uri, experiment_id, work_dir, version, entry_point, parameters
  ):
      """
      Create a ``Run`` against the current MLflow tracking server, logging metadata (e.g. the URI,
      entry point, and parameters of the project) about the run. Return an ``ActiveRun`` that can be
      used to report additional data about the run (metrics/params) to the tracking server.
      """
      if _is_local_uri(uri):
          source_name = (
              tracking._tracking_service.utils._get_git_url_if_present(
                  _expand_uri(uri)
              )
          )
      else:
          source_name = _expand_uri(uri)
      source_version = get_git_commit(work_dir)
      existing_run = fluent.active_run()
      parent_run_id = existing_run.info.run_id if existing_run else None
  
      tags = {
          MLFLOW_USER: _get_user(),
          MLFLOW_SOURCE_NAME: source_name,
          MLFLOW_SOURCE_TYPE: SourceType.to_string(SourceType.PROJECT),
          MLFLOW_PROJECT_ENTRY_POINT: entry_point,
      }
      if source_version is not None:
          tags[MLFLOW_GIT_COMMIT] = source_version
      if parent_run_id is not None:
          tags[MLFLOW_PARENT_RUN_ID] = parent_run_id
  
      repo_url = get_git_repo_url(work_dir)
      if repo_url is not None:
          tags[MLFLOW_GIT_REPO_URL] = repo_url
          tags[LEGACY_MLFLOW_GIT_REPO_URL] = repo_url
  
      # Add branch name tag if a branch is specified through -version
      if _is_valid_branch_name(work_dir, version):
          tags[MLFLOW_GIT_BRANCH] = version
          tags[LEGACY_MLFLOW_GIT_BRANCH_NAME] = version
      active_run = tracking.MlflowClient().create_run(
          experiment_id=experiment_id, tags=tags
      )
  
      project = _project_spec.load_project(work_dir)
      # Consolidate parameters for logging.
      # `storage_dir` is `None` since we want to log actual path not downloaded local path
      entry_point_obj = project.get_entry_point(entry_point)
      final_params, extra_params = entry_point_obj.compute_parameters(
          parameters, storage_dir=None
      )
      params_list = [
          Param(key, value)
          for key, value in list(final_params.items())
          + list(extra_params.items())
      ]
      tracking.MlflowClient().log_batch(
          active_run.info.run_id, params=params_list
      )
      return active_run
  
imports: import logging
  import os
  import pathlib
  import re
  import shutil
  import tempfile
  import urllib.parse
  import zipfile
  from io import BytesIO
  from mlflow import tracking
  from mlflow.entities import Param, SourceType
  from mlflow.environment_variables import MLFLOW_EXPERIMENT_ID, MLFLOW_RUN_ID, MLFLOW_TRACKING_URI
  from mlflow.exceptions import ExecutionException
  from mlflow.projects import _project_spec
  from mlflow.tracking import fluent
  from mlflow.tracking.context.default_context import _get_user
  from mlflow.utils.git_utils import get_git_commit, get_git_repo_url
  from mlflow.utils.mlflow_tags import LEGACY_MLFLOW_GIT_BRANCH_NAME, LEGACY_MLFLOW_GIT_REPO_URL, MLFLOW_GIT_BRANCH, MLFLOW_GIT_COMMIT, MLFLOW_GIT_REPO_URL, MLFLOW_PARENT_RUN_ID, MLFLOW_PROJECT_ENTRY_POINT, MLFLOW_SOURCE_NAME, MLFLOW_SOURCE_TYPE, MLFLOW_USER
  from mlflow.utils.rest_utils import augmented_raise_for_status
label_desc: Use image node_id 19 for calling a global function with example usage: _create_run(uri, experiment_id, work_dir, version, entry_point, parameters) and returns: active_run