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

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

几乎所有号称基于学习的,基于历史的拥塞控制算法都是在利用局部性原理,比如简单的移动指数平均,企图用刚刚逝去的历史启动现在,你会看到,即便历史已经表明 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 吐给专门的数据分析服务,但它没有干净利索的损失函数进行反哺,不过这也算是大模型之前的传统方法了,显然没有大模型清爽。

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

Read more

HDFS数据块机制深度解析:块大小设计与存储哲学

HDFS数据块机制深度解析:块大小设计与存储哲学

HDFS数据块机制深度解析:块大小设计与存储哲学 * 引言:块——HDFS存储的核心抽象 * 一、HDFS默认块大小 * 1.1 版本演进与默认值 * 1.2 查看和验证块大小 * 1.3 配置文件中的设置 * 二、为什么HDFS采用块存储? * 2.1 核心设计思想 * 2.2 详细解析:为什么块存储如此重要? * **2.2.1 减少寻址开销,提升I/O效率** * **2.2.2 支持超大文件,超越单机限制** * **2.2.3 简化存储设计,降低元数据复杂度** * **2.2.4 便于数据复制,增强容错性** * **2.2.5 支持数据本地性,

By Ne0inhk

Python调用CosyVoice实战指南:从API封装到异常处理全解析

最近在项目中接入了CosyVoice的语音合成服务,发现官方文档虽然清晰,但真要集成到生产环境,还是有不少坑要踩。今天就把我的实战经验整理成笔记,分享给同样在摸索的开发者朋友们。 CosyVoice是一款功能强大的语音合成服务,它能将文本转换成自然流畅的语音。其核心在于提供了高质量的多种音色选择,并且支持流式音频输出。典型的应用场景非常广泛,比如为有声内容创作提供配音、为智能客服或语音助手生成应答语音,以及为各类应用增加语音播报功能。 在实际调用其HTTP API的过程中,我遇到了不少“陷阱”,总结下来主要有以下五点: 1. 鉴权Token过期与刷新:API调用依赖Access Token,而Token有有效期。新手容易在代码中写死一个Token,或者每次调用都申请一个新Token,前者会导致服务突然中断,后者则会产生不必要的开销和延迟。 2. 流式响应处理不当:CosyVoice返回的是音频二进制流。如果像处理普通JSON响应一样直接response.json(),会报错。更关键的是,需要正确处理分块接收(chunked)的数据,并写入文件或进行后续流式播放,内存管理不当容

By Ne0inhk

Python 程序打包exe加入授权码和注册机

一、总体思路 软件授权方案大概分成两个部分:程序本体 和 注册机。 当用户启动程序时,程序会检验本地的 授权文件 是否合法,若验证通过,则直接进入程序,若未找到授权文件或者授权文件校验失败,则进入重新授权流程。进入授权流程时,程序先扫描本机运行环境,生成 机器码 ,然后提示用户找管理员获取授权码;用户将机器码发送给管理员,管理员将机器码输入 注册机 中,生成与该机器码唯一绑定的 授权码 后,发送给用户;用户在程序中输入授权码,验证通过后正式进入程序,并在本地生成授权文件。 下面是我的软件授权方案的流程图。 以上便是我这套软件授权方案的总体思路,接下来,我会教大家如何用 python 来实现它。 二、实现过程 实现这套授权机制,我们需要解决以下几个小问题。 1. 如何使授权码与机器唯一绑定,仅在本台机器上有效? 2. 如何生成验证码,以及如何验证授权码是否有效? 3. 如何保护自己的授权码不那么容易被人破解? 带着这些问题,我们继续往下看。

By Ne0inhk

Python 和 PyTorch 的核心区别(零基础秒懂)

很多零基础同学会把 Python 和 PyTorch 搞混,核心结论先摆清楚:Python 是一门通用编程语言,PyTorch 是基于 Python 开发的、专门用于深度学习的 “工具库 / 框架” —— 就像 “普通话” 和 “医学专用术语 + 手术工具包” 的区别:普通话是沟通的基础,手术工具包只能用在医学场景,且必须用普通话才能操作。 下面从本质、定位、功能、依赖关系 4 个维度讲透区别,配通俗例子和代码对比,零基础也能理解。 一、核心本质:先搞懂 “是什么” 概念PythonPyTorch本质通用编程语言(和 Java、C++ 同级)基于 Python 的深度学习专用库 / 框架(和 NumPy、Pandas 同级,只是聚焦深度学习)

By Ne0inhk