Character.AI 的提示词设计

在 Character.AI,掌握提示工程的艺术和科学至关重要。随着每日生成数十亿个提示,采用一种强大且可扩展的提示设计方法显得尤为必要。本文作者提倡从传统的“提示工程”转向“提示设计”,通过开发 Prompt Poet 工具,使开发者和非技术用户能够更高效地设计和管理提示,提升用户与 AI 模型的交互质量。 提示设计的重要性:构建有效的提示需要考虑多种因素,包括对话模式、实验、角色、用户属性、记忆和整个对话历史等。随着 LLM(大语言模型)上下文窗口的扩大,提升提示设计的效率显得尤为重要。 Prompt Poet 工具:该工具结合了 Python 的 f-strings 和 YAML,使提示的设计和管理更加灵活和易于使用。Prompt Poet 允许用户在不编写代码的情况下高效创建和迭代提示模板,节省了大量的字符串操作时间。 模板处理过程:提示模板的处理分为两个主要阶段: 渲染:使用 Jinja2 处理输入数据,执行控制流逻辑并验证数据。 加载:输出为结构化的 YAML 文件,便于管理和使用。 示例模板:提供了基本的问答机器人模板,展示了如何使用 Jinja2 语法和 YAML 结构来创建灵活的提示。 上下文长度管理:通过设置截断优先级,Prompt Poet 可以有效管理对话历史,确保在上下文长度受限时保留重要信息。 设计选择:Prompt Poet 库提供了多种功能,包括提示属性的设置、令牌化和截断等,优化了响应的效率和延迟。 结论:Prompt Poet 代表了提示工程的重大进步,简化了复杂和个性化提示的创建过程,使开发者和用户能够更专注于提示设计,推动 AI 交互的高效和直观化。 Character.AI 的提示词设计 作者: James Groeneveld Github: https://github.com/character-ai/prompt-poet PyPi: https://pypi.org/project/prompt-poet/ 在 Character.AI,掌握 Prompt Engineering(提示工程)的艺术和科学至关重要。构建生产环境中的提示需要考虑大量数据和因素:当前对话模式、正在进行的实验、涉及的角色、聊天类型、各种用户属性、固定记忆、用户角色和整个对话历史等。我们每天生成数十亿个提示,需要充分利用不断扩展的大语言模型 (LLM) 上下文窗口,并且我们的使用场景非常多样化,因此需要一种强大且可扩展的提示设计方法。我们主张从传统的“提示工程”转向“提示设计”,从繁琐的字符串操作转变为设计精确、引人入胜的提示。这篇文章介绍了我们开发的 Prompt Poet,它是我们为此目的开发的工具。 简要概述 Python 的 f-strings(及其封装)现在是提示工程师的行业标准。使用 f-strings 可以简单到将用户查询直接插入到字符串中,但也可能变得非常复杂,涉及大量手动字符串操作来创建最终提示。这也使得提示的迭代对于非技术人员来说不太友好,因为需要编写代码。 我们认为可以有更好的方法。因此,我们开发了 Prompt Poet (Github / PyPi),一个允许开发者和非技术用户高效设计和管理生产提示的工具。它节省了在字符串操作上的工程时间,让大家能更专注于为用户打造最佳提示。...

August 5, 2024 · 5 min · fisherdaddy

Character.AI 的 AI 推理优化实践

Character.AI 正在致力于构建通用人工智能(AGI),旨在将大型语言模型(LLM)融入日常生活,以提升工作效率和娱乐体验,并在教育、辅导、支持、头脑风暴、创意写作等方面为人们提供帮助。为了实现这一目标,高效地进行“推断”(即LLM生成回复的过程)在全球范围内至关重要。作为一家全栈AI公司,Character.AI 从零开始设计模型架构、推断栈和产品,以优化推断的效率、成本效益和可扩展性。原文戳这里。 高效的架构设计:Character.AI 通过以下技术,将注意力键值(KV)缓存大小减少了20倍以上,同时没有降低质量: 使用多查询注意力(Multi-Query Attention)。 采用混合注意力范围,将局部注意力(Local attention)与全局注意力层交织。 在相邻的注意力层之间共享KV缓存。 状态缓存:Character.AI 开发了一种在对话回合之间在主机内存上缓存注意力KV的高效系统。通过这种系统,可以实现95%的缓存率,进一步降低推断成本。 量化训练和推断:公司使用int8量化技术对模型权重、激活和注意力KV缓存进行量化,并实现了定制的int8内核以支持矩阵乘法和注意力计算。与常见的“后训练量化”技术不同,Character.AI 直接以int8精度训练模型,消除了训练/推断不匹配的风险,同时显著提高了训练效率。 成本效益:自2022年底以来,Character.AI 将推断成本降低了33倍。与使用领先的商业API相比,使用Character.AI的系统至少可以节省13.5倍的支出。 未来展望:Character.AI 感到兴奋的是,继续构建一个将LLM作为全球创新驱动力和增强体验的未来。公司承诺将继续推动AI的可能极限,致力于创建一个高效、可扩展的AI系统成为每一次互动核心的未来。 Character.AI 的 AI 推理优化 在 Character.AI,我们正在朝着实现通用人工智能 (AGI) 的目标迈进。在这个未来中,大语言模型 (LLMs) 将会提升我们的日常生活,从提高业务生产力到提供娱乐服务,并在教育、指导、支持、头脑风暴、创意写作等各方面帮助人们。 为了在全球范围内实现这一目标,必须实现高度高效的“推理”——即 LLMs 生成回复的过程。作为一家全栈 AI 公司,Character.AI 从零开始设计了模型架构、推理栈和产品,这为优化推理效率、降低成本并扩大规模提供了独特的机会,以满足快速增长的全球用户需求。 目前,我们每秒处理超过 20,000 次推理查询。为了让大家了解这一规模,可以参考一下,据第三方估计,Google 搜索每秒处理大约 105,000 次查询 (Statista, 2024),我们处理的查询量大约是它的 20%。 我们能够在如此大规模下稳定提供 LLM 服务,是因为我们在服务栈中开发了许多关键创新。在这篇博客文章中,我们将分享过去两年中开发并最近采用的一些技术和优化方法。 内存高效的架构设计LLM 推理的关键瓶颈在于注意力键值 (KV) 缓存的大小。KV 缓存的大小不仅决定了 GPU 上可以容纳的最大批次大小,还影响了注意力层的 I/O 成本。我们采用了以下技术,在不影响质量的前提下,将 KV 缓存大小减少了 20 倍以上。通过这些技术,GPU 内存不再是服务大批量请求的瓶颈。 1. 多查询注意力。我们在所有注意力层中采用了多查询注意力 (Shazeer, 2019)。相比大多数开源模型采用的分组查询注意力,这项技术将 KV 缓存大小减少了 8 倍。 2. 混合注意力范围。我们交替使用局部注意力 (Beltagy et al....

June 24, 2024 · 1 min · fisherdaddy