跳到主要内容

v1.12.0 任务调度与监控、流程定义缓存、视觉模型适配

发布日期:2024-09-18

本次更新:

  1. 并行网关逻辑优化:对并行网关的逻辑进行了改进,现在所有输出值将统一为pd.DataFrame格式,确保数据的一致性和处理的便捷性。同时,将并行节点进行了归类,纳入网关分组,使得流程结构更加清晰和易于管理。
  2. 新增任务调度模块:本次更新引入了任务调度模块,专门处理需要长时间运行的流程任务,如文档向量索引。此模块需要Redis,可以在配置中指定相关参数。调度组件采用celery,监控则通过flower实现,助于长时间任务执行和监控能力。
  3. 智能体数据类型高亮显示:为了更好地区分智能体数据类型,赋予其一种鲜明的颜色。增强在处理数据时的可视化和识别能力。
  4. Pocketbase写入改进:数据库写入的数据输入类型现在统一为DataFrame数据集类型,提高数据处理的一致性。
  5. 支持视觉模型及OCR功能:新增对PDF和图片输入的支持,并集成了OCR功能。
  6. 缓存流程定义:为了节省查询时间并提高效率,对流程定义进行了缓存。显著提升了系统的响应速度和性能。

任务调度

引入了基于Celery和Flower的任务调度模块。

Celery

Celery是一个强大的异步任务队列/作业队列,基于分布式消息传递。它专注于实时操作,但同时也支持调度。Celery的主要特点包括:

  1. 异步任务执行:Celery允许将任务分发到多个线程、进程或机器上执行,从而实现高效的异步任务处理。
  2. 结果持久化:任务执行的结果可以被存储,以便稍后检索或用于其他目的。
  3. 灵活的调度:支持定时任务和周期性任务,例如,可以设置每天、每周或特定时间执行任务。
  4. 多种并发方式:支持线程、进程或协程作为并发方式,以适应不同的应用场景和性能需求。
  5. 易于集成:Celery可以与各种Web框架(如Django、Flask)和消息中间件(如RabbitMQ、Redis)集成。

Flower

Flower是一个实时监控和Web管理面板,用于Celery分布式任务队列。它提供了一系列监控和管理功能:

  1. 实时监控:Flower可以实时显示任务的执行情况、状态和历史记录。
  2. 任务详情查看:可以查看任务的详细信息,包括参数、开始时间、运行时间和结果等。
  3. 远程控制:支持远程控制任务,如撤销、重启等。
  4. 统计和图表:提供任务执行的统计信息和图表,帮助用户分析任务的执行效率和性能。
  5. 多 worker 支持:Flower可以监控和管理多个Celery worker,适用于大规模分布式任务队列。 通过将Celery与Flower结合使用,NGraphX软件能够高效地管理和调度需要长时间运行的任务,如文档向量索引,同时提供实时监控和管理的功能,确保任务的高效和稳定执行。

视觉模型

视觉模型在本地使用Ollama测试了 MiniCPM-V 2.6

MiniCPM-V 2.6 是一款由面壁智能推出的端侧 AI 多模态模型,属于 MiniCPM-V 系列中最新且性能最佳的模型。它构建于 SigLip-400M 与 Qwen2-7B 之上,拥有 8B 参数。相较于 MiniCPM-Llama3-V 2.5,MiniCPM-V 2.6 在性能方面有显著提升,并引入了多图和视频理解等新功能。其主要特点包括:

  1. 性能卓越:在全新版本的 OpenCompass 榜单上(涵盖 8 个主流多模态评测基准),平均得分高达 65.2。在单图理解方面,成功超越了多个主流商用多模态大型模型。
  2. 多图理解与上下文学习:支持多图对话与推理,展现了出色的上下文学习能力。在多个主流多图评测基准中取得了顶尖水平。
  3. 视频理解能力:能够接收视频输入,进行对话,并提供详尽的视频描述,涵盖时序与空间信息。
备注

值得注意的是,在本地测试大的PDF文件时有发生崩溃现象。可能有上下文长度有关。图片经过base64编码通过消息传递。

如何使用:

{
"flow_id": "fc1d8deb-f52b-4e0b-ae80-a6d932850996",
"params": {},
"messages": [{"role":"user", "content":[{"type":"text", "text":"获取所有图表的数据"}, {"type":"image_url", "image_url": "uploads/power.pdf"}]}]
}

其中 image_url 如果是 http(s) 开头则会忽略(留给MaaS处理),或者需要自定义插件实现文件读取。

数据处理格式统一

在数据处理操作流程中,统一使用 pd.DataFrame 传递数据的好处主要体现在以下几个方面:

  1. 标准化数据格式pd.DataFrame 是一个结构化且表格化的数据结构,为不同类型的数据提供了一个统一的表示形式。有助于数据在整个流程中的标准化,减少因数据格式不统一而导致的错误和混淆。
  2. 增强数据处理能力pd.DataFrame 提供了丰富的数据处理功能,包括数据筛选、排序、分组、聚合等。允许在数据处理流程中的每个节点上执行复杂的数据操作,而无需转换数据格式。
  3. 易于集成和扩展pd.DataFrame 与各种数据处理库和工具(如 NumPy、SciPy、Matplotlib 等)兼容良好,在数据处理流程中集成和扩展功能变得容易。
  4. 提高代码的可读性和维护性:使用统一的数据格式可以提高代码的可读性,因为所有节点都使用相同的接口和数据结构。使得维护和更新数据处理流程变得更加容易。
  5. 优化性能pd.DataFrame 专为数据操作和复杂计算而设计,其内部优化可提高数据处理的速度和效率。此外,还支持内存高效的数据存储和处理,这在处理大型数据集时尤为重要。
  6. 促进模块化设计:通过在整个流程中使用 pd.DataFrame,可以更容易地将数据处理流程分解为独立的模块或节点,每个节点负责特定的数据处理任务。这种模块化设计有助于提高代码的重用性和灵活性。

总之,统一使用 pd.DataFrame 传递数据有助于提高数据处理流程的效率、可维护性和可扩展性,同时确保数据的一致性和准确性。

在后续功能延展中也将遵循这一改进原则。