Julia 正在成为技术计算领域的重要工具,它非常适合日益增长的海量数据分析需求。这组提出的项目针对分析算法和分布式数据管理的特定改进领域。
难度: 中等 (175 小时)
Dagger.jl 是一个原生 Julia 框架,用于调度 Julia 代码的分布式执行和通用数据并行,使用动态的运行时生成的作业图,这些作业图足够灵活,可以描述多类并行算法。该项目建议为 Dagger 实现不同的调度算法,以优化某些类别的分布式算法(如 MapReduce 和合并排序)的调度,并充分利用异构计算资源。贡献者将需要找到已发布的分布式调度算法,并在 Dagger 框架之上实现它们,对各种微基准和实际问题进行调度性能基准测试。
导师:Julian Samaroo,Krystian Guliński
难度: 困难 (350 小时)
在 Dagger.jl 之上构建一个基于 Flux 模型的分布式训练 API。更详细的里程碑包括为 UCX.jl 构建 Dagger.jl 抽象,然后构建工具将 Flux 模型映射到数据并行 Dagger DAG。最终结果应该展示一个使用 Dagger.jl API 通过多个设备并行训练的 Flux 模型。一个扩展目标将包括将模型的运算映射到 DAG,以促进模型并行。
现在有一些项目托管着构建块:DaggerFlux.jl 和 分布式数据并行训练 可以作为起点。
技能: 熟悉 UCX、将执行模型表示为 DAG、Flux.jl、CUDA.jl 以及机器学习中的数据/模型并行。
导师:Julian Samaroo 和 Dhairya Gandhi
难度: 中等 (175 小时)
数组编程可能是 Julia 中最强大的抽象,但我们对分布式数组的支持还有待改进。该项目的目的是在 Dagger.jl 框架之上实现一个新的分布式数组类型,这将使这个新数组类型易于分布、多线程,并支持 GPU 执行。贡献者将需要在其分布式数组实现之上实现各种操作,例如 MapReduce、排序、切片和线性代数。最终结果将包括在各种配置上的大量扩展基准,以及对支持操作的广泛测试套件。