我开始测试 VannaAI,并且我正在运行一个基于 使用 Ollama、ChromaDB 为 Postgres 生成 SQL 的示例程序 :
from vanna.ollama import Ollama
from vanna.chromadb import ChromaDB_VectorStore
class MyVanna(ChromaDB_VectorStore, Ollama):
def __init__(self, config=None):
ChromaDB_VectorStore.__init__(self, config=config)
Ollama.__init__(self, config=config)
vn = MyVanna(config={'model': 'mistral'})
vn.connect_to_postgres(host='<ofuscated>', dbname='<ofuscated>', user='<ofuscated>', password='<ofuscated>', port='<ofuscated>')
# The information schema query may need some tweaking depending on your database. This is a good starting point.
df_information_schema = vn.run_sql("SELECT * FROM INFORMATION_SCHEMA.COLUMNS")
# This will break up the information schema into bite-sized chunks that can be referenced by the LLM
plan = vn.get_training_plan_generic(df_information_schema)
print(plan)
# If you like the plan, then uncomment this and run it to train
print("Training starts")
vn.train(plan=plan)
print("Training ends")
当我运行它时,我得到:
...
Training starts
C:\Users\bodoque\.cache\chroma\onnx_models\all-MiniLM-L6-v2\onnx.tar.gz: 100%|██████████| 79.3M/79.3M [00:05<00:00, 16.1MiB/s]
Add of existing embedding ID: 9064de8e-3c0c-4f3b-a02b-215dff373009-doc
Process finished with exit code -1073741819 (0xC0000005)
The
print("Training ends")
永远不会达到,所以我理解
vn.train(plan=plan)
中断。
代码在执行
vn.train(plan=plan)
时遇到问题,并返回退出代码 -1073741819 (0xC0000005),这是一个 Windows 错误代码,通常表示访问冲突。这可能有多种原因,以下是几种可能性和解决方法:
1. 内存不足:
-
问题: 大型语言模型 (LLM) 训练需要大量内存,尤其是当你的
df_information_schema
数据集很大时。如果你的系统没有足够的可用内存,训练过程可能会崩溃。 -
解决方法:
-
减少数据集的大小:尝试使用
df_information_schema
的一个子集进行训练,例如只选择几个表或列。 -
使用更小的 LLM 模型:将
config={'model': 'mistral'}
中的mistral
替换为更小的模型,例如llama2-7b
或llama2-13b
。 - 增加系统内存:如果可能,增加你的 RAM 或使用具有更多内存的机器。
-
减少数据集的大小:尝试使用
2. GPU 内存不足:
-
问题: 如果你正在使用 GPU 进行训练,那么 GPU 内存也可能不足,导致训练崩溃。
-
解决方法:
- 确保安装了正确的 GPU 驱动程序,并且 VannaAI 已正确配置为使用 GPU。
-
减少批量大小:尝试在
train()
函数中添加batch_size
参数,并将其设置为较小的值,例如vn.train(plan=plan, batch_size=16)
。 - 使用具有更多 VRAM 的 GPU:如果可能,使用具有更多 VRAM 的 GPU 进行训练。
3. 软件版本冲突:
-
问题: VannaAI、Ollama、ChromaDB 或其依赖项的版本不兼容可能会导致冲突和崩溃。
-
解决方法:
-
检查所有软件包的版本:确保你使用的是所有软件包的最新稳定版本。可以使用
pip list
命令查看已安装的软件包及其版本。 - 创建一个新的虚拟环境:创建一个新的 Python 虚拟环境,并仅安装 VannaAI 项目所需的软件包,以避免版本冲突。
-
检查所有软件包的版本:确保你使用的是所有软件包的最新稳定版本。可以使用
4. 数据问题:
-
问题:
df_information_schema
数据集中的某些数据可能导致训练过程出错。 -
解决方法:
- 检查数据集中是否有任何空值或异常值,并尝试清理数据。
- 尝试使用其他数据集进行测试,以确定问题是否出在数据上。
其他建议:
-
调试:
尝试在
vn.train(plan=plan)
代码行前后添加print
语句,以查看代码执行到哪一步崩溃。 - 查看日志: 查看 VannaAI、Ollama 和 ChromaDB 的日志文件,以获取有关崩溃原因的更多信息。
- 联系 VannaAI 社区: 在 VannaAI 的 GitHub 存储库或其他社区论坛上寻求帮助。
通过尝试上述解决方法并仔细检查代码和系统配置,你应该能够解决
vn.train(plan=plan)
中的崩溃问题,并成功训练你的 VannaAI 模型。