斯坦福AI小镇开源了,以人工智能为核心的人类行为模拟正式登场!

斯坦福AI小镇开源了,以人工智能为核心的人类行为模拟正式登场🤔!

1、斯坦福AI小镇开源的背后故事

最近,我发现斯坦福AI小镇的25人模拟环境居然开源了!这个令人兴奋的消息让我立刻去了解了解。地址就在这里哦:joonspk-research/generative_agents。这个项目之前一直没有开源代码,只有一些大致的架构和提示,所以我之前都是靠自己去摸索。但现在,终于有了开源的代码,我第一时间clone下来运行起来看了看😎。按照Readme的说明,跑起来没有问题。不过当我运行了100步的时候,报错了,显示list index out of range。但是运行10步没有问题。我本来以为这个模拟是实时运行的,就像是一个游戏一样。但实际上,它是先计算后运行的。比如运行10步,就是模拟10步(每步10秒,相当于游戏时间100秒),计算得到数据后,客户端在浏览器上使用这些数据进行100秒的运行,然后停止。然后你可以继续在命令行中输入run xxx步来继续计算。这样的设计巧妙地避开了LLM推理速度慢的问题。我之前做的demo是实时的,但是LLM推理一次要花几秒钟的时间。为了避免等待太久,我还加入了一种加速功能。但是如果游戏时间加速得太快,可能就等不及LLM的返回了。所以现在这个开源的项目解决了我的困惑,我之前还在猜想他们是如何解决这个问题的呢。

另外一个问题是成本。真的好贵啊🔥!我模拟100秒的时间,就花了我6块人民币。如果是模拟游戏中的一整天,那就太贵了。当然,这也可能是因为一开始调用LLM的次数比较多。下面是我运行了10步后控制台的日志输出,可以看到整个模拟过程😎。不过,需要说明的是,这篇文章并不是分析源码,只是对运行流程进行了分析,梳理了一下架构的逻辑。

2、流程分析

1. 生成起床时间

第一次调用LLM是为了推理居民的起床时间。仔细观察发现,输入的信息和起床时间似乎关系不大。而且最后推理出的起床时间是8点,看起来好像并不准确。毕竟,8点咖啡店就要开门了。这里我想提两个问题。首先是推理结果,并不能完全依赖于逻辑,当前阶段的LLM就是这样。话说回来,为什么不使用gpt-3.5-turbo呢?或许使用gpt3.5会更好,而gpt4会更加出色吧❤️。我直接使用默认配置进行克隆并运行,可能需要对配置进行一些修改。

另一个问题是,尽管推理起床时间看起来不需要太多的信息,但这里使用了一个架构来解决问题。如果你阅读过论文,就会知道,这个项目的核心是记忆流。所以这些信息只是初始信息,如果有了记忆,得到的信息将会参考记忆。虽然看起来有些多余,但这是整个架构的一部分。

2. 生成第一天的计划

这一步和论文中所说的一样,生成了一个大致的计划(使用自然语言描述)。可能是因为使用的是text-davinci-003的原因,所以这个计划看起来并不是非常完美🤔。但这并不影响对架构流程的分析。

3. 生成按小时的日程表

按小时生成日程并不是一次性完成的,而是每个小时都要调用LLM生成。生成的时候会把之前已经生成的日程放在提示中。首先是8点开始的第一个小时,这个提示强调了日程的格式。并且不仅仅是简单地说明格式是什么,还直接给出了每个小时时间段的格式(尽管格式是一样的)。然后是角色信息和当前日期,再接着是之前生成的日程安排,从0点开始一直到7点都是睡觉(因为之前已经生成了8点起床)。最后,给出了8点的日程让LLM补充。LLM的返回结果非常符合预期,效果很好。接下来是9点的日程,同样的步骤:提示中给出了从0点开始到8点的每个时间段的日程,其中8点的日程是前一步生成的。最后,让LLM补充9点的日程。输出结果仍然符合预期,咖啡馆开门了。(尽管咖啡馆通常是8点开门,但是偶尔迟到一会也没关系:)接下来,我们会继续处理每个小时的安排,一直到晚上11点。因为11点开始的这个小时已经是这一天的最后一个小时了。

N. 细化日程

待续…

总结

斯坦福AI小镇开源了👏!

© 版权声明

相关文章

暂无评论

暂无评论...