基于历史学习的拥塞控制算法

华夏创新都知道的吧,但没几个能学明白它们的,但拙劣的模仿者倒是不在少数。

几乎所有号称基于学习的,基于历史的拥塞控制算法都是在利用局部性原理,比如简单的移动指数平均,企图用刚刚逝去的历史启动现在,你会看到,即便历史已经表明 RTT 事实上一直在上下波动,这种启发式算法给出的永远是一个单独的预测值,你觉得这个值能准确到哪去。

曾经 Linux 内核有个 net.ipv4.tcp_no_metrics_save = 0 参数,但几乎没什么卵用,你仿照它的实现在里面再多增加几个 metric,依然没什么卵用,因为你不懂长程依赖的发现要在不同跨度错开,但一说傅里叶级数你就又懂了。

依然是用历史去启发现在,只不过是用不同时间跨度的同比替代单一环比,难道不是这种策略更能精确刻画历史的每一个细节吗,所有的尺度同比数据就摆在那里,就像傅里叶展开一样,你将看到整个历史在任意精度下的全貌,而不只是一个值,事实上,可以认为同比是大跨度的环比。

你会发现,用 n 个跨度的移动指数平均跟踪 RTT,可以快速发现长程依赖的规律,接下来你就知道什么时间段设置什么 cwnd 了,就是这么简单。

我准备连续观察两个月的数据,跨度从秒,分钟,一刻钟,小时,日,周,半月一直到月,可是这么多值保存在哪里呢,没有任何连接可以持续这么久,同时我也不想为每个跨度只保存一个某种均值(若保存均值,只需保存 8 个值即可),我想全部保存下来,摊开一张纸上来立体直观看,我只相信我的眼睛以及我的脑子的判断。

是的,以前我真的就是摊开到纸上肉眼看,字面意义的纸上,打印机打出来的,辅助手抄,于是诞生了我那经典的 1000 个 if 分支,效果杠杠的。如今不用那么麻烦了,结合一个大模型即可,喂养的数据就是各个跨度的 RTT,cwnd 信息,在学习过程中将历史全部塑造在神经网络的权重中,历史存在整个模型。接下来,只需要把当前度量喂进去,一个推理结束,cwnd 就出来了,准不准不说,肯定会越来越准的。简单拿 sigmoid(rtt/bw) + sigmoid(丢包率) 做损失函数,复杂的自己想。

还有一种方法,参考阿里的 TCPRT,实时或周期性通过 relayfs 将数据通过类似 kalfka 吐给专门的数据分析服务,但它没有干净利索的损失函数进行反哺,不过这也算是大模型之前的传统方法了,显然没有大模型清爽。

浙江温州皮鞋湿,下雨进水不会胖。

相关推荐
YJlio2 小时前
Sysinternals 磁盘工具学习笔记(13.0):从 VHD 备份到碎片整理与卷标管理总览
服务器·笔记·学习
iconball2 小时前
个人用云计算学习笔记 --25 OpenStack 框架
运维·笔记·学习·云计算
Nwiliuyw2 小时前
Isaac Gym的WARNING: Forcing cpu pipeline. GPU pipeline disabled无法启用问题可能是个幌子骗了你
人工智能·经验分享·学习
iconball2 小时前
个人用云计算学习笔记 --27 云基础介绍
运维·笔记·学习·华为云·云计算
其美杰布-富贵-李3 小时前
PyTorch Tabular 学习笔记
pytorch·笔记·学习·表格
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [fs]initramfs
linux·笔记·学习
风行男孩3 小时前
stm32基础学习——定时器的使用
stm32·单片机·学习
深蓝海拓3 小时前
PySide6从0开始学习的笔记(十八) MVC(Model-View-Controller)模式的图形渲染体系
笔记·python·qt·学习·pyqt
知识分享小能手4 小时前
Ubuntu入门学习教程,从入门到精通, Ubuntu 22.04 的软件包管理 —— 全面详解(9)
linux·学习·ubuntu