m3dev/gokart

Gokart solves reproducibility, task dependencies, constraints of good code, and ease of use for Machine Learning Pipeline.

解决的问题

Gokart 简化了可复现机器学习流水线的创建。它解决了机器学习开发中的常见挑战,例如管理任务依赖关系、通过固定随机种子确保结果一致性,以及通过鼓励遵循 SOLID 原则来保持代码库的整洁。

工作原理

Gokart 作为 Luigi 的封装器构建,将机器学习工作流组织为一系列任务。它会自动跟踪每个任务的元数据——包括输出数据、模块版本、处理时间以及随机种子——并将其存储在带有哈希值的独立 pickle 文件中。当任务参数发生变化时,管道会自动重新运行受影响的部分。为了降低内存使用量,中间结果通过文件进行交换,系统还支持将 GCS 和 S3 作为这些结果的云存储。它还内置了在 I/O 期间对 pandas DataFrame 列进行检查的支持,并使用 Redis 在并行运行时锁定任务。

适用人群

需要一个强大且可复现的环境来进行批量处理和团队开发的机器学习工程师和数据科学家。

主要亮点

  • 自动可复现性:自动固定 numpy 和 random 的种子,并追踪所有模块版本和参数。
  • 智能重运行:当任务参数发生变化时,自动触发管道重运行。
  • 云集成:原生支持 S3 和 GCS 作为中间结果的数据存储。
  • 类型安全:支持类型注解和 mypy 插件,确保管道的健壮性并防止任务间的类型错误。
  • 内存高效:通过中间文件在任务间交换数据,而不是将所有内容保留在内存中。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目