[BUG] | OSError: [WinError 123] 文件名、目录名或卷标语法不正确。'C:\\Users\\Administrator\\.cache\\huggingface\\modules\\transformers_modules\\D:' #1095

@lsm03624

Description

问题描述 / Problem Description
| OSError: [WinError 123] 文件名、目录名或卷标语法不正确。:
2023-08-15 10:46:27 | ERROR | stderr | 'C:\Users\Administrator\.cache\huggingface\modules\transformers_modules\D:'

复现问题的步骤 / Steps to Reproduce

  • 执行 python server/llm_api.py
  • 问题出现 / Problem occurs
  • 环境信息 / Environment Information

  • langchain-ChatGLM 版本/commit 号:(例如:v0.2)
  • 是否使用 Docker 部署(是/否):否
  • 使用的模型(Baichuan-7B)
  • 使用的 Embedding 模型(m3e-base等)
  • 操作系统及版本 :win10企业版
  • Python 版本 :Python 3.10.12
  • 附加信息 / Additional Information
    添加与问题相关的任何其他信息:
    (langchain-ChatGLM) PS D:\GPT\Langchain-Chatchat> python server/llm_api.py
    2023-08-15 10:46:23,350 - llm_api.py[line:196] - INFO: {'local_model_path': 'D:/GPT/models/Baichuan-7B', 'api_base_url': ' http://localhost:8888/v1 ', 'api_key': 'EMPTY'}
    2023-08-15 10:46:23,350 - llm_api.py[line:199] - INFO: 如需查看 llm_api 日志,请前往 D:\GPT\Langchain-Chatchat\logs
    2023-08-15 10:46:26 | INFO | model_worker | Loading the model ['Baichuan-7B'] on worker 7a65c3f2 ...
    2023-08-15 10:46:26 | ERROR | stderr | INFO: Started server process [12304]
    2023-08-15 10:46:26 | ERROR | stderr | INFO: Waiting for application startup.
    2023-08-15 10:46:27 | ERROR | stderr | INFO: Application startup complete.
    2023-08-15 10:46:27 | ERROR | stderr | INFO: Uvicorn running on http://0.0.0.0:20001 (Press CTRL+C to quit)

    2023-08-15 09:58:42 | ERROR | stderr | ╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\GPT\Langchain-Chatchat\server\llm_api.py:230 in
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 227 │ │ )
    2023-08-15 09:58:42 | ERROR | stderr | │ 228 │ │ openai_api_process.start()
    2023-08-15 09:58:42 | ERROR | stderr | │ 229 │ │
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 230 │ │ run_model_worker(queue)
    2023-08-15 09:58:42 | ERROR | stderr | │ 231 │ │
    2023-08-15 09:58:42 | ERROR | stderr | │ 232 │ │ controller_process.join()
    2023-08-15 09:58:42 | ERROR | stderr | │ 233 │ │ # model_worker_process.join()
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\GPT\Langchain-Chatchat\server\llm_api.py:161 in run_model_worker
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 158
    2023-08-15 09:58:42 | ERROR | stderr | │ 159 def run_model_worker(q, *args, **kwargs):
    2023-08-15 09:58:42 | ERROR | stderr | │ 160 │ import uvicorn
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 161 │ app = create_model_worker_app(*args, **kwargs)
    2023-08-15 09:58:42 | ERROR | stderr | │ 162 │
    2023-08-15 09:58:42 | ERROR | stderr | │ 163 │ @app.on_event("startup")
    2023-08-15 09:58:42 | ERROR | stderr | │ 164 │ async def on_startup():
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\GPT\Langchain-Chatchat\server\llm_api.py:99 in create_model_worker_app
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 96 │ │ act_order=args.gptq_act_order,
    2023-08-15 09:58:42 | ERROR | stderr | │ 97 │ )
    2023-08-15 09:58:42 | ERROR | stderr | │ 98 │ # torch.multiprocessing.set_start_method('spawn')
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 99 │ worker = ModelWorker(
    2023-08-15 09:58:42 | ERROR | stderr | │ 100 │ │ controller_addr=args.controller_address,
    2023-08-15 09:58:42 | ERROR | stderr | │ 101 │ │ worker_addr=args.worker_address,
    2023-08-15 09:58:42 | ERROR | stderr | │ 102 │ │ worker_id=worker_id,
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\Anaconda3\envs\langchain-ChatGLM\lib\site-packages\fastchat\serve\model_worker.py:199 in │
    2023-08-15 09:58:42 | ERROR | stderr | │ init
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 196 │ │ )
    2023-08-15 09:58:42 | ERROR | stderr | │ 197 │ │
    2023-08-15 09:58:42 | ERROR | stderr | │ 198 │ │ logger.info(f"Loading the model {self.model_names} on worker {worker_id} ...") │
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 199 │ │ self.model, self.tokenizer = load_model(
    2023-08-15 09:58:42 | ERROR | stderr | │ 200 │ │ │ model_path,
    2023-08-15 09:58:42 | ERROR | stderr | │ 201 │ │ │ device,
    2023-08-15 09:58:42 | ERROR | stderr | │ 202 │ │ │ num_gpus,
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\Anaconda3\envs\langchain-ChatGLM\lib\site-packages\fastchat\model\model_adapter.py:236 in │
    2023-08-15 09:58:42 | ERROR | stderr | │ load_model
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 233 │
    2023-08-15 09:58:42 | ERROR | stderr | │ 234 │ # Load model
    2023-08-15 09:58:42 | ERROR | stderr | │ 235 │ adapter = get_model_adapter(model_path)
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 236 │ model, tokenizer = adapter.load_model(model_path, kwargs)
    2023-08-15 09:58:42 | ERROR | stderr | │ 237 │
    2023-08-15 09:58:42 | ERROR | stderr | │ 238 │ if (device == "cuda" and num_gpus == 1 and not cpu_offloading) or device == "mps": │
    2023-08-15 09:58:42 | ERROR | stderr | │ 239 │ │ model.to(device)
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\Anaconda3\envs\langchain-ChatGLM\lib\site-packages\fastchat\model\model_adapter.py:1061 in │
    2023-08-15 09:58:42 | ERROR | stderr | │ load_model
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 1058 │
    2023-08-15 09:58:42 | ERROR | stderr | │ 1059 │ def load_model(self, model_path: str, from_pretrained_kwargs: dict): │
    2023-08-15 09:58:42 | ERROR | stderr | │ 1060 │ │ revision = from_pretrained_kwargs.get("revision", "main")
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 1061 │ │ tokenizer = AutoTokenizer.from_pretrained(
    2023-08-15 09:58:42 | ERROR | stderr | │ 1062 │ │ │ model_path, trust_remote_code=True, revision=revision
    2023-08-15 09:58:42 | ERROR | stderr | │ 1063 │ │ )
    2023-08-15 09:58:42 | ERROR | stderr | │ 1064 │ │ model = AutoModelForCausalLM.from_pretrained(
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\Anaconda3\envs\langchain-ChatGLM\lib\site-packages\transformers\models\auto\tokenization_auto │
    2023-08-15 09:58:42 | ERROR | stderr | │ .py:686 in from_pretrained
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 683 │ │ │ │ │ class_ref = tokenizer_auto_map[0]
    2023-08-15 09:58:42 | ERROR | stderr | │ 684 │ │ │ │
    2023-08-15 09:58:42 | ERROR | stderr | │ 685 │ │ │ │ module_file, class_name = class_ref.split(".")
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 686 │ │ │ │ tokenizer_class = get_class_from_dynamic_module(
    2023-08-15 09:58:42 | ERROR | stderr | │ 687 │ │ │ │ │ pretrained_model_name_or_path, module_file + ".py", class_name, **kw │
    2023-08-15 09:58:42 | ERROR | stderr | │ 688 │ │ │ │ )
    2023-08-15 09:58:42 | ERROR | stderr | │ 689 │ │ │ │ tokenizer_class.register_for_auto_class()
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\Anaconda3\envs\langchain-ChatGLM\lib\site-packages\transformers\dynamic_module_utils.py:377 │
    2023-08-15 09:58:42 | ERROR | stderr | │ in get_class_from_dynamic_module
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 374 │ cls = get_class_from_dynamic_module("sgugger/my-bert-model", "modeling.py", "MyBertM │
    2023-08-15 09:58:42 | ERROR | stderr | │ 375 │ ```"""
    2023-08-15 09:58:42 | ERROR | stderr | │ 376 │ # And lastly we get the class inside our newly created module
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 377 │ final_module = get_cached_module_file(
    2023-08-15 09:58:42 | ERROR | stderr | │ 378 │ │ pretrained_model_name_or_path,
    2023-08-15 09:58:42 | ERROR | stderr | │ 379 │ │ module_file,
    2023-08-15 09:58:42 | ERROR | stderr | │ 380 │ │ cache_dir=cache_dir,
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\Anaconda3\envs\langchain-ChatGLM\lib\site-packages\transformers\dynamic_module_utils.py:254 │
    2023-08-15 09:58:42 | ERROR | stderr | │ in get_cached_module_file
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 251 │
    2023-08-15 09:58:42 | ERROR | stderr | │ 252 │ # Now we move the module inside our cached dynamic modules.
    2023-08-15 09:58:42 | ERROR | stderr | │ 253 │ full_submodule = TRANSFORMERS_DYNAMIC_MODULE_NAME + os.path.sep + submodule │
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 254 │ create_dynamic_module(full_submodule)
    2023-08-15 09:58:42 | ERROR | stderr | │ 255 │ submodule_path = Path(HF_MODULES_CACHE) / full_submodule
    2023-08-15 09:58:42 | ERROR | stderr | │ 256 │ if submodule == pretrained_model_name_or_path.split(os.path.sep)[-1]: │
    2023-08-15 09:58:42 | ERROR | stderr | │ 257 │ │ # We copy local files to avoid putting too many folders in sys.path. This copy i │
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\Anaconda3\envs\langchain-ChatGLM\lib\site-packages\transformers\dynamic_module_utils.py:63 in │
    2023-08-15 09:58:42 | ERROR | stderr | │ create_dynamic_module
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 60 │ # If the parent module does not exist yet, recursively create it.
    2023-08-15 09:58:42 | ERROR | stderr | │ 61 │ if not dynamic_module_path.parent.exists():
    2023-08-15 09:58:42 | ERROR | stderr | │ 62 │ │ create_dynamic_module(dynamic_module_path.parent)
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 63 │ os.makedirs(dynamic_module_path, exist_ok=True)
    2023-08-15 09:58:42 | ERROR | stderr | │ 64 │ init_path = dynamic_module_path / " init .py"
    2023-08-15 09:58:42 | ERROR | stderr | │ 65 │ if not init_path.exists():
    2023-08-15 09:58:42 | ERROR | stderr | │ 66 │ │ init_path.touch()
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\Anaconda3\envs\langchain-ChatGLM\lib\os.py:215 in makedirs
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 212 │ │ head, tail = path.split(head)
    2023-08-15 09:58:42 | ERROR | stderr | │ 213 │ if head and tail and not path.exists(head):
    2023-08-15 09:58:42 | ERROR | stderr | │ 214 │ │ try:
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 215 │ │ │ makedirs(head, exist_ok=exist_ok)
    2023-08-15 09:58:42 | ERROR | stderr | │ 216 │ │ except FileExistsError:
    2023-08-15 09:58:42 | ERROR | stderr | │ 217 │ │ │ # Defeats race condition when another thread created the path │
    2023-08-15 09:58:42 | ERROR | stderr | │ 218 │ │ │ pass
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\Anaconda3\envs\langchain-ChatGLM\lib\os.py:215 in makedirs
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 212 │ │ head, tail = path.split(head)
    2023-08-15 09:58:42 | ERROR | stderr | │ 213 │ if head and tail and not path.exists(head):
    2023-08-15 09:58:42 | ERROR | stderr | │ 214 │ │ try:
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 215 │ │ │ makedirs(head, exist_ok=exist_ok)
    2023-08-15 09:58:42 | ERROR | stderr | │ 216 │ │ except FileExistsError:
    2023-08-15 09:58:42 | ERROR | stderr | │ 217 │ │ │ # Defeats race condition when another thread created the path │
    2023-08-15 09:58:42 | ERROR | stderr | │ 218 │ │ │ pass
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\Anaconda3\envs\langchain-ChatGLM\lib\os.py:215 in makedirs
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 212 │ │ head, tail = path.split(head)
    2023-08-15 09:58:42 | ERROR | stderr | │ 213 │ if head and tail and not path.exists(head):
    2023-08-15 09:58:42 | ERROR | stderr | │ 214 │ │ try:
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 215 │ │ │ makedirs(head, exist_ok=exist_ok)
    2023-08-15 09:58:42 | ERROR | stderr | │ 216 │ │ except FileExistsError:
    2023-08-15 09:58:42 | ERROR | stderr | │ 217 │ │ │ # Defeats race condition when another thread created the path │
    2023-08-15 09:58:42 | ERROR | stderr | │ 218 │ │ │ pass
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ D:\Anaconda3\envs\langchain-ChatGLM\lib\os.py:225 in makedirs
    2023-08-15 09:58:42 | ERROR | stderr | │
    2023-08-15 09:58:42 | ERROR | stderr | │ 222 │ │ if tail == cdir: # xxx/newdir/. exists if xxx/newdir exists │
    2023-08-15 09:58:42 | ERROR | stderr | │ 223 │ │ │ return
    2023-08-15 09:58:42 | ERROR | stderr | │ 224 │ try:
    2023-08-15 09:58:42 | ERROR | stderr | │ ❱ 225 │ │ mkdir(name, mode)
    2023-08-15 09:58:42 | ERROR | stderr | │ 226 │ except OSError:
    2023-08-15 09:58:42 | ERROR | stderr | │ 227 │ │ # Cannot rely on checking for EEXIST, since the operating system │
    2023-08-15 09:58:42 | ERROR | stderr | │ 228 │ │ # could give priority to other errors like EACCES or EROFS
    2023-08-15 09:58:42 | ERROR | stderr | ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
    2023-08-15 09:58:42 | ERROR | stderr | OSError: [WinError 123] 文件名、目录名或卷标语法不正确。:
    2023-08-15 09:58:42 | ERROR | stderr | 'C:\Users\Administrator\.cache\huggingface\modules\transformers_modules\D:'