Spaces:
Runtime error
Runtime error
# https://github.com/huggingface/huggingface_hub/blob/5a12851f54bf614be39614034ed3a9031922d297/src/huggingface_hub/utils/_runtime.py | |
import os | |
import platform | |
import sys | |
from pathlib import Path | |
import packaging.version | |
from iopaint.schema import Device | |
from loguru import logger | |
from rich import print | |
from typing import Dict, Any | |
_PY_VERSION: str = sys.version.split()[0].rstrip("+") | |
if packaging.version.Version(_PY_VERSION) < packaging.version.Version("3.8.0"): | |
import importlib_metadata # type: ignore | |
else: | |
import importlib.metadata as importlib_metadata # type: ignore | |
_package_versions = {} | |
_CANDIDATES = [ | |
"torch", | |
"torchvision", | |
"Pillow", | |
"diffusers", | |
"transformers", | |
"opencv-python", | |
"accelerate", | |
"iopaint", | |
"rembg", | |
"realesrgan", | |
"gfpgan", | |
] | |
# Check once at runtime | |
for name in _CANDIDATES: | |
_package_versions[name] = "N/A" | |
try: | |
_package_versions[name] = importlib_metadata.version(name) | |
except importlib_metadata.PackageNotFoundError: | |
pass | |
def dump_environment_info() -> Dict[str, str]: | |
"""Dump information about the machine to help debugging issues.""" | |
# Generic machine info | |
info: Dict[str, Any] = { | |
"Platform": platform.platform(), | |
"Python version": platform.python_version(), | |
} | |
info.update(_package_versions) | |
print("\n".join([f"- {prop}: {val}" for prop, val in info.items()]) + "\n") | |
return info | |
def check_device(device: Device) -> Device: | |
if device == Device.cuda: | |
import platform | |
if platform.system() == "Darwin": | |
logger.warning("MacOS does not support cuda, use cpu instead") | |
return Device.cpu | |
else: | |
import torch | |
if not torch.cuda.is_available(): | |
logger.warning("CUDA is not available, use cpu instead") | |
return Device.cpu | |
elif device == Device.mps: | |
import torch | |
if not torch.backends.mps.is_available(): | |
logger.warning("mps is not available, use cpu instead") | |
return Device.cpu | |
return device | |
def setup_model_dir(model_dir: Path): | |
model_dir = model_dir.expanduser().absolute() | |
logger.info(f"Model directory: {model_dir}") | |
os.environ["U2NET_HOME"] = str(model_dir) | |
os.environ["XDG_CACHE_HOME"] = str(model_dir) | |
if not model_dir.exists(): | |
logger.info(f"Create model directory: {model_dir}") | |
model_dir.mkdir(exist_ok=True, parents=True) | |
return model_dir | |