jbilcke-hf's picture
jbilcke-hf HF Staff
upgrading finetrainers (and losing my extra code + improvements)
80ebcb3
raw
history blame
1.1 kB
import importlib
import json
import os
from typing import Optional
from huggingface_hub import hf_hub_download
def resolve_component_cls(
pretrained_model_name_or_path: str,
component_name: str,
filename: str = "model_index.json",
revision: Optional[str] = None,
cache_dir: Optional[str] = None,
):
pretrained_model_name_or_path = str(pretrained_model_name_or_path)
if os.path.exists(str(pretrained_model_name_or_path)) and os.path.isdir(pretrained_model_name_or_path):
index_path = os.path.join(pretrained_model_name_or_path, filename)
else:
index_path = hf_hub_download(
repo_id=pretrained_model_name_or_path, filename=filename, revision=revision, cache_dir=cache_dir
)
with open(index_path, "r") as f:
model_index_dict = json.load(f)
if component_name not in model_index_dict:
raise ValueError(f"No {component_name} found in the model index dict.")
cls_config = model_index_dict[component_name]
library = importlib.import_module(cls_config[0])
return getattr(library, cls_config[1])