AI大模型与算力

最近AI概念很火爆,ChatGPT也横空出世,横扫各大科技热门话题,其中关键的一个绕不过去的概念,就是「模型」,模型对应的还有参数(和规模)。那么什么是模型?

模型的概念

举个简单的例子,假设我们有训练样本

(x, y)序列:(1,2), (2,4), (3,6), (4,8)…

通过机器学习训练,我们发现x和y之间的关系是

y = 2x

这是一个简单的模型,是一个一次线性模型(y = ax + b)的具体例子。
我们把x称为输入,y称为输出,而a和b就是这个模型的参数。在上述例子中,a=2,b=0,参数规模为2,有了这些参数,我们可以输入x,从而推导出y。模型就是为了拟合各种数据的规律,用统一的方式来表达数据的规律。大模型则是用更复杂的表达式,拟合大规模数据,以此来表达大数据集的规律。

例如,在上述例子中,a=2,b=0,如果输入 x=10,我们可以推导出 y = ax + b = 2 * 10 + 0 = 20,从而这个模型可以根据输入推导出输出。

那么为什么参数规模可以达到几十亿、上百亿、上千亿甚至上万亿呢?

在上面的例子中,我们仅使用了一维模型,但如果将维度增加,参数也会增多。例如,一个二维模型是y=ax^2+bx+c,它有3个参数(a,b,c)。如果我们使用深度学习来训练一个二维模型,它的具体a、b和c的值将被固定,例如a=0.2,b=-3,c=1021932,那么我们就有y=0.2x^2-3x+1021932。对于特定的输入,可以推导出相应的输出y。当然,实际数据不是这么简单,这只是一个简单的例子。

在规模达到10亿的模型中,公式可能会是这样的:y=ax^(10亿)+bx^(10亿-1)+c*x^(10亿-2)+…+var_n。它的参数为(a,b,c,…,var_n),大约有10亿个。请注意,x的指数不一定是整数,可能是小数或其他奇怪的数字,我们暂且不考虑。这个公式可以表示为一个具有10亿维多项式的形式,带有10亿个参数。了解过 NP=P?问题的人应该知道,任何P问题(能用多项式表达的问题)都是简单问题,只要算力足够,就可以得到解。那么,模型和算力之间有什么关系呢?

从Unix操作系统设计看分布式系统设计

学习一下(类)Unix操作系统的设计,可以推导出各种系统设计的哲学,软件系统的设计也应该参考操作系统的设计理念,参考不是指照抄。

首先聚焦一个,目标。没错,操作系统被设计出来是有目标的,很多人在做系统的时候,往往不知道目标是啥,为了做而做,为了酷炫而用了某些组件、技术,这是非常危险的,容易导致一堆的坑。操作系统的目标,主要有几个:1 是对底层计算机资源的抽象,包括CPU、内存、硬盘、网络以及其他各种各样的IO设备,为上层的应用程序提供简单的接口以方便、安全的使用这些资源。2 是能够对多个任务进行分时调度(Unix是一种分时操作系统),让应用程序不用担心程序会不会被执行,怎么执行。3 是做好进程间的隔离性,以保证每个进程有自己独立使用的资源,而不会互相干扰(入侵)。4 就是安全性,这里的安全性不是我们字面上了解的漏洞攻击之类的安全性,而是保证系统内核自己的安全,不会因为运行了某些应用程序之后,把系统本身弄死(死的只能是应用进程,而不是系统内核)。还有其他的许多小目标,但以上4点是(分时)操作系统的主要目标。

22年个人总结

长话短说版:没人用的产品,价值为0。

下面是絮絮叨叨。

22年之前的5年时间里,主要都投入在我们公司的物联网业务上,21年下半年有几个伙伴成长不错,就把业务交接给他们,让他们来管,我自己从新注入到公司的云通信业务上。表面上负责产品研发(CTO)和供应链管理,实际上主要投入的精力偏后者,前者也有靠谱的小伙伴们在一起做,所以不用操心太多。供应链方面,我们这么多年下来都没有一个非常核心和稳定的leader在负责,所以我跟老大主动请缨,负责了起来,期望能把公司的资源(主要是运营商、云厂商的资源)做的更稳健,把资源的调配和运营做精细化,总体朝着降本增效,同时兼顾质量稳定去做。

22年,在技术方面,主要是系统学习了区块链的一些技术原理,包括比特币的共识机制、挖矿原理、加密货币钱包原理,以太坊的智能合约原理。总体上,对区块链的认知上更深入了几层,比之前停留在『炒币』的概念上增加不少知识。当然这种系统的学习,不代表能把这种市场的反应机制看清,所以依然不参与炒币。比如最近的这一波比特币行情就完全错过了。

在开源方面,更多倾向于了解成型的开源产品和开源社区的运作模式,而不是开源框架。了解和学习了开源软件社区的运作模式,主要了解了与我们云通信产品有较大相关性的上下游产品。发现现在开源软件,更多的喜欢用小而美的语言开发,例如NodeJs、Typescript、Ruby、Python、Golang、Rust等等,而老牌的Java、C++、C#等语言比较少被用来开发开源软件产品。开源社区的运营和公司的运营相比并没有更简单或更难之说,都是需要投入大量精力去做才有可能做好的。现在很多开源软件产品也经常喜欢把软件核心开源,吸引开发者,把开发者转化为用户,然后通过提供商业版或者在线SaaS版、托管运行的模式来盈利,这就解决了很多产品的营销问题,不太需要为产品投入太多的市场营销费用。当然,开源产品的营销也是有成本的,找业界大佬带货,把star数做高都是常见套路。经常会有一些成熟的商业软件的开源替代品(Alternative)出来,宣传是某某软件的平替。但其实,大多数开源软件只是解决了功能上的相似,很多大型的商业软件在生态建设上投入非常高,建立的商业壁垒也很高,不是说你开源就容易替代的。开源的另一个好处是解决一些数据上的信任问题,降低开发者的决策壁垒,有一定的好处。如果说一个开源社区运作的好,他的生态就是参与到这个社区的开发者,通过开发者来打通各种上下游软件(包含商业的和开源的),把开源生态一步步建设起来,前期一定是很难的,关键还是得要持之以恒的投入。虽然很多开发者看起来像免费的劳动力,但开发者的质量参差不齐,对需求、问题的响应较慢,这也是开源社区相对于商业软件的劣势,需要时间来沉淀,慢慢的完成逆袭。

在供应链和资源管理上,主要更多的是出于合作互补的方式,把别人的长项引进来,补充我们的弱项,再把我们的长项包装出去,输出给用户。其中资源的运营也是非常核心的部分。对于资源运营,最核心的就是通过灵活的调度手段,把合适的资源匹配给合适的客户。那就需要做到精细化的运营,对客户的需求本身要有比较深刻的把握,对资源本身的特性也要区分好。评判资源的优劣,要有多维度的考量,比如质量、价格以及配套的服务等方面,从中衡量出资源的优劣程度,再结合用户的需求,组合打包,给到客户。

22年给我最大的转变是更多的商业上的思考,以前更多是「技术改变世界」的理想主义,一个产品不管有没有技术含量,能创造价值就是好的产品,否则都是垃圾。在ToB这个行当里,产品好不好真不是产品、技术说了算,而是你的客户愿不愿意买单。一个产品从研发到交付到客户手上以及后续的服务,是有诸多细节的,从研发、到营销、到运营(解决方案契合客户需求)、到售后服务,都是能体现你产品(公司)价值的地方,而其中最关键的还是营销。ToB的采购中,不像C端用户,自己买自己用,决策链非常短,好用且值得就买。B端的采购,从需求的发起方到决策方到采购方以及到后续的使用方,都是不一样,如果盯着一个非关键决策的链路上打,容易吃力不讨好。当然这里不是说产品做成屎也能卖出去,而是至少要匹配客户需求的,产品在2B的决策链(或者打分)上的权重不是最高的,更多还是商务决策(价格、服务、质量、品牌、口碑、关键关系)上的多维度打分。

总结一下:不管做2B还是2C,产品要及格以上,但关键要想好去哪里圈客户,把客户做进来了,产品才能体现价值,没人使用的产品,价值为0,如果再算上研发成本,价值就是负数了。

关于新能源的思考

基本原理: 能量守恒原理  + 能量转换损耗。

1 能量守恒,意味着不论能量怎么转换,能量都是那个量。 Eo = En + El  , Eo 表示原有能量,  En表示新的能量形态, El表示转换过程损耗的能量大小。 非理想状态下, El都是大于0的。

2 能量转换,在非理想状态下,是一定有损耗的,而且在现实中,损耗还挺大。所以目前科学的研究很多专注于如何提高能量的转换效率,比如太阳能转电,风能转电等等。

新能源的形态:

太阳能、风能、水力发电、潮汐能、地热能、生物能、核能,基本上要么是能量来自于大自然,要么能量释放效率巨高。

储能:

由于很多新能源就是自然资源,自然资源与我们传统的化石能源相比有个特点是能量的获取不稳定与不持续,例如风能,有时候风大,有时候没风;太阳能,白天有,晚上没有 等等,意味着这些能源获取到之后,如果直接拿去给电力设备使用会出现不稳定的状态,需要能量存储器,做做存储,在发电高峰期做储能,在发电低峰期释放能力,以稳定整个电力网的状态。

非对称加密算法

前言

目前主流的非对称加密算法主要有几类:RSA、DHKE、Elliptic Curve。

虽然大类分成这几类,实际上他们底层的原理都是依赖于素数和同余原理来做的。素数是除了他本身和1以外,无法被其他任何正整数整除的数字。这样的数字有多少呢?无穷个。我们知道,一个数字的因式分解,最终都能分解成n个素数的相乘,由于素数有无穷多个,也就意味着一些巨大的数是很难分解的,特别是两个大的素数(例如几百位、上千位)的乘积就更难因式分解了,催生了很多在理论上不可行,但在经济上可行的加解密算法。为什么说是理论上不可行呢?因为数字再大,只要有恒心(例如几百年、上千年甚至几百亿年)总能把一个大数因式分解,也就是基本假设不成立,一旦能因式分解,所有的这类密码都将被破解。经济上可行是因为,因式分解一个这样的大数字花费的经济成本(计算机、电力等)太高,以至于不会有人去尝试暴力破解。当然,据说有可以破解这类的量子算法,基于量子计算机多维度并发计算,还是有机会的。目前量子计算机造价昂贵且还没有大规模商用,用于破解这类的密码成本也是相当高的,暂时还是安全的。对应的策略是,a:发明后量子加密算法,在量子计算机流行之后也能用后量子算法来加解密,保障量子计算机破解不了这类的密码;b:用量子纠缠实现通信,可以完全杜绝中间人攻击,此时密钥不是最重要的了。目前美国为主的西方国家主要在主导后量子密码学,而我国科学家更多在主导量子通信。

下面我会用相对易懂的预言推导一下这几类算法的原理,一些不太好理解的定理,不会太深入去推导。

基于区块链的端到端加密通信

基于区块链的端到端加密通信

端到端加密通讯的基本原理

端到端基本上都是基于非对称加密手段来实现:假设通讯双方为A和B,AB都 自己生成一个随机的 私钥(p) 并私密地保存起来,然后通过数学算法,生成一个 公钥 (L),把公钥发送给想要跟自己通讯的点(peer)。当他们要给对方发送信息的时候,将信息用对方给的公钥进行加密,然后通过网络发送到对方;此时对方可以用已保存的私钥,解密加密后的数据,得到信息原文,实现了信息在传递过程的私密性。用描述语言如下:

A gen  pA/LA, store pA, send LA to B
B gen  pB/LB, store pB, send LB to A

发送消息时:
A.sendTo(encrypt(message, LB), B),发送的是用B的公钥加密过的信息。
B给A发送的状况类似。

接收消息时:
B.receiveFrom(A).decrypt(pB),接收到A发过来的加密信息后,用B的私钥解密,得到信息原文。
A 接收到加密信息之后的处理方式类似。

有中心化服务器的加密通信

去中心化的身份标识(DID)

去中心化的身份标识(DID)

前几日(2022年7月19日),w3c发布了去中心化身份标识(DID)1.0版的标准,意味着这个标准已经成熟可落地。

DID全称叫去中心化的身份标识,可以认为是类似于区块链网络帐户地址或者能唯一确定一个用户的身份(例如每一笔比特币的交易记录都可以确认到发起人的帐户公钥,也就能知道地址)。核心还是基于密码学上的非对称加解密算法,生成一对私钥和公钥的密码对,身份持有者私密的持有密钥,而需要用于身份标识验证的时候,验证方可以拿到公钥进行验证。 在之前的区块链钱包文章我们说过,椭圆曲线算法基于非对称的加密方式,提供两个方向的用途:1)公钥加密私钥解密,适用于加密通信;2)私钥签名公钥认证,适用于数据验证。理论上非对称加密的身份认证不基于区块链网络或者分布式账本技术(DLT)也能运转,但区块链或者分布式账本的存在,让DID才真正实现去中心化的可广泛使用的用途,下面我们来说说不用区块链(分布式账本)的情况下,DID存在什么问题、区块链是解决这个问题的。

公钥分发难题

区块链钱包

区块链钱包

直观概念
区块链钱包,存储的仅仅是区块链帐户的私钥,其他相关概念都是通过私钥衍生出来的:比如帐户地址、帐户余额等等,并不是说有钱存储在钱包里面。

钱包的分类
钱包从管理权上分为托管式的和非托管式的。托管式的钱包:比如你在区块链交易所,交易所会自动给你生成一个软钱包,这样别人才能把资产转移到你的帐户里,但你的钱包的密钥都放在交易所上面加密保存,存在一定风险。非托管式的钱包:你自己管理私钥,通过软件、硬件等方式管理你自己的私钥,在需要转移账户上的资产时,用私钥做签名运算即可。

钱包从电子技术方面分为软件钱包和硬件钱包。 软件钱包一般是通过钱包APP来帮助生成私钥(通常会有助记词),然后在线上用区块链资产消费时,可以直接这些钱包APP进行支付,收款等方式。这类的钱包App特别多,基本上都声称数据存在本地,但安全性方面不好说。硬件钱包一般是通过一些安全硬件来实现,在需要签名使用时,通过USB等方式连接到电脑或手机,硬件层面直接做签名,不往外泄露任何私钥信息,安全性较高一些。

钱包从存储介质方面分为冷钱包和热钱包。冷钱包是通过物理的方式,把钱包的私钥信息(或者助记词)记录到物理介质上:比如手写笔记本,拓印的钢板等等(注意这些都要安全保存起来),主要用于备份私钥,防止软硬件钱包丢失后,帐户找不回的麻烦(区块链钱包因为是去中心化的,没有一个中心方负责管理,一旦丢失了密钥,整个帐户也就意味着丢失了,再也找不回来)。热钱包就是泛指前述的几种电子化的钱包,使用比较频繁。

非对称加密算法

关于比特币区块链网络

关于比特币区块链网络

题外话

关于比特币,或者区块链,我了解是比较晚的,第一次接触到区块链这三个字是在11年左右,当时还在阿里上班,当时去听了一个facebook的「区块链」分享,后来了解下来,他们当时说的区块链并不是一个分布式账本,而是一个PC广告相关的业务,也不知道当时是刚好撞名了还是故意蹭的,反正当时了解下来不是很感冒。后来15-16年左右慢慢了解到一些相关概念,大致是了解区块链的分布式账本性质,并没有太多去深入研究。后来公司招了一些人,手上有一些币,一直在跟我们安利区块链的共识机制,我当时也是太年轻,感觉这玩意就是炒做而已,嗤之以鼻。直到近2年才比较系统的去了解这个东西。手上没有比特币,本文也不是为了鼓吹炒币,而是把自己理解的比特币区块链的一些东西分享处理,做个总结(肯定很多理解还是错的,可以评论交流)。

1. 关于区块链的安全性保证

关于SaaS软件与国产化替代的一些想法

关于SaaS软件与国产化替代的一些想法

题外话

转眼间,创业已经10年了,所以一直以来从公司层面看我的工作履历是非常简单的,上一家是阿里巴巴的淘宝网,现在这家就是创业公司,已经长达10年之久。公司虽然没有大富大贵,但目前还没倒闭,还是能持续的为社会创造价值(至少在纳税,至少能解决一些就业问题),也就足够了。最近刚把博客空间名从「jiacheo杂谈」改为「jtalk」,其实没啥区别,我还是我,因为近几年在做一些帮助企业出海的服务的业务,所以就改成一个更容易识别的名称(更洋气?),也算是一个新的阶段的开始吧。

———

关于SaaS软件,我们公司从创业伊始,就是做SaaS软件起家的。当时我们几个合伙人刚从阿里巴巴出来创业,对阿里本身的商品体系有一定了解,也对阿里巴巴的使命「让天下没有难做的生意」这个使命坚信不疑,所以创业的产品还是围绕着电商(2B),帮助商家解决一些问题。因为当时阿里巴巴也在做开放平台(当时主要是基于淘宝网),所以我们就基于淘宝开放平台开放的接口,做了一套SaaS CRM,帮助商家解决和消费者的通信触达问题。