作者 | Kirk Kaiser
译者 | Sambodhi
策划 | 褚杏娟
去年,我在一个新岗位上仅工作 6 个月就被解雇了。
我离开了一家很棒的公司和老板,去冒险加入一家初创公司,但还没真正开始,一切就结束了。
我决定以此为契机,探索 LLM(大语言模型)、扩散模型以及越来越多的其他开放模型在视频领域中的新可能性。
多年前,我曾帮助打造了一个后来成为独角兽的生成式视频编辑#Launch_and_Early_years),并从那时起就有了一些想要实现的想法。
在 2015 年,这些想法大多显得不切实际,但随着 LLM 和计算机视觉模型的进步,现在它们已经变得有实现的可能了。
GPU 资源紧缺与本地优先、
多模态生成式人工智能
我最初专注于构建一个通过多模态人工智能改进的本地视频编辑器。它利用计算机视觉检测、提取和跟踪视频中的物体,并结合扩散模型为视频添加和动画化新物体。
5 年前,我曾使用 Mask-RCNN 每天制作视频草稿,尝试滑板视频的创作。
这些视频草稿让我在没有任何强烈预期的情况下,探索了人工智能辅助视频编辑这一媒介。我认为,开发一个工具来继续探索这项工作将会取得丰硕的成果。
事实的确如此!很快,我开始把视频当作一种更加流畅的媒介,感觉它更加易于编辑。我逐渐理解了新的视觉模型如何工作,以及如何通过 GPU 加速渲染、推理和视频处理。
通过组合使用多种模型,我能够创建提示,在视频中添加已经遮罩好、由独特扩散(diffusion)所生成的物体。
你可以在之前的博文中了解这个过程。
安全的副产品
(与人工智能无关)
然而,在我为视频编辑器构建计算机视觉流水线和原型的过程中,在当地我经历了一系列悲剧性的死亡事件。
骑行者和行人频繁被汽车撞击。
于是,作为一个副产品,我开始研究骑行者的安全问题,并很快意识到美国的行人基础设施有多么糟糕。我想知道是否有技术解决方案可以减少或消除这些死亡,因为统计数据显示这些死亡人数正在迅速增加。
于是,我突发奇想,提出了一项利用人工智能和机器人技术解决这一问题的提案,并提交给了美国国家科学基金会的 SBIR 项目。
令我惊讶的是,他们邀请我提交一份正式的第一阶段提案。
如果获得批准,这意味着我可以获得高达 200 万美元的资金用于研发我的技术,而政府不会占有任何股份。
所以,我当然这么做了。
这花了几个月的时间,使我远离了自己的舒适区。
但是!提交提案的条件之一是我必须暂停所有与该项目相关的开源工作,因为政府不能资助已经完成的工作。
这让我感到非常沮丧,因为我所在城市的行人不断遭遇事故。每多一个被撞的人,我都深感愧疚。
让我感到安慰的是,由于我已完成组建公司所需的繁琐文书工作,并通过 SAM.gov 获得接受 SBIR 等政府资助的资格,所以创建另一份提案的大部分工作已经做好。
因此,我还向交通部提交了一份关于“完整街道 AI”的 SBIR 提案。
这项提案设想利用智能手机和计算机视觉来填补交通部在行人基础设施知识上的空白。
六个多月后,我收到了国家科学基金会和交通部的最终答复:No。
(从积极的角度来看,这意味着我再次可以公开这项工作,并寻求帮助。)
跳出既有的思维方式
在本地视频编辑器上工作了六个月后,我也遇到了瓶颈。
显然,人工智能作为现有视频编辑工作流程的“附加层”意义不大,因为结合大型语言模型的机器学习工作流程已经发生了巨大变化,而现代旗舰级桌面视频编辑器的其他部分也经过了大量工程设计。
当然,更强大的视觉和音频模型可以用来新增特性,减少现有工作流程中的繁琐任务,但视频编辑器用户界面背后的基本假设似乎在限制对新的视频创作方法的探索,更重要的是,限制了视频作为媒介的进化。
视频创作的整个过程似乎需要重新构思,利用 LLM、多模态嵌入 / 搜索以及计算机视觉和扩散模型的力量与潜力,将其作为协作者。
这让我想到:
如果视频更个性化?更易于塑造?更具有协作性呢?
这意味着根据这些模型的优势重新构建当前的视频编辑工作流程。
构建生成式视频平台
于是我回到原点,重新思考视频编辑器的整体概念。突然,我产生了一个想法:
如果我们有一个视频生成器,不再生成单一、静态的作品,而是根据观众的独特需求,按需定制每个视频,那会怎样?
如果我们允许用户在体验视频时能够进行协作会怎么样呢?
我想象中的视频不再是静态的输出,而是像代码一样:动态生成,专为观众或特定受众量身定制。视频将更多成为一种游戏和互动的媒介,而不是传统的被动消费模式。
使用 Promptflow
创建动态视频生成流水线
因此,我开始使用微软的 LLM 框架 Promptflow 构建新的生成式视频原型。它支持将对 LLM 的调用与代码混合,构建基于图的完整流水线,用于生成式 AI 工作流。
你可以通过 yaml 文件来定义这些工作流,在文件中,你可以定义希望传递给 ChatGPT 工具的提示变量。这些提示的结果可以返回给 Python,或用于生成更多 LLM 调用。
基于这个工具,我使用最基础的生成方法,构建了最初的星座视频生成器。它接收提示,注入用户的变量,调用 LLM 生成视频脚本,接着生成图像并将其转化为视频,添加语音旁白和字幕,最后进行视频编辑。
流程如下:
在这个生成器中,视频生成器接收一个星座、一个日期和一个随机 Seed。(众所周知,LLM 在生成随机数方面存在困难)。
这些参数用于运行一个流水线,为用户生成独一无二、按需的视频星座运势。
从这个初步原型开始,我立即遇到了一些限制。
按照 Promptflow 的设计预期,用户会在 ChatGPT 这类服务上构建包装器,流程大多是静态的。可以想象成客户服务机器人,利用 RAG 填补回答查询所需的动态信息。
这与我设想的动态视频生成和编辑流程不符。这些静态流程的设计和编写似乎不在正确的抽象层级。
因此,我将 Promptflow 切换到了另一个工作流执行引擎 Temporal。
Temporal 生成式工作流
Temporal 让我能够将正在构建的生成过程以持久执行作为基本模块进行重组。
我不再为图的静态执行构建流程,而是先构建单独的工具或过程,随后用户可以决定如何将这些工具链接并执行,以适应他们的特定流程。(在 Temporal 中,这些称为“工作流”,并带有自动重试等功能)。
这在开发过程中尤其有用,如果出现错误,我通常能发现并修复它,然后重新启动工作线程。
然后,工作流会从上一次成功执行的地方开始重试,并通常可以顺利完成。
这大大加快了我图形执行工作流的开发进程。
使用(有时难以预测的)
LLM 时所面临的挑战
为软件工作流创建语言模型提示是一个比较困难的过程。
设计提示需要投入大量时间,来了解所选模型在特定使用场景中的表现。而且,即使你确定了提示,每个模型在解释、决定是否以及如何遵循指令时,似乎都有自己独特的方式。
这意味着一个提示可能最终更适合某个特定模型,而不适合其他模型。
很难提前判断哪个模型可能更适合你的任务。
人们试图通过编写 evals 来解决这个问题。
Evals 是用于测试 LLM 是否给出合适答案的测试。你可以使用代码编写 evals,也可以让 LLM 自行判断其答案是否正确。
为了解决这个问题,Anthropic 现在有一个所谓的“Workbench”,用户可以使用 Claude 生成和分析特定的提示:
使用 Workbench 能让你明确该如何处理所选提示任务,并了解在开发过程中可以期待的输出类型。
你可以在用户界面内快速评估这些生成提示的性能。
感谢 Workbench 提供的示例提示,我在视频生成器中添加了生成提示的过程,使用的是 Github 上 Anthropic 的 metaprompting 示例。
这些元提示是帮助用户开始使用提示模板的一个很好的起点。
令人惊奇的是,要求高级语言模型生成自己的提示似乎大多数都能奏效。
嵌入可能并不是你想象的解决方案
Vicky Boykis 写了一本关于构建嵌入模型的优秀免费书籍。
在阅读这本书之前,我认为矢量数据库将主导所有从事大型语言模型(LLM)工作的人的搜索和检索。 2023 年的宣传认为,矢量数据库将成为信息检索的未来。
但当我开始使用嵌入模型和向量数据库时,结果似乎并没有达到宣传的效果。
深入研究后,我发现嵌入本质上是一种压缩技术,它将数据集中的独特特征压缩成一个固定长度的向量输出,遍布整个嵌入空间。
这些维度如何映射到与你的业务用例相关的数据,取决于你构建嵌入空间的质量。
但是,大多数刚入门的人并没有针对特定用例训练自己的嵌入模型,而是依赖现成的通用嵌入模型来解决业务问题。
这种盲目地将通用嵌入模型应用于传统搜索的做法,可能会导致更糟糕的结果和更难以调试的系统。
我们来举一个具体的例子。
歌曲搜索示例
多年前,我创建了一个歌曲搜索引擎。
我面临的挑战之一是为非常通用的搜索词引导出相关结果。
事实证明,大部分歌曲的标题区分度并不高,因此简单的文本搜索在歌曲名称、专辑和艺术家方面效果很差。
因此,通用的文本嵌入模型在提供令人满意的结果时尤其困难。
假设我们的用户正在搜索“stop ”一词:
包含“stop”一词的歌曲、专辑和艺术家可能多达数万。
你如何开始确定哪些是最相关的?
为了解决这个问题,我转向了音乐排行榜。这些排行榜自 40 年代以来就已发布,包含了一些文化上最重要的歌曲。
通过为曾在排行榜上排名的歌曲增加权重或偏向得分,我能够着手构建一个初始的搜索系统。
如果我从嵌入模型开始,我不确定能否如此轻松地构建解决方案。也许现成的嵌入模型已经掌握了排行榜的一部分信息,但究竟有多少呢?
同样,在构建自动视频编辑器的过程中,我发现有必要将嵌入模型、传统搜索理念以及一些特定领域的理念和实验结合使用。
创造新事物的奇妙旅程
每当我看到有人完成某项工作时,我都会努力去祝贺他们。
完成任何事情总是会伴随着许多看不见的挑战,熵对我们所有人都是不利的。
因此,在过去的一年里,当我努力实现创造新事物的愿景时,我也走了一些弯路。
黄仁勋有一句精彩的引用,当被问及是否会再次创办英伟达时,他表示他不会,因为他现在知道这有多困难。
同样,在过去的一年里,我一直在思考,是否在试图独自创造新事物时太自私、太天真,而不是依靠现有的成功与运气,选择一份全职工作以保守行事。
我还不知道答案,但我感激能有机会去寻找答案。
作者简介:
Kirk Kaiser,艺术家,软件开发人员
https://www.makeartwithpython.com/blog/a-year-of-showing-up/
声明:本文为 InfoQ 翻译,未经许可禁止转载。
领取专属 10元无门槛券
私享最新 技术干货