2025-12-24

野蛮生长

前段时间看了下Coinbase的API想着写点东西.

想着多少是涉及钱的东西,所以想着看看能不能不用SDK.
毕竟感觉上,本身就不是个什么特别正规的行业,而且盯着的人也多,供应链上难说没有什么问题.

粗略翻了下文档,倒也不算写得不好.
除去SDK之外,还是有标准的Http JWT形式的提供的.

就是跟国内某些云厂商的文档一样,类别分类只能你懂了之后才懂怎么找.

稍微看了下jwt的签名方式,然后再对了下文档,感觉中间缺了一大段.
估计也没想着有人会直接从头写.

于是估计省事,ChatGTP和Gemini vibe了一下.
让no external dependency地写个client和一些简单策略描述帮助测试,还有就是让预留扩展interface以方便拔插.

gpt绕来绕去还是用上了sdk.

gemini倒是挺直接出了个纯typescript builtin function的版本.
不够提示jwt签名算法不对的时候,又绕回到jose这个jwt库了.

反向情绪价值了几轮,倒是给写了个像模像样的版本.
而且让给写test case mock api看着也挺一回事的.

然后review了下感觉client的部分略复杂.
签名的部分看着也不大对劲.

于是就放弃了.
转回古法编程.

当然,私心也是不够顺手太啰嗦.
顺便还能看看jwt的四种写法.

然后开始翻RFC.

抽象层面倒是挺简单.
然后回去对照了下文档,发觉少了签名的部分.

于是仔细翻了翻.
发觉文档的jwt其实指的是jwk+jws.
即一种json结构描述的key信息,和对应的key的signature的算法.
然后以json/jwt的方式encode一下.

继续翻了翻文档和几个RFC,发觉都是语焉不详的.

文档大部分术语表达其实是按照jose这个high level的jwt库来描述的.
而RFC里有大部分都是optional字段.

一时也没办法知道具体哪些是必要的,哪些是可选的.

现在想想,这个也算暗示了后面Coinbase API一些有趣的地方.

比如像jwt RFC里以及像老一点的oauth等签名方式里,都会要求有一个nouce去防止重放的.
甚至在jwt中,除了这类时间因素外,jwt还有一些从SSL CA方面借鉴过来的东西.

像除了nouce之外,还能assign一个unique id给每个jwt,以及限定token的有效时间区间.
还有就是issuer和subject这类概念.
加上key算法可以是非对称的方式.

所以形式上来说,安全模型算是挺标准完备的.

但关键这些都是optional的.

而且实际上coinbase的实现里,其实也就主要校验了key产生的签名.
像上面说的重放策略什么的,实际是可以重放的.

所以理论上来说,如果它的API Gateway没有做什么特别工程的话,是有可能重复或者意外retry的.
比如多买或者多卖,甚至多转帐理论上应该都是可能发生的.

当然,要说本来就套了一层Https/SSL了,没必要也不是说不过去.

但多多少少算是做的并不太符合预期.

毕竟作为一个怎么说也是金融交易系统的API,校验完全依赖底层通信协议,业务甚至API层面本身没有校验逻辑的话,也多少又些让人意外.

不过,说完全没有校验倒也不至于.
只不过逻辑很奇怪.

因为它会校验请求的url/api路径.

也就是说,在它的jwt的header部分会要求有个uris参数.
这个参数基本就是固定的api path.

如果缺少这个参数加入到签名过程,这个签名是401的.

对于相当一部分API来说,这个基本就是个常量.
所以,对于这部分API来说,这个必要参数显得也不是那么必要.

毕竟对安全性并没有提升.
而且形式上还增加的请求的大小.
也就是无效信息也多了.

想了想有价值的可能是某些url里面带某类动态id的可能会有意义.
比如针对某个transaction的操作之类的,可能会有一个标识嵌入到API路径上.

但这也解决不了产生这些标识的API的安全性问题.

另外就是这种放着标准的防重放机制不用,利用这么一个类似oauth api scope的字段去做随机化的事情,多少有点让人费解.

当然,这些可能知识trade api的问题.
其他类别的可能另一套底层处理机制的话,可能没这些问题.

但是,作为比较核心的交易API的话,多多少少是有些让人不太舒服的.

毕竟这种情况下,一旦遇到中间人,基本上就属于裸奔状态了.
因为即使不知道密钥,但是从请求上是可以看出操作类型的.

比如只是一毛钱的转帐/交易测试,理论上也可以通过重放去扩大的.

联系诸如perceptual这类衍生品的交易概念,交易所形式上来说其实又挺多合理的操作空间的.

比如你的margin可能不是cross的,只是针对某一个产品,也加了止损止盈线.
但是吧,可重放和重试之间模糊的界限,理论上和形式上是可以放大不利场景的.

而且因为虽然API Gateway后面并不校验nouce,但是SDK层面又注入.
所以你要证明是过错方也是有点缺乏依据的.

即使不在交易上出问题,在转账上面也是有可能有一些利润空间的.

像perceptual的funding payment概念.

形式上来说,这个是根据所谓的为了衍生品跟底层标的挂钩平衡加入的激励因素.
比如标的是BTC,然后对应的衍生品BTC perceptual会给予call/sell方以动态的正负利息/税费收入.

根据交易所自己的平衡原则,你call BTC perceptual可能会有一定利息,或者要付一定利息.
sell侧也是.

而且这个东西每小时结算一次.
极端产品的这个小时利息是可能倒万分之一的.

在这种情况下去重放,即使市场本身不波动,交易所那边也还是有可能有超额收益的.

当然,有funding payment这种东西的存在,交易所也犯不着去搞那么复杂的重发了.

毕竟税率既定,而且实际流水的变动相较于市场的波动,可能一般人也不会注意到,或者说在意.

而如果跟进一步考虑的话,这个可能就更有意思了.

因为它的结算单位是USDC.
所以宏观上里说,每小时是有一定市场持仓比例的USDC以这个费率的形式作为交易所收入固化回去的.

而交易苏的所有交易其实都是机遇USDC或者其他所谓稳定币维系的.

因为虽然你可以cash in和cash out各种法币.
但是你其实并不难直接用法币交易非stable coin.

或者说,有路径,但是一般也不会通过非stable coin的方式进行转化.

于是从会计角度来说,形式上,交易所账上的USDC负债会比例性地转换为资产.

再假设,如果交易所有自己的类stable coin的代币.
那么完全可以用这部分转化的资产去对自己的代币进行市值管理.

同时因为市值正向增长,而且属于自我发行的一般代币.
再基于代币进行市场融资进一步放大杠杆,然后回头做市也是有可能的.

所以总的来说,这套东西还是挺野蛮的.








2025-11-30

在疯狂动物城之后

去看了疯狂动物城2.

动机算是为了碟醋吃了盘饺子.

在时间线上看到有人发了个彩蛋的图.
一个胡萝卜核弹状的录音笔,加上小不点的中翻称呼,结合最近的中日关系,不免有迷之微笑.
想着,这私货塞的有点手眼通天.

虽然最终看下来多少有点自娱自乐.
但也不妨碍这确实是夹带私货的续作.

社交媒体上还有一段关于蛇这个造型和任务引入的一些争议.

从文化上来说,尤其是基督底蕴的西方宗教里面,蛇确实不算事一个很好的角色图腾.
尤其在片中,它也并不像坏蛋联盟里的蛇一样,做一些温和化的外观处理.

依然保留了獠牙,毒性,甚至于跟恶魔图腾有着亲密联系红眼.

所以选择这么一个动物形象作为一个被banish的故事背景的种族,多少有些奇特.
毕竟,选择任何一种其他动物,可能也不太影响故事结构的变化.

如果说是要强调偏见这个故事线索的合理性的话,像狐狸本身在上一集里也已经采用过了.
同类的有负面形象的动物也不少.

于是,这个决定就显得额外地费解.

同样的有些奇怪,但相对合理的是作为犹太隐喻的反派猞猁.

金色鬃毛的表演系人格马市长作为deep state的象征倒算是没什么争议.
甚至那个伴随台词之后的动作,也与现任总统的招牌舞姿有着某种内在的借鉴.

但是,为什么用猞猁作为犹太象征这个还是有些费解.

于是尝试关联了下相关的词条组合搜索.
除了在形象上跟恶魔有点关系之外,也没找到明显的支持跟犹太/以色列关联上的部分.

不过其中倒是意外地把蛇形象的某种正当性联系了起来.

希伯来圣经中有一段关于以色列人和蛇的渊源.
大致是耶和华降下火蛇惩罚以色列人.

以及由此衍生的,以色列人铸造铜蛇作为解毒的一系列渊源.

到这里,大致就能解释为什么选择这个奇怪的动物作为线索之一的.
尤其里面一个重要元素是腹蛇的识火能力.

而火这个元素,在看的时候,也有一些联想.
尤其是接近尾声的时候,在沙漠的那个音乐节.

当时第一反应就是这次巴以冲突的导火索的那个音乐节事件.
因为印象中好像也是跟火有关的.

所以当时看的时候,觉得还挺大胆的.
把最后的冲突场景放在这个设定上.

不过后来根据印象查证了下,发觉可能是跟火人节搞混了.
因为当时记得火人节也是闹了一阵子的争议的.

虽然往火人节上挂钩也不算牵强就是了.

一个是地理位置.
一个是文化定位.

而说到文化,这片有另外一个比较有意思的点就是把篇幅大量地放在了第三世界文化上.

从出逃的路线选择的墨西哥味道,甚至于面临领土兼并情况的状态也是非常amigo的.

事实上,美国现在的新墨西哥州和其他一部分土地就是通过最终购买的方式并入美国的.

而开始逃亡进入沉船的那个场景大致能挂钩上东南亚文化.

最后的沙漠场景和骆驼也大致就是中东地区了.

所以形式上来说,剧情地理动线是从美国到拉美到东南亚到中东这么一个转移过程.

除了这个传统的第三世界视角之外,另外就是俄罗斯和一些东方大国的影子了.

开场助逃的加长豪华轿车和白熊基本就是俄罗斯的好莱坞stereotype了.

黑手党鼠鼠教父,以及亲吻戒指这个明显的致敬不谈的话.
比较有意思的就是手下的这个奢侈品加工工厂了,和鼠妇人浮夸的审美了.

尤其考虑到仓鼠这种繁衍性极强的生物.
大致也算好莱坞的stereotype基因了.

而且看有人提出另外一个有趣的点也是这个工厂的一句话评价.
屏幕上一群踩缝纫机的小粉红.

这个就更是会心一笑了.

尤其联想最近的某App的显示IP纷争.

坐实了某种功能切实的stereotype了.

另外一个stereotype就是那个西班牙拉美风的歌手了.

感觉在近年来,弗拉明戈风格好像很喜欢被拿来凑元素.
不管是电影还是剧,甚至日本的动漫也有相当是拿来做风格化元素的.

不过也确实有种原始野性的节奏驱动.
尤其这里的比较洗脑的类动物嚎叫的zoo-o-o.

不过这片虽然参杂了诸多的元素,尤其是各种非西方传统价值观的颠覆性元素,而且故事上也在讲世界和而不同,命运共同体之类的概念.

但实际上给出的方案确实很别扭的按照生态隔离的方式.

这个可能也是主创自己没有想明白怎么表达的东西.

或者说,虽然知道自己是白左,有些想法不现实,但是拿不出更好的方式.

这个大概就是为什么分和两场戏的关于正义和努力的台词少有的显得没有那么白左的原因.

在明知伪善只是某种虚荣驱动的情况下,伪善也是善的意义的存废性讨论.

但可惜的是疑问并不代表着结论的存在.

故事的结尾本质上也还是解决显见的问题.
而忽略不被关注的点.

就像谁又曾问过冰雪区是不是真的不需要扩建.
以及蛇的新家是占了谁的土地呢.

所以本质上来说,问责是一种显而易见的容易被滥用的权力.

毕竟政治正确性本身是一种宗教信仰,存在着一种道德上的无上权威性.
在其没有越过某种红线之前.

2025-11-23

再聊聊集采

昨晚因为一些事情查了下艾斯奥美拉唑镁肠溶片这个东西.
然后发觉可能有一些可以展开的东西.

先是被告知说网上买贵,然后去医院开的话便宜.
于是就看了眼京东的价格.

第一眼是一两百的样子,想了想,确实有点贵.
然后就翻了下聊天记录,找到了发的医院买的截图.

然后看到商标名和公司,反应过来这个应该是集采国产替代/仿制药.

抱着好奇心用商标名和公司名在京东搜了下.
倒是没找到.

Google按照公司名字找到子公司倒是跟商标名有点像.

拿着这个名字回京东组合了几次,也还是没找到.
于是作罢.

因为知道可能是原研和仿制药的价格差异,于是就过滤了下带原研字样的其他国产替代.

看了下倒确实便宜,30几.
不过跟描述的医院只要十几块貌似也对不太上.

想想,即便集采,差价应该也不至于那么大.

于是又仔细看了下,发觉是剂量不一致.
京东的大概片数是医院版的两倍.

这么一算,大致对上了.

于是有了这个价格基准之后,回头看了看原研药.
想着是不是也是因为剂量的问题导致的价格差异.

然后发现不是.

用前面的单片剂量单价换算原研药的价格的话,大概是6倍左右.

到这里就开始有点意思了.

查了下这个药.
大致是阿斯利康在2000年在瑞典首发的,2014年专利过期,其后开始有仿制药,在2021年进集采.

看研报数据,即使在14年专利过期之后的2019年,全国16亿的销售额中,大概99%都是阿斯利康的.
只有在21年进集采之后,国产用量才占到80%.

这里要注意的是,一个是销售额一个是用量/销量.

2019年销售额是16亿,销量是1.48亿,单片差不多10块钱.
2021年阿斯利康销售额4.5亿,销量0.5亿,还是差不多9~10块.
而此时对应的国产替代是2.6亿,销量2亿,差不多但片1.3块.

这个数据要解读角度就多了.

单纯从销售额来说的话,说是断崖式暴跌也过分.
而且从阿斯利康的角度来说,也是量价齐跌.

所以,如果从阿斯利康的角度来说,这市场基本属于严重萎缩状态.

而故事的另外一个角度则是,集采之后,药的是用量增长了1.3倍.
同时费用差不多打了9折.

这两个叙事都是同时成立的.

但是只有这两种叙事么.

第三个角度是药企为了进集采牺牲了9成的利润.

这个也是成立的.
因为在专利过期,进入集采之前,国产替代也是按照差不多阿斯利康的价格在卖的.
这个可以从万分之几的销售额和市场占比里换算回来验证.

于是,在进集采中后,即使是国内药企,也是面临90%以上的让利的.
这个说法,也是一种alternative fact.

除此之外,还有另外一个角度就是给予国产药企的市场空间.
16亿时代差不多是万分之五,也就是100w左右的年市场份额.

集采之后则是总体2.6亿的市场规模.

于是,从这个角度来说,又是给予了国内药企巨大的市场空间.

到这里,大概就只能会心一笑了.

为了进一步验证或者说看看猜测对不对,拉出Gemini/千问/ChatGPT跑DeepResearch.
让跑了下集采等几个关键点前后的各个药品销量变化.

基本上也都是符合这几个角度的.

另外还有一些可能更有意思或者实际的是,翻千文的thinking的时候看到达格列净在25年10月进了第十一批集采.
这个也是阿斯利康的,也同样的,选择不进集采,而转入院外渠道.

然后顺手看了2024年的财报.
全球总收入大概500亿美元,其中31%是达格列净.
按地区其中中国占据12%.
如果平行换算的话,国内2024年的达格列净的销售额应该在160亿人民币左右.

当然,这个是简单粗暴的换算.
实际上,阿斯利康的达格列净在2024年总销售额是68亿.
这么算的话差不多是中国收入的15%左右.

如果套用艾斯奥美拉唑镁肠溶片的数据,少个75%的话.
那么集采之后全球收入要少个1.2%左右.

倒影响不如预期的大.

当然,这个只是单地区单品类的变量.

而且也难说出个什么新概念/药,还能增长一些.




2025-11-16

反之亦然

最近看到一个冲绳独立的慕容复策略.
于是稍微查了下,感觉还蛮有意思的.

它的法理依据是旧金山和约中将冲绳置于联合国托管领土框架内.
这个框架的设定主要是为了解决殖民地问题.

传统意义的二战主要限定在欧洲战场.
太平洋战场从西方认知上来说,并不太属于第二次世界大战的范围.
所以狭义地来说,欧洲战场才是西方视角的二战.

将日本投降和太平洋战场纳入的逻辑在于日本属于协约国成员.
而且日本跟欧洲的在太平洋确实存在冲突,只不过角度上来说,是殖民地争夺.

当时的世界框架视角是东亚和太平洋是个共享殖民地.
包括中国在内的所有领土和武装冲突本质上是殖民势力之间的火拼.

所以在战争结束,日本和协约国投降之后的处置问题就涉及到这些殖民地/战利品的归属去留问题.
于是,形式上来说,这个托管框架是对原有宗主国作为战败国之后的某种功能形式的主权剥离手段.

也就是日本版本的冲绳地位未定论.

但它跟其他殖民地不同的点在于后面有一个日美冲绳返还协定.
将主权治理从美国手上移交回日本,从而确立的现状.

这里的瑕疵在于,在联合国框架下,管理冲绳的实体应该是前面提到的托管框架.
而美国是作为实际的管理负责人的占有执行.
所以在法理上,美日签订的这个协议是否能够代表托管框架,这点是存在瑕疵的.

但是如果要以这点作为反击手段的话,那么形式上就需要承认旧金山和约.

旧金山和约的问题在于,中苏并没有参与以及签字.
这就导致了其他涉中海域和岛屿的地位问题.

形式上来说,和约中涉及的台湾澎湖以及西沙南沙群岛也属于托管框架范围.
也还并不明确属于当时的中华民国.

另外这里还有一个更具有争议性的中日和约.

中日和约是在旧金山和约签订之前,单独与中华民国签订的.
内容包括对上述涉中海域和岛屿的归属权确认问题.
明确废除了清朝以来的不平等条约,也就是实际上对上述岛屿和海域进行了确权.

形式上来说,这几个地方和几个小时后签署的旧金山和约共同构成了一房两拍的现象.

也就是在当时的时间点,这两个文件的签署对这这几个地方的归属权是互相冲突的.

那么从当前中国的角度来看的话,又是怎么样的呢?

先从没有争议或者说较少争议内容的中日联合声明说起.

这个是以明确的中华人民共和国身份签订的.
声明约束了日本对台湾的地位确认,以及补充性的追认波茨坦公告关于日本领土的声明.

这里有趣的地方有几个.

一个是对中日和约地位的问题.
中日双方并没有能够在这方面达成成文协议.
但是日方外长以官方身份做了口头的补充性说明,明确中日和约的终结.

终结这个词汇从结论上来说,是承认了中日和约的有效性,但废除了有效性.

所以从路径上来说,跟旧金山和约的互斥性是消除了.

隐含的就是合法性问题应该顺着旧金山和约往下延伸.

另一个有趣的地方是正式确认日本对台定位定论.

这个如果是延续中日和约的话,这个没什么争议.
因为联合声明确认了中华人民共和国的外交地位.
加上前一年的联合国2758号决议中华人民共共和国的代表权的恢复.

所以如果单从这个角度看,中日和约是对中日对台问题的100%确权.

但是它的问题是签订时间是在1952年.
如果承认签约主题的法理适格性,那么就必然跟中华人民共共和国的主权法理产生冲突.

所以从中华人民共和国的角度来说,也只能否认这个和约.

那么回到旧金山和约.

因为这个和约比中日和约签订还晚,并且本身无论哪个实体都没有参与签订.
所以这里又产生了新的分叉点.

一方面,作为联合国的实体代表,以及后续追认的代表延续性.
理论上来说是可以追认旧金山和约的有效性的.

但是这样也解决不了主权争议.
因为形式上来说,依然属于托管框架内.
加之这个框架本身就是争议来源之一.

另一个方面来说,日方后来的中日联合声明在台湾问题上的声明就面临适格性挑战.
因为既然日方主权没有变更,那么形式上来说,其对旧金山和约的内容依然具有履约性.
那么,实际上在无效化了中日和约的同时,也就意味着回退到托管框架的范畴.

而托管框架的前提是日方放弃了对台权力,移交给托管框架.
这个跟中日联合声明的主权性声明是冲突的.

那么,同样的,即使回到波茨坦公约,日方的视角也是放弃了对涉及岛屿和海域的主权确认.
归属性问题依然存在分歧.

所以,从中国的角度来说,可以确认的只有波茨坦公告和中日联合声明.

在这个角度下的切片就是另外一个比较有意思的观点了.

也就是所谓的战争状态问题.

因为在中日双方都无争议的这两个文件下面,形式上来说,中华人民共和国这个实体跟日本是还没有签订停战协定的.

形式上来说,中日联合声明只是放弃了战争赔款,以及在不侵犯领土的五项原则基础上的不诉诸武力.

这个在有新的停战协议,且新协议不涉及战争赔款的话,对这两个文件的有效性是不构成变化的.

于是理论上来说,这里就存在一种让托管框架实效的方式.

因为归属问题争议是建立在托管框架下的.
而托管框架的依据是旧金山和约.

既然中日依然处于战争状态,并且中方的盟军地位属于可以追认确立的.
那么,旧金山和约就存在托管框架方面的瑕疵.

因为在各方都明确无争议的波茨坦公告只约定了各个未定论.
但是对于实际的确权并没有不冲突的签字文件存在.

也就是说,托管框架的适格性可以会退到盟军对日方投降条款的未取得一致性上.

这个状态本身同样是能够支持未定论的.
但是这里存在一个中日新停战协议明确托管执行方为中方的路径.

而确认这个路径的话,那么问题就相对简单和清晰了.

如果日美可以就冲绳达成合规性协议.
那么同样的,中日也可以彻底解决争议性问题.

反之亦然.





2025-10-19

一些猜想

下午偶然翻到篇Google的论文.
大意是能对LLM直接更新某些参数来达到控制输出了.

这个放开了想,大致就相当于能定位到某些功能所实际激活/需要的部分.
医学上的等价理解就是知道脑部的特定区域的作用影响了.

工程上来说,一旦变得实际可行就有可能大规模地减少参数和算力需求.

从这点看,还是蛮promising的.

顺着一些引用往前翻是这篇论文的一个基石.
谈LLM emerging能力的.
理论框架是用来解释LLM为什么能具有context这个东西.

也就是说,比如给定一个prompt/问题.
形如问LLM需要的flops以及电量关系,然后project下需求这种问题.

context在这里的意思就是,LLM不单是能够简单的predicate和填充下一次词进行扩展,还能真大围绕着这个主题不断迭代计算下去.

所以怎么能够解释context的产生/来龙去脉/成因/作用方式,某种程度上是相当有意义的.

这个引用propose的解释框架是存在某种context block.
也就是某些比较关键的参数部分.

context的在这里的作用方式是对上一层的input做一个简单的线性shift,然后project到下一层.
intuition地理解就是类似先cluster到某个当前维度集合,然后再统一project到下一个dimension space.
这样一层层嵌套之后,形式上就类似于做了一个类似决策树的routing.
而每一层的分支理念上就类似于一个context space.

所以后面的那篇就基于这个算是做了某种程度的验证和控制实验.
从结论上来说,貌似是对的.

当然,实际对不对也没去看就是了.

不过如果假设这个是正确的话,这里其实还有个比较有趣的implication.
那就是既然context的演变是某种简单的cascading的线性shift叠加形成的.
那么理论上来说,层数或者说参数量是可以大幅度或者至少相当程度上减少的.

因为这些计算形式上是一个线性的关系.
也就是因为着可能可以以某种形式合并.

这样的话,之前DNN时代关于deep还是wide的争论可能又要拿出来再捋捋了.

凑巧的是刚好这时候看到另一篇谈high dimension calibration的.

初始的出发点看着也是想以某种方式拟合/裁剪模型,以实现较小计算代价的同等能力.
基于这个衍生的另一篇论文是关于这个方式的理论上下限的.

然后得出的结论是某层参数的增加在跟层数相关的一个系数范围内,模型的能力是可以保持不变的.

这个翻译一下其实就是前面说的,在给定条件下,存在增加每层参数,然后减少层数的方式,保持模型的表达能力.

这个在当前transformer的框架下,减少一层就意味着减少大量qkv,从而减少大量的算力需求.

再有一篇也是可能类似结论的.
谈back propagation的,在比较宏观的视角看待forward和backward pass在training过程中,对convergence的影响.
结论看着是forward pass在某种情况下,对最终stationary的影响并不直接.
主要还是backward pass的贡献.

这个初看起来有点废话的感觉,毕竟拟合本身靠的就是backward的gradient decent.

但是它尝试用这个来解释实践中加normalized layer的必要性以防止层数过身深导致的难收敛问题.

这个倒某种形式上跟前面shift的解释对得上了.

因为normalize形式上是把值约束在某个特定范围内.
变相地也就构成了某种cluster作用,使得后一层所需要需要区别开的dimension space的project function数值上可能不需要变得太过于复杂,从而影响收敛的难度.

而且这个结论的另外一个启发就是对于diffusion model.
因为diffusion本质上来说就是类似纯backward驱动的.

所以如果能从控制context block上发展出什么思路,再结合backward pass的这个结论,有可能在training的时候某种形式的去掉forward pass.
直接靠context block diffusion到最终结果.
而不是类似目前transformer的一个个吐的低效形式.

毕竟形式上来说,当前的transformer就是个bubble sort...

不过就目前来说,可能更直接的验证/摸索方式是构造一些相对小的模型充当这种理想化可控可预期的context blcok,然后搞另外一个专门模型去同步地聚合输出生成最终结果.

当然,MoE形式上就是前半部分.

只不过构成上还是传统的大力出奇迹,一步到位的训练.

从这种省事的方式回退到要某种形式的人工拆分结构再训练,可能不管学术还是工业上来说,都有点难度.

毕竟按照目前的算力规模来说,也不是随便给予尝试的.

不过Google既然能发出来,那么根据经验,要么就是已经验证出了下一代/N代架构.
要么这个已经是废案了.

到底是哪个,可能看后面发布模型有没什么特别的地方了.






2025-09-14

人类本质是LLM

最近看到一些比较有意思的新词.
比如苹果小区.

还有一些就是比较热点的话题.
比如预制菜.

然后发散了下,想到了解构主义这个词.

本质上来说,之前的所谓互联网黑话体系,其实也是某种解构主义.
甚至往大了说,短视频以及互联网本身都是依靠某种形式的解构主义支撑的.

用某种冲击性,或者说新鲜的词/话语形式去尝试高度覆盖某种更大范围的事物和现象.

就像现在正在做的,用 解构主义 一词去试图概括和定性一种现象.

它的问题在于,容易把一些事情简单标签化.

诚然,从语言进化的角度来说,确实需要并且必然也会存在新词和以一种新的抽象形式概括总结某类现实的形式.
但反过来说,也不能说所有的简化抽象都是合适的.

就像预制菜,某种语境下是充满negative含义的.
而苹果小区,则是跟某种形式的高级感混合在一起.

从体验上来说,一听到词出现基本上就定下了整个表述的氛围和立场.

但实际上来说,什么是预制菜,什么是苹果小区,这是一个比较虚无/undefined.
或者说其实是没有一个相对准确严格的定义去区分的.

它更多的是表达了某种预期中的情绪和意图.

这就有点像LLM的hallucination了.

你根据一个词汇predicate出来的东西,其实从第一开始就决定了基调.

而反过来,形式上的,既然首词或者说关键词决定了一个人对某种表述或者某种食物的情感变化的话.
技术上来说就能通过rephrase去控制影响甚至是构造植入观点.

比如当用计划经济开头描述一项措施,和以市场驱动开头描述一项政策.
听众的情绪反应和接受程度可能从前几个词就决定了对于后续的具体措施的认可/反对程度了.

而同样地,如果先叙述细节,再加上冠词定性.
那么听众可能就对条目本身更为中立,转而对提出人的立场存在区分质疑了.

更复杂的情况在于.
当你吃的一个东西的时候,对于食物本身的判断可能就被迁移了焦点.
从是否喜欢是否好吃等更纯粹具体的地方,转移到一个可能定义不明确,但是有着明显正负情绪印象的点上.

以及由此延伸的对于关联词汇的情绪和接受程度变化.

所以从这个角度来说,如果说之前社会的被影响程度更多源于信息差造成的不对称,或者说不全面的话.
现代社会的意识形态更多的是这种相对复杂的植入形式.

或者说源于某种信息过剩之后的,出于自保也好,效率也罢的一种对digest需求造成的某种依赖性引发的misleading.

因为信息的多元化和巨量话,选择一种高度概括的,或者信息浓缩程度足以覆盖大部分话语场景的词汇,去处理和应用某种立场表达.

与其花两个小时看一部电影,不如花五分钟看剪辑加上评论,快速地吸收.
然后迫不及待地奔赴下一个需要处理的条目.

至于吸收了什么,反倒不是什么特别值得注意的重点.

从这个角度来说,各种女权或者说社会意见群体的割裂,归根到底可能还是接受信息流派的差异.
毕竟个体上来说,数量特征上决定吸收的核心思想是类似的.

观点冲突立场对立的不过是因为不同宗门而已.

大多数不过是被某种关键词注入的观点表达.

形式上来说,可能就像一个巨大的诈骗园区.
不同隶属的团体有着各自固定的话术范本,互相套路着对方.

这么一想的话,人类本质是复读机这个解构主义的注释可能还是颇合时宜的.

或者相应地,可以说人类本质是LLM.


2025-08-02

何乐不为

去看了长安的荔枝.

前半段还可以,尤其像荔枝林里不知道是笑还是哭的几个镜头表演算是相当出色了.
结合人物背景的那种对目标的绝望与对当下人际环境的希望的交叉矛盾心理.

后半段就有些过滤潦草了.

如果说整片是对于一骑红尘妃子笑,无人知是荔枝来的解构的话.
带入民生潦倒涂炭这点是没问题的.

尤其前半段路上驿站的桥段和蓄奴的设定,以及荔枝林老板娘的对城人陈见等都是一种很自然的侧写.
不过分渲染,点到而已.

后半段的砍荔枝林虽然说表演和镜头问题比较多,过多地用了一种新闻摄影聚焦肢体冲突的拍法.
但是作为一种层层加码和举国体制的滚滚车轮的描写来说,剧情上还是有必要的.

但是对后面逃驿的问题,加上刻意的仰望苍天的片段就有些刻意和浪费剧情空间了.

这里更好的侧写可能还是保留后勤支持不足的设定,然后插播几个经过凋零村落的镜头即可.
因为这里可以在最后和杨国忠的对话里,再回扣回来.
用成本压力导致的各级执行虽然遵守,但不坚决来反衬用度的荒淫.

这点也和前期的办公室政治化氛围是契合的.
部门之间即使动员,但是在涉及到自身利益的时候,多少还是执行上会有一亩三分地的考虑的.

毕竟生存和服从也是分级别和尺度的.

从这个角度来说,刘德华的杨国忠交出刻字金牌说出 流程那种东西是强者不必遵循的规矩 这句话的时候,本片的含金量就到了一个阶段性高点了.

形式上来说,这是一个简单的权倾朝野的权力叙述.
也很容易,或者说没办法避免滑入到对权力滥用,以及最后对值不值得这一句的衍生思路.

但本质上来说,剧本本来可能更想倾向于落到权责上面的.
毕竟道具上采用的刻有名字的金牌,以及金牌所代表的令行禁止的各种特权.

本质上来说,这属于一个用名字背书的项目.

从前段段各部门踢皮球,到利益均沾的点播,以及杨国忠夜访认可.
用前半段的办公室政治来说,这就是简单的有了一个总体拍版负责的最高负责人.

所以到这里,各个层级的决策点已经不是这个项目风险高,不能入坑,变成了纯粹的执行而已.
责任解耦,各个层级的决策层本身退化回了执行节点.

这也是觉得后面召集人员发细节号令穿插执行镜头的存在的必要性了.

按照这个思路的话,杨国忠这个角色的塑造就应该是有点亦正亦邪的设定的.

所以后面看的时候,其实蛮期待最后的对话的.

尤其相关的镜头上,多处和佛像以及夜叉交叉,从手法上算是某种角色定位暗示.

在看到场景是在佛堂以及高低层设计的时候,也是蛮惊艳的.
甚至在最初的值不值的讨论上,也算是可圈可点没有落入俗套.

但可惜的是剧本没有让刘德华有机会塑造这么一个角色.

一个题外话就是感觉刘德华还是挺适合这种有争议性的亦正亦邪角色的.
感觉可能这个也是无间道成功的一点.
人物气质选的好.

回到剧情上.

不满意的在于杨国忠居然没有反驳的设定.
直接恼羞成怒地杖击,从而使得后面一连串的演出的剧情越来越浅薄公式化.

设想的场景里本来觉得会想和珅反问纪晓岚一样,问李善德知道这个浪费行为能养活多少人么之类的问题.

尤其本来白客那个商人角色在这里也可以插入亦正亦邪设定的.
毕竟一方面有着被大哥压制的梗,二来确实有想翻身的欲望.
如果剧本上植入白客反骨砍了荔枝林,但是自己生意也靠这个做成了的话,倒也可以加入到杨国忠的这个论战论据里.

一个设定升华两个人物.

另外一个没有用好的是那个同是献上来的贡品绿李.

杨国忠的那句也不过那样可以在李善德吃了绿李,按照耿直人设说出不好吃的时候,再把这句台词抛出来.
最后在值不值的问题论证的时候,把这个也曾经是荔枝的背景交待出来.

毕竟,形式上来说,皇家贡品认证某种程度上来说,确实属于一种经济模式.

这样两相来回就可以把问题螺旋到一个新的未定状态.
而不是简单的劳民伤财的结论.

然后后面流放岭南,能回到荔枝林也不会显得太突兀.
毕竟真多成贡品了,扩产荔枝园给老板娘带来切实利益也能呼应回跟杨国忠的对话.

进一步考虑价值问题.

甚至和最初的懵懂长漂青年到中年到狱中的和光同尘,再到最后的偏居岭南形成一个逻辑上的进化通道.
也就是常说的质疑理解成为的下一阶段注解.

现在剧情结尾一下转到和解以及白客成才就有点闲的无厘头了.

而且使得最后在荔枝树下的日啖荔枝三百颗圆梗变成了没有支撑点的哀国眼泪.
因为你很难解释他哭的是什么.

为百姓已经哭过了.
为长安为圣人就有点说不过去了.

未兴百姓苦亡百姓苦就更说不过去了.
毕竟,从行为上来说,他自己就是为了自保的推手之一.
并且,整部剧的设定也没有忏悔自己成为洪流一份子的剧情,所以谈不上某种复杂的自责和怜悯心理.

但如果按照前面的杨国忠设定走的话.
这里就可以转化为一种对价值问题的释然和放下.

毕竟不管杨国忠怎么做,做不做,长安还是在燃烧.
一种历史宿命的滚滚车轮感,结合自己送荔枝到如今吃荔枝吃到吐的现状的一种荒谬冲击.

回闪到当初荔枝林到分不清苦笑到镜头,然后结束就可以了.

这样连日啖荔枝三百颗这个梗也某种程度上上升到了一种入世又出世的了然感.

何乐不为.




2025-07-26

理解成为

最近写个Presto的UDF,发现点比较有趣的地方.

因为功能上需要运行时访问外部数据,做个类似缓存的读写动作.
所以形式上来说,这是一个带状态的函数.

在SparkSQL里的话,这个处理比较简单.
由于整个execution pipeline是基于序列化的,所以只要能够提供一个某种程度上determinist的初始状态,那么各个executor是可以有一致的表现的.

当然,这个有一些前提.
主要是class版本的一致性.
这个主要是由于kyro本身的问题.

但总得来说是比较straightforward的.

但是presto不太一样.
它采取了一些可能从设计上来说,比较学院派或者说不是那么实用主义的设计.

从架构上来说,它的udf主要通过一种plugin机制扩展.
而为了比较好地.或者说便于udf的作者提供更flexible的实现,所以采用了一个独立的plug classloader的方式加载对应的实现.

这个从工程上来说,也是一个可能容易被选择的方案.
因为弱化了实现的库版本依赖的约束,允许plugin作者选择自己prefer的各种其他库.

这里它为了比较好地解决不同classloader同名类不兼容的问题,主要也是plugin spi类的可cast问题,在plugin classloader里面做了个白名单机制.
是的SPI的类从同一个classloader加载,避免隔离机制造成的互相不兼容.

不过这里形式上也提供了一种调用主classloader的实现的一些方式.
毕竟已知的白名单类可以得到app classloader,自然也就有办法使用到所有的类.

不过这算classloader这种sandbox机制的某种特性吧.
毕竟形式上来说,这也是JVM的claasloader sanbox对立统一的一面.

而且整个udf runtime和execution pipeline的执行某种程度也是依靠这种leakage来实现的.

因为它不像SparkSQL是依靠序列化传递函数实现,而是靠比较轻量的某种执行计划描述在个节点节点重构调用链的.
所以形式上来说,可能各个节点运行的版本并不严格一致.
因为jar包可能不一样.

不过这在实际场景下可能不是一个大问题.
尤其如果是用容器方式运行的话.

这里的主要问题在于它对udf函数的初始化处理.

大体上来说,是比较标准的依赖注入的思路.
扫描类的annotation来生产udf的描述信息和运行时绑定方式.

这里比较tricky的是对udf的绑定是通过method handler实现的.

这个大概率可能是一种基于性能借口的炫技.

因为对于一个generic的udf来说,入参数量和返回值是不确定的.

像SparkSQL就索性采用了一个透明的类Object/Any方式.
好处是SPI接口简单.
坏处也显而易见,不能简单地知道入参出参的类型.

Presto形式上来说也可以采用这样的方式.
而且实际上来说,如果采用这种方式的话,可能更有利于vectorize.
毕竟本身就内部pipeline的传递的page/block就是某种batch data.

但显然作者没有采用这种实用主义的手法.
而是用了method handler以便能够在udf的声明上就清晰函数的定义.
把heavy lifting的事情放在method handler的参数绑定上.

甚至炫技的地方还不单在这种类curry的functional化上.
甚至还允许函数声明根据参数类型做specialize,一定程度上做着类似template specialized的事情.
对特定类型的参数可以提供统一但优化的实现和声明.

这个炫技本身倒没什么.
只不过从实际实现上来说,它引入了一个隐性约束.
就是这个函数的implementaion部分必须是static的.

因为这样才可能在早期绑定确定的method handler.

虽然看实现上也支持非static method的绑定.
但对于hosting class的constructor有一定的限制.

而且本质上来说,这个hosting instance也是once bounded的.
作用上就是一个static的singleton.

所以没办法从这个角度去让某个udf调用带有状态.

于是要带状态的话,一种思路是把状态相关的部分作为参数inject到udf的入参里.

这个的问题主要是在explain语句的时候,会有一些可能或干扰或敏感或意义不明的部分让人confuse,或者说知道了不必知道的实现细节.

当然,这个通过override某些函数是可以redacted的.
但是总的来说,不是很便利.

另外一点就是late binding的问题.

有时候udf入参的一部分并不需要立即evaluate,而是需要在udf实现里根据情况决定是否做eval.

这个在SparkSQL因为expression是可以自定义哪些需要eval的.
不管是eval模式还是codegen模式,自主性都比较flexible.

而presto的因为前面method handler的那些magic,基本上generate出来的bytecode都是实际eval出来的结果再入参的.
也就是说,在这方面的可控性并不如SparkSQL.

如果将这些late binding需求的部分作为原始string传入,再再udf里编译的话,有几个问题.

一个是这个compile流程不算友好.
如果bytecode模式的话,需要处理多个class loader的问题.

因为前面也说了,plugin本身的class是在一个半isolated的class loader.
而bytecode generate因为使用了method handler这个builtin class,所以形式上可以不管实现,在一个独立的mini classloader就可以完成code gen.
而卒后执行的时候又是在main classloader里执行.

所以在运行时,或者说函数的调用逻辑里需要毕竟明确的知道会触发class loading的点和确保bind了正确的classloader.

而如果是interpreter模式的话同样有类似的问题.

并且除了这个问题之外,还有怎么构造compiler/interpreter也是跟问题.

因为整个presto是按照guice的inejctor构造的.
而plugin的接口和loading方式又缺乏引入injector从而获得相关依赖服务构造对应compiler/interpretor的方式,所以实际上也不太可行.
即使是强行构造了一些等价接口的话,在覆盖率上也是有所差异的.

这使得即使构造成功,可能运行时的表现也不尽如人意.

再就是即使构造成功,处于性能考虑,如何对整个compile结果缓存也是个问题.

因为前面所说的method invoke是无状态的.

不过因为本身表达式是string形态,所以缓存这方面倒相对来说更直接一点.

而如果不走这种compile/interpretor方式的话,presto倒是提供了一种间接或者说直接late binding的方式.
那就是presto sql的lambda expression.

这个倒是解决了按需evaluate的问题.
并且不需要复杂的compile/interpreter,甚至于都不需要做method handler的缓存.
意味本身就已经是bindable了的,在函数声明里就是个通用的明确的functional interface.

但这里也回到了缓存状态的问题上.

针对一个udf的调用,形式上是根据某些特定的入参生成一个确定的cache key以帮助查找的.
但是如果同时有late binding的需求的话,那么因为functional interface本身不太cache sensitive.

也就说,很难说两个functional interface是否具有相同的逻辑,从而增加了缓存的难度.

而这里因为前面说的bytecode codegen的classloader是个不关心/aware plugin classloader的.
所以实际上它接收的functional interface只能是jdk builtin的interface.
无法通过扩展的方式,使得运行时能从这个入参里得到一些比较显著的信息.

能想到的方式只能是walkaroud地再inject一个足够distinguish的比如原始expr的string参数,同时想办法在explain等场景里给它屏蔽/不显示干扰.

总的来说,核心问题可能还是在于Presto整体设计有些学院派.
不像SparkSQL更多的是秉持某种能用就行.

虽然比较讽刺的是Presto本身是Facebook这种喊出move fast break things的工程实用主义的公司搞出来的.

不过想想自己也是.

曾几何时倒也是看不太起Spark+Scala这种到处又不是不能用哲学组合的产品.

现在却是走到了理解成为的阶段.

2025-06-15

一部未完成的适配

看完了一部未完成的电影.

这部片片子比较有意思的是一开始那段自嘲.

秦昊关于既然拍了也播不了,只是私下小圈子里自嗨的事情又什么意义的质问.

片里导演也讪讪地承认生活的现实.

到这里其实沿着原有的思路,把补拍和一些意外穿插进去,可能还是一个不错的文艺片.

至少于戏里戏外的导演来说,是一种文青的自我感觉良好和救赎.
一种艺术上的纯粹为了完成而完成的虚无主义.

这里说虚无主义倒不是贬义.
只是描述一种关于文青普遍的宏大叙事情怀.
非得有一种表达和刺刀的锐性和针对才能称得上艺术的执着.

接入covid的叙事大概也是这种思路.

在淡淡地牢骚戏里戏外的电影行业处境之后,惯有的自由主义角度去看到这段历史.

所以他选择的封控的突如其来的干涉,留在房间里的不自由的苦闷逐渐癫狂,再加上解封后的泪流满面.
附带的叙事是乌鲁木齐火灾里的苦难和反抗精神.

这是一个可以说是很主流的文青自由主义视角.
一个关于个人权利和集体或者所谓专制下的冲突和反抗,以及在这个斗争中对弱者的怜悯,和对反抗者的可歌可泣的宏大叙事.

是的,这其实也是一种宏大叙事.

如果你用他的这个角度去看这部片子,无疑地,你可以说在克制中又振聋发聩.
毕竟,没有用一种直接的评击甚至几乎没有对抗的镜头,却选取了各种触动人心的片段,去通过情绪构造这种递进喧哗.

用薛之谦的话说,就是递进的情绪一点也不省略.

但这里可能有一些文化冲突的陷阱在里面,导致这种自我感动似乎不太普世.

至少当时看到一些舆论是戛纳可能也并不是太买单这部片子.

当然,这个舆论可能也收某种倾向性立场诱导或者说编造的.

但是至少在个人的角度来说,在叙事方面确实是存在一种立场差异导致的文化冲突的.

第一点是关于酒店封控的转折递进的.

娄烨的上下文可能更多的关注在疫情期间封控的一些野蛮和一刀切问题.

但是这个其实并不是一个普适的上下文.
对于一个不是很了解事件背景的人来说,特意引入一个武汉人不能住酒店的剧情只能是让人联想到地域歧视.
酒店的封控和跟警察保安的冲突也只能被理解为unlawful的一种试图要挟贿赂行使特权的一种自利行为.

这在西方表层的价值观里,可能都不是一种politic right的剪影.

尤其考虑到中西在lockdown这个问题上的巨大的现实差异.

没有经历过lockdown的人可能更倾向于如果当时采取了一些及时的手段,可能一些人甚至亲人可能就不会有不太好的结果发生.
所以在反lockdown这个角度,跟娄烨的想法注入角度可能是有一些偏差的.

某种程度上,可能恰好是在这些人的情绪反面.
毕竟如果归因于lockdown不及时的话,那么这里谈反抗精神就是有点火上浇油适得其反的.

中间穿插的隔离和在隔离中的无助软弱和疯癫化的镜头也是可能站在了对立面的.

对于娄烨来说,短视频的各种发疯和医护人员的谢谢你,以及被及时拉走的隔离人员,这些都是一种不必明说的殇.

但是对于没有lockdown的人来说,这是一种系统有效运作,医护情绪稳定放松.
用现在自由派喜欢的词来说就是chill和松弛感.

这个可能谈不上有一种控诉的共鸣.

而后面剪的乌鲁木齐和白纸影子,在娄烨看来可能是一种形式极佳的升华和收尾.
毕竟一边是苦难到极致,一边是群情愤慨,到最后整体的大爱无疆,make自由 great again.

但是对于普通人来说,这就是一幕幕对于医护的打砸抢暴乱行为.

从这个局外角度来说,这个结尾就显得非常的莫名其妙.

整个故事就变成了,一个要续拍电影的小组,遇到了疫情,却第一时间想着不管风险加班为自己的理想,然后在系统稳定运作,看着有保障医疗供给正常运作的时候,莫名其妙地开始忧伤流泪害怕,最后在庆幸一切结束的鸣笛里,忽然插入哥谭印象,最后定格在一群人看成片.

这就很让人莫名其妙.
强行解读的话,也只会顺着秦昊开头的那段话,把未完成的电影解释为这一场中年人的文艺复兴闹剧.
把死去的理想和疫情中死去的人挂钩在一起.

于是再拔高也只能拔高到这部作品试图把制度对电影的扼杀跟疫情造成的悲剧图腾等价化.

这个叙事的匪夷所思性就体现在,如同一个西方讲述二战悲痛往事的故事,内核在控诉体制扼杀了艺术.

犹如虽然失去了一条腿,但是保住了爱情这种不知道称之为后现代还是文艺复兴的逻辑.

所以从这个角度来说,片名倒是意外地贴切.

一部未完成的适配.

2025-05-25

请君入瓮

广场协议的一般结论是通过日元升值解决美国的债务问题.

那么,为什么日元升值能够解决美国的债务问题呢?

相对来说,日元升值对应的就是美元贬值.
如果说要解决的问题是美国债务问题的话,那么形式上来说,美元贬值就意味着以日元能够cover更多面值一定的美元计价的资产.

从交易的角度来说,如果预期美元贬值,那么第一想法自然是通过置换美元计价的资产为其他货币计价.
直到美元汇率稳定的时候,再置换回美元资产从而实现以美元计价的套利.

以美债债券方,即债务方美国角度来说的,在due date有一个确定的美元偿付额度是已知的.
那么如果能够通过以上套利手段的话,相当于能在美债到期之后,手头上又多出一些美元.

形式上来说,就相当于通过这种套利机制凭空消减了一些美元债务.

而从另外一角度来说,如果需要构成这种套利的话,就需要一个途径或者方式把美元计价的资产置换为其他升值货币计价的资产.

在广场协议的上下文里,这个资产就是最直接的日元货币本身.

看广场协议的内容,也可以看到.
日本政府还同时承诺了开放国内市场和金融货币自由化策略.

这本质上就是允许外资持有各种形式的日元计价的资产.

当然,从日本的角度来说,就是扩大了外商投资的入口.
形式上也有利于拉动国内产业的快速发展.

实际上,考虑广场协议的年份是1985年.
同期中国在做的就是改革开放和招商引资,叠加百万大裁军,all in经济建设.

这个从结果上来说,算是邓小平赌对了.

不过这里想强调的是广场协议背后的时代背景.

也是某种形式的产能过剩,然后通过广场协议形成了一个倾销的输入点.

某种形式上来说,中美建交和后来的中英香港问题能以一个比较满意的结果谈下来,也有一定甚至相当的影响.

既然从形式上来说,广场协议是一个win-win的策略.
毕竟一方得到了债务置换和过剩输出的途径,一方得到的资本和市场扩大以及国际影响力提升.

那么,为什么谈到日本失去的20年的时候,又常常归因于广场协议呢?

这两者实际上也确实互为因果.
因为广场协议的目的或者说至少50%的构成在于美债问题.
而当这个债务问题解决了的时候,另外50%是否成立就不再协议范畴了.

前面所说的套利机制的第二段内容就是把日元资产转换回美元资产 .
这里自然就涉及到日元资产的忽然抛售和经济规模不对等的洪泛效应了.

虽然微观上可以有比如不对等开放和贸易限制,或者说房地产泡沫以及银行系统僵化等问题.
但宏观上来说,还是由于日本本身没有办法承接这个过渡时期的资产溢价导致的.

类似的就像近代的几次金融危机,比如97亚太金融危机和次贷.

杠杆奔溃的本质是没有一个缓和的承接反应过程.

然后看看现在所谓的新广场协议或者说美债问题.

逻辑上来说,这个套利和化债的方式还是可行的.
但问题在于这里需要有一个能够被捧起的其他货币资产.

中国本来可以成为像当年日本一样的win-win对象的.
毕竟境况需求是差不多一摸一样的.

但是它跟中美对抗这个另外命题冲突.
而至于为什么中美对抗是个命题则是另外的话题,暂且不表.

所以,它可以是人民币资产但又不能,至少不能完全是人民币资产.

那么除开中国之外,日本或者其他经济体行不行呢?

能不能的关键在于有没办法构成一个有效的套利交易方式.

或者更直接地说,美国能够买/投资什么看起来值钱的东西么?

几乎没有.

全球化的发展已经使得除了中国市场之外,美国没有其他可以购买的资产了.
而且,就制造业来说,也与America first冲突.

那么,如果不能够找到一个有升值潜力的货币/资产标的,那么要构成交易链条就只能从让美元贬值这个角度来说了.

于是回头看无差别的10%关税和可能的对欧洲50%关税.

关税的直接作用是对于美国国内消费价格来说,直接加上对应价格的百分比.
按照简单的基于商品交易的的汇率形成理论来说,就相当于美元贬值10%.

事实上,从看一下4月1号前后欧元日元对美元的汇率的变化,虽然没有升值10%,但7-8%是有的.
而看台币兑美元汇率则更清晰.

所以从这个角度来看关税问题的话.
差别大大额关税可能反而是一种不太现实的策略.

比如如果针对欧洲征收50%关税的话,那么理论可能要求欧元兑美元升值20-30%.
那么它的问题在于动态计价下,日元人民币跟欧元以及美元的汇率会如何浮动呢?

通过比较详细的商品交换和可替代性当然能够算出一些定性和定量的结果.
但是这种系统抖动可能并不难保证最初的化债目的能够实现.

所以在还有其他方案的前提下,这个更多的是一种姿态和叫价要求.

但是万一呢?

考虑路径的话.
美国如果对欧洲征收某种不特定品类的高关税的话,形式上来说可以是迫使替代品计价的某种升值.

比如如果针对欧洲出口的汽车征收关税的话,那么对于美国从其他国家进口的车辆就存在某种加成的汇率影响.
因为以美元计价的角度看的话,替代进口的价格更便宜.
从而间接地构成替代品货币相对于欧元升值,从而传导为对美元升值.

当然,这里不可能是中国的汽车.
但可以是当前中国对美出口的其他产品.

假设通过这种方式构成了人民币对美元升值.
那么,对于化债这个核心问题有帮助么?

因为虽然只是人民币对美元汇率变化,但作为全球两大经济体,形式上就是实现了美元贬值.
而这个过程中也不要求美国置换人民币资产,可以通过持有其他资产规避持有美元资产从而形成套利.

但这里后续跟日本剧本的区别在于,如果按照广场协议模版的话,需要把诸如其他货币资产置换回美元.
那么同样的日本面临的体谅问题就会继续考验这些经济体.

而即使中国没有直接参与在这个场景中,也会因为连锁的关系而收到牵连.
毕竟一方面的出口替代也依赖的这些经济体.
另一方面,也是当今贸易网络的复杂性内涵的无法独山其身.

一个可能不太舒服的结果就是不得不最后出面bailout这些抛售资产.

它可以是一个机遇,毕竟在国力足够支撑的情况下,最坏也无非是前几年的全线出海场景.

但它更大的风险或者说问题在于这些资产的价值还存不存在.

尤其考虑中国威胁论的背景.

可能很多国家和经济反倒是乐见其接受,甚至一开始就考虑借机处置有毒资产变危机为风口的.

某种显而易见的决策自然是某种特定形式的闭关锁国独善其身内循环.

但是这个在特定历史条件下,都存在着非制度性的内部外部阻力的.

而且借助流浪地球的世界观,这最终也不可能是一种妥善的解决方案.

所以,如果面对接下来的请君入瓮可能也是一个关键的历史时期.


2025-04-07

变数

 等红眼航班,稍微理了下川普的策略.

机制上来说,目前关税的做法是并没有他理想的交易模式,大部分臣服.

欧洲的暂停汽车进口某种程度上来说也算一种反制试探.

毕竟从目前来看,马斯克是川普版图里最脆弱或者说最容易有显著崩溃作用的一个环节.

反特斯拉的行为和非新能源车的国内市场供给矛盾不仅会对特斯拉进而影响马斯克立场,更重要的是对于普遍认识的所谓红脖对非新能源的喜好与随之而来支持情绪反转,对于川普来说都是挺致命的.

而要拯救特斯拉,目前已经做的是利用xAI收购X去可能间接地补偿之前收购X的股权质押,从而缓解特斯拉的困境.

加上AI的风头和Open AI和解是有可能让马斯克坚持下来的一种结局.

但考虑到这两家公司的实控人的性格和行为过往,大概率也是不会有好结果的.

那么,如果考虑国有化特斯拉,或者以某种形式政府注资呢?

这个历史上也是有类似案例的.
甚至恰好是同为汽车行业的通用.

以一个国家安全或者战略投资之类的救助法案定向注资程序上也是说得过去的.

而且本身已经有了一个星际之门的定向策略,剩下的可能只是如何通过的问题.

这个路径的问题也比较明显,就是马斯克和川普的关系,以及夹杂的4任职利益冲突.

所以,如果从这个角度考虑传闻马斯克辞去DOGE职位的也算有一种相对积极的可能性解读.

如果退而求其次让xAI去做这个通道的话,那么由于本身未上市,去操作特斯拉就大概需要一个私有化过程.
这个行过往看,特斯拉那边是不太容易通过的.

当然,考虑到当下的舆情和马斯克的现状,现在私有化变成可行也不算意外.
毕竟跟之前不同,现在可能存在负资产可能,会顺利允许也可以理解.

但相对来说,是不如直接国有化特斯拉来得干脆和少变量的.

不过即使争取到马斯克坚持下来,按照目前烽烟四起,诸侯蠢蠢欲动的情况,可能川普大棒之后的胡萝卜策略也没办法施展了.

毕竟形式上来说,对中对美,第三方都是可以谈而不是之前一边倒的制裁局面.

甚至于基于这个共识,美国在继续以抑制中国策略的时候,可能需要反过来出让利益于盟友,以换取协同步骤而不是像以前一样了.

但是这样问题就变成了川普是怎么看待中国和MAGA的关系了.

如果事实上确定地认为制造业回流的障碍在中国制造,那么确实出让利益遏制中国是一种可选项.

而如果制造业回流是一种general的回流,那么出卖利益就是一个不必要的交易选项.
因为在跟中国意外的国家比较的时候,美国制造并没有那么明显的弱势.

甚至于在对比欧洲等发达国家的时候,还具有一定的制度上的低福利低人权优势.
加上相对的,还有经济和制造基础的优势.

所以如果从这个角度理解向万国征税这个思路就显得有条了.

作为一种general的回流策略,目前这种粗暴的根据逆差计算penalty的算法就显得某种程度的smart了.

直接量化了一个谈判的目标值,交易的negotiation在某种程度上就是明牌的,在具有优势的情况下.
而在相对对等的情况下,也相当于把用什么交换的问题丢给了对方.

只有在遇到没有优势的对手的时候,才会显得手足无措.

于是除开中国,欧洲和其他盟友的策略最终都会回到用什么跟美国交换的一个问题上.

如果沿用以前的联美抗中路线,那么由于美国其实并没有太特定的对抗目的,更多的是taking advantage of their ally,所以可能实际上是作为巴黎和会中中国的角色了的.

而如果是渐中立的状态三方互有合作的话,倒是存在某种形式上的re-globalize的可能性.
只不过各方的优势产业能力会跟之前有所差异就是了.

至于中国,在这个变化当中更多的是思潮能不能转变协同的问题了.

这个某种程度上来说可能是个更大的变数.

毕竟政策被舆论裹挟而被打乱节奏的事情还历历在目.

2025-03-08

瑕不掩瑜

新加坡哪吒2终于上映了.
也终于有机会去看了.

客观地说, 剧本应该是还算可以的.但是叙事成熟度还是不太够.
虽然哪吒二阶重生的片段确实很打动人,但切割开来看的话,缺少一个比较明显的叙事主线.

或者说在剧情长短安排上还是有些不太平衡.

像第一关的土拨鼠.
作为一个单元片段放出来算完成度很高了.

但是对于整体剧情的推进来说,却显得过于冗长.
唯一能有点体现的不过是哪吒为了大局愿意忍辱负重这点.

算是对疯魔外表下的一丝认真性刻画.

但是消耗的片长实在是太长了.
而且主要的叙事花在了跟敖丙融合冲突的这点设定.

而这个设定在剧情推进上属于可有可无的部分.
不多笔墨也不影响主干叙事.

作为其反面的就是第二关申正义的剧情.

申正义和申公豹的剧情从构造上来说是跟哪吒成对立面的.

哪吒2的主旨是不由天的含义延伸/溯源.
反抗是因为顺从无用,被别人定义是一种牢笼.

而这点恰好是申公豹一家所推崇行走的.

从戏剧冲突的角度来说,塑造主角哪吒的觉醒和讲述申公豹的DC式悲情才是一个比较成熟的表现手法.

但可惜的是尽管尝试引入申小豹这个角色去把闯关剧情和这个对立面人物谱系联系起来.
但是对申公豹的憎恨一切的黑化剧情没有了.

甚至作为回环伏笔的得知申正义受伤也是在一个很后期也很突然的闪回剧情里插入.
更可惜的是,作为最后一根稻草的绝望只有一个背影剧情交待,甚至连具体挣扎冲突都没有.

当然,这点一方面可能是因为实在塞不下了,另一方面也可能考虑是在第三部重点展开.
毕竟作为对立叙事,第二部注解正面,第三部从反面重点注解也是能理解的.

不过按照类似漫威的思路,可能就是独立的申公豹系列单列了.
以此构成一个比较完整又庞大的体系.

同样微妙的还有从第三关石矶娘娘和对应的东海龙宫背景交代开始.

这里基本上就属于各种隐喻和投射开始密集的地方了.

无量仙翁以怀疑龙宫为理由先斩后奏很容易让人联想到美国对伊拉克的大规模杀伤性武器指证.
而龙宫终的肉身和代差武器反抗也很容易联想到诸如长津湖等历史.

尤其如果把妖魔论尤其对哪吒的魔丸包袱对应到中国威胁论的话.

那么在升华第一部的不由天内涵到不被定义自主独立层面的话,大致也对应了中国发展思路的变化.

从纠结制度问题到文化自信的演变过程.

所以,如果把结尾东海龙王和哪吒分别的那段话做政治解读的话,基本上就属于两个时代中国领导层的思路交接了.

以这个角度回看哪吒听到陈塘关消息反而直奔第三关试炼就有一种合理性了.

此时的哪吒还纠结于成仙完成制度改造去除威胁的思路.

属于转型变革尝试的一种表述了.

也是通过这个奠定了只有坚持不被定义,不纠结成不成仙的问题,向着不由天的二阶意义延伸.

所以第三关的的突兀从这个角度来说,就显得像是一种必要的突兀了.

从这个角度来说,哪吒2的后半部分更像是例外一种形式的觉醒年代和战狼.
属于某种形态的当代新文化运动启蒙了.

作为一种官方意识形态的以前所未已的方式扩散.

尤其如果考虑饺子本人的一些经历的话,就会觉得可能也不是一种过度解读.

第一步作品打个大西瓜多少就是有些形态指涉的.
尤其大棋局的设定.

而且记得当初这部作品本身新科动画也是有参与的.也就是CCTV当时的针对动漫的新媒体渠道.

即使除开那些解读,饺子自己在哪吒2里也是能看到一些反身致敬的.

比如开头哪吒亲口说的打个大西瓜.
以及在把龙族入鼎完成一阶复仇之后,对着大海和海鸥空虚的场景,多多少少是对那片的致敬.

除了这些自身的投射之外,像海夜叉这个角色.
开头的剧本也很容易想到陈佩斯朱时茂的警察与小偷.

还有一些场景和方言做派也容易勾起对于武林外传的想法.

所以,即使抛开那些元素,该片也是多多少少有很强的时代性烙印在的.

从这个角度来说的话,也算瑕不掩瑜.


2025-03-02

暴力美学

最近跟风看了下DeepSeek开源的几个项目,
一个感想就是这样的团队可能其实还是挺难得的.

基本上属于需要有钱,玩得起硬件,但又不能是一个大公司,使得接触这些环境有条条框框和门槛.
再就是在有追求的同时,具有一定的实用主义精神,有ROI概念.

像基础的3fs.

一上来就是面向RDMA设计的.
这个成本本身就有一定,小点或者资金不是那么充裕的,一时半会也玩不起.
而在大公司里,大概有属于一类比较特殊/不通用的硬件资源,大多也只是某些特殊目的的项目有预算支持.

何况即使有,也大多是属于某些特定部门的专有资源.

倒不是说不够共享精神,可能实际上更多的是来自于行政上的条条框框数据隔离.
再就是复杂的成本归依问题使得不大可能是一个通常意义的基建环境.

除了硬件使用门槛之外,实现上也一方面实用主义,一方面也有一点要求的.

因为面向的是特殊场景,所以有些地方就没考虑通用场景.
都是针对于需求需要达到什么样的效果,就采用什么样的实现.

比较明显的就是DeepEP和DeepGEMM两个项目.

DeepEP给nvshmem 的驱动打了个patch,增加了receive队列以及相应的通知机制.
这个基本上就是DualPipe和DeepEP本身能够在带宽调度上面手动双工压榨的软硬件基础了.

而说到DualPipe这个项目,HN上有个评论算是蛮meme的.
A CEO who codes.

当时第一印象就是当年Facebook现Meta炸子鸡时代,提到扎克伯格跟工程师一起写代码的都市创说.
虽然这一版的评论在当时被爆说比较负面,称根本在帮倒忙.

不过DualPipe的倒是比较亲和.
有人举了个例子说是跟中国厂家打交道,很多时候确实是老板亲自下场解决调试各种技术问题的.

基本上来说DeepSeek在HN上面的评价是少有的对于国产东西又相当一致性的高评价的话题.
从最初R1的时候,就是几乎少有的一面倒的贴服.

侧面可能也是说明对于OpenAI算是苦秦久矣.

而DeepSeep某种程度上也确实像是那个指出皇帝新装的小孩.

最近那个拆解成本摊薄说利润率500%+的可能某种形式上来说也是算是对OpenAI发布4.5对一种呛声.
比较时间点上刚好在OpenAI发布不久,并且强调成本高昂的时候,跳出来展示了自己成本.

当然,这个成本固然爆出了属于既得利益层面不太愿意公开,一般人也不太能算得出来的信息差的一方面.
但是,也必须承认这个只是inference的成本.

而且计算的机器成本和其他投入成本也是过于简化和纯粹的.

但确实对于价格的合理性植入了一个问号就是了.

至于训练方面,这个属于一个目前还算一个外行比较难评价的层面.

一方面是一般人也不太有条件去复现.
另一方面可能语料的组织形式本身也是一个具有advance的商业元素.

毕竟模型结构和fine tune的脚本一定程度上算是开放的了training的相当部分内容.
但是怎么喂的可能还是有一定的技巧在的.

加上像Meta的语料来源合规性问题,本身也是有非技术原因的复杂度在的.

不过虽然不能直接给出一些信息,DeepSeek也多少还是在关于自己FireFly2的集群架构论文多少有撕开一些东西.

一个是对比Nvdia DGX A-100的成本.
卡数相同集群规模,性能大致是后者的83%,但是总体硬件成本可以减少40%.
里面很大一部分开始缩减在于减少了IB的实用.

DGX的架构里但节点8卡一共用了9个IB,而FireFly2只用了一个IB加4个nvlink.

4个nvlink主要也是为了拓扑层级逐级归并引入的单节点双卡之间的互联.

诚然,从Nvdia的角度来说,因为是面向某种形态的通用场景,所以用上了一种比较奢侈的IB配置.
但是从另外一个角度来说,也可以说是Nvida是为了利润搞了某种形式的结构化捆绑销售,强卖了一部分过剩但是性能上并不容易扩展的硬件.

看DeepSeek也提到了DGX这几张IB其实还是环形结构的.
虽然提供了一个端对端比较高的带宽,但是某种形式上利用率是不太高的.

当然,Deepseek也提到了自身这种拓扑结构的一些问题.
但更多是CPU结构导致的一些局限性.

比如有PIC口不太够,导致8张卡里有两张需要共享一个口,成为了一个瓶颈点.
还有CPU本身点一些实现缺陷也导致PCI带宽跑不满成为瓶颈.

感觉这块如果说估计成本考虑如投入DPU和swich设计,替代IB的话还是有很大的成本提升空间的.

不过查了下数据中心交换机这块,国产厂商跟国外的技术差距还是比较大的.

看券商研报有列出一个datasheet,国内盛科通信能达到2.4T的交换容量,但是思科博通一线是在25.6T,差了一个数量级.

所以这块可能还是得等有同能能力的厂商之后才行.

看DeepSeek提到自己的下一代架构可能也会上8块独立NIC口,只不过不是IB而是通用RoCE方案,
不过没提到CPU选型,只提到了AMD的下一代CPU也有当前类似的瓶颈.
所以不知道会不是跟华为搞个专门通道DPU之类的去一体化解决GPU CPU和NIC的整合性问题.

不过感觉大概率不会是Deepseek亲自下场去搞.
就像发现DeepGEMM里发现undocumented的指令side effect也不是去搞个通用的compiler或者其他什么方案,而是简单粗暴的对原生binary做bit改写.

这种能用就暴力用的美学可能才是DeepSeek的风格.

2025-02-23

从觉醒年代谈起

最近在补觉醒年代,发觉有几点细节蛮有意思的.
或者蛮值得把玩的.

一个是新青年单价2毛多.
按照0.2银元理解的话,相当于现在什么概念呢?

Gemini给的人均年收入数据在5-30银元的区间,因沿海和地区已经行业属性而不同.

按30银元年收入等价现在6k月社平工资换算的话,大概一银元等于2.4k.
那么一份新青年的售价大概就是480.

然后是李大钊给工人垫付住院费的桥段.
也是大概30银元.

不换算的话,也就是小孩住院差不多要工人一年工资收入.
换算的话,就是住院费用在7w2.

同时值得注意的是李大钊担任编辑的月工资刚好也是30银元.
也就是说当时的一个报纸编辑的月收入等于工人的年收入.

月入7.2w大概就是现在互联网干活的主力中层的收入水平.

从这点看,Gemini的数据倒也不是完全不make sense.

另外一个剧情是陈独秀拿了120银元的稿费准备给儿子.
算人均一年学费60银元的话,两年工人收入,折合现在14.4w.

另外一个就是蔡元培和陈独秀的工资.
里面提到北大offer的是300银元的级别.

月薪72w,年薪800w+,倒也算符合现在对应的互联网收入分层.
尤其是这个package是纯现金的.

于是,在Gemini的这个框架下,回头看新文化运动和新青年的社会体感.

480一份的报纸,折合60美元.
如果当作月刊订阅的话,一个月240美元.差不多就是OpenAI之类的最高订阅费用.
服务的主力提供群体是差不多年薪百万的那群人.

那么一个不太离谱的现代代换就是新青年属于鼓吹AI颠覆传统产业的影响渠道.

如果考虑和保皇派文化之争的符号变换来看的话,大概就是马斯克的X对左派传统媒体的叫嚣颠覆.
或者说是抖音渠道的AI卖课风潮.

当然,倒也不是揶揄新文化运动和新青年的意义,只是做这种转换可能会有一种更具有现实性的实感.

毕竟,如果考虑后面各自的命运归途的话,会对什么是革命和理想有可能一些不太一样的体会.

就像不管是恨国还是粉红的人,放弃年薪百万去投身一个高风险或者说崇高而直面死亡的事情,是需要怎样的使命感这件事有些比较现实的对价.

更不用说那些年薪千万的人了.

而另外的一面可能更容易陷入沉思的对一些人事的价值的重新认识或者说思考.

跳出历史来看的话,或者说从传统历史教科书里,很容易对新文化运动做出具有局限性的评价.

但是如果身在历史中,又如何能做出这些评价呢?

影片里陈独秀有学车夫吃老北京火锅的桥段.
所以你也不能说他不接地气,不了解中国.

但是当你把年收入的差距摆在那里的时候,把一份新青年的售价和普通人的收入水平放在一起评论的时候,可能就有一种不由自主的荒谬感了.

即使不把白话文之与文言文的话语钱争夺视为如今的渠道流量之争.
但从受众的多寡来说,这个命题本身就站在了一个不属于他的高度.

因为这并不是大多数人能够第一手触达的.
甚至在某种程度上决定了为什么各种主义都救不了中国的原因.

而在这种VC/投资都狂热的倾注在这个风口的时候,有人能提出走工农路线是怎样一种insight.

所以有时候你很难说历史是偶然还是必然.

当然,这些都是基于Gemini的基准收入是符合事实的前提.

作为cross check,deepseek给出了另外一组数据.
主要的差异在于除了地区要素之外,还有城乡差距.

跟剧中的编辑收入对比的话,跟DeepSeek的数据是比较吻合的.

大学教授200-400银元,编辑40-60.
城市工人在8-15银元月收入的水平,这个跟Gemini的出入比较大.

不过继续看的话,农村佃农的年收入确实差不多在年20-50银元的范围.

自耕农的收入会高很多,在50-100银元的年收入水平.
不过这部分应该属于后面所说的小地主/富农.
毕竟是自有土地.

按绝大多数人口是农民并取55下限的话,倒也不能说是错的.

总的来说,可能对于沉默的大多数这个表述需要有更多的角度看待.






2025-02-08

聊聊Parquet

最近backport一个iceberg的读feature回一个比较老的presto版本,发现一些比较legacy的bug.
尝试重新实现绕过的时候,发现了parquet的另外一些比较有趣的事情.

设计上来说,parquet的column chunk里是可以记录min/max和num of null values的统计信息的.
这个也是parquet被广泛利用的一个特性,可以用来跳过不必要的io.

看的时候发觉是支持某种程度的udf的.

也就是说像like之类的模糊查询理论上也能够做一定程度的filter.
毕竟原生的operator是不太支持这种查询的.

不过测试的时候发现一些其他问题.

比如读取的时候其实是支持重新指定schema,也就是只读取/project部分column的场景的.
但是因为project的时候的一些逻辑会导致如果project的列里不包含filter条件的列的话,这个filter是会被丢弃的.

一个例子就是比如逻辑上有
select a from table where b > 0 
这种查询.

如果执行引擎只project了a,那么在parquet的io层面是不会触发b>0的过滤的.
连带的执行引擎对io返回结果的假设就不成立了.

这个行为要修倒也不太难.
只是一定程度上来说是个breaking change.

因为从另一个角度来说,返回的结果集存在一个invisible column产生了影响.
从而使得从查询引擎的角度来说,一些假设可能会被推翻.

当然,这个取决于各个上层查询引擎的执行计划构造和pushdown的完备性/防御性了.

不过这里倒是引申出一个问题.
当前查询引擎的pushdown设计是否应该更改为pull-up模式.

毕竟现在流行的一个概念是io设备/存储带有一定的处理能力.

pushdown的本意也是历史原因查询引擎的设计没有考虑到io/存储设备具备这些能力,所以才从优化角度产生了特例进行pushdown的.

如果说一个全新的引擎从设计之初就是考虑了io设备层面具有filter能力的话.
那么相应的就是对不支持的设备的pull-up/fallback机制了.

也就是从
project <- filter <- scan
直接变成
project <- filter-scan
形态.

不过从optimizer的角度来说,似乎是没有区别的.
毕竟在一个嵌套的比如sql查询当中,filter条件可以存在在任何一个层级.

如果按照这种storage with filter的设计的话.

一种是需要把每个subquery也抽象成某种storage,因为这种才能嵌入filter.
但是这样就会造成某些可以在io层面做的filter没有办法push down到io/存储设备.

另外一种是构造独立的intermediate/query区别于最底层的storage io.
但这样同样存在相同的无法push down问题.

而如果把pushdown交给optimizer做的话,就不是pull-up/fallback的本意了.
因为实际上还是存在一个pushdown的优化逻辑.

这样从设计上来说,pull-up/fallabck就成为一种鸡肋了.
无端引入了一种不必要的优化规则.

另外一个比较chaotic的特性是几乎随处可侵入的meta/key-value特性.

虽然目前看着现成的reader框架里是没有接口可以侵入利用这些matadata做进一步复杂的filter动作的.
但是读取的parquet信息里,这部分数据属于read once的东西,而且是required的必定会读的部分,要从代码层面侵入的话,倒也不是很难.

只是从规则上来说,如果真的对这种filter有需求的话,还是能够合并进统计信息里成为正式标准会比较好.

毕竟前面的一些magic特性已经足够让执行引擎对io结果的不确定性打上一定的问号了.

不过可能parquet的人也意识到这个问题.
在metadata里有一个特定的created_by字段.

这个初看可能觉得可有可无,但实际上算是一种变相扩展版本提示.

毕竟根据created_by就知道文件生产的vendor是谁,具有哪些特性是可靠可依赖的.

倒算是一种可扩展性/可玩性很高的设计了.

再一个可能就是生态性方面的问题了.

在写一些测试demo的时候发觉如果真多low level地取读取parquet文件的话,column nested/repeation之类的处理还是挺繁琐的.
而使用稍微一些high level的api的时候,又回发现avro的身影.

原因也简单,毕竟column io最终呈现回给调用方的high level api的结果一般就是通常的row oriented的record.
所需需要选择一种input/output的序列化格式.

问题在于不同的application需要的record类型有差异.

parquet自己选择的是avro.
iceberg这里类查询存储引擎因为面向设计的不同存储类型和文件结构,所以需要有自己的StructLike类型.
spark也有自己专属的Row类型.
presto则是自身对应更高阶递归的数据类型,而且还是此之上又加了一层自己的rowgrow/page/chunk概念.

这就是导致了诸如presto<->iceberg<->parquet的链路会存在很多反复同质又异构的类型拆装.

这个时候人类又才会重新认识到Arrow这类项目的光辉之处.

虽然Arrow的API也是挺low level的就是了.

不过至少提供了一种理论上可能更有的传递路径.

毕竟从结果/实际上来说,现在的大部分查询引擎都是面向column chunk的.
即使实现不同,但概念相近,data pipeline的基本unit也差不多是以这个为基础的.
所以如果能趋向同一个统一格式的话,多少还是会有些生态价值的.

不过从性能的角度来说,有多少好处,有没有好处倒确实挺难说的.

毕竟除了io之外,各个系统之间的memory allocator能不能也一统也可以是个影响因素.
如果不能互通的话,copy transfer还是避免不的.

这种情况下可能统一格式带来的收益就微乎其微了.




野蛮生长

前段时间看了下Coinbase的API想着写点东西. 想着多少是涉及钱的东西,所以想着看看能不能不用SDK. 毕竟感觉上,本身就不是个什么特别正规的行业,而且盯着的人也多,供应链上难说没有什么问题. 粗略翻了下文档,倒也不算写得不好. 除去SDK之外,还是有标准的Http JWT...