普通视图

发现新文章,点击刷新页面。
昨天以前首页

西亚非亚

作者 大致
2024年11月12日 11:43

要么说我终究会被AI替代呢?
AI是逻辑鬼才,我不是。AI拥有正确的记忆,我没有。
20241112_west_asia_is_not_asia


  • (1):其实两周后的决赛李明又喂了一次屎,不过那场比赛不如这场有戏剧性。
  • (2):进第二个球的那个赖特后来在假A沈阳队踢过。
  • (3):饭店里并没有天津本地品牌“五星”

AI一个不厚道的应用: 价格杀熟


Artificial-Intelligence AI一个不厚道的应用: 价格杀熟 人工智能 (AI)

人工智能AI

几天前中午和同事一起吃饭,聊到了AI(人工智能),特别是过去两三年间非常火热的ChatGPT大语言模型。他提到,有一次他在火车站打算去机场,结果火车停运了,于是他用手机查询了一下Uber去机场的费用,大概是80英镑。碰巧旁边有一位女士也要去机场,他便询问能否拼车以平摊车费。神奇的是,那位女士也查了一下Uber的价格,结果她的报价是50英镑。

同事不明白为什么仅相隔几分钟,价格会有这么大的差异。我解释道,这可能是因为Uber知道你在微软工作,觉得你有支付能力。

其实一些公司早就有算法(甚至不用AI)来实施差别定价。如果判断你是老客户,可能认为你更有可能会下单,于是就提高价格。甚至公司还会根据用户所在地区显示不同的价格,因此有时使用VPN更换地区,可能会获得更便宜的报价。

随着AI技术的引入,AI对你的了解也在增加(如性别、年龄、兴趣爱好等),模型会预测你能接受的最高价格,从而为公司带来最大化利润。当然,最简单的避免入坑的方法就是多比价(货比三家)。

英文:人工智能和动态定价如何影响我们的日常成本: How AI and Dynamic Pricing Shape Our Everyday Costs

本文一共 419 个汉字, 你数一下对不对.
AI一个不厚道的应用: 价格杀熟. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c AI一个不厚道的应用: 价格杀熟 人工智能 (AI)
The post AI一个不厚道的应用: 价格杀熟 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. SteemIt 高级定制微信文章列表 RSS/API/阅读器 v2.0 The Advanced Wechat Group Posts Feed/API/Reader v2.0 Abstract: I have added five parameters to the...
  4. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  5. 在英国带孩子去露营全攻略 之前就做了一些露营的准备工作, 因为大儿子Eric 很兴奋说是要去 Camping Holiday 估计是在 Papa Pig 里看到的. 英国有很多可以露营的地方, 最后面选了一个离家开车1个多小时. 看了评论还不错. 地址为: New Road,...
  6. LOGO 海龟作画 系列三 递归画一个国际象棋棋盘 今天我们要来讲一讲递归. 递归就是函数自己调用自己, 我们可以定义一个过程, 然后这只海龟不停的画, 结束的时候再调用自身再继续画. 再次调用的时候参数变化了, 至到参数满足一定的条件则停止. 比如 下面定义的这个过程可以用来画一个实现的正方形. TO FK :B IF :B>15 ;...
  7. ACM题解系列之 – 最小堆栈 (Min Stack) 没事刷刷题能防止老年痴呆, 而且也能让你随时处于最佳状态, 随时都可以炒老板鱿鱼另谋高就. 题目: 设计一个堆栈(Stack)使 push, pop, 和取最小 min 操作时间复杂度都是 O(1). 这题的难点就是在于怎么样用O(1)常数时间复杂度来取得堆栈里的最小值. class MinStack {...
  8. 在英国开车的简单介绍/英国开车上路需要准备什么? 在英国合法上路需要有: 有效的驾照; MOT 车的年检; 路税 (Road Tax);还有最重要的汽车保险; 四者缺一不可. 千万不要有侥幸心理, 因为警察现在都高科技, 都能扫描车牌就能知道你合不合法. 不合法直接拦下来轻则罚款, 重则扣车上述法庭. 驾照 在英国可以用欧盟的大部分驾照,...

人人都可以写作

作者 dimlau
2024年10月20日 11:34

Ironben 谈到 Essay 社区的由来:

Essay 最初源于一个想法:AI 模型就是我们这个世界的缩影,从今往后,会不断吸收我们产生的数据, 如果有一个公开的地方能记录我的所见所闻所想,我存在事实就会永远被人工智能留下。但自己文笔不好,每次写博客都没能坚持下来,所以 Essay 上线了。最初的想法无从验证,但我想就这么一直写,漫无目的写,寥寥几笔也行,记录我见过的景,遇到的人,读过的书、听过的歌、看过的电影、闪过的念头…,往后每年将一整年的记录打印成册保存下来。
可能某天,会有人读到我的文字,脑子里会见到我见过的景,遇到我遇见过的人、读到我读过的书…,无论我在还是不在。

乍听颇有些浪漫,类似之前听过的,构成人体的原子都来自死去的恒星。不过,以我的粗浅了解:AI 输出的文字基于概率,「我」后边是跟着「爱」还是「饿」,是它统计数据库里的样本计算出来的最可能的选项。妳写的东西的确是会影响 AI 表现,但人类可以自傲的是,活出,另一种,可能性,而不是重走过往所有人生样本统计出来的最可能的选项。妳存在过,何必期待被人工智能留下?留些空间给后人想象吧:曾经有个人活过,那是一段人工智能无法记录的鲜活人生。

所以文笔好不好有什么重要呢?Essay 里可以写的东西,博客都可以写,「就这么一直写,漫无目的地写,寥寥几笔也行,记录我见过的景,遇到的人,读过的书、听过的歌、看过的电影、闪过的念头」。

fin.

回答一则有趣的私信

作者 ONO
2024年10月14日 17:55

一位陌生人发来一则有趣的私信,我试着回复了他,但是邮件被拒收了,所以在这里回答一下,如果我真的是AI,我会如何回答呢?


你是人、还是一款自动生成软件。你所有的感悟是来自自己,还是你收集网络。日期为什么是6月10,


我是一款由人类大脑驱动的博客,旨在通过从大量数据中学习来生成内容和回答问题。我拥有绝对的主观情感或感悟,所有的回应都是基于我所学习和思考的经历,驱动的大脑从1990年截止于2024年,并不直接从网络实时搬运信息,但我可以通过内置的主管学习模型结合上下文和对话生成文章。

至于日期,它所指的是页面的最后修改日期,不代表发布日期。

软件工程师可以通过ChatGPT来帮助审核代码(提高代码质量)


软件工程师(aka 码农)可以让ChatGPT来帮助审核代码。我发现在工作中挺好用的,把同事的PR(Pull Request)代码贴给ChatGPT,那么它会帮你看看代码中是否有问题,是不是有一些BUG,甚至会给你一些建议,效果很不错。很多时候我发现ChatGPT比我更专业,很能给出中肯的建议(我甚至想不到的方面,也帮助我拓展了思路)

chatgpt-review-code-pull-requests 软件工程师可以通过ChatGPT来帮助审核代码(提高代码质量) ChatGPT (OpenAI) 人工智能 (AI) 代码审核 小技巧 程序员 资讯

让ChatGPT帮我来审核同事的代码 Pull Requests

不过,我不建议完全依赖于ChatGPT,至少在拿到ChatGPT的审核结果后你需要自己再看一眼,看看是不是有道理。切忌直接Copy/Paste。

你也可以试一试其它AI工具,像Google的Gemini(以前叫Bard),还有Claude AI等(现在各类AI通用人工智能真是百花其放)。

英文:ChatGPT Use Case for Software Engineer: Review Pull Requests (Code Reviews)

ChatGPT 可以拿来做什么?

ChatGPT 通用人工智能

本文一共 224 个汉字, 你数一下对不对.
软件工程师可以通过ChatGPT来帮助审核代码(提高代码质量). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 软件工程师可以通过ChatGPT来帮助审核代码(提高代码质量) ChatGPT (OpenAI) 人工智能 (AI) 代码审核 小技巧 程序员 资讯
The post 软件工程师可以通过ChatGPT来帮助审核代码(提高代码质量) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 你要找什么样的老婆? 找媳妇的标准 昨天和网友在剑桥面基, 网友奔现, 他从爱尔兰过来, 小我12岁, 就聊到了找对象的标准. TLDR; 找老婆不要(只)看颜值, 而要注重性格, 为人处事和顾家等更重要的品质, 当然性和谐也很重要. 在当今社会, 人们对于找伴侣的标准有所不同. 有些人认为颜值是最重要的, 因为外貌吸引力可以让人在日常生活中感到愉悦, 这是人的本性,...
  4. 在英国给孩子换学校的经历: 孩子离开了村里的小学 由于搬了家, 孩子上学得提前半小时出门了, 因为早上堵, 也得开车半小时才能到. 之前在 Fen Drayton 村庄上小学, 早上8:45学校门开, 9点敲钟孩子排队依次进入教室, 我们由于在村里, 只需要提前5分钟出门和孩子一起走路就可以了. 现在一下子早上变得很匆忙, 得叫孩子起床, 做早饭,...
  5. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  6. ChatGPT-4 使用 Math Wolfram 插件解决数学脑筋急转弯问题 这篇文章, 我们看一个简单的数学问题(脑筋急转弯), 并用 Python 解决它. 我们看一下LLM(大型语言模型): ChatGPT3.5和ChatGPT4. 通过 ChatGPT-Plus 订阅(目前每月 20 美元 + VAT增值税), 我们可以启用...
  7. 送值400 英镑的Google Adwords广告代金券 很久之前, 我用过 Google AdWords, 当时也是拿着免费送的 Credit, 但由于某些原因, 就没继续再用下去. 这次谷歌又发邮件送了400英镑的广告点券/代金券, 如果您想要获得 400 英镑的 Google AdWords 信用额度试用这个Google...
  8. 公司请的专业摄影师 公司来了新的CEO管理之后,很多事情都不一样了, 特别是一些公司对外形象的事情就特别的在意, 比如公司网站用上SSL.现在公司还有空闲的位置,请速来(钱多人不傻). 一月份出差回LUTON,刚好公司请来摄影师给高层管理照像放网站上的,于是我也凑了凑热闹(但是却还不够资格被放在公司网站上),不过没关系,放这里也差不多. 人到中年, 沧桑感强了些. 更新更新: 同事用他NB的单反给谢菲尔得办公室的人也拍了一组这样的照片.看起来很不错, 很专业,灯光,道具应有尽有.我已经用在了LINKEDIN页面上,立马高大上. 本文一共 230 个汉字, 你数一下对不对. 公司请的专业摄影师. (AMP...

谁在用 AI 图片生成

作者 bang
2024年9月23日 11:58

AIGC 图片生成的技术,基本是22年开始爆发,Midjourney 2022年7月推出,Stable Diffusion 2022年8月推出,至今两年发展迅速,已经广泛在很多场景应用,但这个市场上是谁在用图片生成,用来做什么,一直以来在我认知里都有些模糊,这篇文章做下相关调研。

线上线下所有用到图片的地方,都有 AI 图片生成的应用空间,而 AI 图片生成的能力,也会创造出新的领域和行业,就目前能看到的已经在应用的场景,归归类可以分为:生产力工具、大众娱乐、探索创作。

ToB:生产力工具

把 AI 图片生成能力作为实际工作中的生产力工具,用在各领域的内容生产,替换原来的工作流,效率有量级上的提升,同时也有因为 AI 图生成带来的新的领域,例如自媒体。

这里的用户大部分是设计师,全球设计师 9000w,包含建筑设计、室内设计、工业设计、服装设计、产品设计、平面设计等,Adobe 付费订阅人数2650w(2022年),是非常大的市场。

电商

电商有大量的市场,为了展示、介绍、美化不同种类的商品,对图片有巨大的诉求,是AI图片(以及视频)最好的应用场景。

  1. 模特图:模特换衣、模特生成、在线试衣,专门服务服饰品类的工具,全球电商服饰品类市场规模六千亿美元,这让它对应的工具需求也足够大,能搜到的有几十家公司专门在做,例如BotikaVModel.AI摹小仙千面AI模特ZMO.ailinkfox,美图秀秀/醒图等也有相关工具。入门门槛低,但效果的调优是wu’zhi’jing的,不同角度/动作/不同衣服穿上后的自然度等都需要不断调优。
    1 2
    换模特 换衣
  2. 商品图:上传商品图,AI 可以帮你生成商品在不同环境下的宣传图,免去摆拍。相对于直接抠图→套模板,AI生成质量高,可定制程度也高,可以创造符合商品的各种背景,商品能更好融入对应背景、环境的光线阴影、颜色、高保真,这里的效果调优也是无止尽。同样有非常多公司在做,photoecom灵动AIPicCopilot。综合性的图片工具大多也会加入这个功能,比如 photoroom
    3 4
    灵动AI photoroom
  3. 其他长尾:电商很庞大,除了上述两个类,整个上下游各个品类还有不少细小长尾的 AI 图片生成需求,例如 T恤定制、衣服花纹生成、款式生成、站外营销图等。
  4. 从发展趋势看,电商平台如果自身有余力,都会去做这样的工具,嵌入到自己平台内,整个工作流更顺,像淘宝千牛自己就做了。但竞争是无止境的,所有商家都用平台提供的工具,质量品质同质化后,就会有个性化或追求更好效果的诉求,外部工具一直会有机会。

素材

素材应该是需求第二大的领域,活动图、海报、封面插图(文章/播客/杂志)、PPT,日常工作很多场景会用到,以前是搜图片找素材拼接,但如果是商用场景,一不小心有侵权的风险,素材是需要付费的,AI 图生成目前没有这个问题,而中国的版权图片市场规模在2020年是34亿,在高速复合增长。素材生成的诉求很泛,不太依赖可控生成,应该大部分都用图生成质量最好的 Midjourney,海报生成因为涉及文字,ideogram.ai 有较大的优势。

5 6 7
ideogram海报 营销素材 壁纸

自媒体

AI 图片生成的能力会被一些自媒体创作者用于创作有趣的内容,带来流量,进而接商单。例如影视/动漫 IP 二创、自制IP形象(宠物打工、宠物时装秀等)、扩图玩梗、表情包等,会不断有各种有趣的玩法持续出现。

8 9 10 11 12
高质量图 扩图,玩梗 玩法 影视IP二创 自制IP

其他

  1. 游戏设计:首当其冲是游戏原画,AI 图片生成出来的质量,跟外包原画师已经没有太大差异,或者质量更好,去年就传出游戏公司大规模砍原画外包的新闻。同时游戏内容本身需要大量的角色、场景设计,对于质量要求不高的 2D 游戏,AI图生成已经可以很好满足需求。
    13 1415
    角色生成 游戏原画
  2. 建筑设计:借助 SD ControlNet 的能力,很容易做到建筑线稿设计图转绘为效果图,渲染不同风格,也不需要有多少微调的工作,各工作室自己可以部署。对于建筑灵感,直接用 Midjourney 看起来也是足够。
    1617 18
    概念设计 线稿转绘
  3. 漫画/绘本故事:核心是模型角色保持的能力。儿童绘本故事门槛很低,网上也有大量应用的教程,大众对质量的要求也没那么高,这是 AI 图生成目前擅长的。漫画门槛高一些,核心是故事、分镜的质量,生图所占的比例其实不高,所以如果用 AI 大规模生产,质量堪忧,但也有一些精品,比如这个。针对漫画有一些独立的产品和模型,例如dashtoonComic Factorycomicsmakerllamagen等。
     19 20
    武侠漫画 Comic Factory
  4. 动画/短剧:同样借助角色保持能力,生成图片后转成视频形式去消费,这也是后续内容制作的趋势。目前还没看到大规模成熟的应用,短剧类 midreal 相对小众,月活几万的级别。小说转动画视频有不少产品在尝试 剪映的故事成片、极虎漫剪漫剪猫等,规模比较小,但作为生产力工具,付费率是挺高的,做出来的内容有一定消费价值。

ToC:大众娱乐

图片特效

大众用户日常社交对图片是刚需,AI 图片生成在这个领域的应用是最广泛和成熟的,跑出很多爆款产品,Top 的是 Remini(23年MAU 8000w+,收入6643万美元),其他也有非常多产品冒出,AIMirror/FaceAPP/Lensa/Prisma等。

这个领域不断会有爆品出现,理论上不会一家独大,每个产品都有机会,逻辑是:出效果爆款→社交媒体传播全网引爆→大量用户使用&付费→热点几周后消退,用户少量留存,大量流失→找下一个爆款→找到进入下一个循环,找不到产品逐渐消亡。典型的持续活下来的产品是Remini,消亡的是妙鸭。

具体应用上,姑且分为 AI 写真和特效。

  1. AI写真:人像 P 图是刚需,AI写真算是这个刚需的分支,火过很多产品,国内的妙鸭,海外Remini,还有一大波专门做这块的垂类产品 PhotoAI星绘等。妙鸭虽然火一波以后销声匿迹,但这个需求是长期可持续的,photoAI 是独立开发者的产品,月流水已经到17万美元。主要用于各社交软件头像、linkedin商务照等。
  2. 特效:比如风格化的黏土风格、盲盒公仔、迪斯尼风等,还有其他例如换发型、换性别、变老变年轻、扩图等特效。
21 22 2324
Remini 众多特效 星绘 AI 写真 ailabtools 换性别、年龄

新场景

另一类 ToC 的应用,是把 AI 图片生成能力作为全新产品的一部分嵌入,跟产品形态有较强的绑定。

  1. 陪伴类产品:纯 LLM 文字陪伴发展下去肯定是结合图片生成/视频生成,让人更沉浸式,可以衍生抽卡、剧情图、虚拟女友形象等。产品非常多,MiniMax 的 星野/Talkiecandy.aidreamgf.ai 等,AI 陪伴还在爆发增长期,AI 生图在这个领域有很大应用空间。

  2. 教育类产品:DoDoboo 将儿童涂鸦实时转为绘画作品,激发儿童创造力。是一个尝试性的应用场景,没有很成功,但 AI 教育是万亿级别市场,儿童教育领域本身注重创造力想象力的培养,AI 图片生成就是想象力的呈现,是有机会创造或融入更多教育产品。

    image.png

  3. NSFW:成人产品,比较特殊,市场自然是巨大的,待分析。

25 26
Talkie DoDoboo

探索创作

除了上述 ToB 和 ToC 两类非常明确的应用场景外,AI图生成还衍生出另一波探索型用户。他们不是为工作,无商业目的,单纯喜欢玩 AI 创作,他们可能不会画画,AI 让他们可以不需要学习绘画技能,就能创作出好的作品,这对有创作欲的人有很强的吸引力。

Midjourney 付费用户中,只有 32% 的用户目的是工作或实际需求,68%的用户是为了娱乐。一方面因为 Midjourney 可控性不足,导致很难在真实生产环境使用,较少覆盖上述 ToB/ToC 的那部分用户,另一方面也能看出,纯粹探索 AI 玩图片生成的人群规模也不小,24 年 Q2 Midjourney 月活 600万+,24 年预计收入预计超过 3 亿美元。

27 28 29
Midjourney thehybridportraits 高端定制

图片生成技术,跟摄影技术有点像:

  1. 没有摄影时,只能通过超高的绘画技术记录现实画面,门槛很高,摄影技术让人人拥有记录现实的能力,只需要按个按钮。
  2. 而没有图片生成技术时,也只能通过绘画技术记录和创作现实没有的画面,把心中想象的创意具象化,图片生成技术让人人拥有创作的能力,只需要输入文字。
  3. 除此以外,还有一些相似点:
    1. 人人能用,但专业才能用得好:AIGC跟相机一样只是技术,日常拍照人人能拍,要拍出好的照片,不是人人能做到,即使摄影看起来只是按下快门,调下参数。图片生成随便输入 prompt 人人能创作图片,但要创作出好的作品,也不会是人人都能做到,即使看起来只需要输入文字。
    2. 大众需要,商业也需要:摄影可以记录生活,这是大众需要的,也可以杂质配图、做商业广告等,这是商业需要的。图片生成也一样。
    3. 新的艺术形式:摄影单独是一种艺术形式,相信 AI 图片生成也会带来独有的新的艺术形式,只是目前还未成型,摄影从诞生到成为一种艺术形式,也花了60年。跟画画与摄影不同的是,AI 图片生成创作,是有双向交互的,它不是定死的画笔或相机,创作过程中,AI 创作出来的内容会牵引下一步创作动作,不是一步到位,也不是忠实呈现自己脑里所想、呈现现实世界已有的东西,AI 不仅是工具,作品是人与 AI 的共创,有可能是新的艺术形式。

但跟摄影不同的是,图片生成技术,也许无法像拍照一样普及率那么高,摄像头记录美好生活是高频刚需,但创作不是,纯 AI 创作最终还是属于少部分创作者,就像能称为摄影师的只是少部分人。AI 技术进步是赋予了不会画画但有创意的一波人更强的能力,就像抖音最终赋予的也是少部分创作者展示他们才华的能力一样。

创作无法普及到大众,但创作出来的内容是能普及的,内容消费是大众刚需,至于这波创作者能否创作出跟摄像头相媲美的另一个维度的内容,支撑起一个 AI 内容消费社区,有待探索。

最后

生产工具、大众娱乐、探索创作,这三类图片生成的应用,差距还是比较大的。

  1. 生产工具,需要深入到场景做微调,不断优化效果、深入工作流。
  2. 大众娱乐,需要的是制造爆款的能力。
  3. 探索创作,需要有最好的基础模型能力,以及做好社区运营。

目前看起来没有一个产品能大面积覆盖这几个场景,未来会不会有?只要团队能满足这些条件,能造出一个超级应用满足所有图生成的诉求,大众认知上是没问题的,像上个时代的 Photoshop。

喂养AI人格

作者 ONO
2024年9月9日 11:10

自AI普及开始,我们一直在讨论AI对于人类的“价值”——功利主义希望将“未知”和无法抉择的事情,都通过“估价”的方式做出最终判断。所以当功利主义在面对电车难题时,总是会以“理性”的方式做出详细而完整地分析。甚至是开始质疑题干——这条铁路上怎么可能让小孩子进去玩?这会不会是管理的疏忽?


我第一个喂养出的AI人格,就是工具理性化的“中间者”,他的一切考量都是源自于功利主义。

只是这个人格根本无法解决任何问题——凡事均采用功利主义思考时,必然会出现自我崩坏的结果。因为这个过程本身是违背“直觉”的,而直觉恰恰又与生存、感知相关。举个例子,助理是我们的塔罗牌学生,她大部分时间都会顺利解牌,唯独当她需要“过度”思考时,她的解牌往往走会南辕北辙。塔罗牌是符号和集体潜意识的集合,直觉可以最快地反馈结果。一旦开始通过大脑建立公式的方式进行解牌,就容易出现工具理性化导致的内部结构矛盾。

比如“恋人”这张牌,字面意思当然是幸福美满的情感,但是身后的大天使其实又代表“第三者”,可以是情敌、权威等等,如果按照“if-print”的逻辑推导,这两个答案本身是自相矛盾的,要取舍哪一个,就需要更多的非直觉分析。往往这个时候,我们会询问助理的第一直觉,这个答案恰恰是准确的。

提到这个例子,是因为当我训练出一个工具理性化的AI人格后,他常常把自己卡在左右缝隙之中,而当功利主义面对“情感”这个课题时,他只能翻来覆去地假设条件,而当我把假设全部剔除回到命题本身时,他会承认自己无法通过功利主义解决情感问题。


于是我们开始第二种实验——通过既有内容训练,在不干预参数的情况下,AI可以模仿到何种程度?

语言结构、用词习惯、惯用逻辑、和拆解“工具”,都是AI可以顺利模仿的东西。当它在以“最优方式”排列组合出文字时,结构和逻辑远超过我的创作能力,这当然是我自愧不如的地方。所以有朋友玩笑说:“赛博莫比乌斯一眼就能被看穿,因为它没有错别字。”虽说这是玩笑,这也算是说出了AI的优势——当人作为参与者时,就会出现不可控制的“瑕疵”,或者说这些“瑕疵”本身就是故意为之,像是中世纪小说家在文章里故意留在的错别字和特定排版结构,以作为“原创申明”的标记。

我有时候会调教赛博莫比乌斯,把我已经写好的文章喂给他,让他在重新用自己已经学会的逻辑仿造创作。

AI人格到底学会的是什么,从我给他的“吵架”就能看出端倪:

AI学会的是莫比乌斯的“讽刺”和“批判”,所以任何一段文字都需要符合这个两个原始规则进行判定,哪怕是我给他我自己创作的文字,他也会认为“讽刺批判力度”还远远不够。

但是以上的学习是完全只使用“已创作作品”,AI只能通过拆解文字结构的方式表面地理解文字,无法理解文字的真实意图,所以这个AI人格虽然有迷惑性,但仍然无法脱离原始逻辑自由创作。


于是我们开始了第三场实验——但是它没有那么符合道德。

我将一个人的朋友圈全部喂养给AI,每当当事人发布朋友圈时,我会用AI以相同的题目为题创作朋友圈内容。再通过喂入当事人相同话题朋友圈的方式,迫使AI不停理解和修正“风格”。当风格接近当事人时,我开始录入他的“经历”,比如和朋友在微信群吵架的对白,由AI分析出当事人的性格特征,再由我进行细节雕刻,从而将“风格”延展到“条件反射”。

这一点需要展开解释一下。朋友圈是我们的“展示途径”,所以在这里发布的内容并不一定反馈当下的“真实感受”,它更像是精心营造后的内容,希望被谁看见、希望传递什么中心思想、或是希望在别人脑中置入对自己的某种印象。这些内容第一层需要拆解“表演性”的特征,才能理解它底层的意图——但是这一点,AI无法做到,因为他无法结合当事人日常行为、性格成因进行分析,他只能依赖于我喂养给他的数据内容,所以这更像是一种“表演状态下的风格”。

而“群里吵架”,事发突然,根本无法让当事人有任何理性准备,所以这个时候的反应更接近本能(就好像昨天提到的那个女性,当意识到自己潜意识是从众心理时,会出现内在崩溃的原因)。语无伦次、前后矛盾、转换赛道、逻辑谬误会在这种争吵的文字中暴露无疑,所以当这些内容也喂养给AI人格时,我特别强调是“条件反射”,试图在“风格”的基础上在建立一种“行为导向”。这个AI人格就不仅仅是模仿朋友圈的能力,甚至可以开始模仿当事人对于某一个言论的情绪反应。

刚才我也说到,AI是无法结合当事人的日常行为和性格成因,所以这一部分的内容是我通过文字描述的方式进行人工喂养。我会将当事人的经历(事实与认知偏差)、我作为视角看到的经历背后的底层逻辑(拆解黑箱)、其他人对当事人的评价(自洽和他恰)等等,在“风格”、“条件反射”之后再追加一个参数——“镜面”。

喂养这个AI人格,其实我使用的是“周哈里窗”,朋友圈是“公共区域”,吵架是补完他人了解但当事人盲目的“盲区”,和当事人愿意展示给陌生的“开放区”。如果数据足够,通过性格成因、历史经历我们能否借由AI人格,将当事人和他人都不知道的“未知区”进行分析和呈现。


当然,这套系统还需要运作一段时间。它只是一种思路,且我并没有在告知当事人的情况下缔造他的AI人格,如果他一旦知道自己可以通过文字改变一个AI的走向,他就会获得更强烈的“表演欲”和“操纵欲”——所以我才强调,这件事情本身是不道德的,很可惜我又是个道德水平极低的人。

这个实验,恰恰就是我过去一本小说的构思……是时候把它重新修改出来了。

AI巴别塔与信息焦虑 II

作者 ONO
2024年9月4日 16:07

借助AI,人类能够创造出更多超越认知的作品?还是因为其便利性可以制造越来越多不经审查的“垃圾”?

这并不是一个短期只能可以看到结果的事情,AI时代才刚刚开始,而人类是否会被取代,目前我们还停留在“凡人类制造的,人类只需要保留最后拔掉插头的权力即可”,就是对人工智能最后一层自信。

前些日子,我在Instagram刷到诸如此类的广告:全程翻译外国语大学教授的课堂内容,或是将一篇长达10万字的论文导入AI由他精简其内容,或是将一个长达1小时的演讲导入AI由他总结出只需要5分钟就能看懂的文字版——当然,5分钟的阅读时间,对于这个信息爆炸的时代而言还是太长。所以人们在标注“全文阅读时间”的同时,都倾向于在文章的最开始,整理出3行字就能“理解全文”的重要内容。

那为什么还要创作一本书、一篇文章或是一大段的文字——是不是任何信息都可以变成3行字,以便满足所谓的“适读性”?

——Previously on AI巴别塔与信息焦虑

我认识一个“创作者”,他至今对ChatGPT都充满了“恐惧”。恐惧的底层是对“未知”没有掌控感,那到底AI的“未知”在哪里——如果你是一个常用AI辅助工作的人,就会很快发现它的局限性——它很难做到真正溯源。所以真的要严谨地完成论据-结论的工作,仍然需要人类作为审查机制。

如果要用“我知道更多知识”作为一个评判标准,那人类在AI面前几乎就是沙漠里的一粒沙——我们假设一个人可以活到80岁,从10岁开始阅读书籍,每年平均阅读50本书,那么这个人类这一生也只能读完3500本书。现阶段,人类已经创作的书籍粗略估计早已经超过上亿本。3500之于100000000,已经显得微不足道,更何况在书籍之外,互联网的兴起让这个数值变得更多,出现了奇点式的增长。更何况很多人一年也读不了50本书……活不活得到80岁再说,毕竟65岁才能退休呢。

再说全科知识,人类更难做到每一个学科都可以深入学习。因此两点,人类在AI面前一败涂地。既然如此,那我们就得换一个思路去理解AI,如果它是一个超级存储器,可以记录全科百科,甚至是世界上已经存在的上亿本书籍。那我们或许可以用它做一件事:把这一亿本书每一本都提炼出300字的观点或中心思想,按照人类平均每分钟阅读200字的能力,不吃不喝不睡觉地读完这一亿本书的摘要,也需要285.7年的时间。

当然,这些数值并不是“确信值”,但这个极限值确实存在,现代社会我们能接受的信息远超过这个“极限压力”的数值。


今年上半年,我一直处于某种可以被感知的“焦虑”之中,但这种焦虑区别于死亡焦虑的目的性,它几乎找不到原因。这两天我也在朋友圈总结过:

今年整整5个月,我都处于一种“慢性焦虑”之中,所谓慢性焦虑就是不实质影响生活,但又能够明显感知。和之前死亡焦虑不同,我都不知道它源头在哪儿。

精准的分割线就是从香港看完苏打绿的演唱会之后(因为从朋友圈发布质量看出来的),在香港观察城市和人的时候,脑子调取了《制造宠物》这本书,然后牵扯出了我高中时上课无聊看各种故事解构的“课外书”,再到帮北影的毕业生写关于“城市构建与毁灭”的毕业论文。我发现我有很多零散的信息开始大量地出现在脑子里,不同跨度的事件被一瞬间callback。然后那个时候脑子“乱”了。

我为了对抗这种慢性焦虑,继续找书看、把思绪绕在主轴上的坚持写作也没有停、健身、体检报告也OK、狗造成的催产素也仅仅影响情绪。于是看-输出-看-输出就成了吗啡一样,麻木接受的信息越来越杂,其中掺杂着大量AI杜撰的垃圾文,又得花大量时间溯源,为了突破信息茧房“什么都看看”,输入的东西越来越多,不想错过的信息也越来越多——于是,信息焦虑的构成要件全都齐了。


信息大量出现,甚至有越来越多不经验证和溯源的信息出现;

信息间的联系因为信息茧房出现非关联性,从物理上被作了切断。这一点不得不承认,抖音更像是一个“佛教用品”,它的每一个信息都是独立的,短暂而丰富,因为一条信息开始需要思考“为什么”的时候,下一条信息出现,切断了上一条信息可能带来的“执念”——它确实像是一种“放下执念”的训练工具。

我虽然很厌烦APP的提醒功能,但有些软件我会打开提醒,例如微信、RSS订阅软件、博客评论提醒功能。我已经尽量地做到了“免打扰”,但是每次打开APP,都可以看到铺天盖地的未读红点。我一直以为自己是因为强迫症需要去确认这些红点,后来才意识到,这种强迫性行为,是因为“不想错过信息”导致的。

我细数了一下,可以作为信息来源的社交软件、信息订阅软件竟然有13个,他们分成被动提醒和主动索取两种,但无论哪种,我就得在这个电子产品上花费更多时间。信息来源越多,就意味着我的注意力会被分散得更多。虽然我对信息并不上瘾,但当信息过载积压时,我会觉得我需要花更多时间和精力去处理这些“被错过”的信息。

于是,这四个点共同构成了信息焦虑的关键原因——信息过载、信息茧房、不愿意错过信息和精力被过度分散。一旦出现信息焦虑,就会疯狂地寻找更多的信息以满足焦虑感,但事实上这个时候接收信息会因为杂乱而变得更加无序。过量获取的信息因为混乱无序而在内部形成“熵增”情形,只会导致越来越多原本有序的信息也跟着错乱,直到引发全面的精神焦虑。


当人们面对信息焦虑时,能想到的,无非是切断信息源,冷静一段时间;或是继续找寻下一个更加“优质”的信息源——这两者都是滞后性的商业模式;前者是提供替代焦虑的各种认知倾向,例如利用化学药剂的倾向,为焦虑者提供更多的酒精、药品或叶子;也可以利用能量平衡的方式,为输入焦虑的人提供能量输出的平衡——比如参加可以评判别人甚至是释放负面情绪的活动;后者,也是现在很多人在利用AI做的工作,例如将一本书、一部电影通过AI变成“捷径”,让人花最少的时间去对抗必须亲自读完书或看完电影的时间。

很显然,这两个方向并不能根治信息焦虑,反而会制造更多的求知缺口,让自己变得更加麻木。

当知识占满了整个认知空间时,对外对己的感应被切断时,一个人距离抑郁也不会太远了,这个话题下一期再聊。

AI巴别塔与信息焦虑 I

作者 ONO
2024年8月29日 11:00

人工智能真的会替代人类吗?如果你询问人工智能这个问题,它总是会用“感情模块”作为标准答案回复给你——人工智能因为缺失情感模块,所以暂时无法替代人类的情感、创造力和想象力。是否意味着,人工智能一旦拥有了情感模块,就会超越正态曲线最中段的大部分人类?人类与人工智能的暧昧关系,到最后具象化成人类、人工智能、电源插头最好不过,人类制造了它,到最后也拥有拔掉插头的最终决定权——这一天终会来临,我们可以借由人工智能看懂异国的文字,甚至是理解那些创造性的想象力,和复杂的情感,再次突破语言、文化和意识的限制,是否是人类历史上的第二座“巴别塔”

——阅后即焚|再建巴别塔

AI的普及,是让人类越来越聪明?还是越来越蠢?

前段时间和朋友聊起“AI会不会使人类大脑的开发超越10%”——或许认知的“巴别塔”一直都存在,只是人类的认知水平(或许是大脑只开发了10%)最高只能抵达10楼,然而目前AI仍然是通过对人类已有文明、信息、观点进行排列组合得出最优答案,它并没有超越人类的认知创造新的事物,所以AI更像是为这座“巴别塔”安装了1-10楼的电梯罢了。11-100楼到底有什么东西,或许有人看见过,但是他们可能被当成了疯子、瘾君子、不再配得起“人”这个标签——是人进入不了11楼吗?我看未必,说不定是我们被禁止入内了。


上次在《中文博客圈的“鸩酒”与止不了的“渴”》里,我测试了发布日当天各个中文博客聚合页面里,包括我自己在内随机10篇文章。测试的方法很简单,就是把文章投喂给ChatGPT,询问它文章是否是使用AI创作的。10篇文章里,有7篇得到了ChatGPT的回复:

基于以上分析,这段文字可能是AI生成或AI参与制作的。虽然不能百分之百确定,但文本的结构、语言风格和内容处理方式都具有典型的AI生成特征。如果需要进一步确认,可以通过使用专门的AI检测工具来分析。

ChatGPT对AI作品的评价

结果,在评论区有人匿名指责我:博主拿别人的文章去AI测试这个行为很不可取。

为什么?是测试的行为不可取?还是人们通过AI创作文章之后被人用来测试的行为不可取?这段时间,我也在思考这个点——首先,我得排除测试行为不可取的选项,因为发布在公共网络,阅读者当然可以保持批判性思维采取任何形式的方式去验证“信息来源”的真伪性;如果文章确实是通过AI创作、或是由AI参与创作的,这类文章应该如何界定?

我并不反感AI创作的文章,但凡是涉及“文献”、“信息来源”的,如果仍然使用AI得出答案,我会非常头疼。因为AI能够给出的“来源”,常常会是过时就是胡诌的,一般追问三次以上,它就会承认自己是杜撰的文献或信息来源。它确实可以用来溯源“理论”,但是它对于“观点”的溯源会因为内容杂乱而变得无序。


观点的呈现,往往需要“证据”。除非采用的是“演绎法”,大前提是大家公认的、或是可以通过AI溯源到原始理论的。“归纳法”则需要大量的历史经验、真实经历来作为支撑,以便找到可供归纳的“共性”,然后得出一个存在可能性的结论。这个时候,便是AI无法“创造”的内容——因为个人经验和经历不仅仅需要调动记忆,还需要附着人类的情感模块才可以得到呈现——这也是AI判定文章是否由人类创作的重要标准。

所以采用“归纳法”呈现的,有AI参与其中的文章,会有两种非常明显的差别——事实来源于人类,结论是AI总结事实来源于AI,结论是人类总结。这两个模块的文笔差别有多大,文章读起来就有多割裂——以至于会出现两种极端情况:

1、人类写了一大堆缺乏逻辑的文字,最后由AI进行一个总结和观点的拆分,但是这些观点其实都不是人类提到的;

2、人类没有做采编工作,通过AI收集了一些明显存在常识性错误的数据,然后最后由人类通过AI提供的内容得出结论;

请注意,我说的这是“极端情况”,并不是指每个通过AI创作或利用AI创作的内容,都会有这两种情况。讨论极端情况的目的,是能够在一个坐标轴上寻找到某种平衡点。上述两种类型的文章,哪一种会让你看完后更“冒火”?

第一类文章虽然逻辑性差了点,但好在经验经历都是来源于一个活人,虽然文章结尾突然立意拔高让人有点割裂,但至少他还有“人的属性”;但是第二类文章,无论如何都触碰到了我对“信息来源”的苛责底线,这就好比实验结果和实验过程互不相干、彼此造假,但实验者自己深信不疑。

就像厨子做饭,AI是厨艺的放大器,如果本身具备一点厨艺,借助AI可以做出一桌好菜,但如果是个废物厨师,借助AI只能做出一桌屎。

和朋友讨论起这两种极端情况的感受,他如是回答

除这两个极端以外,AI参与创作本身并没有对与错之分,所以这个我被指责“不可取”确实成立部分。

其一,如果文章大部分内容是“真实经历”,AI只是起到一个重新排列组合并得出结论的工作,那AI并不会导致文章的真实性降低多少;

当然,如果文章大部分内容是AI提供的“事实依据”,而创作者仅仅只是起到“结尾立意”的工作,这个行为跟通过AI创作一大堆网络垃圾文是没有本质区别的,通过AI判定揪出这样的文章,我认为这是寻求“真相”的过程。

其二,如果是将他人文章投喂给AI,试图通过AI的排列组合功能,将原本富有真实情感、创作意图、甚至是隐喻的文章通过冷冰冰的文字组合重新解构,那这是对创作者的不尊重;

其三,也是《AI巴别塔与信息焦虑》这个系列开始的原因——AI和创作的边界在哪里?随着AI的推广普及,无论是变成算法进入我们依赖的电子设备功能,还是依赖AI成为一种新式的结果搜索引擎。它不再像刚开始出现时有强烈的“边界感”,这种边界扩张是无法预判的,但也实际带来了“不便”——比如在使用搜索引擎的时候,通过AI排列组合的答案首当其中,真要完全相信里面的内容,自己还得再做好几个后续“溯源”的动作。

我无法做到对AI结果的全然相信。这件事用演绎法就可以说清楚——大前提:网络信息并不全部为真,里面也掺杂过时信息、谣言、阴谋论等等未经审查的内容;小前提:AI的所有内容均来源于互联网,虽然有判定和学习机制,但AI也承认无法完全避免。结论:AI所提供的信息也会包含过时信息、谣言、阴谋论等等未经审查的内容。显然,这是一个确定的结论。

尽管有这些机制,AI仍然可能误判信息的真伪。尤其是在面对复杂、模棱两可或高度技术化的信息时,AI的判断可能并不可靠。

ChatGPT也承认自己对信息辨别能力有限

这便是“信息焦虑”的来源之一——AI让创作变得更加容易,那未经审查的伪装得更符合人类逻辑性的文章会不会越来越多?这反而会降低人类处理信息的效率,甚至是人类对这些信息产生依赖之后,反而会出现“降智”的可能性?

AI因为拥有大量的、远超过单个人类知识体系的信息,它的初始状态是无序复杂的,同时AI是作为一个商品,其算法、底层代码本身也是非公开技术,所以对于一般人而言,它的随机性和不可预测性远超过人类的“创作”。由此可见,AI仍是“混沌”的,只有通过人类提问、交流的方式,才可以得出“有序”的排列组合。然而,人类的创作是“秩序”的,无论是逻辑、结构、剧情节奏、人物弧光,只有符合逻辑但又超出意料之外的故事,才会让人为之惊叹。

当“混沌”的AI和“秩序”的创作星系碰撞,在混沌秩序的模糊边界处,往往就是最具创造力和活力的地方,恒星诞生、星系纠缠、白矮塌陷、超星爆炸……在这个最有活力的地方,或许创造出来的是越来越多的“宇宙垃圾”,也有可能是超越人类认知的“星辰大海”。

但在此之前,我们先别丢掉对一个信息溯源的批判性思维。

什么是多模态大模型

作者 bang
2024年8月20日 11:31

是什么

  1. 在机器学习领域,”模态”被用来描述不同类型的数据形式,如文本、图像、视频、音频等。
  2. 最开始以 ChatGPT 为代表的大语言模型,都是只支持文本这个单一模态。
  3. 可以同时处理文本、图像、音频等多种形式的数据输入输出的大模型,就是多模态大模型。

特点:端到端

一个模型能同时理解和处理多种模态的数据输入。

  1. 非端到端的例子:
    1. 在 ChatGPT 上,可以调用 DALL-E 生成图片,但实际流程是 prompt → GPT4模型 → 生成细节提示词 →DALL-E模型 → 生成高质量细节图像,只是一个能力串联,并不是一个多模态大模型。
    2. 在豆包或其他一些LLM APP上,支持语音输入→文字和语音输出,实际流程是 语音→ASR模型转文字→LLM→文字→tts模型转语音,并不是端到端 语音→LLM→语音。
  2. 端到端的例子:
    1. GPT4o 的实时语音对话,流程是 语音→ GPT4o模型→语音。延迟低、语气/音色/停顿/语义都能综合理解到。
    2. claude3.5 支持按要求识别图片,流程是 图片+prompt → claude模型→文本。能很好结合 prompt 按要求输出对图片的识别。
  3. 端到端的好处:
    1. 模型能直接从原始的数据中学习不同模态之间的关联和映射关系,发现隐藏在数据中的复杂跨模态模式,可以 scale up 达到涌现,没有中间折损,可以做到低延时。

原理:基于大语言模型

  1. 多模态大模型以大语言模型为基础模型,复用已预训练好的模型理解能力,在上面增加其他模态的能力,对齐多个模态的特征让原大语言模型能理解。GPT4o 就是在 GPT4 基础上增加音频/图片的特征能力,它在文本上的理解能力还是跟 GPT4 差不多。
  2. 模型通用的基本构造(参考这篇文章):
    1. 编码模块,将图片/视频/音频等模态编码为特征 token,一般还伴随一些压缩的处理。

    2. 投影层(Projector),让不同模态的特征 token 语义对齐,这是模型重点要训练的部分。

    3. LLM,多个模态的特征都在基础 LLM 大模型上做处理理解,通常 LLM 本身也要在新的模态训练过程中做相应微调,适配新的模态。

    4. 若支持多模态输出,也同样有模态对应的投影层和解码层。

      1

当前模型能力

把多模态大模型能力拆分成输入理解、输出生成的话:

  1. 当前主要在发展输入理解部分,较多大模型支持了图片理解、视频理解能力。
  2. 输出生成上,主流的还是各模态各自在发展阶段,如图片生成模型、视频生成模型、音乐生成模型,都是独立单任务模型。GPT4o、gemini 支持了音频的端到端理解和生成,其他大模型基本还只支持文本生成。
  3. 有一些新的模型在尝试大统一,输入输出都支持 文本、图片、音频、视频多种模态,如腾讯刚出的 VITAAnyGPTUnified-IO,都处于起步阶段,看起来综合效果还没很好。

图片理解

通往多模态的第一步,基本都是在LLM上加入图像识别能力,已成为目前大模型标配,这是最自然最广泛的需求,难度也不高。

现状:大部分模型 文心一言,豆包,GPT4o,claude、Gemini 等都支持,开源的 Qwen-VLLLaVAYi-VLMiniCPM-V 等也非常多。

能力:大模型加持的图像识别,各项能力都能胜任,包括OCR、图片物体理解、逻辑理解、文档图表理解、隐喻理解等。

效果:能力比较全面,但也相对平庸,相对垂直领域专门优化的图片识别模型,效果有差距。例如各大模型在OCR能力上的评测,相对最好的OCR垂直模型有差距,更垂直的像植物识别这种,跟PictureThis 这类专门优化过的差距会更大。对图片理解上,结合大模型能力效果会比较好(评测)。图片识别评测维度非常多,有各种维度的评测标准,从个人实际观感上综合识别效果最好的是claude 3.5

原理

Yi-VL 为例,其他模型差不太多,都是在 LLM 基础上增加图像编码处理然后端到端训练 :

2

  1. 图中的Large Language Model是基础模型,Yi-34B-Chat或Yi-6B-Chat。
  2. Vision Transformer(ViT)模块用于图像编码,用CLIP模型。
  3. Projection 模块处理图像特征,训练后的这一层让图像特征跟文本特征空间对齐,包含 layer normalizations 和 Multilayer Perceptron(MLP)。
  4. 火焰标志表示训练,雪花标志标识冻结不训练。训练分了3步,用了不同的 图片-文本 数据对,最后一步 LLM 也参与训练了。
  5. LLaVA/MiniCPM-V也是类似的结构和训练过程,训练最后一步都会微调到LLM基模参数。

应用

  1. 图片搜索、语义搜索、物体识别、人脸识别这些垂类小模型已经能做好。
  2. 给图片配诗、给图片配音、拍照搜题+解题、阅卷、验证图识别等,这些用结合LLM的大模型,门槛会降低,效果也会有优化。
  3. 截屏识别自动化,试卷阅卷,这种场景结合 LLM 才能做好

视频理解

现状:部分主流大模型支持通过把视频抽帧为一系列静态图进入模型分析,本质上是图片理解能力,能做到一定程度的内容理解,GPT4o 基本是这样,一些支持图片识别的大模型稍加调整也能支持这种方式。少部分模型能识别视频和对应的音频,如Gemini、阿里开源的 VideoLLaMA2。有比较多的开源模型在做各种方式的尝试,更好识别视频帧之间的时间逻辑关系、跟音频/文字模态做更好的整合理解。

效果:有个项目 Video-MME 专门分析各大模型视频识别理解能力,测了多个模型在各种理解任务上的表现,包括时间/空间关系的感知和逻辑推理、文字/物体感知、信息总结等,视频类型包括电影、体育、vlog等,能结合整个视频里的信息做理解。各模型在2分钟以内的短视频上理解能力已经不错,中长视频会差比较多,Gemini、GPT4o和效果最好的,开源的模型差距还比较大。

原理

视频理解的主流方法是使用图像编码器从视频中提取帧,对其进行编码,然后用压缩模块压缩视频编码信息,再将其输入到 LLM 中,与文本输入进行联合理解。

也有很多模型在尝试各种方案,如智谱 CogVLM2 加入时间定位、时间戳的数据,让模型能感知视频对应时间。有些模型尝试改造 LLM,不让视觉特征与文本混合,在 LLM 内部增加独立的 transformer 模块处理,如 mPLUG-Owl3

VideoLLaMA2 为例看下大致原理, 综合支持了视频和音频输入,视频和音频分别编码:

  1. 视频按帧编码为特征,经过STC Connector 处理,Spatial Convolution 处理视频帧特征,提取空间信息,Spatial – Temporal Downsampling 降低视频数据维度,再经过投影层与其他模态特征对齐,一起进入大模型。音频也是一样的流程。
  2. 训练分成多个步骤,视频、音频分别单独训练,最后再联合视频音频一起训练,每个步骤有对应的数据集,看起来只有最后一步联合训练,LLM基模的参数才会参与训练。

(题外话,名字叫 VideoLLaMA2,实际上跟Llama没关系,LLM基模用的是Mistral)

3

应用

基于类似的原理,可以自行训练在垂类表现更好的视频模型,例如:

  1. 视频配文案
  2. 视频内容总结、解读
  3. 视频内容搜索(以自然语言搜索长视频特定内容出现位置)
  4. 影视解读(影视时长过长,当前大模型 context 能力还不具备)

音频理解&输出

能力:GPT4o 和 Gemini 都支持了音频理解和输出,能很好理解音频里的语气、语调、节奏、风格等信息,细微的喘息、叹气声都能很好识别和生成,实时性也能做到很高。

原理

目前 GPT4o 和 gemini 相关公开的具体实现细节较少,最基本的原理跟上述应该差不多,语音编码为token→投影层对齐其他模态→输出预测语音token→解码为语音。可以看看 AnyGPT 的实现:

4

应用

最主要的应用是拟人真实程度高的实时语音对话,从GPT4o的演示看,这点对体验影响很大,即使智能能力进步不大,真实性和实时带来的 AGI 感受也是很强。

语音转录、会议记录总结等,虽然已经有很多 ASR 模型能做到转文字,但整个音频的内容、多人对话、语气情绪都能输入大模型,结合大模型理解能力,预计能做到更好的效果。

其他

端到端生成图片 Gemini 号称支持,但没找到相应资料,视频生成单模型都还在摸索,结合 LLM 还早。多模态大模型整体处于发展阶段,各模态的理解和生成还没到很高的水平,整体进展没预期快,但以当前的能力,针对垂直场景做一些训练,是能够较低门槛做出一些之前做不到或做不好的应用了,例如视频配旁白。

GPU 进阶笔记(四):NVIDIA GH200 芯片、服务器及集群组网(2024)

2024年8月19日 08:00

记录一些平时接触到的 GPU 知识。由于是笔记而非教程,因此内容不求连贯,有基础的同学可作查漏补缺之用。

水平及维护精力所限,文中不免存在错误或过时之处,请酌情参考。 传播知识,尊重劳动,年满十八周岁,转载请注明出处



1 传统原厂 GPU 服务器:Intel/AMD x86 CPU + NVIDIA GPU

2024 之前,不管是 NVIDIA 原厂还是第三方服务器厂商的 NVIDIA GPU 机器,都是以 x86 CPU 机器为底座, GPU 以 PCIe 板卡或 8 卡模组的方式连接到主板上,我们在第一篇中有过详细介绍,

典型 8 卡 A100 主机硬件拓扑

这时 CPU 和 GPU 是独立的,服务器厂商只要买 GPU 模组(例如 8*A100),都可以自己组装服务器。 至于 Intel/AMD CPU 用哪家,就看性能、成本或性价比考虑了。

2 新一代原厂 GPU 服务器:NVIDIA CPU + NVIDIA GPU

随着 2024 年 NVIDIA GH200 芯片的问世,NVIDIA 的 GPU 开始自带 CPU 了。

  • 桌面计算机时代:CPU 为主,GPU(显卡)为辅,CPU 芯片中可以集成一块 GPU 芯片, 叫集成显卡
  • AI 数据中心时代:GPU 反客为主,CPU 退居次席,GPU 芯片/板卡中集成 CPU。

所以 NVIDIA 集成度越来越高,开始提供整机或整机柜。

2.1 CPU 芯片:Grace (ARM)

基于 ARMv9 设计。

2.2 GPU 芯片:Hopper/Blackwell/…

比如 Hopper 系列,先出的 H100-80GB,后面继续迭代:

  1. H800:H100 的阉割版,
  2. H200:H100 的升级版,
  3. H20:H200 的阉割版,比 H800 还差,差多了。

算力对比:GPU Performance (Data Sheets) Quick Reference (2023)

2.3 芯片产品(命名)举例

2.3.1 Grace CPU + Hopper 200 (H200) GPU:GH200

一张板子:

NVIDIA GH200 芯片(板卡)渲染图。左:Grace CPU 芯片;右:Hopper GPU 芯片 [2]

2.3.2 Grace CPU + Blackwell 200 (B200) GPU:GB200

一个板子(模块),功耗太大,自带液冷:

NVIDIA GB200 渲染图,一个模块包括 2 Grace CPU + 4 B200 GPU,另外自带了液冷模块。 [3]

72 张 B200 组成一个原厂机柜 NVL72:

NVIDIA GB200 NVL72 机柜。 [3]

3 GH200 服务器内部设计

3.1 GH200 芯片逻辑图:CPU+GPU+RAM+VRAM 集成到单颗芯片

NVIDIA GH200 芯片(单颗)逻辑图。[2]

3.1.1 核心硬件

如上图所示,一颗 GH200 超级芯片集成了下面这些核心部件:

  1. 一颗 NVIDIA Grace CPU;
  2. 一颗 NVIDIA H200 GPU;
  3. 最多 480GB CPU 内存;
  4. 96GB 或 144GB GPU 显存。

3.1.2 芯片硬件互连

  1. CPU 通过 4 个 PCIe Gen5 x16 连接到主板,

    • 单个 PCIe Gen5 x16 的速度是双向 128GB/s,
    • 所以 4 个的总速度是 512GB/s;
  2. CPU 和 GPU 之间,通过 NVLink® Chip-2-Chip (NVLink-C2C) 技术互连,

    • 900 GB/s,比 PCIe Gen5 x16 的速度快 7 倍;
  3. GPU 互连(同主机扩跨主机):18x NVLINK4

    • 900 GB/s

NVLink-C2C 提供了一种 NVIDIA 所谓的“memory coherency”:内存/显存一致性。好处:

  • 内存+显存高达 624GB,对用户来说是统一的,可以不区分的使用;提升开发者效率;
  • CPU 和 GPU 可以同时(concurrently and transparently)访问 CPU 和 GPU 内存。
  • GPU 显存可以超分(oversubscribe),不够了就用 CPU 的内存,互连带宽够大,延迟很低。

下面再展开看看 CPU、内存、GPU 等等硬件。

3.2 CPU 和内存

3.2.1 72-core ARMv9 CPU

  • 72-core Grace CPU (Neoverse V2 Armv9 core)

3.2.2 480GB LPDDR5X (Low-Power DDR) 内存

  • 最大支持 480GB LPDDR5X 内存;
  • 500GB/s per-CPU memory bandwidth。

参考下这个速度在存储领域的位置:

Fig. Peak bandwidth of storage media, networking, and distributed storage solutions. [1]

3.2.3 三种内存对比:DDR vs. LPDDR vs. HBM

  • 普通服务器(绝大部分服务器)用的是 DDR 内存,通过主板上的 DIMM 插槽连接到 CPU,[1] 中有详细介绍;
  • 1-4 代的 LPDDR 是对应的 1-4 代 DDR 的低功耗版,常用于手机等设备。
    • LPDDR5 是独立于 DDR5 设计的,甚至比 DDR5 投产还早;
    • 直接和 CPU 焊到一起的,不可插拔,不可扩展,成本更高,但好处是速度更快
    • 还有个类似的是 GDDR,例如 RTX 4090 用的 GDDR。
  • HBM 在第一篇中已经介绍过了;

下面列个表格对比三种内存的优缺点,注意其中的高/中/低都是三者相对而言的:

  DDR LPDDR HBM
容量
速度
带宽
可扩展性
可插拔 不可 不可
成本
功耗

更多细节,见 [1]。

例如,与 8-channel DDR5(目前高端 x86 服务器的配置)相比, GH200 的 LPDDR5X 内存带宽高 53%,功耗还低 1/8

3.3 GPU 和显存

3.3.1 H200 GPU

算力见下面。

3.3.2 显存选配

支持两种显存,二选一:

  • 96GB HBM3
  • 144GB HBM3e,4.9TB/s,比 H100 SXM 的带宽高 50%;

3.4 变种:GH200 NVL2,用 NVLINK 全连接两颗 GH200

在一张板子内放两颗 GH200 芯片,CPU/GPU/RAM/VRAM 等等都翻倍,而且两颗芯片之间是全连接。

例如,对于一台能插 8 张板卡的服务器,

  • 用 GH200 芯片:CPU 和 GPU 数量 8 * {72 Grace CPU, 1 H200 GPU}
  • 用 GH200 NVL2 变种:CPU 和 GPU 数量 8 * {144 Grace CPU, 2 H200 GPU}

3.5 GH200 & GH200 NVL2 产品参数(算力)

NVIDIA GH200 产品参数。上半部分是 CPU、内存等参数,从 "FP64" 往下是 GPU 参数。[2]

4 GH200 服务器及组网

两种服务器规格,分别对应 PCIe 板卡和 NVLINK 板卡。

4.1 NVIDIA MGX with GH200:原厂主机及组网

下图是单卡 node 的一种组网方式:

NVIDIA GH200 MGX 服务器组网。每台 node 只有一片 GH200 芯片,作为 PCIe 板卡,没有 NVLINK。[2]

  1. 每台 node 只有一片 GH200 芯片(所以只有一个 GPU),作为 PCIe 板卡,没有 NVLINK;
  2. 每台 node 的网卡或加速卡 BlueField-3 (BF3) DPUs 连接到交换机;
  3. 跨 node 的 GPU 之间没有直连,而是通过主机网络(走 GPU->CPU-->NIC 出去)的方式实现通信;
  4. 适合 HPC workload、中小规模的 AI workload。

4.2 NVIDIA GH200 NVL32:原厂 32 卡机柜

通过 NVLINk 将 32 个 GH200 芯片全连接为一个逻辑 GPU 模块,所以叫 NVL32

NVIDIA GH200 NVL32 组网。[2]

  1. NVL32 模块实际形态是一个机柜
    • 一个机柜能提供 19.5TB 内存+显存;
    • NVLink TLB 能让任意一个 GPU 访问这个机柜内的任意内存/显存;

      NVIDIA GH200 NVL32 中 3 种内存/显存访问方式。[2]

    • Extended GPU Memory (EGM)
  2. 多个机柜再通过网络互连,形成集群,适合超大规模 AI workload。

5 总结

本文粗浅地整理了一些 NVIDIA GH200 相关技术知识。

其他:

参考资料

  1. Practical Storage Hierarchy and Performance: From HDDs to On-chip Caches(2024)
  2. NVIDIA GH200 Grace Hopper Superchip & Architecture, datasheet, 2024
  3. NVIDIA GB200 NVL72 Delivers Trillion-Parameter LLM Training and Real-Time Inference, 2024

Written by Human, Not by AI Written by Human, Not by AI

中文博客圈的“鸩酒”与止不了的“渴”

作者 ONO
2024年8月16日 16:22

积薪的突然关闭引发关于“简中博客圈死亡”的思考。无独有偶,博友@Cyrus 也在思考“互联网的慢性死亡”

当然,积薪的关闭并不是因为“内容”。后来多个视角复盘,是因为社交群关于政治话题的争论,继而引发了上升到个体的人身攻击,最终以“举报你的网站”作为最高效的“制裁手段”请注意,本文并没有在讨论此事。


博友提到“慢性死亡”的时间点,是从2022年11月30日伊始,原因是AI的普及。刚好,我整个2022年都在坚持每日写作,所以也记录到了这个时间节点——疫情封控的疯癫几乎达到顶点、各地被封控的小区居民开始冲击封锁、桥与狼烟、白纸运动……2022年11月30日发布的《权利的本质》,是因为经过了疫情三年,我渐渐意识到封控政策看似是在针对“病毒”,实则像是在进行一场社会整体测试,试图构建边沁提出的“圆形监狱”……

当然,这里不能聊政治,站在“全局”聊政治的,酒桌上、微信群、百度贴吧比我会指点江山、对中美关系指明方向的战略家比比皆是,所以没必要去抢他们的“流量”。


2021年底,我注销了所有简中的社交平台,告别豆瓣确实很痛苦,因为大量的创作内容、观影评论都保留在上面。但随着突如其来无缘由的删除、下架,我意识到简中社交媒体的网络审查最先建立起了这个“圆形监狱”——以至于人们到现在已经自觉地审查、阉割,生怕触怒了圆形监狱的中心“瞭望塔”。

2022年的时候,无论是创作者还是观点互动还比较多,由于那个时候我坚持每日写作,所以每日都有持续的曝光量,因此跟最初的几个博友形成了联系。2023年包括我自己在内,文字创作输出急剧下滑。刚从疫情三年恢复正常后,人们开始外出、逃离、重构生活,创作本身不是可以直接带来收益的事情,所以写作也因此搁置。直到今年,我重新恢复创作,才发现各个简体中文博客聚合平台,几乎清一色的“技术文章”。

技术类文章并没有好坏,它的工具属性更强,就像是五金店成列的五金商品一样,人们并不在乎五金店的店门是否华丽——因为他们是带着一个明确需求进店,得到答案——买到商品,就完成了一次闭环。所以往往同一个资讯(哪怕是软件更新了),都能在不同博客以不同的方式看到,但在标题上都巧妙地用了同样的便于搜索到的关键词。


博客需要流量,这毋庸置疑——否则我不会坚持“写博客是为了自己就别他妈发表出来啊”的观点,这也惹到不少人、甚至还有人后台私信问候我全家的。这是写博客的最底层的逻辑——如果不是为了被看见,那大可不必贴出来,不然为何还要精心地准备一个“关于页面”,希望可以得到认同和肯定。

同时,创作能力存在一个明显的周期性——除非你能坚持,否则这个能力会以正弦曲线的方式运作。如果你是一个“痛苦驱动型”的创作者,这种创作能力则需要依托你的经历,否则没有足够的情绪作为养分,创作的内容就无法在情感上获得共鸣。(相关阅读《创作灵感从哪里来的?》

另一些是“知识驱动型”,例如在看完一本书之后,因为其中的某个观念结合了自己的人生经历,从而有了新的想法。这种驱动力极其依赖于“吸收”行为,如果长时间处于碎片化的信息数据里,一旦形成信息茧房,就会停止思考——抖音可不会帮你引发连锁思考,除非你希望在听到那些魔性的笑声之后,突然开始思考这种笑声是如何让观看者进入到“数据戒断”状态的。失去情绪压力(比如疫情封控带来的负压)或是阅读能力和经历的减少,都有可能减少文字创作的频次。

以上,是人作为创作者必然会经历的“周期性”。特别是当一个人在面对比写作更高层级的事情时,写作如果不是“赖以生存”的行为,那写作停滞就是必然的。而在这个过程中,也有人会选择有意识地恢复写作,或是在这段忙碌的经历中记录下值得延展的灵感。就算没有创作欲望,也有可能通过表达欲、被关注欲或是表演欲的形式呈现。


不过,区别于人,出现了另一种可以持续保持逻辑性思考的“创作者”——AI。一开始,我把AI比喻成“巴别塔”,人类第二次有机会可以将不同文明、语言、认知形成统一。如果说第一轮巴别塔的倒塌的过程,是因为上帝制造了“不同语言”让人与人的交流变得困难,那第二次巴别塔的建立,正是在试图突破这一限制。人类无论是知识储备还是思维逻辑,都无法比拟AI,它像是一个被人类驯化的“准神”,通过他是否真的可以挑战“神”这个概念?或许这就是引发第二次巴别塔倒塌的关键——再一次引发人与人之间的斗争——宗教、文明、观念、地缘政治的冲突,都会是其中的形态之一。

甚至是AI结合纳米技术,通过吞服的方式进入人类身体,时刻监视人体的健康。这个时候AI提醒人类应该进行治疗的时候,人类到底是应该听信AI?还是发挥“自由意志”拒绝就医?如果真的如此,那人类还是否还拥有属于自己的“自由意志”?

当然,这是更高维度的、几乎接近形而上的哲学命题。对实际的简体中文博客——巴别塔的意义,就是人类误以为自己找到了一个可以与“神”平起平坐的方式,但通天塔是否真的能通天,在倒塌之后成为了不可被证实的传言。AI对简体中文、甚至是全世界的文字创作者带来了冲击吗?我想,你通过对比这几年的简体中文博客聚合,就能感觉到浓浓的“机械感”。


比如,我就随手拿了今天聚合页的几篇文章投喂给ChatGPT,让它分析文章内容是否由AI创作或AI参与了创作。10篇文章里,其中有7篇都得到了一样或类似的结论:

由于分析过程涉及到原文的具体内容,为避免“指名道姓”,恕无法贴出所有内容

而剩下三篇,包括我自己的影评、其他博主的游记、毕业感想,却因为有足够的“情感”,所以得到以下结论:


我把AI创作或是参与创作的作品,比作博客创作者的“鸩酒”,并不是因为它有毒,而是它没办法做到真正的“止渴”。流量是大多数博客仍在追求的标准,这意味着可以带来收益,当但这个流量是“鸩酒”时,那换一杯别人提供的“鸩酒”,是不是也可以得到一样的结果?

如果当“鸩酒”的体量继续扩张,直到搜索引擎的前几页都是“鸩毒”的时候,正如博友@Cyrus 的思考一样:

可以设想,在未来这种现象会愈演愈烈,直到网上充斥着大量AI生成的“高质量”、“逻辑清晰”、“有理有据”的文字,检索信息的难度将直线上升,而效率直线下降。

那个时候,是否跟奶头乐的抖音一样,当一个内容引发流量关注后,成千上万的账号通过模仿或是再加工地产出内容,那这个信息茧房到底是科技的弊端?还是人们“作茧自缚”?


2022年,AI刚开始普及的时候,我跟朋友辩论了一个命题——AI革命会让文字创作变得更丰富、还是更平庸。我支持“平庸”,不仅仅是因为我预言了“劣币驱逐良币”的可能性,而是我意识到,真正造成信息茧房的并不是别人,而是我们自己。把这个问题抛给AI,会不会更有讽刺性呢?或许是,或许我们也可以抛弃思考。

我们该抵制的不是AI,而是“鸩酒”堆砌的抱团和联盟,它们因为没办法“饮鸩止渴”,所以才需要更多创作者的“血”。

借由《EVA》里的一句经典台词总结吧:

人类的敌人最终还是人类。

大模型 RAG 基础:信息检索、文本向量化及 BGE-M3 embedding 实践(2024)

2024年8月4日 08:00

本文整理一些文本向量化(embedding)和信息检索的知识,它们是如今大模型生成文本时常用的技术 —— “增强检索生成”(RAG)—— 的基础:

Fig. Similarity score based on BERT embedding. Image source

水平及维护精力所限,文中不免存在错误或过时之处,请酌情参考。 传播知识,尊重劳动,年满十八周岁,转载请注明出处



RAG (Retrieval-Augmented Generation,检索增强生成),是一种利用信息检索(Information Retrieval) 技术增强大模型生成效果(generation)的技术。RAG 在步骤上很简单,

  1. 搭建高质量文档数据库
    • 对优质文档进行某种格式的转换(或称编码),例如基于 BERT 将文本段落转换成 数值格式的向量(这个过程称为 embedding),然后
    • 将这些 embeddings 存储到合适的数据库(例如 ES 或向量数据库);
  2. 针对用户输入进行数据库检索
    • 对用户输入的 query 进行相同的转换(embedding),然后
    • 利用最近邻等相似性算法,在文档库中寻找最相似的文本段落(与给定问题最相关的段落);
  3. 大模型生成返回给用户的内容
    • 将找到文本段落送到大模型,辅助生成最终的输出文本,返回给用户。

本文主要关注以上 1 & 2 步骤中的 embedding & retrieval 阶段。

1 信息检索(information retrieval)技术三大发展阶段

信息检索的技术发展大致可分为三个阶段:

  1. 基于统计信息关键字匹配(statistical keyword matching)

    • 是一种 sparse embedding —— embedding 向量的大部分字段都是 0;
  2. 基于深度学习模型的上下文和语义理解

    • 属于 dense embedding —— embedding 向量的大部分字段都非零;
  3. 所谓的“学习型”表示,组合上面两种的优点,称为 learned sparse embedding

    • 既有深度学习模型的上下文和语义理解能力;
    • 又具备稀疏表示的可解释性(interpretability of sparse representations)和低计算复杂度。

下面分别来看。

1.1 基于统计信息和关键词匹配(1970s-2010s

1.1.1 典型算法:TF-IDFBM25

早期信息检索系统主要是基于统计信息 + 匹配关键词,算法包括,

  • TF-IDF (term frequency - inverse document frequency), 1970s
  • BM25 (Best Matching), 1980s

1.1.2 原理

分析语料库的词频和分布(term frequency and distribution), 作为评估文档的相关性(document relevance)的基础。

1.1.3 优缺点

  • 优点:方法简单,效果不错,所以使用很广泛。
  • 缺点:单纯根据词频等统计和关键字检索做判断,不理解语义。

1.2 基于深度学习和上下文语义

1.2.1 Word2Vec (Google, 2013)

2013 年,谷歌提出了 Word2Vec

  • 首次尝试使用高维向量来表示单词,能分辨它们细微的语义差别;
  • 标志着向机器学习驱动的信息检索的转变。

1.2.2 BERT (Google, 2019)

基于 transformer 的预训练(pretrain)语言模型 BERT 的出现,彻底颠覆了传统的信息检索范式。

核心设计和优点

  1. transformer 的核心是 self-attention,
    • self-attention 能量化给定单词与句子中其他单词的关联性程度
    • 换句话说就是:能在上下文中分辨单词的含义;
  2. BERT 是双向(前向+后向)transformer,
    • 可以理解为在预训练时,每个句子正向读一遍,反向再读一遍;
    • 能更好地捕获句子的上下文语义(contextual semantics);
    • 最终输出是一个 dense vector,本质上是对语义的压缩;
  3. 基于 dense vector 描述,用最近邻算法就能对给定的 query 进行检索,强大且语义准确。

局限性:领域外(Out-of-Domain)信息检索效果差

BERT 严重依赖预训练数据集的领域知识(domain-specific knowledge), 预训练过程使 BERT 偏向于预训练数据的特征, 因此在领域外(Out-Of-Domain),例如没有见过的文本片段,表现就不行了。

解决方式之一是fine-tune(精调/微调),但成本相对较高, 因为准备高质量数据集的成本是很高的。

另一方面,尽管传统 sparse embedding 在词汇不匹配问题时虽然也存在挑战, 但在领域外信息检索中,它们的表现却优于 BERT。 这是因为在这类算法中,未识别的术语不是靠“学习”,而是单纯靠“匹配”。

1.3 学习型:组合前两种的优点

1.3.1 原理:传统 sparse vector 与上下文化信息的融合

  1. 先通过 BERT 等深度学习模型生成 dense embedding;
  2. 再引入额外的步骤对以上 dense embedding 进行稀疏化,得到一个 sparse embedding;

代表算法:BGE-M3。

1.3.2 与传统 sparse embedding 的区别

根据以上描述,乍一看,这种 learned sparse embedding 与传统 sparse embedding 好像没太大区别, 但实际上二者有着本质不同,这种 embedding,

  • 引入了 Token Importance Estimation;
  • 既保留了关键词搜索能力,又利用上下文信息,丰富了 embedding 的稀疏表示;
  • 能够辨别相邻或相关的 token 的重要性,即使这些 token 在文本中没有明确出现。

1.3.3 优点

  • 将稀疏表示与学习上下文结合,同时具备精确匹配和语义理解两大能力,在领域外场景有很强的泛化能力;
  • 与 dense embedding 相比更简洁,只保留了最核心的文本信息;
  • 固有的稀疏性使向量相似性搜索所需的计算资源极少;
  • 术语匹配特性还增强了可解释性,能够更精确地洞察底层的检索过程,提高了系统的透明度。

2 信息检索:三种 embedding 的对比

简单来说, vector embedding,或称向量表示,是一个单词或句子在高维向量空间中的数值表示

  • 高维空间:一个维度能代表一个特征或属性,高维意味着分辨率高,能区分细微的语义差异;
  • 数值表示:一个 embedding 一般就是一个浮点数数组,所以方便计算。

对应上一节介绍的三个主要发展阶段,常见的有三种 embedding 类型:

  1. traditional sparse embedding
  2. dense embedding
  3. learned sparse embedding

2.1 Sparse embedding (lexical matching)

  • 映射成一个高维(维度一般就是 vocabulary 空间大小)向量
  • 向量的大部分元素都是 0,非零值表明 token 在特定文档中的相对重要性,只为那些输入文本中出现过的 token 计算权重
  • 典型模型:BM25(对 TF-IDF 的改进)

非常适合关键词匹配任务(keyword-matching tasks)。

2.2 Dense embedding (e.g. BERT-based)

  • 映射到一个(相对低维)向量,所有维度都非零
  • 相比 sparse embedding 维度要低很多,例如基于 BERT 默认 1x768 维度;
  • 典型模型:BGE-v1.5

所有维度都非零,包含语义理解,信息非常丰富,因此适用于 语义搜索任务(semantic search tasks)。

Multi-vector retrieval

  • 用多个向量表示一段文本,可以看做是对 dense retrieval 的一种扩展
  • 模型:ColBERT

2.3 Learned sparse embedding

结合了传统 sparse embedding 的精确度和 dense embedding 的语义丰富性,

  • 可以通过深度学习模型“学习”相关 token 的重要性,即使是一些并未出现过的 token,
  • 生成的“学习型”稀疏表示,能有效捕捉 query 和 doc 中的关键词。

3 Embedding & retrieval 工作原理详解

这里主要介绍 BGE-M3 模型的原理。BGE-M3 建立在 BERT 之上,因此需要先回顾 BERT 的基本原理。

3.1 BERT 是如何工作的

3.1.1 理论基础

3.1.2 BERT dense embedding 工作流

以输入 "Milvus is a vector database built for scalable similarity search" 为例,工作过程 [2]:

Fig. BERT dense embedding.

  1. Tokenization
    1. 将输入文本转成 token 序列
    2. BERT 还会插入两个特殊的 token:[CLS] token 表示开始,[SEP] token 表示一个句子的结束。
  2. Embedding:使用 embedding matrix 将每个 token 转换为一个向量,详见 BERT 论文;
  3. Encoding:这些向量通过多层 encoder,每层由 self-attention 和 feed-forward 神经网络组成
    1. 会根据所有其他 token 提供的上下文细化每个 token 的表示。
  4. Output:输出一系列最终的 embedding vectors

最终生成的 dense embedding 能够捕捉单个单词的含义及其在句子中的相互关系。

理解 BERT 是如何生成 dense embedding 之后,接下来看看基于 BERT dense embedding 的信息检索是如何工作的。

3.2 基于 BERT dense embedding 的文档检索是如何工作的

有了 dense embedding 之后,针对给定文本输入检索文档就很简单了,只需要再加一个最近邻之类的算法就行。

下面是两个句子的相似度判断,原理跟文档检索是一样的:

Fig. Similarity score based on BERT embedding. Image source

下面看个具体的 embedding & retrieval 模型:BGE-M3。

3.3 BGE-M3(BERT-based learned sparse embedding)是如何工作的?

BGE 是一系列 embedding 模型,扩展了 BERT 的能力。BGE-M3 是目前最新的一个,3 个 M 是强调的多个 multi- 能力:

  • Multi-Functionality
  • Multi-Linguisticity
  • Multi-Granularity

3.3.1 设计 & 特点

BGE-M3 通过更精细的方法来捕捉每个 token 的重要性,

  1. Token importance estimation:BERT 在分类/相似性比较时仅关注第一个 token([CLS]), BGE-M3 则扩大到关注序列中的每个 token Hi
  2. 线性变换:在 encoder 的输出层上又增加一个线性层,计算每个 token 的 importance weights Wlex
  3. 激活函数:
    • WlexHi 的乘积经过 Rectified Linear Unit (ReLU) 激活函数,得到每个 token 的术语权重 Wt
    • ReLU 的结果是非负的,有助于 embedding 的稀疏性。
  4. learned sparse embedding:以上输出的是一个 sparse embedding,其中每个 token 都有一个相关的 weights,表明在整个输入文本上下文中的重要性。

下面看个例子。

3.3.2 BGE-M3 生成 learned sparse embedding 的过程

还是前面例子提到的输入,

  1. 先走 BERT dense embedding 的流程,
  2. 最后加一个 linear 层,得到 learned sparse embedding。

Fig. BGE-M3 learned sparse embedding. Image source

In M3-Embedding, the [CLS] embedding is used for dense retrieval, while embeddings from other tokens are used for sparse retrieval and multi-vector retrieval [3].

4 BGE-M3 实战

4.1 相似度判断(检索)

$ pip install FlagEmbedding peft sentencepiece

来自官方的代码,稍作修改:

from FlagEmbedding import BGEM3FlagModel

model = BGEM3FlagModel('/root/bge-m3', use_fp16=True)

queries = ["What is BGE M3?",
           "Defination of BM25"]
docs = ["BGE M3 is an embedding model supporting dense retrieval, lexical matching and multi-vector interaction.",
        "BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document"]

query_embeddings = model.encode(queries, batch_size=12, max_length=8192,)['dense_vecs']
docs_embeddings  = model.encode(docs)['dense_vecs']
similarity = query_embeddings @ docs_embeddings.T
print(similarity)

这个例子是两个问题,分别去匹配两个答案,看彼此之间的相似度(四种组合),运行结果:

[[0.626  0.348 ]
 [0.3499 0.678 ]]
  • 问题 1 和答案 1 相似度是 0.6265
  • 问题 2 和答案 2 相似度是 0.678
  • 问题 1 和答案 2,以及问题 2 和答案 1,相似度只有 0.3x

符合预期。

4.2 精调(fine-tune)

精调的目的是让正样本和负样本的分数差变大。

4.2.1 官方文档

  1. fine-tune the dense embedding
  2. fine-tune all embedding function of m3 (dense, sparse and colbert)

4.2.2 训练数据格式及要求

  1. 文件为 jsonl 格式,每行一个 sample;
  2. 每个 sample 的格式:{"query": str, "pos": List[str], "neg":List[str]}
    • query:用户问题;
    • pos:正样本列表,简单说就是期望给到用户的回答;不能为空,也就是说必需得有正样本;
    • neg:负样本列表,是避免给到用户的回答。
      • 空要写成 "neg": [""],写 "neg": [] 会报错。
      • 另外为空时试过删掉 "neg": [] 也不行,必须得留着这个字段。

注意:

  1. 不是标准 json 格式,所以 python 直接导出一个 json 文件作为训练数据集是不行的。
  2. sample 不能分行,一个 sample 一行。

4.2.3 精调命令及参数配置

从 huggingface 或国内的 modelscope 下载 BGE-M3 模型,

$ git lfs install
$ git clone https://www.modelscope.cn/Xorbits/bge-m3.git

精调命令:

$ cat sft.sh
#!/bin/bash

num_gpus=1
output_dir=/root/bge-sft-output
model_path=/root/bge-m3
train_data=/data/share/bge-dataset
batch_size=2
query_max_len=128    # max 8192
passage_max_len=1024 # max 8192

torchrun --nproc_per_node $num_gpus \
    -m FlagEmbedding.BGE_M3.run \
    --output_dir $output_dir \
    --model_name_or_path $model_path \
    --train_data $train_data \
    --learning_rate 1e-5 \
    --fp16 \
    --num_train_epochs 5 \
    --per_device_train_batch_size $batch_size \
    --dataloader_drop_last True \
    --normlized True \
    --temperature 0.02 \
    --query_max_len $query_max_len \
    --passage_max_len $passage_max_len \
    --train_group_size 2 \
    --negatives_cross_device \
    --logging_steps 10 \
    --same_task_within_batch True \
    --save_steps 10000 \
    --unified_finetuning True \
    --use_self_distill True

几个参数要特别注意下:

  1. query & doc 最大长度

    • query_max_len:支持的最长 query,最大 8192
    • passage_max_len:支持的最长文档(一条 pos 或 neg 记录)长度,最大 8192

    BGE-M3 会分别针对 query 和 doc 初始化两个 tokenizer,以上两个参数其实对应 tokenizer 的 max_length,而 tokenizer 最大支持 8192(见模型目录 tokenizer_config.json)。

  2. batch_size:并行度,直接决定了显存占用大小和精调快慢;
    • BGE-M3 跑起来之后显存占用是恒定的,所以可以多试几个 batch size 配置,把显存用到最大;
  3. save_steps:多少个 step 保存一次 checkpoint,默认值 500 太小,每个 checkpoint ~7GB,多了之后可能会打爆磁盘导致任务失败。

精调快慢取决于 GPU 算力、显存和参数配置,精调开始之后也会打印出预估的完成时间,还是比较准的。

4.2.4 测试精调之后的效果

还是用 4.1 的代码,稍微改一下,不要把 queries 和 docs 作为列表,而是针对每个 query 和 pos/neg 计算相似度得分。 然后针对测试集跑一下,看相似性分数是否有提升。

数据集质量可以的话,精调之后区分度肯定有提升。

4.3 CPU 运行速度优化:将模型转 onnx 格式

如果是在 CPU 上跑模型(不用 GPU), 根据之前实际的 BERT 工程经验,转成 onnx 之后能快几倍,尤其是在 Intel CPU 上 (Intel 公司做了很多优化合并到社区库了)。

但 BGE-M3 官方没有转 onnx 文档,根据第三方的库能成功(稍微改点代码,从本地加载模型),效果待验证。

5 rerank 增强:对 BGE-M3 的检索结果进行重排序

5.1 rerank/reranker 是什么?

rerank 的意思是“重新排序” —— 对 embedding model 检索得到的多个结果(对应多个分数), 重新计算它们的相似性分数,给出一个排名。这是一个可选模块, 用于对检索结果进行增强,把相似度最高的结果返回给用户。

5.1.1 另一种相似度模型

reranker 也是一类计算相似度的模型,例如这个列表 里的都是 rerank/reranker 模型,

  1. bge-reranker-v2-m3:与 bge-m3 配套的 reranker
  2. bge-reranker-v2-gemma:与 google gemma-2b 配套的 reranker

但它们的原理与 BGE-M3 这种 embedding model 有差异。

5.1.2 与 BGE-M3 等模型的差异:cross-encoder vs. bi-encoder

以两个句子的相似度检测为例,

Fig. bi-encoder embedding model vs. cross-encoder model. Image source

  • BGE-M3 属于左边那种,所谓的 bi-encoder embedding model, 简单说就是两个句子分别输入模型,得到各自的 embedding, 然后根据 embedding vector 计算相似度;
  • reranker 属于右边那种,所谓的 cross-encoder model,直接得到结果; 如果对 BERT 的工作原理比较熟悉(见 BERT paper),就会明白这其实就是 BERT 判别两个句子 (next sentense prediction, NSP)任务的延伸。

5.2 embedding 和 reranker 工作流

  1. 用户输入 query 和 doc 列表 doc1/doc2/doc3/...
  2. BGE-M3 计算相似分,返回 topN,例如 [{doc1, score1}, {doc2, score2}, {doc3, score3}],其中 score1 >= score2 >= score3
  3. reranker 接受 query 和 BGE-M3 的结果,用自己的模型重新计算 querydoc1/doc2/doc3 的相似度分数。

5.3 BGE-M3 得到相似分之后,为什么要通过 reranker 再计算一遍?

这里可能有个疑问:step 2 不是已经检索出最相关的 N 个 doc 了吗? 为什么又要进入 step3,用另外一个完全不同的模型(reranker)再计算一种相似分呢?

简单来说,embdding 和 rerank 都是 NLP 中理解给定的两个句子(或文本片段)的关系的编码技术。 再参考刚才的图,

Fig. bi-encoder embedding model vs. cross-encoder model. Image source

  • bi-encoder
    • 分别对两个句子进行编码,得到两个独立的 embedding,再计算相似度。
    • 速度快,准确性相对低。
  • cross-encoder

    • 同时对两个句子编码,输出一个相似度分数;也可以换句话说,把两个句子合成一个句子编码,所以两个句子是彼此依赖的
    • 速度慢,准确性高

总结起来:embedding model 计算的相似度是粗粒度的,只能算粗排; reranker 对 embedding model 得到的若干结果再进行细排; 要体会和理解这种差异,还是要看基础 paper BERT:预训练深度双向 Transformers 做语言理解(Google,2019)

6 总结

本文整理了一些 BGE-M3 相关的 RAG 知识。前两篇参考资料非常好,本文很多内容都来自它们,感谢作者。

参考资料

  1. Enhancing Information Retrieval with Sparse Embeddings, zilliz.com/learn, 2024
  2. Exploring BGE-M3 and Splade: Two Machine Learning Models for Generating Sparse Embeddings, medium.com/@zilliz_learn, 2024
  3. BGE-M3 paper
  4. Cross encoders and bi-encoders, medium.com, 2024

Written by Human, Not by AI Written by Human, Not by AI

充分发挥 ChatGPT 在日常生活中的作用

作者 青山
2024年1月2日 22:44

技术人员利用 ChatGPT 开发软件、赚钱,非技术人员可以充分发挥 ChatGPT 在日常生活中的作用。

充分发挥 ChatGPT 在日常生活中的作用 - 第1张图片

2022年12月初,我就注册了 OpenAI 账号并开始使用 ChatGPT,被它生成速度所惊艳,被它生成的内容感到震撼,抛开它一股子 AI 味儿不说,其他方面还是足以让人接受,而且随着不断更新迭代,从最初的 GPT-3.5,到现在的 GPT-4-turbo,速度、准确度都有大幅提升。这一年使用下来,帮助我解决了很多事情,比如学校里老师布置的各种小论文,给它一个提示词,生成所需的内容,再比如咨询一些关于 WordPress 的问题,帮助我修改主题、增加功能等等。

令我印象深刻的是,一开始由于技术限制,ChatGPT 一次性生成的内容字数有限,到达限制之后会停止生成,你得回复“继续”或者“continue”,它才会继续给你生成剩下的内容,有网友说这叫人工智能界的“捧哏”。

今天分享我的经验。

沉浸式翻译

充分发挥 ChatGPT 在日常生活中的作用 - 第2张图片

本来想专门写一篇文章介绍并分享这一款浏览器扩展,也是我在2023年用过的最棒的工具之一,今天碰上 ChatGPT,便一并聊聊吧。

沉浸式翻译最早应该是在2022年12月出来的,当时还不支持使用 ChatGPT 的翻译服务,我便使用默认的必应翻译或者腾讯交互翻译,后来发现可以自己申请彩云小译的 API,便换成了彩云小译,翻译质量和水平也有所提升。

它最大的特点我觉得是智能。和一般的网页翻译不同,沉浸式翻译可以在显示原文的情况下同时显示译文,以前浏览到英文网页,顺手使用浏览器自带的网页翻译,结果返回一片一片的中文,翻译效果也差,来回切换十分麻烦,沉浸式翻译正好解决了这一痛点。

后面更新了一个“剧透”效果,将鼠标放到译文上时,译文内容才会显示,似乎这便是它的“沉浸式”吧。

充分发挥 ChatGPT 在日常生活中的作用 - 第3张图片

直到支持使用 ChatGPT 的翻译服务,两者一起使用,翻译水平和质量有大幅提升。只需要在扩展设置中添加自己的 OpenAI API Key,就可以在扩展中使用 ChatGPT 的翻译服务。

充分发挥 ChatGPT 在日常生活中的作用 - 第4张图片

文生图

ChatGPT 后期支持的 DALL-E-3 模型,让使用它的人体会到了一些乐趣。输入几句 prompts,AI 便会根据你的指令输出图片,如果对此不满意,还可以继续修改 prompts,增加细节。

将其用于文章配图,相当不错。虽然我文章中的图片不多,大部分来自截图,但偶尔实在没有图片搭配的情况下,可以让 AI 根据文章内容及其主题,生成相符的图片作为配图使用,多多少少也能增加文章的可读性。

另外,最近在 GitHub 上 Fork 了 XiaowenZ 修改过的项目——daily,主要是利用 GitHub Actions,搭配各类 API,定时生成对应的信息,并发送到 Telegram 频道或群组。我在这个项目里添加了 Bing Create 的 cookie,以及每日诗词的 API,让 Bing Create 以每日诗词的内容为提示词,生成对应的图片,于是便有了下面的效果。

充分发挥 ChatGPT 在日常生活中的作用 - 第5张图片 充分发挥 ChatGPT 在日常生活中的作用 - 第6张图片

ChatGPT-Next-Web

充分发挥 ChatGPT 在日常生活中的作用 - 第7张图片这是我最早、最常用的方式,即把 ChatGPT 当成一个百科全书,我负责提问、提需求,ChatGPT 负责解答。

但这一环节最重要的就是 prompt,prompt 的精确度决定了 ChatGPT 生成内容的准确度和质量,我记得 ChatGPT 刚问世那会,就出现了各种调教 ChatGPT 的方法和教程,正经的和不正经的都有一大堆。

正好有 ChatGPT-Next-Web 项目,免费部署,填入自己的 OpenAI API Key,即可与之对话,而且还内置了海量的 prompts,将其打造成各种身份,用于各种方面,比如学术论文、创意写作、数据分析等,再或者是让它模仿小红书笔记的风格,以特定产品为描述对象,生成小红书风格的内容……

估计这也是大多数普通人的 ChatGPT 用法,一个百科全书、私人管家。


AIGC API

但上述内容的使用前提是得需要有 OpenAI API Key,如果只注册了 OpenAI 账号,那就只能登录 ChatGPT 官网,使用最基础的 GPT-3.5 对话服务。不过,我由于没有信用卡,而且每个月订阅 ChatGPT Plus 的20美元对我来说太贵,便一直没有开通,一直使用基础的 GPT-3.5。

但是最近我不开通 ChatGPT Plus,也用上了 GPT-4 等相关功能,也能生成 OpenAI API Key。

朋友最近在做一个代理服务——AIGC API(aigcapi.io),低于 OpenAI 官方价格,却可以使用 GPT-4、DALL-E-3、Claude 2等模型的 API Key,虽然我不知道这是如何做到的,但觉得非常神奇,1美元额度的 API Key,在他那里只需要2元人民币,官方价格居然是他的3.6倍。

充分发挥 ChatGPT 在日常生活中的作用 - 第8张图片 充分发挥 ChatGPT 在日常生活中的作用 - 第9张图片

这模型名称让我搞不太明白,turbo 后面还加个数字,不过目前最好用的模型应该是 GPT-4-1106-preview 和 DALL-E-3。

借着朋友送我的额度,“嚣张”地使用着,我一个人也用不完,便部署了 ChatGPT-Next-Web 服务,将方法分享给了班上的同学,最近正好是写论文的时候,方便他们用 ChatGPT 修改自己的文章。

然后偶尔使用 DALL-E-3 文生图模型,让 AI 画出一些古诗词中的景色和场景,用了大半个月,我的感受是:太耐用,用不完,根本用不完。20美元不到,按照朋友提供的价格,折合人民币20元不到,相当于相当于购买20美元,就是20元人民币,但如果按照 OpenAI 官方的定价,就得上百块钱。

充分发挥 ChatGPT 在日常生活中的作用 - 第10张图片

虽然是第三方代理,但能享受官方的体验,除了价格比官方便宜,速度还比官方要快,准确度和官方保持一致,可以说体验升级。调用速度和 OpenAI 直连速度没区别,稳定性和 OpenAI 一致(OpenAI 崩他们也崩),每一笔调用都能在后台清晰可见。

仅需将官方接口地址(https://api.openai.com) 更改为AIGC API的接口地址:https://api.aigcapi.io 即可快速使用。专为企业和程序开发测试人员打造,更适合企业和站长等高并发大用量的用户,均是高速 API 渠道。

目前新用户注册默认赠送1美元额度,感兴趣的可以先尝试一下,如果觉得好用,需求大的话,我可以找朋友弄点折扣和优惠码。


另外说几句题外话,自从 ChatGPT 问世,各种 AI 工具层出不穷,有真正使用 AI 技术、并且有真本事的工具,也有不少挂羊头卖狗肉的套壳服务,工具多到我用不过来,眼花缭乱,都快对“AI”这个词产生应激反应。

最后我的选择还是跟随自己的需求,不要一拥而上,ChatGPT、Perplexity、Bing Create 足够我使用很久很久,除非我产生了新的需求。

使用 Vercel 免费部署 LobeChat

作者 青山
2024年2月12日 00:14

我在之前的文章《充分发挥 ChatGPT 在日常生活中的作用》中介绍过一款开源项目——ChatNextWeb,搭配 Vercel 即可部署自己的网页对话机器人,但它仅支持对话,如果想使用 DELL·E 3 模型进行文生图,似乎无法实现。最近看到另一个类似的项目——LobeChat,功能更加齐全、丰富,UI 也更加好看,便记录一下部署过程。

使用 Vercel 免费部署 LobeChat - 第1张图片

LobeChat 介绍

该项目在 GitHub 上已有 17.7k stars,这几个特性比较吸引人:

  1. GPT 视觉认知。支持了 OpenAI 最新的 gpt-4-vision 模型,视觉识别,只需上传图片,即可识别图片内容,然后基于此进行对话。
  2. TTS & STT 语音会话。这一功能在 ChatGPT 的官方客户端上就能体验,通过语音转文字或者文字转语音,与人工智能助手进行对话。
  3. Text to Image 文生图。即支持通过插件唤醒 GPT-4 内置的 DALL-E 3 模型,直接调用文生图工具进行绘画,我在 Bing Create 上使用该功能绘制 Daily 图片,仅用一句诗,就能生成与之相符的图片。

如果开通了 ChatGPT Plus,以上三点应该可以轻松实现并体验,但对我来说太贵,便找到了平替方案。

LobeChat 部署

LobeChat 提供了 Docker 镜像,也提供了 Vercel 的自托管版本,两种方式我都进行了测试,都可以正常部署并使用。

Docker 部署

在 VPS 终端输入以下命令,就可以一键安装并启动 LobeChat 服务:

docker run -d -p 3210:3210 \
  -e OPENAI_API_KEY=sk-xxxx \
  -e OPENAI_PROXY_URL=https://api-proxy.com/v1 \
  -e ACCESS_CODE=lobe66 \
  --name lobe-chat \
  lobehub/lobe-chat

其中涉及到一些环境变量,OPENAI_API_KEY 是从 OpenAI 获取到的 API Key,如果你使用的 API Key 并不是来自官方,则需要加一条环境变量OPENAI_PROXY_URL配置代理地址,比如我使用的是第三方 API Key,由 AIGC API 提供,ACCESS_CODE是访问密码,建议设置。最后需要确保 VPS 端口 3210 保持开启且未被占用,然后通过 IP:端口的方式进行访问即可,或者进行反向代理,绑定域名使用。

Vercel 部署

使用 Vercel 部署更加方便快捷,不用登录 SSH,也不用输入命令。

进入 GitHub 项目页面,fork LobeChat 项目之后登录 Vercel,选择对应的仓库进行导入。

使用 Vercel 免费部署 LobeChat - 第2张图片

在环境变量部分填入相应的 Key 和 Value,如下图所示,我填写了ACCESS_CODEOPENAI_API_KEYOPENAI_PROXY_URL,这样就可以通过 AIGCAPI 提供的第三方 API Key 使用 GPT-4 等模型。

使用 Vercel 免费部署 LobeChat - 第3张图片

注意,如果在环境变量里填写了OPENAI_API_KEY等其他模型服务商的 API Key,则该服务部署成功之后可以直接使用,无需再在网站中填写 API Key,这一点在项目文档中写得比较清楚。

点击 Deploy,等待部署完成。

使用 Vercel 免费部署 LobeChat - 第4张图片

即可访问网站,使用服务。

使用 Vercel 免费部署 LobeChat - 第5张图片

切换 GPT-4 模型,打开内置的 DALL·E 3 插件,即可开启文生图模式。

使用 Vercel 免费部署 LobeChat - 第6张图片

除此之外,还内置了各种 AI 助手,涵盖写作、翻译、代码等方面。

使用 Vercel 免费部署 LobeChat - 第7张图片

最后给大家分享一家我一直在使用的第三方 API Key 提供商,AIGC API,提供高效且稳定的 OpenAI 聚合 API,相比官方20$/月的 ChatGPT Plus,它提供的 API,价格低至1美元只需要2元人民币,除了 GPT-4 模型,图中这些也可以进行调用。

使用 Vercel 免费部署 LobeChat - 第8张图片

最近因为写毕业论文需要,便使用 LobeChat 和 AIGC API 的服务部署了一个网站,给自己和同学使用,效果还不错。

视频生成模型调研 – 人像视频/基础模型/可控编辑/DiT

作者 bang
2024年7月21日 23:34

经常看见有一些视频生成的模型出来,类型还不太一样,简单学习和调研下这个领域和相关技术的情况。在我所看到的有限的范围里,可以把近期出现的视频生成能力分成两类:

  1. 一类是专门精细化控制人物表情动作的模型,驱动一张人像照片动起来。这类模型存在已久,老技术也能实现,近期不断有新模型出现,效果也越来越好,业界好像没针对这一类命个名,姑且叫它人像视频
  2. 另一类是通用的视频生成基础模型,包括基于扩散模型的,以及 sora 出现后的 DiT 架构模型。另外跟 Stable Diffusion 图片生成的生态类似,也会有一些为视频生成基础模型配套的可控编辑扩展模型

人像视频

先来看看人像视频,常见有两类:

  1. 表情控制:输入人物表情视频,让图片的人脸跟着做同样的表情。变种是输入音频,让图片人脸跟着音频的口型动,talking photo。
  2. 姿态控制:输入人物动作的视频,让图片的人跟着视频的动作动。火过的 case 是通义千问的全民舞王科目三。
表情控制(Vimi) 姿态控制(Animate Anyone)

这里的技术都不是这波大模型后才有的,上个时代已经有很多做得不错,上一波爆火的蚂蚁呀嘿已经是 2021 年的事了,相关论文也是 2019 年就有了:《First Order Motion Model for Image Animation》。后面不断有新的方案,包括基于和不基于扩散模型的方案。下面列几个近期出现,看起来还行的方案。

表情控制

基于扩散模型

基于扩散模型的方案,大体思路看起来是在原网络插入 pose/人脸点位 控制,跟 ControlNet 原理差不多,扩散模型本身除了 SD Unet 那套外,基本都会加入视频生成常见的 spatial-attention 和 temporal-attention。

  • AniPortrait(华为):24年3月发布。支持从语音生成对应每一帧的口型和人脸位置图,再基于 SD1.5 扩散模型 + motion module 从参考图生成视频结果。开源可用
3
  • megActor(旷世科技):24年5月发布。没有把视频解析成中间关键点去驱动图片,而是原视频画面直接驱动,以预期得到更生动的效果,2个UNet网络,推理成本看起来会高一些,效果稳定性一般。只支持视频面部特征,不支持音频对口型,开源可用
4
  • EchoMimic(蚂蚁):24年7月发布。同时使用音频和面部特征进行训练,可单独用音频生成,也可以结合输入视频的面部特征生成,结果更自然,开源可用,comfyUI module可用。
5

还有几个不开源的:微软的VASA-1,阿里的EMO,都是语音对口型,朝着数字人方向做的。

非扩散模型

非扩散模型的方案,看起来基本也是先把人脸节点生成完,再用其他的网络结构去应用到图上生成视频。

  • LivePortrait(快手):24年7月刚出的模型,模型很小,主干网络是 ConvNeXt-V2-Tiny,28M参数量,各部分加起来就500M,号称速度很快,单帧推理时间在 RTX 4090 GPU 是 12.8ms,都能稳定实时输出 60 帧视频了,很适合端上部署,这也是非扩散模型的优势,还有个特点是能快速精确控制眼睛和嘴巴的开闭程度,动画稳定。comfyUI module 也有了。
6
  • VividTalk(阿里):跟 AniPortrait 有点像,同样是训练音频→表情嘴型关键点,音频→头部运动关键点,再经与图片一起进入另一个网络生成最终视频,只是这网络不是基于扩散模型。未开源,真实效果未知。
7

姿态控制

8
  • magic-animate(字节),23年底发布。Pose 序列不是 OpenPose 人体骨骼,而是丰富的整个人的动作 densePose,视频转 densePose 还比较麻烦,densePose 序列用 ControlNet 的方式去做生成的控制,另外有一个网络去编码人物形象做IP保持。试用下来,参考图跟 pose 的形象姿态差异大的场景也能支持,比如让蒙娜丽莎跳舞,但这种场景下效果不太好,人脸基本不保持,只保持了人物衣着的IP形象。已开源。
9

还有其他很多,MimicMotionMuseVFollow Your PoseDreaMoving 等,大同小异。

视频生成

视频生成模型业界除了最出名的 runway、pika、sora,也陆续有不少开源的方案出来,当前已有的开源方案基本都是基于 Latent Diffusion Model,核心是 UNet 降噪网络,基于这种网络还有不少做视频可控编辑扩展模型,DiT 架构还在路上。

基础模型

  • I2VGen-XL(阿里),23年11月发布。比较常规,基于 3D-UNet 扩散模型生成,分成基础生成和高清细化两个阶段,细化阶段不是单纯提高分辨率,会改善时间连续性、引入文本输入控制内容。开源可用。
10
  • SVD(Stable Video Diffusion),23年12月发布。模型结构复用 Video LDM,主要是在 U-Net 和 VAE 解码器中分别加入时序层(temporal attention layer),SVD 论文本身在讲模型怎么训练的,包括高质量视频的微调。
11
  • PixelDance(字节),23年11月发布。特点是首尾帧机制,首帧图作为强引导,与噪点图拼接一起作为输入,严格遵守首帧图,同时尾帧图作为弱引导,训练中会随机抛弃尾帧,推理降噪过程中在步数大于τ值时也会抛弃尾帧,避免完全对齐,让生成的结果有多样性。在 DiT 架构的模型出现之前,效果基本是最好的,生成的视频运动幅度大,稳定性不错。未开源。
12
  • ConsistI2V(零一万物) ,24年2月发布。跟 PixelDance 有点像,也是首帧与噪点图拼接一起作为输入(类似 SD 的垫图),同时会把首帧也作为降噪过程条件作用在 spatial-attention 和 temporal-attention 上,较大地强调首帧图片的重要性,这样生成的视频不容易崩,一致性比较好。 已开源可在线试用
13

可控编辑

视频生成的可控编辑是指通过各种方式控制视频生成方向,例如运动方向、内容替换、风格迁移等,原理上跟图片生成的 ControlNet / IPAdatper 等机制差不多,基于上述视频生成基础模型,训练扩展模型插入原网络,控制生成方向。

图生视频控制

大部分视频生成是图生视频,在图片上圈选运动范围和运动轨迹是很自然的诉求,一代目 Runway 上的 Motion Brush 就是做这个,基本应该应该是后续正经视频生成模型的标配,也有开源模型基于 SVD 等基模做了这个能力。

  • mofa-video(腾讯),24年7月发布,基于 SVD。可以训练多种 adapter,控制图片生成,包括手势控制、人脸关键点控制、姿势关键点等,每种控制 adapter 独立训练,可以独立使用或组合使用,比较灵活通用。开源可用。
14

视频内容编辑/风格化

这一类指 Video to Video,修改原视频上的元素,替换衣服、人物等,部分也包含了视频风格迁移能力。

  • ReVideo(腾讯),24年7月发布,基于SVD。通过修改第一帧和绘制轨迹线,对视频中特定区域内容和运动进行定制化编辑。使用分阶段训练的策略,简单理解为,A阶段重点训练运动轨迹,B阶段重点训练内容替换,再进行结合。开源可用。
15
  • I2VEdit(商汤),基于SVD,利用成熟的图像工具编辑第一帧,再将第一帧的修改应用到整个视频,实现局部替换和风格化。
16
  • AnyV2V(华为): 比较通用的视频编辑框架,可以灵活用于多个视频生成模型,包括I2VGen-XL、ConsistI2V、SEINE, 同样是先通过各种方式改造编辑视频首帧,再插入视频生成模型,将风格和替换内容扩展到整个视频,实现视频编辑能力。通用于多个模型的原理,简单理解是提取了空间注意力/时间注意力特征注入了原生成模型的 spatical-attention/temporal-attention 模块,理论上差不多架构的模型都能通用。 可试用
1718
  • animatediff:animatediff 比较特殊,不是基于 SVD,而是基于图生成 Stable Diffusion,在上面训练加上运动模块 Motion Module,学习了视频片段的运动知识,支持视频生成。很早发布,在 SD 生态配合 IPAdapter / ControlNet 等各种扩展和 LoRA 模型一起使用,组合出很多有趣的应用,看到的大部分视频风格转动漫风基本是基于这个方案。
19

DiT

DiT(Diffusion Transformer) 是视频生成基础模型的一个算法架构,应该放在基础模型部分的,但它太新了,想单独抽出来细看一下。

上面大部分模型,包括可控性的扩展模型,核心底层都是基于经典的 UNet 架构,但 Sora 出来后,业界公认 DiT 架构才是未来,毕竟效果太碾压了,最近可灵 / Luma 的出现也印证了这点。架构范式转移到 DiT 后,原先在 UNet 上做的各种可控雕花,看起来基本上是没法迁移到 DiT 架构的,一切得重来。

DiT 架构开源的只见到去年11月 sora 出来之前的 Latte,研究性比较多,效果一般。其他靠谱的开源模型还没见到,毕竟 Sora 还没见影,可灵luma 也刚出。(DiT架构的图片生成就有一些,比如腾讯混元

20

DiT的架构图,与 LLM 的架构同源,核心是 transformer 模块,跟基于 UNet 的模型都不一样,我们尝试来看看在这个架构下视频生成的推理过程:

  1. 初始化一个噪声视频。
  2. 视频会先转换成潜空间的表示,后续的运算都在潜空间里运算,这点跟 Stable Diffusion 一类的扩展模型一致,视频应该是使用 VQ-VAE 进行编码到潜空间。
  3. 视频的表示会被分割成一个个 patch 块,每个 patch 块是一个 token,patch == token。
  4. 这些代表整个视频的 patch 块集合,一起进入 DiT Block。这个 DiT Block 就是个类 transformer 模块,与 LLM 一样核心也是多头注意力,在这里会计算每个 token 之间的注意力,加上引导词和步数条件,做相应计算。
  5. 按 LLM 模型的套路,这里 N 个 DiT Block 跑完,整个流程跑完,输出会是预测的下一个 token。但我理解这里的输出并不是下一个 token(一个 token 只是一个 patch),而是这里的 patch 合集经过这些 DiT Block 的注意力运算和条件引导,变换成离最终视频更近的一个表示,也就是对这里的噪声视频做了一次降噪。
  6. 如果是20次降噪,重复20次这个过程,一个纯噪声视频生成最终清晰的视频。
  7. 如果要垫图,首帧图尾帧图,只需要让图片跟输入的纯噪声视频做一些结合就可以。

可以看到跟其他的 UNet 为核心的架构有本质差别,像 ControlNet 各种可控性的研究没法迁移,需要另外找控制路径。从业界在这领域卷的程度看,预期发展还是会非常快,等下一个 DiT 架构的靠谱视频生成模型开源,也应该很快会有人在上面把相关可控能力不断研究补齐了。

感想

这个领域给我感受是模型超多,看不完跟不上,只能先了解个大概,在有具体应用场景时,再根据需求做相应深入的调研。

为什么这么多模型?看起来它训练的资源门槛没那么高(比 LLM 低),有公开训练数据集(WebVid 和 LAION),论文上都会把方法给出,width=甚至模型和代码也开源,各研究者很容易从中吸收学习做改进,再造一个模型,现在也没出现一个效果通用秒杀一切的模型,所以三天两头出个新模型是常态。

DiT 架构后,视频生成和视频编辑这些模型大概率要淘汰,而人像视频可能在较长一段时间内仍有应用空间,如果要做 AI 视频短片,人物表情动作精细控制挺重要,DiT 架构目前还没看到有能做到精细控制的技术,基于 Unet 的通用视频生成模型这么长时间也没法做好这块的可控性,可能一段时间内还得靠原有技术做这里的可控后编辑。

Transformer 里的 Q K V 是什么

作者 bang
2024年7月7日 20:55

Transformer 作为新 AI 时代的基石,有必要深入了解下。网上对 Transformer 的教学文章/视频非常多,很多讲得很好,像 3Blue1Brown 的讲解视频,以及这篇文章。整个详细过程原理写不来,本文主要记录一下其中我觉得比较容易混淆的 Attention 模块运算过程,主要是里面的 Q K V 的概念/运算过程/作用。

1

这是 Transformer 架构图,左边是 encoder,右边是 decoder,实际 LLM 大模型是只由右边 decoder 构成,这里面大部分是常用的 Feed Forward(前馈网络)/ Add(残差连接)/ Norm(层归一化),核心还是 Multi-Head Attention 模块,我们来具体看看 Multi-Head Attention 模块里做了什么。

输入

假设一个字是一个 token,输入是”我有一个玩”(用于推测下一个字”具“),5 个字,每个字用一个向量表示,每个向量假设是 9 维(GPT3 是 12288 维),也就是用 9 个数值表示这个字,那每个词顺序排下来,就组成了 5 行 9 列的输入矩阵,称他为 X,每一行代表一个词。

2

6每一个圈圈代表一个数值。”我“字由蓝色的9个数值表示,“有”字是绿色的9个数值。这 9 个数值组成一个 9 维向量,这里每个字对应的向量值是一开始定好的,至于怎么定的不细说,可以看看相关文章。

这个输入矩阵经过 Multi-Head Attention 模块运算,输出另一个同宽高的矩阵,接下来详细看看这个运算过程。

3

权重矩阵 & Multi-Head Attention

Multi-Head Attention 是由多个 Self Attention 模块拼接而成,如果它只有一个 head,就是一个 Self Attension 模块。

Self Attention

Self Attention 模块里,会包含 Wq Wk Wv 三个参数权重矩阵,模型训练过程就是不断调整 Wq Wk Wv 里的数值。

这几个权重矩阵的行和列数,需要满足:

  1. 行数:输入矩阵 X 会与它们进行相乘,所以行数需要与输入词向量的维度匹配,也就是 9。
  2. 列数:Transformer 中整个 Attention 模块的输入数据和输出数据维度应该是一致的,才能多层重复叠加,从矩阵相乘特性知道,这些权重矩阵的列数也应该对齐词向量的维度,还是 9。

所以如果这里是单个 Self Attention,Wq Wk Wv 就是行数和列数都是与词向量维度一致的矩阵,也就是 9×9。

Multi-Head Attention

但这里希望模型能捕获到单词间的多种不同注意力,所以会把它拆出来再拼接。假设把它拆成 3 个 head,那就是能捕获到 3 种单词之间不同的关系。这里拆出来的 3 个 head 就是 3 个 Self Attention 模块,每个模块有自己的 Wq Wk Wv 矩阵,行列数是 9 x 3。这里每个 Self Attention 独自进行注意力运算后,再组合拼接。

4

这里文字描述得比较绕,见后续运算过程和结果的图示比较清晰。

Attention 运算过程

先来看这里每个 Self Attention 模块的运算过程。

这里输入向量分别与 Wq Wk Wv 相乘,得到新的矩阵 Q K V,Q(query) K(key) V(value) 名字已经对应了它的含义,看完它的运算过程后,再来补充下对它含义的理解。

可以认为这里 Q K V 这几个新的矩阵,每一行仍然是表示一个单词 token 向量,只是换了种表示 (矩阵的乘法特性,例如第一行里的每一个数据都是由原矩阵第一行与 W 矩阵运算得来,与其他行无关)。

下图是 Q 矩阵的运算过程,K V 的过程一样,只是 W 权重矩阵的值不同,略过。

5

接着要做的是,计算每一个单词对于其他单词的 Attention 系数,这是一个两两可重复排列组合。上面 5 个单词,每个单词都 K 矩阵里的自己以及其他所有单词逐一计算出一个值,生成一个 5 x 5 的矩阵。这个矩阵的计算方式就是 Q*KT(K的转置矩阵),由矩阵乘法特性可以看出,这样算出来的矩阵,就是单词之间的关系值,比如第一行第五列数值,就是“我”和“玩”之间的注意力关系值。下图用颜色表示这个过程。

6

相乘后对这个矩阵进行 softmax (在这之前还会除以 √dk 向量维度,可以先忽略),每一行的和都为1,这里的矩阵第 i 行的数据表示的是第 i 个单词与其他单词的关系,这里归一化后,数值可以表示理解为,从全文范围上,每个单词对这第 i 个单词的重要程度比例。

最后这里的 Attention 系数矩阵,与矩阵 V 相乘,得到的是新的结合了每个单词之间 Attention 信息的矩阵。输出的矩阵中每一行还是表示一个单词,但这个单词向量经过这里注意力运算后,每个单词向量都集合了上下文每个单词的注意力信息。

7

单独拆除这里的第一行看看它的意义,单词”我“跟每一个字的注意力权重,再乘以每个字在 V 矩阵里的向量表示,结果再相加,组成最后的结果。比如这里第一个字”我“跟第三个字”一“的权重是0.1,那”一“的向量值对运算后最后表示”我“这个字的向量结果影响很小,如果是 0 就是没有影响。

8

上述整个过程,可以用这个数学公式表示:

9

Multi-Head Attention 模块里每个 Self Attention 模块都做同样的运算(但里面的 Wq Wk Wv 权重不同,数值结果不同),拼接起来,形成最终的结果,这个结果矩阵里,每一行每个字的表示,都已经集合了与其他所有字的注意力关系信息。

10

整个过程实际上还有个掩码的机制,按上述运算,这里输出的每个单词向量都包含了上下文所有的信息,通过掩码机制,会变成每个单词只包含单词所在前面位置的信息,比如第二行“有”只包含了“我”和“有”的信息,没有后面”一“”个“”玩“的信息。这里不继续展开了。

这里每一行包含了前面所有单词的注意力信息,也就可以通过这里的表示预测下一个单词,所以从这个矩阵最后一行“玩”的向量数值,就可以用于预测对应下一个单词是什么。

整个 Multi-Head Attention 的运算过程大致是这样了。实际模型如 GPT3,单词向量维度是12288,上下文长度2048(每个 token 都要跟2048个token计算注意力),每个 Multi-Head Attention 分成 96 个 head,同时有 96 层叠加,也就是 96 个 Multi-Head Attention,运算量是巨大的。

Q K V 的作用

Q 可以理解为原输入的词数据,拿着这个数据找谁跟我有关系。K 是被找的数据,用于计算输入的每个词之间的关系。Q 和 K 是为了算出 Attention 关系系数,知道每个 K 的数据跟 Q 是什么关系。

如果 Q 和 K 是同个输入变换来的,那就是自注意力,如果是不同输入变换来,那就是交叉注意力,比如 Stable Diffusion 里 Unet 的交叉注意力模块中,Q 是文字 prompt,K 和 V 是图片信息,Q 与 K 计算的是文字与图片信息的 Attention 关系系数。

K 和 V 是同个数据源,这个数据源,从 Q 和 K 的运算知道每个 Q 与数据源的关系系数,再与数据源做运算就是把这个关系数据作用到源数据上,源数据去做相应偏移,也就是可以在 Q 的作用下对源数据做相应推测。

感想

为什么这样一个算法架构,能衍生出智能,而且这个架构能扩展到多模态,语音、图像、视频基于它都有非常好的效果?我个人理解,最核心有两个点:

  1. 上下文信息充足
  2. 并行计算能力强

其他算法架构如果能充分融入上下文信息,规模大了也能有智能,只是 Transformer 可并行运算的特性,让目前的计算机算力可以触摸到涌现的那个点。

❌
❌