项目简介 - Sematic
简介
Sematic 是一个开源的连续机器学习平台,其宗旨是为机器学习工程师和数据科学家提供便利的工具,以简化他们创建和运行复杂的端到端机器学习流水线的过程。用户可以仅使用 Python 编程语言构建这些流水线,并在自己的电脑、云虚拟机或 Kubernetes 集群上运行。
设计理念
Sematic 的设计灵感来自于顶级自动驾驶汽车公司的经验教训。它允许将数据处理任务(如使用 Apache Spark 的任务)与模型训练(如 PyTorch、TensorFlow)或其他任意的 Python 业务逻辑任务相结合。这样可以实现创建类型安全、可追踪和可复现的端到端流水线,这些流水线能够在现代化的网络仪表板中被监控和可视化。
为什么选择 Sematic
- 容易上手:无需进行复杂的部署或基础设施建设,只需在本地安装 Sematic 即可开始探索。
- 本地与云端运行一致性:同一段代码可在本地电脑和 Kubernetes 集群上运行。
- 端到端可追溯性:所有流水线产物都被持久化、追踪并能在网络仪表板中可视化。
- 访问多样计算资源:可为每个流水线步骤定制所需资源以优化性能和云端占用(包括 CPU、内存、GPU、Spark 集群等)。
- 结果可复现:可以从用户界面中重新运行流水线,结果的复现性有保障。
快速入门
安装与运行
开始使用 Sematic 只需在 Python 环境中运行以下命令:
$ pip install sematic
启动本地网络仪表板:
$ sematic start
运行示例流水线:
$ sematic run examples/mnist/pytorch
创建新的样板项目:
$ sematic new my_new_project
或者从现有例子中创建:
$ sematic new my_new_project --from examples/mnist/pytorch
然后运行它:
$ python3 -m my_new_project
有关如何将 Sematic 部署到 Kubernetes 以利用云资源,可以查看相关文档。
功能特色
- 轻量级 Python SDK:定义复杂的端到端流水线
- 流水线嵌套:可以嵌套流水线,形成更大的流水线
- 动态图形:Python 定义的图形允许迭代、条件分支等
- 谱系追踪:每个步骤的所有输入和输出都被持久化和追踪
- 运行时类型检查:通过运行时类型检查及早发现错误
- 网络仪表板:在现代化的网络界面中监控、追踪和可视化流水线
- 产物可视化:在网络仪表板中可视化所有步骤的输入和输出
- 本地运行:无需部署即可在本地电脑上运行流水线
- 云端编排:在 Kubernetes 上运行流水线以访问 GPU 和其他云资源
- 异构计算资源:在不同机器上运行不同步骤(如 CPU、内存、GPU、Spark 等)
- Helm 图表部署:在你的 Kubernetes 集群上安装 Sematic
- 流水线重跑:可以从用户界面中任意点重新运行流水线
- 步骤缓存:缓存耗时的流水线步骤以加速迭代
- 步骤重试:通过步骤重试从瞬态故障中恢复
- 元数据和协作:标签、源代码可视化、文档字符串、笔记等
- 丰富的集成:诸如 Apache Spark、Ray、Snowflake、Plotly、Matplotlib、Pandas、Grafana、Bazel、Helm chart、Git 等
社区和资源
用户可以通过 Sematic 的官方网站、文档、Discord 频道以及其他社交渠道了解更多。同时,用户也可以通过 GitHub 仓库中的现有问题和开发者文档来为 Sematic 做出贡献。
Sematic 不仅是一个强大的机器学习流水线工具,更是机器学习社区成员共同发展的一个平台,期待更多的开发者加入共建。