首页 > 编程问答 >VannaAI(带有 Ollama 和 ChromaDB)示例程序在训练模型步骤失败

VannaAI(带有 Ollama 和 ChromaDB)示例程序在训练模型步骤失败

时间:2024-08-06 15:15:08浏览次数:12  
标签:python chromadb ollama

我开始测试 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 模型。

标签:python,chromadb,ollama
From: 78834030

相关文章

  • Python科研武器库 - 字符串操作 - 字符串开头结尾判断 startswith() endswith()
    使用场景:按照开头的前缀、结尾的后缀来判断、筛选目标字符串。使用函数:str.startswith(search_string,start,end)str.endswith(search_string,start,end)search_string:要匹配的目标字符串。start:要从中匹配search_string的str的起始索引。end:要考虑匹配的str的结......
  • 我正在 python 中使用 aspose.pdf 将 pdf 转换为 excel 。但问题是它只能将 pdf 的前
    `从tkinter导入*将aspose.pdf导入为ap从tkinter导入文件对话框importpandasaspdinput_pdf=filedialog.askopenfilename(filetypes=(("PDF文件",".pdf"),("所有文件",".")))output_file=filedialog.asksaveasfil......
  • 如何在selenium python中访问电子邮件中的所有文件夹
    我使用imaplib库,但有时无法访问某些帐户,我使用poplib但它只支持访问主邮箱,但不支持访问其他文件夹,如垃圾邮件我想使用imaplib,但不会出现有时甚至无法访问的错误尽管我有一个帐户,但我仍然可以访问它,或者是否有另一个库可以快速支持该帐户?你想要使用Selenium和Python......
  • python安装torch-cluster、torch-scatter、torch-sparse和torch-geometric | torch_ge
    1.检查CUDA版本【方法1】用nvidia-smi已装cuda,用nvidia-smi或nvcc-V查看【方法2】用torch已装torch,用torch代码打印importtorchprint(torch.__version__)#查看pytorch安装的版本号print(torch.cuda.is_available())#查看cuda是否可......
  • Python:学生成绩管理系统(大学编程期末实验)
    引言在这个信息时代,教育管理的自动化已成为提高效率的关键。本文将介绍如何使用Python开发一个学生成绩管理系统,旨在简化成绩记录、查询和分析的过程。创作灵感来源本项目灵感来源于我在教育机构的工作经历,以及对提高教育管理效率的持续追求。通过复盘过往项目,我意识到一个......
  • 手把手教你使用Python网络爬虫下载一本小说(附源码)
    大家好,我是Python进阶者。前言前几天【磐奚鸟】大佬在群里分享了一个抓取小说的代码,感觉还是蛮不错的,这里分享给大家学习。一、小说下载如果你想下载该网站上的任意一本小说的话,直接点击链接进去,如下图所示。只要将URL中的这个数字拿到就可以了,比方说这里是951,那么这个数字......
  • 借助 Transformer 实现美股价格的预测(Python干货)
    作者:老余捞鱼原创不易,转载请标明出处及原作者。写在前面的话:      Transformer是一种在自然语言处理等领域广泛应用的深度学习架构,与传统的循环神经网络(RNN)相比,Transformer可以并行处理输入序列的各个位置,大大提高了计算效率。而且通过多层的深度堆叠,能够学习......
  • 将 Mojo 与 Python 结合使用
    Mojo允许您访问整个Python生态系统,但环境可能会因Python的安装方式而异。花些时间准确了解Python中的模块和包的工作原理是值得的,因为有一些复杂情况需要注意。如果您以前在调用Python代码时遇到困难,这将帮助您入门。Python中的模块和包让我们从Python开始,如......
  • Mojo和Python中的类型详解
    调用Python方法时,Mojo需要在原生Python对象和原生Mojo对象之间来回转换。大多数转换都是自动进行的,但也有一些情况Mojo尚未处理。在这些情况下,您可能需要进行显式转换,或调用额外的方法。Python中的Mojo类型Mojo基本类型隐式转换为Python对象。目前支持的......
  • python绘制圆柱体
     importosimportrandomimportnumpyasnpimportmatplotlib.pyplotasplt#合成管道数据集defplot_cylinder(center,radius,height,num_points=100):#生成圆柱体的侧面点坐标theta=np.linspace(0,2*np.pi,num_points)intervalZ=np.floor(h......