Langchain-Chatchat icon indicating copy to clipboard operation
Langchain-Chatchat copied to clipboard

python init_database.py --recreate-vs提示CUDA没有启用

Open cq134cq opened this issue 1 year ago • 7 comments

问题描述 / Problem Description 用简洁明了的语言描述这个问题 / Describe the problem in a clear and concise manner.

复现问题的步骤 / Steps to Reproduce

  1. 执行 '...' / Run '...'
  2. 点击 '...' / Click '...'
  3. 滚动到 '...' / Scroll to '...'
  4. 问题出现 / Problem occurs

预期的结果 / Expected Result 描述应该出现的结果 / Describe the expected result.

实际结果 / Actual Result 描述实际发生的结果 / Describe the actual result.

环境信息 / Environment Information

langchain-ChatGLM 版本/commit 号:0.2.10

是否使用 Docker 部署(是/否):no

使用的模型(ChatGLM2-6B / Qwen-7B 等):ChatGLM3-6B

使用的 Embedding 模型(moka-ai/m3e-base 等):bge-large-zh

使用的向量库类型 (faiss / milvus / pg_vector 等): faiss / Vector library used (faiss, milvus, pg_vector, etc.): faiss

操作系统及版本 / Operating system and version:win11

Python 版本 / Python version:3.10

附加信息 / Additional Information 添加与问题相关的任何其他信息 / Add any other information related to the issue. C:\soft\lc>python init_database.py --create-tables 总计用时: 0:00:00.002004

C:\soft\lc>python init_database.py --recreate-vs recreating all vector stores 2024-02-22 14:08:20,241 - faiss_cache.py[line:92] - INFO: loading vector store in 'samples/vector_store/bge-large-zh' from disk. 2024-02-22 14:08:20,607 - SentenceTransformer.py[line:66] - INFO: Load pretrained SentenceTransformer: BAAI\bge-large-zh 2024-02-22 14:08:21,697 - embeddings_api.py[line:39] - ERROR: Torch not compiled with CUDA enabled AttributeError: 'NoneType' object has no attribute 'conjugate'

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "C:\soft\lc\init_database.py", line 107, in folder2db(kb_names=args.kb_name, mode="recreate_vs", embed_model=args.embed_model) File "C:\soft\lc\server\knowledge_base\migrate.py", line 126, in folder2db kb.create_kb() File "C:\soft\lc\server\knowledge_base\kb_service\base.py", line 80, in create_kb self.do_create_kb() File "C:\soft\lc\server\knowledge_base\kb_service\faiss_kb_service.py", line 51, in do_create_kb self.load_vector_store() File "C:\soft\lc\server\knowledge_base\kb_service\faiss_kb_service.py", line 28, in load_vector_store return kb_faiss_pool.load_vector_store(kb_name=self.kb_name, File "C:\soft\lc\server\knowledge_base\kb_cache\faiss_cache.py", line 102, in load_vector_store vector_store = self.new_vector_store(embed_model=embed_model, embed_device=embed_device) File "C:\soft\lc\server\knowledge_base\kb_cache\faiss_cache.py", line 60, in new_vector_store vector_store = FAISS.from_documents([doc], embeddings, normalize_L2=True,distance_strategy="METRIC_INNER_PRODUCT") File "C:\soft\lc\lib\site-packages\langchain_core\vectorstores.py", line 508, in from_documents return cls.from_texts(texts, embedding, metadatas=metadatas, **kwargs) File "C:\soft\lc\lib\site-packages\langchain_community\vectorstores\faiss.py", line 959, in from_texts embeddings = embedding.embed_documents(texts) File "C:\soft\lc\server\knowledge_base\kb_service\base.py", line 420, in embed_documents return normalize(embeddings).tolist() File "C:\soft\lc\server\knowledge_base\kb_service\base.py", line 37, in normalize norm = np.linalg.norm(embeddings, axis=1) File "<array_function internals>", line 200, in norm File "C:\soft\lc\lib\site-packages\numpy\linalg\linalg.py", line 2541, in norm s = (x.conj() * x).real TypeError: loop of ufunc does not support argument 0 of type NoneType which has no callable conjugate method

python init_database.py --recreate-vs提示CUDA没有启用

nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2022 NVIDIA Corporation Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022 Cuda compilation tools, release 11.8, V11.8.89 Build cuda_11.8.r11.8/compiler.31833905_0

C:\soft\lc>pip show torch Name: torch Version: 2.1.2 Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration Home-page: https://pytorch.org/ Author: PyTorch Team Author-email: [email protected] License: BSD-3 Location: C:\Users\sync\AppData\Roaming\Python\Python311\site-packages Requires: filelock, fsspec, jinja2, networkx, sympy, typing-extensions Required-by: accelerate, effdet, sentence-transformers, timm, torchaudio, torchvision, xformers

cq134cq avatar Feb 22 '24 06:02 cq134cq

🤖

嘿,@cq134cq!很高兴再次看到你在这里提问。希望你最近一切都好!

根据您提供的信息,您在运行 python init_database.py --recreate-vs 时遇到了 "CUDA not enabled" 的错误,尽管您已经安装了 CUDA 11.8 和 PyTorch 2.1.2。这个问题可能是由于您的 CUDA 版本和 PyTorch 版本之间的兼容性问题。

首先,我注意到您提到的 PyTorch 版本是 2.1.2,但是这个版本并不存在。目前 PyTorch 的最新版本是 1.10.0。如果您的意思是 PyTorch 1.2.0,那么这个版本是不支持 CUDA 11.8 的,PyTorch 1.2.0 支持的是 CUDA 10.0。

为了解决这个问题,您需要安装一个与 CUDA 11.8 兼容的 PyTorch 版本。您可以参考 PyTorch 官网的兼容性矩阵。安装了兼容的 PyTorch 版本后,您应该就能够正常运行命令,而不会出现 "CUDA not enabled" 的错误了。

如果问题仍然存在,您可以在配置文件中手动将 EMBEDDING_DEVICELLM_DEVICE 设置为 "cuda":

EMBEDDING_DEVICE = "cuda"
LLM_DEVICE = "cuda"

这将强制程序使用 CUDA 来运行模型。如果 CUDA 已经正确安装并且与您的 PyTorch 版本兼容,这应该可以解决错误。

另外,我在 Langchain-Chatchat 仓库中找到了一些类似的已解决问题,可能对您有所帮助:

  1. AssertionError: Torch not compiled with CUDA enabled
  2. 初始化不成功,请指导
  3. [BUG] Torch 无法激活CUDA

这些问题的解决方案都建议检查 PyTorch 和 CUDA 的版本,并根据 PyTorch 提供的兼容性表进行匹配。可能需要降级您的 PyTorch 版本以匹配您的 CUDA 版本。例如,如果您有 CUDA 11.8,可以尝试使用以下命令安装 PyTorch 2.1.1 版本:

pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118

希望这些信息对您有所帮助。如果问题仍然存在,或者您有其他问题,欢迎随时向我提问。

Sources

About Dosu

This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.

Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.

If you want to continue the conversation, start your reply with @dosu-bot.

dosubot[bot] avatar Feb 22 '24 06:02 dosubot[bot]

这个是你配置没对吧,这个没找到文件

zRzRzRzRzRzRzR avatar Feb 22 '24 06:02 zRzRzRzRzRzRzR

这个没找到文件

没找到什么文件?

cq134cq avatar Feb 22 '24 07:02 cq134cq

这个没找到文件

没找到什么文件?

我试过,如改成CPU是正常的

cq134cq avatar Feb 22 '24 07:02 cq134cq

cuda 的配置是对的么,torch 和 cuda,这个报错能导致的原因太多了

zRzRzRzRzRzRzR avatar Feb 22 '24 14:02 zRzRzRzRzRzRzR

🤖

嘿,@cq134cq!很高兴再次看到你在这里提问。希望你最近一切都好!

根据您提供的信息,您在运行 python init_database.py --recreate-vs 时遇到了 "CUDA not enabled" 的错误,尽管您已经安装了 CUDA 11.8 和 PyTorch 2.1.2。这个问题可能是由于您的 CUDA 版本和 PyTorch 版本之间的兼容性问题。

首先,我注意到您提到的 PyTorch 版本是 2.1.2,但是这个版本并不存在。目前 PyTorch 的最新版本是 1.10.0。如果您的意思是 PyTorch 1.2.0,那么这个版本是不支持 CUDA 11.8 的,PyTorch 1.2.0 支持的是 CUDA 10.0。

为了解决这个问题,您需要安装一个与 CUDA 11.8 兼容的 PyTorch 版本。您可以参考 PyTorch 官网的兼容性矩阵。安装了兼容的 PyTorch 版本后,您应该就能够正常运行命令,而不会出现 "CUDA not enabled" 的错误了。

如果问题仍然存在,您可以在配置文件中手动将 EMBEDDING_DEVICELLM_DEVICE 设置为 "cuda":

EMBEDDING_DEVICE = "cuda"
LLM_DEVICE = "cuda"

这将强制程序使用 CUDA 来运行模型。如果 CUDA 已经正确安装并且与您的 PyTorch 版本兼容,这应该可以解决错误。

另外,我在 Langchain-Chatchat 仓库中找到了一些类似的已解决问题,可能对您有所帮助:

  1. AssertionError: Torch not compiled with CUDA enabled
  2. 初始化不成功,请指导
  3. [BUG] Torch 无法激活CUDA

这些问题的解决方案都建议检查 PyTorch 和 CUDA 的版本,并根据 PyTorch 提供的兼容性表进行匹配。可能需要降级您的 PyTorch 版本以匹配您的 CUDA 版本。例如,如果您有 CUDA 11.8,可以尝试使用以下命令安装 PyTorch 2.1.1 版本:

pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118

希望这些信息对您有所帮助。如果问题仍然存在,或者您有其他问题,欢迎随时向我提问。

Sources

About Dosu

This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.

Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.

If you want to continue the conversation, start your reply with @dosu-bot.

谢谢,用这个命令可以 pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118

cq134cq avatar Feb 23 '24 00:02 cq134cq

orch 和

是这个问题,谢谢

cq134cq avatar Feb 23 '24 00:02 cq134cq