跳转到主要内容

未提供项目描述

项目描述

Apache License Read The Doc javadoc Pypi version Github Action stability-experimental

加入社区: 加入 https://gitter.im/rikaidev/community 的聊天

:heavy_exclamation_mark: 此存储库仍然是实验性的。不保证API兼容性。

里克爱

里克爱是一个专门为围绕大规模非结构化数据集(例如,图像、视频、传感器数据(未来)、文本(未来)等)的AI工作流程而设计的框架。通过AI建模工作流程的每个阶段,里克爱都力求在处理真实世界的AI数据集时,为开发者提供极佳的开发体验。

AI数据集的质量可能使AI项目成功或失败,但AI数据的工具在人体工程学方面严重缺乏。因此,实践者必须花费大部分时间和精力与数据斗争,而不是在模型和用例上进行创新。里克爱减轻了AI实践者在日常处理各种繁琐的数据任务时感受到的痛苦,使他们能够再次专注于模型构建和问题解决。

要立即开始尝试Rikai,请查看快速入门指南

主要功能

数据格式

Rikai的核心是一个数据格式(“rikai格式”),基于Apache Parquet。Rikai通过为非结构化数据添加丰富的语义类型设计,增强了Parquet,这些语义类型专门用于注释。

集成

Rikai附带一套广泛的I/O连接器。对于ETL,Rikai能够消费ROS bags和Coco等流行格式。对于分析,可以轻松将Rikai数据读取到pandas/spark DataFrames中(Rikai处理语义类型的serde)。对于训练,Rikai允许直接创建Pytorch/Tensorflow数据集,无需手动转换。

SQL-ML引擎

Rikai扩展了Spark SQL的ML功能,允许用户使用SQL(“自行提供模型”)分析Rikai数据集。

可视化

精心设计的数据可视化嵌入语义类型,特别是在Jupyter笔记本中,帮助您在无需记住复杂的原始图像处理的情况下可视化和检查您的AI数据。

路线图

  1. 改进的视频支持
  2. 文本/传感器/地理空间支持
  3. 数据集内构建版本支持
  4. 更好的Rikai UDT支持
  5. 声明性注释API(类似于用于注释图像/视频的vega-lite)
  6. 集成到dbt和BI工具

示例

from pyspark.sql import Row
from pyspark.ml.linalg import DenseMatrix
from rikai.types import Image, Box2d
from rikai.numpy import wrap
import numpy as np

df = spark.createDataFrame(
    [
        {
            "id": 1,
            "mat": DenseMatrix(2, 2, range(4)),
            "image": Image("s3://foo/bar/1.png"),
            "annotations": [
                Row(
                    label="cat",
                    mask=wrap(np.random.rand(256, 256)),
                    bbox=Box2d(xmin=1.0, ymin=2.0, xmax=3.0, ymax=4.0),
                )
            ],
        }
    ]
)

df.write.format("rikai").save("s3://path/to/features")

Pytorch中训练数据集

from torch.utils.data import DataLoader
from torchvision import transforms as T
from rikai.pytorch.vision import Dataset

transform = T.Compose([
   T.Resize(640),
   T.ToTensor(),
   T.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))
])

dataset = Dataset(
   "s3://path/to/features",
   image_column="image",
   transform=transform
)
loader = DataLoader(
    dataset,
    batch_size=32,
    num_workers=8,
)
for batch in loader:
    predicts = model(batch.to("cuda"))

在Spark SQL中使用ML模型(实验性

CREATE MODEL yolo5
OPTIONS (min_confidence=0.3, device="gpu", batch_size=32)
USING "s3://bucket/to/yolo5_spec.yaml";

SELECT id, ML_PREDICT(yolo5, image) FROM my_dataset
WHERE split = "train" LIMIT 100;

Rikai可以将MLflow作为其模型注册库。如果您使用的是mlflow模型注册库,这允许您自动获取最新版本。以下是支持的模型类型列表

  • PyTorch(pytorch)
  • Tensorflow(tensorflow)
  • Scikit-learn(sklearn)
CREATE MODEL yolo5
OPTIONS (min_confidence=0.3, device="gpu", batch_size=32)
USING "mlflow:///yolo5_model/";

SELECT id, ML_PREDICT(yolo5, image) FROM my_dataset
WHERE split = "train" LIMIT 100;

有关模型规范的更多详细信息,请参阅SQL-ML文档

入门指南

目前,Rikai维护Scala 2.12和Python 3.7、3.8、3.9

安装Rikai有多种方式

  1. 使用包含的Dockerfile进行尝试。
  2. 通过pip安装pip install rikai,带有gcp、pytorch/tf和其他额外的选项
  3. 安装

注意:如果您想用自己的pyspark使用Rikai,请查阅rikai文档以获取提示。

Docker

包含的Dockerfile创建了一个带有Jupyter、Pytorch、Spark和rikai的独立演示镜像,并为您预装了笔记本,以便您可以玩rikai功能存储的功能。

从当前目录构建和运行docker镜像

# Clone the repo
git clone git@github.com:eto-ai/rikai rikai
# Build the docker image
docker build --tag rikai --network host .
# Run the image
docker run -p 0.0.0.0:8888:8888/tcp rikai:latest jupyter lab -ip 0.0.0.0 --port 8888

如果成功,控制台应打印出可点击的JupyterLab链接。您还可以打开浏览器标签页,并转到localhost:8888

从pypi安装

基础rikai库可以仅通过pip install rikai安装。支持pytorch(pytorch和torchvision)、jupyter(matplotlib和jupyterlab)的依赖项都是可选的额外功能。许多开源数据集也使用YouTube视频,因此我们还添加了pafy和youtube-dl作为可选的额外功能。

例如,如果您想在Jupyter中使用pytorch在rikai数据集上训练包含YouTube视频的s3中的模型,您将运行

pip install rikai[pytorch,jupyter,youtube]

如果您不确定需要什么,并且不介意安装一些额外的依赖项,您可以简单地安装所有内容

pip install rikai[all]

从源安装

要构建源,您需要安装python以及Scala和sbt

# Clone the repo
git clone git@github.com:eto-ai/rikai rikai
# Build the jar
sbt publishLocal
# Install python package
cd python
pip install -e . # pip install -e .[all] to install all optional extras (see "Install from pypi")

实用工具

pre-commit可以帮助您保持与存储库一致的代码格式。它可以在CI强制您这样做之前在本地机器上触发重新格式化和其他操作。

如果您需要它,请安装并启用 pre-commit

pip install pre-commit
pre-commit install #in your local development directory
#pre-commit installed at .git/hooks/pre-commit

如果您想卸载它,也很简单。

pre-commit uninstall

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

rikai-0.1.15.tar.gz (75.5 kB 查看哈希值)

上传时间

构建分发

rikai-0.1.15-py3-none-any.whl (126.7 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面