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还是避免不的.

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




2025-01-19

谈谈仿制药

下午查了下关于仿制药的一点东西.

首先是关于一致性定义的相关文件.

简单的Google一般会指向NMPA/国家药监局的一些关于 化学药品注射剂仿制药质量和疗效一致性评价技术要求 的相关政策公告或者是更早期一些的关于这个文件起草意见稿.

一般理解的西药就是指化学药品.

这个文件本身的内容并不多.
基本上在在描述成分加工以及储存过程中跟原研药的区别比例控制.
其中关于稳定性方面的要求除了储存方面,针对注射类还有一些长期稳定性方面的要求.

对于争议比较大的临床效果方面的一致性要求,这份文件也只是比较含糊暧昧地在稳定性方面提及了临床陪伍方面的稳定性要求.

从侧面来说,这至少说明在一定情况下,还是有对应的临场效果要求的.

不过从另外一个层面来说,仿制药作为药品本身上市也是要有临床试验支持的.

所以从这个方面来说,仿制药的临床效果争议问题上,多多少少是有一些隐含的上下文限定的.

在看关于特殊注射剂的习惯部分的时候,一致性定义里有比较明确的关于质量的定义.
里面提到了对于商业批量的样品应该进行BE或者临床试验.

按照通俗的法律理解,应该对应的属于一般强制性要求.
也就是说一致性评价里要么需要有BE试验结果,要么需要有临床试验比照数据.

只有在这两个或条件下也满足误差范围才称之为均有一致性.

而所谓的BE试验时指在给定有效制剂成分分布一致的情况下,药代动力学的人体表现也具有一致性.

通俗的理解就是在成分一样的情况下,人体对仿制药和原研药的生物代谢过程具有一致性.

这个代谢过程一致的指标可能也是大多数人比较明确的药物在人体内的浓度曲线变化.

所以从这个角度来说,如果在成分和浓度曲线变化一致的情况下,疗效存在明显差异,那么这方面的争议结果对于常见的西药之于中药的有效性论述论据是有一定影响的.

毕竟你不能在一个地方是绝对的成分决定论支持者,在另一个地方就是一个相对有所保留的成分异见者.

实际上,使用效果的差异性可能更多地来源于包装制作工艺的区别.

这倒不是说仿制药和原研药就存在质量差异 .
而是这里存在一个比较隐性的错误推动.

目前在谈论药品一致性评价的时候通常说的是前面所提及的成分和代谢特征的一致性.
它并没有对药理的发生作用的过程做约束.

也就是说,即使作用机制相同,但由于非核心有效物质以外的所谓辅料的差异,导致在人体内产生释放作用的机制存在差异.

一个简单的例子就是对于胶囊或者有肠衣的药品,因为这些包裹物的制作工艺差异,对于酸碱度和融溶的机制作用和时间长短存在差异,导致了有效成分释放到人体内部的实际起始作用时间有差异.

这样就导致了同样的医嘱对于不同的药品存在结果上的差异.

这种对于一些需要连续给药的场景带来的差异可能就更加明显了.

所以从这个角度来说,仿制药和原研药存在差异倒也不能说是错的.

毕竟两者在服用实践和方式上可能并存在一个可复用的过程.

只是这多多少少有一些隐含的上下文差异在里面.

另外一些就是关于数据方面的.

一个国内仿制药在2023年算是有一个爆炸性增长,新批准上市的大概增长了75%左右.
这个大概对应着当年A股医药市场的火爆.

根据市场份额和领域分布来看的话,大多数的新增仿制药集中在心血管方面.

而相对的国内新药多数集中在抗肿瘤药物.
这个跟国外药企的进口部分是存在一些共同之处的.

比如有段时间比较热点话题的诺和诺德,有相当一部分的利润来源于进口的抗肿瘤药物.
中国在其全球市场中应该算是有一个比较大的比重.

未来可能多多少少也会有一些争议.




2024-11-30

爽文

去看了好东西.

坦白说,多少是带着点挑刺的味道去的.
毕竟打着爱情神话和女性题材的气质,多多少少是热度为先了.

看完之后倒是有些新的想法.

某种程度上来说,现在的年轻人或者说声音就像小叶.
只要说点贴心的话就能哄好.

也是那种可以不用很努力了.
留在自己的舒适区避难所小圈子抱团就好.

也并不是说这种知足常乐有什么问题.
但是另一面的小孩特性,或者小孩的另一面特性倒是颇为推敲.

影片结尾的live house镜头叠加学校正式乐队的场景,本以为是打算玩那种不同选择不同mix的手法.

可能是民谣/摇滚背景乐叠加体制一本正经的管弦交响乐团,穿插地下乐队和大会堂表演的对比.
来营造某种不同精彩,甚至哪边更精彩的叙事.

事实上,倒确实也有一点这个意思.
在乐队现场的各种鼓励应援和礼堂里早退刷手机聊聊无几关心的场景的几个镜头.

但是可能不知道是出于什么考虑,这个演绎嘎然而止.

并没有期望中的像之前一样抖开心麻花版的段子,对比一边对成功与另一方的可能落寞或者滑稽.

于是当你想批评它支持非主流叙事的时候,倒显得有点底气不足了.
毕竟这边某种程度上的成功来源于这种张弛有度,或者说左右横跳.

一个比较有意思的点就是女主这个形象的树立.

影院里比较多的大笑也来源于跟她有关的一些场景.

形式上来说,或者说表面上来说,她在构造一个某种形态上典型的进步主义女性视角.
坚强,有能力,叠加单亲开放,以及设定上就是女权运动调查记者的身份.
可以说是属性点满.

观众之乐于敞笑大抵也是来源于这种大女主特性.

然而比较微妙的是当你把铁梅性转一下的话.
大概在出场的几秒就会被评价为爹味普信与油腻了.

有趣的是,导演或者说编剧倒也似乎有意无意地在提示这个关系.
以至于开场在入职点评职场的时候,就直接植入了油腻这个词.

所以当后面连续有意无意地给90%荒谬的衣服似有若无的反复特写的事,多少是有些会心一笑的.

就像你深究设定上从调查记者到自媒体爆款小编的转变也多少有种二度的讽刺在里面.

一个借主编口说的无情的10w+机器,以及眼镜小妹对于出差即旅游的肯定.
叠加直播从invisible women遮脸到复刻直播卖爆款剧本的转变.

让人多少会在女性主义的意义背后打个问号.

尤其如果同时把前夫也性转的话.
大抵就是一般备受口水的丧偶式婚姻和雌竞问题.

从这个角度来说,剧中的男性角色反而更像是一种变装的二度讽刺.

包括前夫的女权理论演绎,以及重复两次的结构性问题.
尤其是鼓手在床上看小肚子的极其女性化风格的演绎.

当然,你也可以理解为是尝试用男权的角度去重放和构造女权语境.
但是显然的,欢乐的观众可能并没有想那么多.

只是觉得是一个颇为爽朗的笑料集合.

角色聚餐的饭桌情节某种程度上来说属于全剧左右横跳的巅峰.
一边是雌竞和女主位的男权女性化视角.
一边则是小孩的反复不想打拳.

交织在一起你很难说是在讽刺什么.

所以有时候觉得,这个剧的Her其实更多的可能是指小叶.

一个本质缺爱就把爱寄托在一切驯服自己的事物上.
外表的不羁叛逆更多是有意无意的跟过去的切断.

就像跟铁梅谈论的时候,自己也不自觉地对母亲时候爱过自己产生怀疑,却又咬死不愿承认.

于是,当你回想第一次说要带小孩的时候,一边受着铁梅扮演的stereotype啰嗦老妈的形象,一边欢乐地送出门喊出妈的注脚的时候,会对编剧的这声妈到底有没二重意思产生遐想.

还有一点比较有意思的是电影中谈电影的部分.

一边是贾樟柯是名人但nobody cares.
一边是对山西平遥之于法国类比的揶揄.

你很难捕捉到这种淡淡的自嘲里,透露的是导演什么样的一种心境.

联想结尾登场那个经典背光造型和时不时穿插的歌曲.
无时不在暧昧一种难以言喻的界限感.

尤其如果考虑四字弟弟在此刻只配作为一种笑料辅佐,而泰勒斯威夫特则承前启后作为一种励志形态.

所以从这个角度来说,牵扯爱情神话倒也不算太离谱.

如果说徐峥是把市井气变成了某种艺术形态的话.
这片大概就是把精致进步打包成了一种可消费的商品.

在一个在即使可以对大多数女性羞辱议题说不的同时,精准地保留了未出过国的原始羞耻感.

这片就像医生之于小叶,除了提供一种难以言喻的情绪价值之外,更会营造一种自己很重要的氛围.

然后可能更诛心的是,没人会那么有空在意你这种戳破意识过剩的句子确实在结尾由小叶本人说出.

可能这也是这片有意思的一点.

在所谓被作为现代女性意识对立面的各个角色形象都有意无意地也在塑造某种醒世名言.

甚至于医生在阳台上的最后一句台词也颇为值得玩味.

毕竟爱就行了.

就像可能很多人曾经嘲讽起点爽文,乏味龙傲天,看不起霸总小视频一样.

多多少少,每个人都在享受属于自己的一套爽文.






2024-11-24

能用就行

前段时间做一些小性能优化相关的东西.

然后想起了go的benchmark工具.

起因是spark/scala的一个json解析的micro benchamrk问题.

一个utf16转ut8的过程总是有着不到7%左右的差距.
后来同事提醒一个allocation的细节才明白缘由.

大致就是特定test case下,一个缓存开启/命中带来的有没有新allocation的一个副作用.

想到go是因为想起go的benchmark,相比jmh的throughput模式,还多了alloc的相关统计.

大概这就是所谓的工程细节.
成熟度和经验的一些不显著的不易被察觉的点.

如果对应的jmh有相关指标的话,可能就比较一目了然了.

然后其他的也是一些micro或者说对应scale范围下才显现的问题.

一个是scala的type check和类型推导的问题.

代码和语法层面的显示typecheck/cast带来的安全性comfortable的代价是一些runtime时候的性能损失,根据写法的不同有些还是不是neglectable的.
而换一些写法让compiler happy地能够做出type inference的,可以把这部分的开销抹去.

而比较讽刺的是本质上来说,由于类型擦除这个jvm特性,两者在某种程度上的逻辑其实都是object到处裸奔.
区别只不过是runtime check还是compile time check罢了.

这时候也就又些理解c++的一些复杂语法和奇技淫巧了.

就像理论上来说,都是一回事.
但工程实现的不同,可能就是所谓的差距了.

类似的还有scala functional风格的另一面.
一个foreach里buffer append的风格和一个纯map/flatmap的风格在性能上的hotspot也是有些差异的.

当然,这部分差异可能来源于对结果取值的处理场景.
毕竟一定程度上来说,后者是个compress的lazy evaluator.
在只需要特定subset元素的时候,确实会有一定程度上的作弊效果.

因为只需要evaluate一部分就行了.

这点倒是想起来以前pytorch跟tensorflow的设计差异了.
后者基于graph的lazy特定也让前者的所见即得带来习惯上的使用冲突.

毕竟lazy对于debug print有时候还是不太友好的.
尤其一定程度上来说,语义是不等价的.

其他的一些就是更low level的可观测性问题了.

就像开头的allocation的问题.

后面case by case地看了下,有显著性能差异的时候还是buffer比较大的时候的情况.

一个稍微简单的intuition解释大概就是small allocation在runtime可能更容易被更底层的memory management的cache命中,可能是gc的一些特殊case,甚至malloc的一些具体实现都可能对small allocation可以更容易地被reuse/命中.

而稍微大点的allocation则很容易命中到page fault从而引发一些application层面看不到的更重的差异调用链了.

这个在latency到micro second层面就算比较显著了.

所有反过来说,如果只是毫秒级,那可能这方面的差异优化又显得没那么重要和必要了.
这也就是前面说的scale的问题.

另外一个相关的就是cache这个概念的意义的问题了.

比较初期的prototype的时候,也考虑过加一些cache policy.
直接用guava的结果出来之后自己都笑了.

后来手写了一些简单策略看效果也并没有特别显著的提升.

本质上来说,还是scale的问题.
因为caceh逻辑可能在复杂度/开销方面跟主逻辑已经具有相当的可比性了.

所以即使在命中的场景下,能明显地提提升,但回退到miss的时候,回退可能更显著.

这也就是有时候会开始觉得,cache并不难算是一种算法层面的优化方式.
或者说它是一种比较speculate的优化选择.

形式上来说,天然就带有某种不确定性.

剩下的一个题外话就是关于内存数据结构layout的问题了.

以前刚接触Arrow的时候也颇为嗤之以鼻.
觉得算是可以有,但意义没宣传得那么大.

现在觉得,就像utf16转utf8这种.
本质上来说还是一位representation不一致引入的额外routine.

类似的还有jni接口带来的overhead.

这些借用一个名字就是non-unify memory access带来的代价.

所以如果像Arrow或者其他adoption比较广的message格式,多多少少还是能避免这种也算是碎片化带来的问题的.

当然,剩下的问题可能就是都想解决碎片化带来的进一步碎片化问题.

这可能就是工程化的另一面.

可观测性带来的避免重复性驱动,然后就是新的工具链在试图更广而全地解决问题.
也就是所谓的silver bullet构想.

比较现实的例子可能就是堪称日新月异的前端工具链生态.
可能隔一两个月就有一套新的概念和东西出来.

然后相似的就是不管实现目标如何,最后还是要兼容老的一套.

在生态和工程化创新之间举步维艰.

于是在回头看褒贬不一的对于go大道至简的哲学揶揄可能就显得不那么充分了.

可能它的工程化实践的已经是考虑了历史债务的成本问题了.

毕竟之前尝试重构某东西的时候也发觉了.
有时候重写本身并不难,难的可能是兼容性/一致性问题.

老旧系统/工具链的价值一方面固然是能work.
另一方面更多的是对于现有使用场景的覆盖度问题.

尤其有些时候一些bug可能变成了某种形式的feature.
以及有些衍生工具链和平台已经依赖了某些难以分类为bug还是feature的东西.


就像一个社会系统.
纷繁链条,你也很难评价一个切面的功过是非.

能用就行可能是一种需要特别角度去看待的工程哲学.

瑕不掩瑜

新加坡哪吒2终于上映了. 也终于有机会去看了. 客观地说, 剧本应该是还算可以的.但是叙事成熟度还是不太够. 虽然哪吒二阶重生的片段确实很打动人,但切割开来看的话,缺少一个比较明显的叙事主线. 或者说在剧情长短安排上还是有些不太平衡. 像第一关的土拨鼠. 作为一个单元片段放出来算...