社区贡献

开发团队在kun整个系统的开发期间积极拥抱开源社区,从社区获取程序依赖的同时也反哺了很多贡献。

我们严格遵循以下原则:

下按照团队成员和仓库分别展示贡献内容:


小孙(项目负责人架构命令行程序web程序算法以及运维

Burn

Burn是基于Rust开发的全新一代深度学习框架。

0. 新张量算子:log1p

log1p作为张量的基础算子之一,是softplus等常见激活函数的依赖:

https://github.com/tracel-ai/burn/pull/160

1. 新张量算子:mask_where

行为等效于torch.where,贡献时被错误命名为mask_scatter,后在#409被重构和更名:

2. 新损失函数:MSE

MSE (Mean Squared Error, 均方误差),是一个深度学习中常用的损失函数:

https://github.com/tracel-ai/burn/pull/378

3. 支持regression

在这个PR被合并前,Burn尚未对regression问题有全面的支持:

https://github.com/tracel-ai/burn/pull/380

4. 新增prelude模块以提升易用性

将常用的结构体和宏等放入prelude以便于用户一句话导入这些组件:

https://github.com/tracel-ai/burn/pull/1335

taos-connector-rust

taos-connector-rust是TDengine数据库的官方Rust连接器。

0. 修复条件编译引发的编译错误

taos-connector-rust支持多种后端,包括通过网络(WebSocket)连接(ws)、通过C语言库的原生连接(native)和兼容性更好的optin模式,但由于条件编译里有一处层级错误使得native模式的编译无法通过,后被以下PR修复:

https://github.com/taosdata/taos-connector-rust/pull/191

1. 修复内存错误

Rust的FFI与C语言的数据类型在类型转换期间容易出错,此处由于字段的值使用了错误的初始化方式,导致一块本应跳过的C代码未被跳过,从而引发了运行时错误,被该PR修复:

cargo-pgo

cargo-pgo实现了一个cargo的子命令,用于对Rust编写的binary程序进行PGOBOLT优化。通过优化,命令行程序的运行时效率会获得大大提升。

有关PGO和BOLT的详细介绍,可以参考这篇博客文章。

提供Dockerfile以快速构建可进行BOLT优化的LLVM环境

由于支持BOLT的LLVM版本(14及以上)难以通过包管理器安装,从头编译LLVM又需要耗费大量的算力和时间,使用cargo-pgo在发布前进行BOLT优化一直都不是一项简单的工作。包管理器安装带来的问题最终被修复,且镜像的制作采用了multi-stage builds策略以缩减了体积:

https://github.com/Kobzol/cargo-pgo/pull/52


朱总(命令行程序web程序测试运维以及实施

TDengine

TDengine 是一款开源、高性能、云原生的时序数据库(Time Series Database, TSDB), 它专为物联网、车联网、工业互联网、金融、IT 运维等场景优化设计。

修复集群初始化时的错误

对于工业场景,往往无状态、轻便的Docker Swarm集群比K8s更为适合实现高可用。然而,过去通过Docker Swarm部署包含3个管理节点(mnode)的TDengine集群时,在初始化阶段会出现错误。经实验回溯,最终发现是数据节点(dnode)尚未就绪集群即启动导致,已修复:

https://github.com/taosdata/TDengine/pull/20966

ArgMinMax

ArgMinMax是基于Rust开发的高性能计算库,其通过SIMD指令实现了各种架构上都非常高效的argmin和argmax运算。

修复条件编译Bug

伴随着Rust编译器的进一步完善,portable SIMD被合并到stable版本的的标准库中。由于ArgMinMax使用了大量架构特异的指令,同时在编译时针对各种架构进行了检查,使用Nightly Rust编译该项目会出错。这一问题最终被修复:

https://github.com/jvdd/argminmax/pull/62