有兴趣为SynapseML做出贡献吗?我们很高兴与您合作。
您可以通过多种方式贡献:
- 使用库并提供反馈:报告错误,请求功能。
- 添加示例 Jupyter 笔记本、Python 或 Scala 代码示例、文档页面。
- 修复错误和问题。
- 添加新功能,例如数据转换或机器学习算法。
- 审查其他贡献者的拉取请求。
如何贡献?
您可以随时通过提交问题来提供反馈、报告错误和请求新功能。此外,您还可以对现有问题进行投票或评论。
如果你想向仓库添加代码、示例或文档,请遵循以下流程:
提出贡献
- 最好从解决现有问题开始,以便熟悉库的源代码和流程。
- 为了确保您的贡献是合适的并且不会重复正在进行的工作,请打开一个问题或对现有问题进行评论。在其中,讨论您的贡献和设计。
- 您计划贡献的任何算法应该是众所周知并被生产使用所接受的,并且有研究论文支持。
- 算法应具有高度可扩展性,并适合处理大规模数据集。
- 所有贡献都需要遵守MIT许可证。微软外部的贡献者需要签署CLA。
实现您的贡献
- Fork SynapseML 仓库。
- 在Scala中实现您的算法,使用我们的包装生成机制来生成PySpark绑定。
- 使用 SparkML
PipelineStage
s,以便您的算法可以作为管道的一部分使用。 - 对于参数,请使用
MMLParam
。 - 通过扩展SparkML的
MLReadable
来实现模型的保存和加载。 - 使用良好的Scala风格。
- 二进制依赖项应在Maven Central上。
- 查看这个pull request以获取一个贡献示例。
实施测试
- 设置构建环境。使用Linux机器或虚拟机(我们使用Ubuntu,但其他发行版也应该可以工作)。
- 在本地测试你的代码。
- 使用ScalaTests添加测试。需要单元测试。
- 需要一个示例笔记本作为端到端测试。
实施文档
- 添加一个示例 Jupyter 笔记本,展示您算法的预期使用案例,并提供逐步说明。(同一个笔记本可用于测试代码。)
- 在源代码中添加内联ScalaDoc注释,以生成API参考文档
打开一个拉取请求
- 在大多数情况下,你应该将你的提交压缩成一个。
- 打开一个拉取请求,并将其链接到你之前创建的讨论问题。
- SynapseML 核心团队成员将触发构建以测试您的更改。
- 修复任何构建失败。(拉取请求中将包含来自构建的评论,带有有用的链接。)
- 等待核心团队成员和其他人的代码审查。
- 修复代码审查中发现的问题并重新迭代。
构建和签入
- 等待核心团队成员合并你的代码。
- 您的功能将在下一个版本中通过Docker镜像和脚本安装提供,通常每月发布一次。您可以通过使用包含您更改的版本的构建工件(例如以
.devN
结尾的版本)来更快地试用您的功能。
如果对如何做某事有疑问,请参考现有代码或拉取请求中的做法,不要犹豫去询问。