melotts-clone / cmd_helper.py
wolfofbackstreet's picture
Upload 3 files
dc9bb94 verified
import logging
import subprocess # nosec - disable B404:import-subprocess check
import sys
import os
from pathlib import Path
import platform
def clone_repo(repo_url: str, revision: str = None, add_to_sys_path: bool = True) -> Path:
repo_path = Path(repo_url.split("/")[-1].replace(".git", ""))
if not repo_path.exists():
try:
subprocess.run(["git", "clone", repo_url], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
except Exception as exc:
print(f"Failed to clone the repository: {exc.stderr}")
raise
if revision:
subprocess.Popen(["git", "checkout", revision], cwd=str(repo_path))
if add_to_sys_path and str(repo_path.resolve()) not in sys.path:
sys.path.insert(0, str(repo_path.resolve()))
return repo_path
def optimum_cli(model_id, output_dir, show_command=True, additional_args: dict[str, str] = None, debug_logs=False):
export_command = f"optimum-cli export openvino --model {model_id} {output_dir}"
if additional_args is not None:
for arg, value in additional_args.items():
export_command += f" --{arg}"
if value:
export_command += f" {value}"
if show_command:
from IPython.display import Markdown, display
display(Markdown("**Export command:**"))
display(Markdown(f"`{export_command}`"))
transofrmers_loglevel = None
if debug_logs:
transofrmers_loglevel = os.environ.pop("TRANSFORMERS_VERBOSITY", None)
os.environ["TRANSFORMERS_VERBOSITY"] = "debug"
try:
subprocess.run(export_command.split(" "), shell=(platform.system() == "Windows"), check=True, capture_output=True)
except subprocess.CalledProcessError as exc:
logger = logging.getLogger()
logger.exception(exc.stderr)
if transofrmers_loglevel is not None:
os.environ["TRANSFORMERS_VERBOSITY"] = transofrmers_loglevel
raise exc
finally:
if transofrmers_loglevel is not None:
os.environ["TRANSFORMERS_VERBOSITY"] = transofrmers_loglevel