开源软件供应链点亮计划——暑期2021

大家好~

今年夏天,Julia中文社区将首次加入 开源软件供应链点亮计划——暑期2021,我们将会陆续在 这里 添加项目提案,欢迎大家关注并转发。

此外,如果你是Julia社区中某个项目的核心开发者,也欢迎你在该项目下提交你的提案,具体流程请直接联系我。

关于该项目有任何问题都可以在这里回帖讨论。

项目列表

1. Julia 官方文档翻译

目前Julia中文文档位于 https://github.com/JuliaCN/JuliaZH.jl ,从v1.3发布之后之后,该文档已经有一段时间没有更新了,本项目希望能将最新的英文文档在已有的基础上更新,同时完善自动化部署的流程。

项目产出要求

  • 将Julia中文翻译文档更新至与英文v1.6同步
  • 完善自动化部署流程

项目技术要求

  • 熟悉文档翻译
  • 对Julia编程感兴趣

项目主导师:Jun Tianfind_my_way@foxmail.com

2. 基于可逆计算的稀疏矩阵求导

Sparse matrices are extensively used in scientific computing, however there is no automatic differentiation package in Julia yet to handle sparse matrix operations yet. This project will utilize the reversible embedded domain-specific language NiLang.jl to differentiate sparse matrix operations by re-writing the sparse functions in Julia base in a reversible style. We will port the generated backward rules to ChainRules.jl as an extension, where ChainRules.jl is the most popular Julia package providing backward rules for automatic differentiation packages. In fact, NiLang.jl has been proven to differentiate some sparse matrix operations efficiently: https://nextjournal.com/giggle/how-to-write-a-program-differentiably In this project, you are supposed to systematically rewrite the sparse matrix functions in Julia base, which can be challenging but definitely doable. Meanwhile, you will have a chance to learn a reversible programming language!

项目产出要求

  • 一个开源的Julia软件包
  • 超过80的Test coverage
  • 一个简单的展示用例子

项目技术要求

  • 覆盖基础稀疏矩阵函数的微分规则
  • Julia 语言

项目主导师:刘金国jinguoliu@g.harvard.edu
项目联合导师:陈久宁johnnychen94@hotmail.com

3. 添加高性能图像处理算法

organization.Images.jl 是 Julia 下的一个图像处理工具箱,目前它提供了一些底层的图像处理支持来满足开发者的需求,不过目前还依然存在很多图像处理细分领域的算法没有得到复现。根据工作量及难度的不同,项目申请者需要提供一至三个图像处理算法的复现及对应的优化工作,并将其添加到 JuliaImages 组织下。

项目产出要求

  • 实现新的图像处理算法
  • 与其他框架的算法进行性能比较

项目技术要求

  • 了解图像处理算法
  • 对性能优化有一定了解
  • 了解 Julia 语言

项目主导师:陈久宁johnnychen94@hotmail.com

4. 完善 ImageMagick 的 Julia 接口

ImageMagick is a widely used low-level image io and processing library, it also has its Julia frontend ImageMagick.jl, which is used widely in the entire Julia ecosystem. However, ImageMagick.jl project is not under well-maintained; it lacks of the necessary documentation and has few test coverage. The applicant needs to revisit and upgrade the ImageMagick.jl codebase so as to 1) fix legacy ImageMagick.jl issues 2) improve the reliability and 3) port more ImageMagick features to ImageMagick.jl. A complete reference documentation for ImageMagick.jl is also needed.

项目产出要求

  • more test coverage
  • fix legacy issues
  • add documentation
  • (optional) port more functionalities

项目技术要求

  • familiar with Linux, C, and cross-compiling
  • knows Julia

项目主导师:陈久宁johnnychen94@hotmail.com

5. Wide-range JuliaImages demos and missing functionalities

For new or occasional users, JuliaImages would benefit from a large collection of complete worked examples organized by topic. While the current documentation contains many “mini-demos,” they are scattered; an organized page would help users quickly find what they need. We have set up a landing page, but many more demos are needed. Scikit-image is one potential model.

项目产出要求

  • add more demos
  • (Preferred) new missing functionalities
  • (Optional) improve the demo build tool

项目技术要求

  • familiar with Julia and JuliaImages
  • Good technical written in English

项目主导师:陈久宁johnnychen94@hotmail.com

6. Implement Multi-Agent Reinforcement Learning Algorithms in Julia

强化学习领域的一些最新进展引领了人工智能的许多突破,一部分最新的深度强化学习算法已经在ReinforcementLearning.jl库中实现。不过在多智能体方面,目前只实现了一些CFR相关的算法。我们希望有更多的实现,包括MADDPG,COMA,NFSP, PSRO等。

项目产出要求

  • At least two experiments are expected to be added into ReinforcementLearningZoo.jl.
  • The experiment of each algorithm can be run on GPU.
  • A technical report on how it is implemented and example usage.

项目技术要求

  • Basic understanding of Julia and Flux.jl.
  • Some basic knowledge in Reinforcement Learning.

7. General improvement to Julia-C interoperability tools

Clang.jl is a Julia language interface for libclang: the stable, C-exported interface to the LLVM/Clang compiler. It also hosts related tools built on top of libclang functionality, one of which is the binding generator. This generator is for auto-generating C library bindings for Julia language from a set of C/C++ headers. It has been refactored recently for adding cross-platform support. This project aims at providing a better user experience on generating bindings for different platforms, improving the support for handling more C declarations and adding more high-level Julia interfaces to the libclang API.

2赞

明年会有类似的活动吗?很希望在明年参加!

为啥不在今年参加呢? :yum:

您就是项目一的发布者吧?理论物理研一课业繁重,时间不充裕 :yum:

理解理解,明年该项目如果还有的话我们也会参与的

请问,对于“基于可逆计算的稀疏矩阵求导”项目,技术要求中第一条“超过80的Test coverage”是指在申请者Github上有一个Test coverage超过80的开源库吗?

是指实现的"基于可逆计算的稀疏矩阵求导"作为一个库要有超过80%的测试覆盖率。

1赞

嗯,明白了。原来项目技术要求是指项目产出的技术要求。

非常希望申请《基于可逆计算的稀疏矩阵求导》项目~我是计算数学方向的硕士生,目前研一在读,研究方向是矩阵与张量的数值计算优化~
技能点:了解Julia;熟悉python的数值计算、数据科学与深度学习pytorch等框架;熟悉cpp与Linux平台、Git协作;扎实的数值计算基础(&出于兴趣乱点的计组、OS基础 :joy:
对项目的初步理解:使用可逆编程语言NiLang重写julia base中的稀疏矩阵算子
个人情况简介&寻求建议:在本科期间就一直默默关注julia发展,在这学期进入数值计算课题后也积极在课题组推广Julia的使用;尽管了解微分法则与计算图,但之前没有接触过NiLang(很有兴趣去学习它!)。
Q1: 需要在申请前完成类似giggle老师展示的demo吗?
Q2: 现在开始跟着官方文档学习NiLang还有希望吗 ?:joy:
或许对项目理解仍存在偏差,希望可以得到老师们的指正与建议~如有可能,希望可以与老师进一步联系~
我的邮箱: li_j20@fudan.edu.cn个人博客: https://jieli-matrix.github.io/

1赞

可以把流程同步出来啊,外行看看

这里具体流程是指:

  1. 你(作为项目的mentor)攥写一份proposal,格式与 https://summer.iscas.ac.cn/#/org/orgdetail/julia 这里的一致
  2. 我(目前只有一个管理员账号)在后台提交该申请
  3. 举办方审核该proposal
  4. 审核通过后会在官网上线,否则驳回并提交修改意见

如果有不清楚的地方我再补充。

NiLang 本身的设计并不是特别复杂,背后也许会有一些可逆计算的理论需要去学习,不过如果仅仅使用 NiLang 的话根据文档和 NiLang 现成的代码应该也能大概看个明白。即使现在学的话也完全来得及。

如果有任何问题可以在 NiLang 的仓库发 issue 询问,或者动手能力强的话甚至可以直接提 PR了。我想 @GiggleLiu 应该会很愿意解答你的问题,或者对你提的 PR 给出反馈建议。

对项目的初步理解:使用可逆编程语言NiLang重写julia base中的稀疏矩阵算子

重写稀疏矩阵算子最重要的目的是为了确保中间过程不会将稀疏矩阵稠密化,否则的话会带来极大的内存和计算开销。所以这里需要做的事情就是确保输入是稀疏矩阵的情况下,输出也是稀疏矩阵,中间变量可以是非常小的稠密矩阵作为cache.

2赞

谢谢老师的回复~

是非常值得思考的关键点,我在学习可逆计算时会结合稀疏矩阵算子认真思考这一点的实现~
再次表达我的感谢~

请问完全没接触过数值计算,普通业务程序员,稀疏矩阵算子 要看懂有什么书推荐吗

需不需要加个对Julia必备工具的使用文档 ?


都是英文,普及开来有点难度
话说到现在我都不会用GPU编程,调试也懒得调 :yum:

1赞

这个我有在写,等我写完后会贴上去

备案号:京ICP备17009874号-2