Skip to main content
Version: 1.0.8

有兴趣为SynapseML做出贡献吗?我们很高兴与您合作。

您可以通过多种方式贡献:

  • 使用库并提供反馈:报告错误,请求功能。
  • 添加示例 Jupyter 笔记本、Python 或 Scala 代码示例、文档页面。
  • 修复错误和问题。
  • 添加新功能,例如数据转换或机器学习算法。
  • 审查其他贡献者的拉取请求。

如何贡献?

您可以随时通过提交问题来提供反馈、报告错误和请求新功能。此外,您还可以对现有问题进行投票或评论。

如果你想向仓库添加代码、示例或文档,请遵循以下流程:

提出贡献

  • 最好从解决现有问题开始,以便熟悉库的源代码和流程。
  • 为了确保您的贡献是合适的并且不会重复正在进行的工作,请打开一个问题或对现有问题进行评论。在其中,讨论您的贡献和设计。
  • 您计划贡献的任何算法应该是众所周知并被生产使用所接受的,并且有研究论文支持。
  • 算法应具有高度可扩展性,并适合处理大规模数据集。
  • 所有贡献都需要遵守MIT许可证。微软外部的贡献者需要签署CLA。

实现您的贡献

  • Fork SynapseML 仓库。
  • 在Scala中实现您的算法,使用我们的包装生成机制来生成PySpark绑定。
  • 使用 SparkML PipelineStages,以便您的算法可以作为管道的一部分使用。
  • 对于参数,请使用MMLParam
  • 通过扩展SparkML的MLReadable来实现模型的保存和加载。
  • 使用良好的Scala风格。
  • 二进制依赖项应在Maven Central上。
  • 查看这个pull request以获取一个贡献示例。

实施测试

  • 设置构建环境。使用Linux机器或虚拟机(我们使用Ubuntu,但其他发行版也应该可以工作)。
  • 在本地测试你的代码。
  • 使用ScalaTests添加测试。需要单元测试。
  • 需要一个示例笔记本作为端到端测试。

实施文档

  • 添加一个示例 Jupyter 笔记本,展示您算法的预期使用案例,并提供逐步说明。(同一个笔记本可用于测试代码。)
  • 在源代码中添加内联ScalaDoc注释,以生成API参考文档

打开一个拉取请求

  • 在大多数情况下,你应该将你的提交压缩成一个。
  • 打开一个拉取请求,并将其链接到你之前创建的讨论问题。
  • SynapseML 核心团队成员将触发构建以测试您的更改。
  • 修复任何构建失败。(拉取请求中将包含来自构建的评论,带有有用的链接。)
  • 等待核心团队成员和其他人的代码审查。
  • 修复代码审查中发现的问题并重新迭代。

构建和签入

  • 等待核心团队成员合并你的代码。
  • 您的功能将在下一个版本中通过Docker镜像和脚本安装提供,通常每月发布一次。您可以通过使用包含您更改的版本的构建工件(例如以.devN结尾的版本)来更快地试用您的功能。

如果对如何做某事有疑问,请参考现有代码或拉取请求中的做法,不要犹豫去询问。