精彩回顾 I DatenLord Hackathon 2023圆满结束!

news2024/11/16 11:36:24

DatenLord Hackathon 2023已经顺利完赛。达坦科技基于其跨云分布式文件系统DatenLord项目,结合AI大模型时代背景,搭建了擂台。我们邀请参赛者为DatenLord的极端场景设计并实现缓存 p2p 传输和同步模块。

本届赛题为“Explore the Possibilities”,旨在为感兴趣的队伍提供平台发掘和实现自己的无限可能,同时探索项目的各种可能性。比赛吸引了众多对于Rust感兴趣且勇于探索敢于挑战的伙伴前来应战。大家源于五湖四海,各不相同的背景,齐聚于此进行思维的碰撞。达坦科技组赛题评审委员按照代码风格、测试完备性、文档完备性、解决方案设计四个维度进行综合评判,最终做出如下评审结果。

评选结果

一等奖:摆摆队
二等奖:阮老师小分队

三等奖:

一等奖获奖点评

一等奖,1000美金:摆摆队-钟弋辰

评委会点评:

代码风格:3

测试完备性:3.5

文档完备性:4

解决方案设计:4

综述:摆摆队提出了一个比较全面的解决策略,涵盖了多种方法,并对各种方法进行了比较测试。文档方面,内容详尽,辅以图解,增强了理解度。然而,文档在突出问题关键和核心思想方面稍显不足,未能充分抓住题目的关键点。在代码规范方面,存在一定的可读性问题。一些复杂或潜在风险的代码段缺乏必要的注释说明,整体注释较少,代码清晰度有待提高。

代码链接:

https://github.com/datenlord/Hackathon-2023/pull/3

二等奖获奖点评

二等奖,700美金:阮老师小分队-吕波

评委会点评:

代码风格:3.5

测试完备性:2.5

文档完备性:3.5

解决方案设计:3

综述:文件分片传输以及使用 tracker 记录各节点的状态的思路很好,在文档中也提出了希望能实现但因时间紧迫而未能完成的特性。项目本身可以考虑在性能上做进一步优化,如序列化方案、网络协议、并发性等方面。相信如果有足够的时间,这个项目的完成度可以更高。

代码链接:

https://github.com/datenlord/Hackathon-2023/pull/2

获奖快问快答

1. 为什么选择参加这次的DatenLord Hackathon活动?这次的赛题吸引你的点是什么?

钟弋辰 :去年也参加了datenlord的赛题,去年的是一个单机数据结构的优化,这次的重点在分布式缓存上。最近读研也在做一些分布式计算和存储方面的工作,因此想尝试一下。赛题本身就是挺吸引我的一个点,因为缓存实际上要考虑很多东西,不同的负载模式,整体系统的资源情况,不同的方案实际上各有权衡。甚至后续进一步做优化有idea的话可以发一下论文。

吕波:本次DatenLord Hackathon活动提供了一个在深度学习研究方向上非常有趣并且吸引我的场景,在大模型数据集读取或者是大规模分布式训练的场景下,加速数据读取的速度。该赛题提供了一个非常直观的解决方案——利用p2p加速数据读取。我对分布式系统和数据访问加速的领域很感兴趣。

这次的赛题吸引我主要是因为它提出了一个在多云多数据中心场景下进行数据访问优化的挑战,并且需要设计和实现缓存之间的p2p传输和同步模块,这是一个具有挑战性且有实际应用意义的问题。该赛题也对我后期理解和实现分布式训练有很大的帮助,因此想要借助这个机会熟悉这方面的技术实现。

2. 在设计方案的时候一开始有想到哪些思路、或灵感?最后是如何做取舍的?

钟弋辰 :总体来说一个优化点在如何知道缓存的位置,以更高效的命中缓存。另一个是缓存节点本身也是对外提供缓存的角色,如何均衡多个节点的资源和网络负载也是一个问题。还有一个问题是从少量节点将缓存扩展到多个节点这一过程,之前读过一篇阿里云镜像分发的论文,使用一些多级树形分发方法能更好的利用系统带宽。另外就是单机的缓存策略。另外也是去读了一些分布式缓存的论文,但是时间有限,看到的一些论文只考虑了数据的静态分布,还有很大的计算复杂度,这类论文感觉实际上意义不是很大,因为真实环境是动态变化的,而且需要在线的实时响应。另外涉及到数据写还可以考虑一些数据一致性的工作。

最终想的还是一个比较初步简单的思路,就是用中心节点来负责监控缓存位置以及调度缓存请求;对应到的是上述优化问题中的第一和第二个。同时进一步的优化可以考虑多个中心节点,以分摊中心节点的负载。

吕波:在设计方案的初期,我主要参考现有的一些现有的成熟p2p实现方案,包括:

(1)使用分布式哈希表(DHT)来管理缓存节点和文件信息的分布。

(2)使用mDNS(多播DNS)来实现节点的发现和通信。

(3)结合gossip协议,将节点的缓存信息广播出去,减少对中心化tracker的依赖。

(4)使用HTTP协议集成Tracker和Node,方便测试和观察集群状态,并且支持局域网和广域网条件下的节点信息同步。

在现有技术的调研过程中,首先考虑了一个基于现有p2p基础库的方案,即使用libp2p-rust(https://github.com/libp2p/rust-libp2p)来实现节点发现,消息同步的机制。另外,也考虑使用原生HTTP的方式进行数据交互,即Tracker-Node的方式。我在做取舍时考虑到实现的难度、系统的可扩展性和性能等因素,决定先实现基本的Tracker/Node的方式支持数据访问,同时Tracker节点可以集成到任意的Node节点当中,并且后期可以通过Datenlord提供的分布式KV存储实现数据同步。当然,也便于理解和实现,以快速获得有效的结果。

3. 在具体设计和实现本次赛题的过程中,觉得最具挑战的部分是什么?后来是如何解决的?

钟弋辰 :测试环境和实验设计吧,之前其实很不擅长做部署运维,很多时候都手动去操作,浪费很多时间,但在最近的学习过程中去探索了一下完整测试部署方案,使用ansible可以大大提高效率,也为最终整体项目打好了一个基础。中间还有一个是docker配置相关的,由于我采用了quic udp的协议,docker配置相较于tcp有所不同,也是搜了很久才解决。实验设计的话,一开始是摸不着头脑的,后来就先做,然后采用循序渐进的方法,通过结合分析来暴露出baseline方法的不足。

吕波:在具体设计和实现本次赛题的过程中,我觉得最具挑战的部分是构建可靠的p2p传输协议和保证数据一致性。由于涉及到多个节点之间的通信和文件分片的管理,需要解决节点之间的同步和协作问题。为了解决这个挑战,我采取了以下措施:

(1)设计并实现了一个基于HTTP(基于axum的异步HTTP库https://github.com/tokio-rs/axum)的p2p协议,确保节点之间能够高效地传输文件和同步信息。

(2)在节点中引入缓存机制,存储种子信息、分片信息、下载记录等,以提高数据访问速度和减轻后端持久化存储的读取压力。

(3)实现了心跳机制和定时线程,维护在线节点的列表,确保节点的可用性和协同工作。

通过上述几种方式,我能够通过简易的HTTP客户端查询集群的状态,并且能够调试节点的问题,最后也便于对整个集群系统进行性能测试。

4. Hackathon的完成时间非常紧迫,在最终提交的设计上,是如何做权衡的?你的设计最大的亮点是什么?

钟弋辰 :总体工作一是要设计基本框架,包括整体系统的模块接口统一,模块间如何相互访问,利用宏来提高实现效率,每个模块对应的rpc;二是实现具体模块:p2p,rpc的封装;metric中心节点观测模块;文件系统模拟fsnode;缓存路由cacherouter;仿真用户sim_user;测试部署脚本。一部分工作是继承自我正在做的论文项目,也相对减轻了我这次比赛的工作量。

权衡的话就是没有实现一些进一步的优化了,比如单机缓存策略本来计划实现一下s3-fifo;还有本来准备做一下多中心节点。

最大的亮点可能就是中心缓存路由这个思路吧,在实验上有一定的优势效果,总的来说其实也只是一个很简单的思路。

吕波:在Hackathon的完成时间非常紧迫的情况下,对于最终提交的设计,我主要针对核心功能点进行实现,以保证整体pipline能够按时完成,并且考虑一定的可扩展性便于后期的优化:

(1)确保基本功能的完整性和正确性,即实现缓存之间的p2p传输和同步模块。

(2)运用现有的HTTP协议进行接口设计和测试,以快速验证设计的可行性。

(3)着重实现核心特点,如代码模块清晰、功能复用、节点的上线和心跳维护、下载任务的分发等。

我认为我的设计最大的亮点是采用了p2p-with-tracker的方式,一方面这种方式可以快速融入到Datenlord的系统中,同时结合分布式KV存储支持数据访问结合了中心化的tracker节点和分布式的p2p传输,以实现高效的数据访问和加速,在系统稳定后基本上都可以从周围在线节点中获取,新增节点可以直接查到周围节点的分片并直接下载,避免直接向S3请求文件。最后,整体系统调试简单,部署复现也比较容易,方面后期对系统进行扩充和移植。

5. 参加此次DatenLord Hackachon活动,你有哪些收获或感受?

钟弋辰 :Rust很棒,喜欢也很享受做这类优化研究结合工程实现的工作,但也是一个需要时间积累的过程。另外感觉参与的人比较少,希望能有更多小伙伴喜欢这门语言,参与相关的工作。

吕波:非常荣幸能够参与到Datenlord此次比赛当中,并且结合当下热点问题进行赛题设计,另外还简化了部分任务方便我快速上手。在我目前的研究方向中,也曾经考虑过分布式并行训练的一些问题,此次赛题也给我提供了很大的思考价值,也让我对分布式系统和数据访问加速领域有了更深入的了解。

在项目实现上,参加本次Hackathon让我在有限的时间内面对挑战并解决问题的能力得到了锻炼和提升,在此次比赛中,由于参与该项目时间较晚,准备工作可能不是非常充分,需要在实践的过程中学习Rust相关的领域知识和p2p的技术实现,学会如何在紧迫的时间限制下进行设计和实现,并在压力下保持高效率和创造力。

参加DatenLord Hackathon活动是一次充满挑战和收获的经历。我从中学到了许多宝贵的经验和知识,这将对我的个人和职业发展产生积极的影响,也希望能够有机会持续参与到Datenlord的社区贡献当中,继续深挖领域知识~

赛题路演直播预约

最终获得优胜奖的两支队伍,将于2024年1月7日(周日) 上午10:30 在线上举办一场空中路演。欢迎所有的参赛队伍和对赛题感兴趣的伙伴,届时参与聆听获奖小组的分享。分享包括他们的解题思路,碰到的难点和挑战,以及如何应对的方法和设计亮点。

欢迎您预约直播,或者登陆腾讯会议观看直播:

会议号:729 465 619

达坦科技(DatenLord)专注下一代云计算——“天空计算”的基础设施技术,致力于拓宽云计算的边界。达坦科技打造的新一代开源跨云存储平台DatenLord,通过软硬件深度融合的方式打通云间壁垒,实现数据高效跨云访问,建立海量异地、异构数据的统一存储访问机制,为云上应用提供高性能安全存储支持。以满足不同行业客户对海量数据跨云、跨数据中心高性能访问的需求。

公众号:达坦科技DatenLord

DatenLord官网

https://datenlord.github.io/zh-cn/

知乎账号:

达坦科技DatenLord - 知乎

B站

https://space.bilibili.com/2017027518

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1352844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

71.乐理基础-打拍子-三连音的变体

上一个内容:70.乐理基础-打拍子-三连音-CSDN博客 首先常见的三连音如下图的样子: 三连音的变体遇到的次数并不会很多,可以不用看不用懂 三连音的变体: 1.三连音节奏型依然有可能藏有休止符,如下图 2.在这之前的三连音…

Spring之 国际化:i18n

1、i18n概述 国际化也称作i18n,其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数。由于软件发行可能面向多个国家,对于不同国家的用户,软件显示不同语言的过程就是国际化。通常来讲,软件中的国…

Ant Design Vue 编译后的网页特点是什么,怎么确认他是用的前端 Ant Design Vue 技术栈的呢?

Ant Design Vue 是一个前端 UI 框架,使用 Vue.js 构建。它包含了大量的预设样式和组件,如按钮、表单、表格等,可以帮助开发者快速构建出优雅且功能丰富的网页。但是,要确定一个编译后的网页是否使用了 Ant Design Vue,…

缓存和数据库,1+1如何大于2?

一、缓存的本质 缓存,简单说就是为了节约对原始资源重复获取的开销,而将结果数据副本存放起来以供获取的方式。 首先,缓存往往针对的是“资源”。我们前面已经多次提到过,当某一个操作是"幂等"的和“安全"的&#…

Cesium特效-2023年汇总

1-3dTiles建筑实现随机贴图 使用3dTiles的customShader接口,在前端实现不同白模建筑贴不同的图片 2-淡入淡出的扩散雷达效果 在扩散雷的基础上,实现渐隐渐现的效果 3-不规则多边形的扩散效果 指定一个中心点,改变每个多边形的顶点位置来实现动…

Vue - 多行文本“展开、收起”功能

TextClamp 使用 js 实现文本展开、收起,并非纯 CSS 实现。 Props: fontSize:Number,默认:14lines:Number,默认:1lineHeight:Number,默认:20 F…

在mac上怎么方便的编辑xml文件

在Mac上 XML 文件不能默认以较直观的方式在“文本编辑”中打开,如果已安装 Xcode,你可以使用 Xcode 打开 XML 文件。在 Xcode 中,XML 文件通常会以可视化的方式显示,使得编辑更加直观,但是如果你不想安装 XCode&#x…

stable diffusion 基础教程-必备插件

说明 持续更新 插件地址,因为这些都是要魔法上网的,大家直接从我百度云盘里获取 链接:https://pan.baidu.com/s/1_xAu47XMdDNlA86ufXqAuQ?pwd=23wi 提取码:23wi 交流群:830970289 必备插件 汉化包 中文汉化包 https://github.com/VinsonLaro/stable-diffusion-webui-chi…

RK3568驱动指南|第九篇 设备模型-第100章 在总线目录下创建属性文件实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

SSM共享汽车租赁平台----计算机毕业设计

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,修改管理员信息,用户信息管理,管理新闻公告,汽车品牌信息管理,城市信息管理,租赁点信息管理,共享汽车信息管理,汽车订单信…

openGauss学习笔记-185 openGauss 数据库运维-升级-提交升级/升级版本回退/异常处理

文章目录 openGauss学习笔记-185 openGauss 数据库运维-升级-提交升级/升级版本回退/异常处理185.1 提交升级操作步骤 185.2 升级版本回滚操作步骤 185.3 异常处理升级问题FAQ openGauss学习笔记-185 openGauss 数据库运维-升级-提交升级/升级版本回退/异常处理 185.1 提交升级…

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-7Lead Compensator超前补偿器(调节根轨迹)

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-7Lead Compensator超前补偿器(调节根轨迹) 1. Plot Rootlocus 绘制根轨迹2. System Performance 系统表现3. 改善/加快收敛速度4. 超前补偿器 Lead Compe…

C++ DAY6 作业

1.用模板类写顺序表 #include <iostream>using namespace std;#define MAXSIZE 10 template <typename T> class Arr {T *data NULL;int len 0; public://构造函数Arr():data(new T){}Arr(T a,int len):data(new T(a)),len(len){}//析构函数~Arr(){delete data;}…

(一)CarPlay集成开发之概述与环境篇

系列文章目录 第一章 CarPlay集成开发之概述与环境篇 文章目录 系列文章目录概述开发环境依赖项总结 概述 CarPlay是由苹果公司开发的一款集成在iOS系统中&#xff0c;用于运行在已完成对接该系统的汽车中控台&#xff0c;仪表盘上的车载系统&#xff0c;该系统通过USB或者WI…

智能求职助手 - ChatGPT 与 RPA 技术的完美结合

随着全球互联网行业的快速发展&#xff0c;互联网求职市场也变得越来越竞争激烈。在互联网求职寒冬的背景下&#xff0c;一位热心的开发者创造了一个令人惊叹的开源项目&#xff0c;结合了 ChatGPT 和 RPA 技术&#xff0c;为求职者提供了一键自动投递简历的便捷解决方案。 项…

电路板设计很难吗?十分钟带你起飞

1、写在前面 其实在20年前&#xff0c;学习资源相对都固化在大学校园里&#xff0c;差一点的学校&#xff0c;学生们想学点真本事&#xff0c;是非常困难的&#xff0c;还好我读书的时候&#xff0c;互联网开始起步腾飞&#xff0c;优酷&#xff0c;土豆兴起&#xff0c;有人开…

【LeetCode:69. x 的平方根 | 二分】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

《深入理解JAVA虚拟机笔记》对象的创建和访问、对象头

对象的创建 当 Java 虚拟机遇到一条字节码 new 指令时&#xff0c;首先将去检查这个指令的参数是否能做常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有&#xff0c;那必须先执行相应的类加载过程。 在类加载…

xshell登录不上虚拟机了

电脑重启后连不上本地虚机了 1、关闭防火墙 2 虚拟机ping得到主机&#xff0c;而主机ping不到虚拟机的解决办法 原因&#xff1a;可能是主机的网络适配器没有调好 首先&#xff0c;找到虚拟机的网络配置器 根据虚拟机的IP信息修改主机虚拟适配器VMnet8 修改ip使得和虚拟机连…

【力扣100】39.组合总和

添加链接描述 class Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:def backtrack(path,target,res,index):if target0:res.append(path[:])returnif target<0:return for i in range(index,len(candidates)):if target&g…