未提供项目描述
项目描述
: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数据。
路线图
- 改进的视频支持
- 文本/传感器/地理空间支持
- 数据集内构建版本支持
- 更好的Rikai UDT支持
- 声明性注释API(类似于用于注释图像/视频的vega-lite)
- 集成到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有多种方式
- 使用包含的Dockerfile进行尝试。
- 通过pip安装
pip install rikai
,带有gcp、pytorch/tf和其他额外的选项。 - 从源安装
注意:如果您想用自己的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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 972317e7449737b87b4810f5e26ecf0a3939bcb7204affa266022b1b282d10bb |
|
MD5 | 3da481a408093c0f974d6b75a8ba2def |
|
BLAKE2b-256 | 56c54f97cb5df9b9cec7b045543fbd1fa1f2a7033bb5b932ccdc39b07ec656cf |
rikai-0.1.15-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3e8e68cf6447e77740b34982e64d3a4079cbd3703641f250443fde77542d080a |
|
MD5 | ccb8eb7a332336c995426a60f18a7954 |
|
BLAKE2b-256 | 56b0f62e6e432a53a7c7e8fe4a885e1ea81bb03479172f3da989c56713512029 |