    def download_files(self, tag: str, file_list: List[str], lfs_files: List[str], local_repo_path: Union[str, Path], install_reqs: bool) -> None:
        """
        Download the given files.

        Agrs:
            tag (`str`):
                The tag of the repo to download.
            file_list (List[str]):
                The files to download
            lfs_files (List[str]):
                The lfs files extensions.
            local_repo_path (`Union[str, Path]`):
                Thre local dir to download the files into.
            install_reqs (`bool`):
                Whether to install packages from requirements.txt.
        """
        local_repo_path = Path(local_repo_path)

        # endswith() can check multiple suffixes if they are a tuple.
        lfs_files = tuple(lfs_files)
        futures = []

        temp_path = local_repo_path.parent / 'dl-temp'
        with ThreadPoolExecutor(max_workers=50) as pool:
            for file_name in file_list:
                futures.append(pool.submit(self.download_executor, tag, file_name, lfs_files, temp_path))

        try:
            _ = [i.result() for i in futures]
            temp_path.rename(local_repo_path)
        except Exception as e:
            rmtree(temp_path)
            raise e

        if install_reqs:
            requirements = list(filter(lambda x: re.match(r'(.*/)?requirements.txt', x) is not None, file_list))
            for req in requirements:
                subprocess.check_call([sys.executable, '-m', 'pip', 'install', '-r', str(local_repo_path / req)])
Download the given files.

Agrs:
tag (`str`):
The tag of the repo to download.
file_list (List[str]):
The files to download
lfs_files (List[str]):
The lfs files extensions.
local_repo_path (`Union[str, Path]`):
Thre local dir to download the files into.
install_reqs (`bool`):
Whether to install packages from requirements.txt.
towhee/hub/repo_manager.py