开发团队在kun
整个系统的开发期间积极拥抱开源社区,从社区获取程序依赖的同时也反哺了很多贡献。
我们严格遵循以下原则:
- 不影响项目主体的完成进度
- 不偏离项目本身:仅在外部crates或工具链等有bug或缺失的特性时临时参与
下按照团队成员和仓库分别展示贡献内容:
小孙(项目负责人、架构、命令行程序、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修复:
- https://github.com/taosdata/taos-connector-rust/pull/258
- https://github.com/taosdata/taos-connector-rust/pull/325
cargo-pgo
cargo-pgo
实现了一个cargo的子命令,用于对Rust编写的binary程序进行PGO和BOLT优化。通过优化,命令行程序的运行时效率会获得大大提升。
有关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编译该项目会出错。这一问题最终被修复: