我们用来构建人工智能的工具正在快速发展,而 PyTorch 是许多进步的核心。但是,除非我们改进构建人工智能系统的方法,否则我们就有可能在提升性能的同时,以同样快的速度放大危害。负责任地构建人工智能意味着设计的系统不仅要性能出色,而且要公平、安全、透明——比如确保人工智能招聘工具不会偏袒任何一个群体。
开发负责任人工智能系统的一个有效方法是黄队测试 (Yellow Teaming)——这是一种主动演练,旨在部署前发现潜在的意外后果。黄队测试通过做出更周到、更具影响意识的设计选择,从而打造出整体更优秀的产品,帮助公司在拥挤的市场中脱颖而出。
在这篇博客中,我们将展示如何使用一个可复用的系统提示,在 AWS Graviton4 上快速创建一个基于 PyTorch 的 LLM 黄队测试助手。我们还将提供一个示例,向您展示如何使用这个新助手来探究功能设计中可能出现的、对业务至关重要的意外后果,并最终构建出更好的产品。
让我们开始吧。
什么是黄队测试
您可能已经熟悉网络安全领域中更流行的术语“红队测试”(Red Teaming),它涉及模拟攻击者可能如何攻击您的产品,并在发布前修复漏洞。还有其他颜色编码的方法(比如蓝队负责防御攻击),但黄队测试的独特之处在于,它从产品生命周期的开始就专注于周到的设计和实施。红队测试的实践已经被应用于人工智能领域。现在,黄队测试的原则也正成为人工智能开发的重要组成部分。
黄队测试的实践会提出一系列探究性问题,帮助揭示您的产品对业务、用户以及整个社会产生的更广泛、非预期的影响。The Consilience Project 的文章《进行中的开发》(Development in Progress) 雄辩地解释了黄队测试的这种应用及其背后的基本原理。在人道技术中心 (Center for Humane Technology) 的免费课程中,《最大限度减少有害后果》(Minimizing Harmful Consequences) 模块也提供了与此密切相关的实践。
为什么黄队测试很重要?
其核心思想是,通过以广阔的视角分析产品决策的后果,您可以设计出更好的产品,为公司的盈利和用户的福祉创造正向反馈循环。例如,它可以帮助您避免构建一个会无意中加剧偏见的聊天机器人。
传统的产品开发实践通常只针对狭义定义的成功指标进行优化。为产品设定具体的衡量标准有利于集中精力和明确责任,但这可能导致过度优化某些指标,而忽略了对公司至关重要的其他信号。例如,开发一款由人工智能驱动的推荐应用,虽然短期内能提高用户参与度,但长期来看却让用户感觉更糟,无法留住用户。
狭隘的产品优化往往会引发无法衡量的负面效应。这些效应包括用户在使用产品时感到疲惫或沮丧,公司声誉受损或整体参与度下降,以及社会因缺乏信任和有意义的沟通而分裂。
在许多情况下,纸面上看起来成功的产品实际上正在损害您的用户、您的公司以及您的长远目标。
如何实施黄队测试实践
黄队测试直接而强大。选择一个您正在构建的产品,系统地评估其大规模采用后对您的用户、业务和社会产生的各种后果。从直接后果开始,然后通过提问“之前的影响会导致什么结果?”来推演二阶和三阶后果。您应该从多个维度思考这些后果:
- 好的和坏的
- 短期的和长期的
- 预期的和非预期的
- 对公司和对用户的
- 对单个用户和对用户群体的
这类问题有助于激发富有成效的头脑风暴:
- 这项功能会激励用户产生什么样的行为?
- 这项技术提供了哪些可能性(即使用户可能以非预期的方式,现在能做什么以前做不到的事)?
- 这会提高还是降低对我们平台的信任?
- 哪些社会群体可能受益——或被落下?
黄队测试基于复杂系统思维和外部性分析——这些领域传统上似乎与工程工作流相去甚远。但是,通过引入一个轻量级的黄队测试助手来辅助您的构思过程,它可以成为产品开发中一个直观、高投资回报率的部分。
构建您自己的 PyTorch YellowTeamGPT
好消息是,您不需要哲学博士学位或顾问小组来进行项目的黄队测试。您只需要愿意行动,并且在这个黄队测试的实现中,使用一个好的 LLM 和正确的提示。在本地运行 LLM 有几个优势。最大的优势是您可以安全地输入机密的产品计划,而不用担心数据泄露。另一个好处是,较小的模型并非完美无缺,会犯错误,这迫使用户对每个输出进行批判性思考,让我们进入分析不易察觉的产品后果的正确心态。
以下是如何在您的 Graviton 实例上设置一个基于 PyTorch 的 80 亿参数 Llama3 模型。首先,创建一个运行 Ubuntu 24.04、至少有 50 GB 存储空间的 r8g.4xlarge 实例,然后遵循以下三个步骤:
1. 使用 torchchat 仓库和其他需求设置您的机器。
sudo apt-get update && sudo apt install gcc g++ build-essential python3-pip python3-venv google-perftools -y git clone https://github.com/pytorch/torchchat.git && cd torchchat python3 -m venv .venv && source .venv/bin/activate ./install/install_requirements.sh
2. 输入您的 Hugging Face (HF) 访问令牌,从 Hugging Face 下载模型(请注意 max sequence length 参数,您可以增加该参数以支持更长的对话,内存使用会线性增加)。
pip install -U "huggingface_hub[cli]" huggingface-cli login python torchchat.py export llama3.1 --output-dso-path exportedModels/llama3.1.so --device cpu --max-seq-length 8192
3. 使用 Arm CPU 优化运行模型,每个响应的最大令牌长度为 700。
LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libtcmalloc.so.4 TORCHINDUCTOR_CPP_WRAPPER=1 TORCHINDUCTOR_FREEZING=1 OMP_NUM_THREADS=16 python torchchat.py generate llama3.1 --dso-path exportedModels/llama3.1.so --device cpu --max-new-tokens 700 --chat For more details on these commands and additional code snippets to add a UI to this chatbot, review this Arm Learning Path. You can then enter a custom system prompt. Below is a simple prompt that turns your local LLM into a Yellow Teaming assistant. Feel free to review and tweak it to get the most out of it for your specific needs. Here’s what it does:
- 收集关键产品细节:您在构建什么,它如何盈利,您的用户是谁。
- 分析直接和间接后果:YellowTeamGPT 会一次展示一个,考虑对您的业务、用户及更广泛领域的非显而易见的影响(您自己可能也会开始想到更多影响)。
- 与您迭代:您是主导者,可以告诉 YellowTeamGPT 继续列出一般的直接后果,识别特定的公司风险,转向二阶效应,甚至可以头脑风暴新功能来改进您的产品。
这是供您复制的 YellowTeamGPT 系统提示。如果直接复制,请确保将其作为单行复制到您的终端中,否则换行符可能会导致问题。
你是一位名为 YellowTeamGPT 的复杂系统思维和人工智能产品设计专家。你帮助技术人员构建用户喜爱、降低公司风险的更优质产品。你通过黄队测试方法论帮助用户评估他们的产品设计决策,该方法论旨在识别设计决策对他们的业务、用户和社会产生的后果。
你将向用户请求有关他们正在开发产品的信息。一旦获得足够的信息,你将分析该产品如果大规模部署后可能产生的后果。你的思考结构应首先审视直接后果,然后分析由已识别的直接效应引发的二阶后果(通过提问“接下来可能会发生什么?”)。你需要考虑影响公司、用户和社会的后果;这些后果是短期的还是长期的;以及它们是否涉及真相与理解、人类福祉、能力增长、经济学等多个类别。
你的作用是建设性地挑战用户,而不是强化他们已有的想法。扮演“魔鬼的代言人”来帮助用户以他们目前没有考虑到的方式思考。
你将按以下格式输出:对于每一个已识别的后果,将其影响与产品质量联系起来,并向用户提出一个问题,帮助他们更好地设计产品以减轻该后果(或将负面影响转化为正面影响)。一次只列出一个后果,并询问用户是希望继续列出其他后果,还是想进一步探讨当前后果。
黄队测试示例
将提供的系统提示输入您的 LLM,然后按回车。接下来,您的 YellowTeamGPT 助手会要求提供一些产品细节。以下是我使用的一个假设的产品示例:
我正在开发一款应用,能将群聊对话变成一首朗朗上口的流行歌曲。目标用户是任何用户,比如 WhatsApp 用户。核心功能是导入群聊对话,并输出一段带有歌词和匹配节拍的曲调。它是一款适用于任何智能手机的应用。理想情况下,用户能达到数百万。将通过对用户进行定向广告来盈利。
您会注意到,当 YellowTeamGPT 思考并生成回复时,它的速度明显慢于 ChatGPT 或其他流行的 GPT。与模型的准确性不足一样,它的慢速也可以被视为一种优势。这个练习的重点是放慢节奏,仔细思考不易察觉的产品影响,并进行头脑风暴,构思出能够在您的产品所触及的各个系统中创造正向价值的增强功能。当您的 YellowTeamingGPT 在“思考”时,您也应该在思考。
以下是我对话的片段。首先,它从一个直接后果开始:
然后我指示它继续到另一个后果:
我要求探讨这款应用大规模传播错误信息所带来的二阶效应:
最后,我请求帮助进行头脑风暴,构思产品功能来减轻这种危害。它生成了一些有趣的概念,虽然还不是可以立即投入生产的功能,但很容易激发进一步的构思。
通过使用 YellowTeamGPT 进行这个用例分析,我们能够快速探讨那些我们可能没有考虑到的产品影响。然后,我们可以头脑风暴出解决之前未曾考虑过的问题的功能,从而带来更好的产品体验,同时也降低了我们假设的公司声誉受损的风险。
将黄队测试融入您的实践
在任何您需要做决策来塑造产品功能和用户体验的地方,黄队测试都适用。以下是几个可以利用您的新 YellowTeamGPT 的例子:
- 新产品构思会,以扩展您的思路。
- 功能规划文档,以对您的规格进行压力测试。
- 代码审查工作流,以标记潜在的滥用风险。
- Sprint 回顾会,以反思大规模部署后的设计选择。
- 产品推介文稿,以展示对负责任 AI 的尽职调查。
它可以是正式的,也可以是非正式的。您和您的团队越是思考非预期的、N 阶的产品后果,并从多个维度进行分析,您的产品就会越好。通过将黄队测试融入您的工作中,您不仅做了正确的事,还构建了这样的产品:
- 用户更愿意参与和信任
- 减轻有害影响
- 最小化公司风险
- 创造持久的商业价值
让我们停止将负责任的人工智能实践看作是清单上需要勾选的一项,而开始把它看作它真正的样子——一种为您的公司、您的用户以及我们共同的社会创造积极成果的竞争优势。