提交新活动

谢谢!您的提交已收到!
糟糕!提交表单时出现问题。

提交新闻稿

谢谢!您的提交已收到!
糟糕!提交表单时出现问题。

订阅新闻通讯

谢谢!您的提交已收到!
糟糕!提交表单时出现问题。
2021年12月15日

作为Dask生命科学研究员的一年回顾

作者

摘要

Genevieve Buckley 于 2021 年被聘为 Dask 生命科学研究员,由 CZI 资助。目标是改进 Dask,并特别关注生命科学社区。这篇博客文章包含另一个进展更新,以及回顾今年的一些个人思考。

目录

进展更新

2021 年 2 月至 9 月的先前进展更新可在此处获取。请继续阅读 2021 年 9 月至 12 月期间的进展更新。

总结一下,在 2021 年 9 月至 12 月期间(包括这两个月),有

     
  • 在 7 个仓库中合并了 32 个拉取请求(dask, distributed, dask-image, dask-tutorial, ITK, napari, 和 napari.github.io)
  •  
  • 8 个待处理的拉取请求
  •  
  • 1 个新的 dask-image 版本发布
  •  
  • 举办了 1 次 Dask 教程,并协助举办了另一次教程。
  •  
  • 发布了 4 篇新的 Dask 博客文章(如果算上这篇,则为 5 篇)

请继续阅读本期间内特殊项目的更详细描述。

Dask 陈旧问题冲刺活动

在两周内,我得以做到

     
  • 关闭了 117 个陈旧问题,并且
  •  
  • 识别了另外 25 个潜在的容易解决问题,供维护团队进一步研究。

同一时期,还有许多其他人也做了相关工作,跟进旧的拉取请求和其他维护工作。总的来说,这次冲刺活动非常成功。

Dask 用户调查结果分析

我在 9 月分析了 2021 年 Dask 用户调查的结果。这是一项非常有趣的任务。由于我们在 2021 年提出了更多问题(18 个新问题,总共 43 个问题),与前几年相比,有更多数据可供深入挖掘。您可以在此处阅读详细信息

这项工作的最大益处是,现在我们可以利用这些数据来优先改进文档和示例。用户呼声最高的两项是提供更多文档和他们所在行业的更多示例。但直到今年我们才开始询问人们在哪种行业工作,这样我们就可以针对最需要它的领域(地球科学、生命科学和金融)提供新的叙述性文档。

ITK 与 Dask 的兼容性

我为 itk 图像实现了 pickle 序列化(ITK PR #2829)。这应该是使 ITK 图像与 Dask 兼容所需的最后一块重要拼图。它建立在 Matt McCormick 和 John Kirkham 的早期工作之上(您可以在此处阅读一篇关于他们早期工作的博客文章)。

提高 Dask 与其他项目的交叉兼容性是我的一项主要目标,因此这是一项重要的工作。我在“Dask 的下一步计划是什么?”一节中概述了下一步。

改进分块(rechunking)

我实现了 PR #8124,修复了重新塑造 Dask 数组时可能导致输出数组块过大而无法容纳在内存中的错误。生命科学用户调查的反馈表明,改进 Dask 在分块方面的性能是优先事项。这项工作有助于解决这个问题。

高级图(High Level Graph)工作

今年早些时候的一项主要工作是为数组切片和数组重叠操作引入高级图。这是一项需要大量持续努力的大工程。PR #8467 解决了这项工作的下一步之一。

dask-image 的查找对象(find_objects)函数

我在 PR #240 中为 dask-image 实现了一个 find_objects 函数。此实现无需提前知道最大标签编号,这是对先前尝试的重大改进。这是一个重要的进步,因为它消除了引入类似于 scikit-image 的 regionprops 功能的主要障碍。

博客文章

2021 年 9 月至 12 月期间发布的 Dask 博客文章包括

     
  • 在 Dask 中选择合适的分块大小    
  •      这篇博客文章解决了使用 Dask 时一些非常常见的担忧和问题。我对这篇文章感到非常满意,由于几位细心的审阅者,最终的作品比启发它的推文串更强大、更全面。      
  • 这也是高影响力的工作。在 Dask 调查中,最常见的请求是提供更多文档,而这些内容有助于解决这个问题。Twitter 分析也显示,与类似推文相比,此内容的参与度更高,表明社区对此类解释有需求。
  •    
  •  
  •  
  • 马赛克图像融合(与 Volker Hisenstein 和 Marvin Albert 合著)          这篇博客文章历时数月才完成(8 月中旬开始,12 月发布)。很高兴有人分享他们使用 Dask 在实际问题上所做的非常酷的工作。      
  •  
  • CZI EOSS 更新          这篇博客文章向社区分享了提供给 CZI 的临时进展更新。      
  •  
  • 2021 年 Dask 用户调查结果          上面已经更详细地讨论过,Dask 用户调查的分析结果于 2021 年 9 月发布。      

教程

     
  • 我在 2021 年 11 月 25 日的 ResBaz Sydney 在线会议上进行了 Dask 教程演示。感谢 ResBaz 组织者以及 David McFarlane、Svetlana Tkachenko 和 Oksana Tkachenko 在当天监控聊天以解答问题。
  •  
  • Naty Clementi 于 2021 年 11 月 4 日为 Women Who Code DC meetup 举办了 Dask 教程。我协助了 Naty,主要通过监控聊天中的问题。

个人思考

回顾一整年,有些事情进展顺利,有些事情则不太成功。

今年的亮点

我的个人亮点包括

     
  • ITK + Dask 集成工作(上面已更详细讨论)。
  •  
  • dask-image 的查找对象函数(上面已更详细讨论)。
  •  
  • 可视化工作,因为它影响非常大。我们正在解决生命科学团队提出的问题,但改进的工具会使使用 Dask 的每个人受益。
  •  
  • 来自 dask PR #7391 的此错误修复,因为这个单一更改同时解决了四个地方的问题(scikit-image, dask-ml, xgcm/xhistogram, 和 cupy dask 测试)。
  •  
  • 社区建设、会议和参与。今年在活动上投入了大量精力,并且确实取得了成效。

进展顺利的部分

Dask 陈旧问题冲刺活动

     
  • 这对项目和对我个人都很有用。整理旧问题是熟悉特定主题专家的一种极其有效的方法。如果在开始使用 Dask 的最初几个月内发生,而不是最后几个月,那会更好。
  •  
  • 有人建议,熟悉情况的一个好方法是全职花 6 个月时间管理问题跟踪器。也许这是真的,但时间短得多的陈旧问题冲刺活动是在短时间内获得许多相同好处的一种非常有效的方式。我会向新的维护者或分类团队成员推荐它。

社区建设活动

我们在社区建设和活动方面取得了非常成功的一年。这包括教程、研讨会、会议和社区外展活动。主要活动总结

可视化工作

这是影响非常大的工作,我对我们取得的成就感到满意。我们在生命科学社区调查中,用户要求改进可视化工具。这是一个高优先级事项,因为可视化工具的改进会使使用 Dask 的每个人受益。

不太顺利的部分

技术资源

我们从未真正解决找到可以请教技术问题的人的问题。我确实有一些可以请教特定项目的人,但在大多数情况下,我没有一个好的方式将问题导向正确的人。这是一个具有挑战性的问题,特别是因为大多数 Dask 维护者和贡献者也有全职工作。在我看来,这对我所做的工作以及我们能够取得的成就产生了负面影响。

加入 @dask/maintenance 团队

如果你没有 GitHub 权限来处理通知,那么接收通知就没有意义。将来我认为我们应该只将至少具有分类或写入权限的人添加到 GitHub 团队中。

实时互动

     
  • 我们为生命科学社区尝试了“请教维护者”办公时间,但参与人数很少,所以我们取消了这项活动。
  •  
  • 我们在日历中添加了一些“Dask 社交聊天”活动,但除了前几次外,参与人数不多。大多数情况下,没有人参加。(另有一个面向美洲/欧洲时区的社交聊天,时间对大多数人更方便,可能更受欢迎。)

Slack

Slack 很适合私信特定人员安排会议时间等,但公共频道对我个人来说最终没有太大用处。

缺乏与其他项目团队的整合

作为一名独立开发者,你只能完成这么多工作。我们曾希望我能够自然地与来自几个不同项目的团队合作,但实际上并没有这样。napari 项目是例外,并且这种关系在开始为 Dask 工作之前就已经建立得很好了。也许我们可以在这方面做得更多,以促进更多互动。

Genevieve 的下一步是什么?

Genevieve 明年将开始一份新工作,您可以在 GitHub 上找到她 @GeneviveeBuckley

Dask 的下一步计划是什么?

Dask 发生了很多事情,但还有很多事情要做。以下是几个项目的下一步总结。我们非常希望有新人能够接力并为其中任何一个项目做出贡献。

ITK 图像与 Dask 的兼容性

     
  • ITK + Dask 项目的下一步需要 ITK 5.3rc3 或更高版本的发布候选版本可用(可能在 2022 年初)。
  •  
  • 发布版本可用后,下一步是尝试重新运行原始ITK 博客文章中的代码。
  •  
  • 如果还有工作要做,我们需要为剩余的障碍打开问题。如果一切顺利,我们希望有人撰写第二篇 ITK + Dask 博客文章来宣传新功能。

提高分块(rechunking)性能

需要更多与分块相关的性能改进(参见 #7950#7980)。

数组和切片的高级图工作

数组切片和重叠的高级图工作有许多下一步。Ian Rose 在此处撰写了一份出色的总结。简而言之,必须实现 cullget_output_keys 方法,然后才能进行低级融合和优化。

相关链接

文档