EVA:面向AI的关系数据库

新知榜官方账号

2023-09-18 19:18:33

EVA:面向AI的关系数据库

EVA旨在支持使用深度学习模型对结构化数据(表格、特征向量)和非结构化数据(视频、播客、PDF等)进行操作的数据库应用程序。它使用一系列受久经考验的关系数据库系统启发的优化,包括函数缓存、采样和基于成本的谓词重新排序,将AI管道加速10-100倍。EVA支持面向AI的类SQL查询语言,专为分析非结构化数据而量身定制。它带有用于分析非结构化数据的广泛模型,包括用于图像分类、对象检测、OCR、文本情感分类、人脸检测等的模型。

EVA的主要特性如下:

  • 使用类似SQL的简短查询构建更简单的AI驱动的应用程序
  • 使用以AI为中心的查询优化,AI管道速度提高10-100倍
  • 节省花在GPU驱动推理上的钱
  • 通过用户定义的函数为您的自定义深度学习模型提供一流的支持
  • 内置缓存以消除跨查询的冗余模型调用
  • 对PyTorch和HuggingFace模型的一流支持

EVA支持的应用程序包括:

  • 分析十字路口的交通流量
  • 检查电影中演员的情感调色板
  • 根据内容对图像进行分类
  • 使用拥抱面进行图像分割
  • 识别车牌
  • 分析社交媒体模因的毒性

想要快速开始使用EVA?使用pip包管理器安装即可。EVA支持Python版本>=3.7。

pip install eva-db

要在Jupyternotebook中启动并连接到EVA服务器,请查看这个介绍性的情绪分析notebook:

cursor=connect_to_server()

将视频加载到EVA服务器上(我们使用ua_detrac.mp4进行说明):

LOADVIDEO "data/ua_detrac/ua_detrac.mp4" INTO TrafficVideo;

现在可以对加载的视频运行查询:

SELECT id, data FROM TrafficVideo WHERE id < 5;

在视频中搜索包含汽车的帧:

SELECT id, data FROM TrafficVideo WHERE ['car'] < @Yolo(data).labels;

在视频中搜索包含行人和汽车的帧:

SELECT id, data FROM TrafficVideo WHERE ['pedestrian','car'] < @Yolo(data).labels;

搜索超过三辆汽车的帧:

SELECT id, data FROM TrafficVideo WHERE ArrayCount(Yolo(data).labels, 'car') > 3;

在具有用户定义函数(UDF)的查询中使用自定义深度学习模型:

CREATE UDF IF NOT EXISTS MyUDF(INPUT frame NDARRAY UINT8(3, ANYDIM, ANYDIM)) OUTPUT (labels NDARRAY STR(ANYDIM), bboxes NDARRAY FLOAT32(ANYDIM, 4), scores NDARRAY FLOAT32(ANYDIM)) TYPE Classification IMPL 'eva/udfs/fastrcnn_object_detector.py';

在单个查询中组合多个模型以设置有用的AI管道:

--Analyse emotions of faces in a video
SELECT id, bbox, EmotionDetector(Crop(data,bbox)) FROM MovieVideo JOIN LATERAL UNNEST(FaceDetector(data)) AS Face(bbox,conf) WHERE id < 15;

EVA使用其以AI为中心的查询优化器更快地运行查询。两个关键的优化是:

  • 缓存:EVA自动缓存并复用之前的查询结果(尤其是模型推理结果),消除冗余计算,减少查询处理时间。
  • 谓词重新排序:EVA优化了查询谓词的评估顺序(例如,首先运行速度更快、更具选择性的模型),从而加快查询速度并降低推理成本。

考虑对图像数据集的这两个探索性查询:

--Query1: Find all images of black-colored dogs
SELECT id, bbox FROM dogs JOIN LATERAL UNNEST(Yolo(data)) AS Obj(label,bbox,score) WHERE Obj.label='dog' AND Color(Crop(data,bbox))='black';
--Query2: Find all Great Danes that are black-colored
SELECT id, bbox FROM dogs JOIN LATERAL UNNEST(Yolo(data)) AS Obj(label,bbox,score) WHERE Obj.label='dog' AND DogBreedClassifier(Crop(data,bbox))='greatdane' AND Color(Crop(data,bbox))='black';

通过重用第一个查询的结果并根据可用的缓存推理结果对谓词重新排序,EVA运行第二个查询的速度提高了10倍!

本页网址:https://www.xinzhibang.net/article_detail-12214.html

寻求报道,请 点击这里 微信扫码咨询

关键词

EVA AI 关系数据库

分享至微信: 微信扫码阅读

相关工具

相关文章