diff --git a/learnware/client/container.py b/learnware/client/container.py index 82a0ae6..dee68a9 100644 --- a/learnware/client/container.py +++ b/learnware/client/container.py @@ -492,7 +492,6 @@ class LearnwaresContainer: def __init__( self, learnwares: Union[List[Learnware], Learnware], - learnware_zippaths: Union[List[str], str], cleanup=True, mode="conda", ): @@ -505,8 +504,6 @@ class LearnwaresContainer: """ if isinstance(learnwares, Learnware): learnwares = [learnwares] - if isinstance(learnware_zippaths, str): - learnware_zippaths = [learnware_zippaths] assert all( [isinstance(_learnware.get_model(), dict) for _learnware in learnwares] @@ -515,26 +512,26 @@ class LearnwaresContainer: self.mode = mode assert self.mode in {"conda", "docker"}, f"mode must be in ['conda', 'docker'], should not be {self.mode}" self.learnware_list = learnwares - self.learnware_zippaths = learnware_zippaths self.cleanup = cleanup def __enter__(self): if self.mode == "conda": self.learnware_containers = [ Learnware( - _learnware.id, ModelCondaContainer(_learnware.get_model(), _zippath), _learnware.get_specification() + _learnware.id, ModelCondaContainer(_learnware.get_model(), _learnware.get_dirpath()), _learnware.get_specification(), _learnware.get_dirpath() ) - for _learnware, _zippath in zip(self.learnware_list, self.learnware_zippaths) + for _learnware in self.learnware_list ] else: self._docker_container = ModelDockerContainer._generate_docker_container() self.learnware_containers = [ Learnware( _learnware.id, - ModelDockerContainer(_learnware.get_model(), _zippath, self._docker_container, build=False), + ModelDockerContainer(_learnware.get_model(), _learnware.get_dirpath(), self._docker_container, build=False), _learnware.get_specification(), + _learnware.get_dirpath() ) - for _learnware, _zippath in zip(self.learnware_list, self.learnware_zippaths) + for _learnware in self.learnware_list ] atexit.register(ModelDockerContainer._destroy_docker_container, self._docker_container) diff --git a/learnware/client/learnware_client.py b/learnware/client/learnware_client.py index 90c0e35..4239a7b 100644 --- a/learnware/client/learnware_client.py +++ b/learnware/client/learnware_client.py @@ -373,10 +373,10 @@ class LearnwareClient: for i in range(len(learnware_list)): learnware_list[i].instantiate_model() elif runnable_option == "conda_env": - with LearnwaresContainer(learnware_list, zip_paths, cleanup=False, mode="conda") as env_container: + with LearnwaresContainer(learnware_list, cleanup=False, mode="conda") as env_container: learnware_list = env_container.get_learnwares_with_container() elif runnable_option == "docker": - with LearnwaresContainer(learnware_list, zip_paths, cleanup=False, mode="docker") as env_container: + with LearnwaresContainer(learnware_list, cleanup=False, mode="docker") as env_container: learnware_list = env_container.get_learnwares_with_container() if len(learnware_list) == 1: diff --git a/learnware/learnware/__init__.py b/learnware/learnware/__init__.py index d1dded4..54f7025 100644 --- a/learnware/learnware/__init__.py +++ b/learnware/learnware/__init__.py @@ -71,4 +71,4 @@ def get_learnware_from_dirpath(id: str, semantic_spec: dict, learnware_dirpath) logger.warning(f"Load Learnware {id} failed! Due to {repr(e)}") return None - return Learnware(id=id, model=learnware_config["model"], specification=learnware_spec) + return Learnware(id=id, model=learnware_config["model"], specification=learnware_spec, learnware_dirpath=learnware_dirpath) diff --git a/learnware/learnware/base.py b/learnware/learnware/base.py index fc490c8..34fbd06 100644 --- a/learnware/learnware/base.py +++ b/learnware/learnware/base.py @@ -14,7 +14,7 @@ logger = get_module_logger("Learnware") class Learnware: """The learnware class, which is the basic components in learnware market""" - def __init__(self, id: str, model: Union[BaseModel, dict], specification: Specification, dirpath: str): + def __init__(self, id: str, model: Union[BaseModel, dict], specification: Specification, learnware_dirpath: str): """The initialization method for learnware. Parameters @@ -42,7 +42,7 @@ class Learnware: self.id = id self.model = model self.specification = specification - self.learnware_dirpath = dirpath + self.learnware_dirpath = learnware_dirpath def __repr__(self) -> str: return "{}({}, {}, {})".format(type(self).__name__, self.id, type(self.model).__name__, self.specification) diff --git a/tests/test_learnware_client/test_reuse.py b/tests/test_learnware_client/test_reuse.py index 8acae9f..1e5d2c3 100644 --- a/tests/test_learnware_client/test_reuse.py +++ b/tests/test_learnware_client/test_reuse.py @@ -25,7 +25,7 @@ if __name__ == "__main__": learnware = get_learnware_from_dirpath(f"test_id{id}", semantic_specification, dir_path) learnware_list.append(learnware) - with LearnwaresContainer(learnware_list, zip_paths) as env_container: + with LearnwaresContainer(learnware_list) as env_container: learnware_list = env_container.get_learnwares_with_container() reuser = AveragingReuser(learnware_list, mode="vote") input_array = np.random.randint(0, 3, size=(20, 9))