llama3 带有扩展上下文的指令
77 Pulls 更新于 3 个月前
更新于 3 个月前
3 个月前
d9650b444606 · 43GB
说明文件
语言
- en
pipeline_tag: text-generation
标签
- meta
- llama-3
开源许可: llama3
Llama-3 70B Gradient Instruct 524K
加入我们的定制代理和长上下文(262k-1M+)等待名单:https://forms.gle/L6TDY7dozx8TuoUv7
渐变将您的数据结合起来,部署能够在您的业务中提供关键操作的自主助手。如果您想构建自定义AI模型或代理,请发送电子邮件到 contact@gradient.ai 联系我们。
更多信息,请参见我们的面向自定义LLMs和AI系统的端到端开发服务
此模型将Llama-3 70B的上下文长度从8k扩展到> 524K,由Gradient开发,由Crusoe Energy提供计算支持。[Crusoe Energy](https://hugging-face.cn/crusoeai)。它表明SOTA LLMs可以通过适当地调整RoPE theta,以极少的训练来学习在长上下文中操作。我们在这个阶段训练了210M个标记,总共所有阶段大约4M个标记,这不到Llama-3原始预训练数据的0.003%。
方法
- 将meta-llama/Meta-Llama-3-70B-Instruct作为基础
- 根据缩放定律[2]进行NTK感知插值[4],以设置RoPE theta的最佳计划
- 在增加的上下文长度上进行逐步训练,类似于Large World Model 1
基础设施
我们在EasyContext Blockwise RingAttention库[5]的基础上进行构建,以可扩展和高效的方式在Crusoe Energy高性能L40S集群上针对非常长的上下文进行训练。
我们在环状注意力的基础上进行了并行处理,使用自定义网络拓扑,以更好地利用大GPU集群,克服因在设备之间传递许多KV块而产生的网络瓶颈。
数据
对于训练数据,我们通过增强SlimPajama来生成长上下文。我们还根据UltraChat[3]进行了微调,采用与[1]相似的数据增强方法。
逐步训练详细信息
65K | 262K | 524K | |
---|---|---|---|
初始化自 | Llama-3-70B-Instruct | 65K | 262K |
N序列长度2^N | 16 | 18 | 19 |
RoPE theta | 15296098 | 207112184 | 1062356830 |
批量大小 | 64 | 16 | 8 |
梯度累积步骤 | 1 | 1 | 2 |
步骤 | 20 | 25 | 25 |
总标记数 | 83886080 | 104857600 | 209715200 |
学习率 | 2.00E-05 | 2.00E-05 | 2.00E-05 |
# GPU | 512 | 512 | 512 |
GPU类型 | NVIDIA L40S | NVIDIA L40S | NVIDIA L40S |
训练时间(墙时) | 100 | 170 | 284 |
评估详情
EVAL_MAX_CONTEXT_LENGTH=640000
EVAL_MIN_CONTEXT_LENGTH=100
EVAL_CONTEXT_INTERVAL=32000
EVAL_DEPTH_INTERVAL=0.2
EVAL_NUM_SAMPLES=2
EVAL_RND_NUMBER_DIGITS=8
HAYSTACK:
EVAL_GENERATOR_TOKENS=925000
Haystack是“haystack 3”,在本博客文章中进行了更详细的介绍。
数量
Gradient AI团队
Gradient正在加速各个行业的AI转型。我们的AI铸造厂结合您的数据,部署自主助手,以支持业务中的关键操作。
联系我们
发送电子邮件至 contact@gradient.ai
参考
[1] Liu, Hao, et al. “World Model on Million-Length Video And Language With RingAttention.” arXiv preprint arXiv:2402.08268 (2024).
[2] Liu, Xiaoran, et al. “Scaling laws of rope-based extrapolation.” arXiv preprint arXiv:2310.05209 (2023).
[3] Ning Ding, Yulin Chen, Bokai Xu, Yujia Qin, Zhi Zheng, Shengding Hu, Zhiyuan
Liu, Maosong Sun, and Bowen Zhou. Enhancing chat language models by scaling
high-quality instructional conversations. arXiv preprint arXiv:2305.14233, 2023.
[4] Peng, Bowen, et al. “Yarn: Efficient context window extension of large language models.” arXiv preprint arXiv:2309.00071 (2023).
[5] https://github.com/jzhang38/EasyContext
基础模型
模型详细说明
Meta开发和发布了Meta Llama 3大型语言模型(LLM)系列,这是一个包括8B和70B大小的预训练和指令微调生成文本模型集合。Llama 3指令微调模型针对对话场景进行了优化,并在多种行业基准测试中优于许多开源聊天模型。此外,在开发这些模型时,我们付出了极大的努力来优化有用性和安全性。
模型开发者 Meta
变体 Llama 3有两种尺寸 — 8B和70B参数 — 在预训练和指令微调版本。
输入 模型仅输入文本。
输出 模型仅生成文本和代码。
模型架构 Llama 3 是一个自动回归语言模型,使用经过优化的 Transformer 架构。调整版本使用监督性微调(SFT)和强化学习结合人工反馈(RLHF)以符合人们对有用性和安全性的喜好。
训练数据 | 参数 | 上下文长度 | GQA | 令牌计数 | 知识截止日期 | |
Llama 3 | 一种新的混合了公开可用的在线数据。 | 8B | 8k | 是 | 15T+ | 2023年3月 |
70B | 8k | 是 | 2023年12月 |
Llama 3 模型系列. 令牌计数仅指预制训练数据。8B 和 70B 版本都使用分组查询注意力(GQA)以改进推理的可扩展性。
模型发布日期 2024年4月18日。
状态 这是一个在离线数据集上训练的静态模型。随着我们对模型安全性进行改进并结合社区反馈,我们将发布调整过的模型版本。
许可证 可在以下链接获取定制的商业许可证:https://llama.meta.com/llama3/license
关于模型的疑问或评论发送到何处有关如何在模型中提供反馈或评论的说明,请参阅模型的 README。有关生成参数的更多技术信息和如何在应用程序中使用 Llama 3 的食谱,请访问这里。
预期用途
预期用途案例 Llama 3 预期用于英文的商业和研究目的。调整后的指令模型旨在用于类似助手的聊天气息,而预制模型可以适用于各种自然语言生成任务。
不适用范围 违反适用法律或规定(包括贸易合规法规)的任何方式使用。违反可接受使用政策和 Llama 3 社区许可证的任何其他禁止使用方式。使用除英语以外的任何语言**。
**注意:如果开发者遵守 Llama 3 社区许可证和可接受使用政策,则可以微调 Llama 3 模型以外的语言**。
如何使用
此存储库包含两个版本的 Meta-Llama-3-70B-Instruct,可用于与 transformers 和原始 llama3
代码库一起使用。
与 transformers 一起使用
以下代码段展示如何与 Transformers 一起使用
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3-70B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device="auto",
)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
pipeline.tokenizer.eos_token_id,
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = pipeline(
prompt,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])
与 llama3
一起使用
请按照 存储库 中的说明操作。
要下载原始检查点,请参阅以下利用 huggingface-cli
的示例命令
huggingface-cli download meta-llama/Meta-Llama-3-70B-Instruct --include "original/*" --local-dir Meta-Llama-3-70B-Instruct
对于 Hugging Face 支持,我们建议使用 transformers 或 TGI,但是一个类似的命令就可以。
硬件和软件
训练因素 我们使用了定制的训练库、Meta 的研究超级集群和用于预训练的生产集群。微调、注释和评估也已在第三方云计算上完成。
预训练的碳足迹 累计使用 H100-80GB 类型的硬件(TDP 为 700W)计算了 7.7M GPU 小时。估计的总排放量为 2290 tCO2eq,全部由 Meta 的可持续性项目抵消。
时间(GPU 小时) | 功耗(W) | 碳排放(tCO2eq) | |
Llama 3 8B | 1.3M | 700 | 390 |
Llama 3 70B | 6.4M | 700 | 1900 |
总计 | 7.7M | 2290 |
预训练期间的 CO2 排放。时间:训练每个模型所需的总体 GPU 时间。功耗:用于 GPU 设备的峰值功耗容量,根据功耗效率进行调整。100% 的排放量直接由 Meta 的可持续性项目抵消,因为我们公开释放这些模型,因此其他人不需要承担预训练成本。
训练数据
概述 Llama 3 在公开来源的超过 1500 万亿个数据上进行了预训练。微调数据包括公开的指令数据集,以及超过 1000 万人工标注的示例。预训练和微调数据集均不包括 Meta 用户数据。
数据时效性 预训练数据的截止日期为 2023 年 3 月(7B 模型)和 2023 年 12 月(70B 模型)。
基准测试
在本节中,我们报告了 Llama 3 模型在标准自动基准测试中的结果。对于所有评估,我们使用了我们内部的评估库。关于方法的详细信息,请参阅这里。
基本预训练模型
分类 | 基准 | Llama 3 8B | Llama2 7B | Llama2 13B | Llama 3 70B | Llama2 70B |
通用 | MMLU (5 尝试) | 66.6 | 45.7 | 53.8 | 79.5 | 69.7 |
AGIEval 英语 (3-5 尝试) | 45.9 | 28.8 | 38.7 | 63.0 | 54.8 | |
CommonSenseQA (7 尝试) | 72.6 | 57.6 | 67.6 | 83.8 | 78.7 | |
Winogrande (5 尝试) | 76.1 | 73.3 | 75.4 | 83.1 | 81.8 | |
BIG-Bench Hard (3 尝试,CoT) | 61.1 | 38.1 | 47.0 | 81.3 | 65.7 | |
ARC-Challenge (25 尝试) | 78.6 | 53.7 | 67.6 | 93.0 | 85.3 | |
知识推理 | TriviaQA-Wiki (5 尝试) | 78.5 | 72.1 | 79.6 | 89.7 | 87.5 |
阅读理解 | SQuAD (1 尝试) | 76.4 | 72.2 | 72.1 | 85.6 | 82.6 |
QuAC (1 尝试,F1) | 44.4 | 39.6 | 44.9 | 51.1 | 49.4 | |
BoolQ (0 尝试) | 75.7 | 65.5 | 66.9 | 79.0 | 73.1 | |
DROP (3 尝试,F1) | 58.4 | 37.9 | 49.8 | 79.7 | 70.2 |
指令微调模型
基准 | Llama 3 8B | Llama 2 7B | Llama 2 13B | Llama 3 70B | Llama 2 70B |
MMLU (5 尝试) | 68.4 | 34.1 | 47.8 | 82.0 | 52.9 |
GPQA (0 尝试) | 34.2 | 21.7 | 22.3 | 39.5 | 21.0 |
HumanEval (0 尝试) | 62.2 | 7.9 | 14.0 | 81.7 | 25.6 |
GSM-8K (8 尝试,CoT) | 79.6 | 25.7 | 77.4 | 93.0 | 57.5 |
MATH (4 尝试,CoT) | 30.0 | 3.8 | 6.7 | 50.4 | 11.6 |
责任与安全
我们认为,向 AI 开放的方法将导致更好的产品、更快的创新和更大的整体市场。我们致力于负责任的 AI 开发,并采取了系列措施来限制误用和损害,并支持开源社区。
基础模型是广泛的技术,旨在用于各种应用。它们不是为了满足所有开发者对所有使用情况的安全性偏好在开箱即用的设计,因为它们本质上是针对不同应用的。
相反,负责任的 LLM 应用部署是通过在应用的整个开发过程中实施一系列安全最佳实践来实现的,从模型的预训练、微调到部署包含安全措施的系统,以专门针对具体使用情况和受众定制安全需求。
作为 Llama 3 发布的一部分,我们更新了我们的负责任的使用指南,概述了开发者实施其应用程序模型和系统级安全的步骤和最佳实践。我们还提供了一系列资源,包括Meta Llama Guard 2和代码盾安全措施。这些工具已被证明大幅降低了 LLM 系统的残余风险,同时保持了高度的有用性。我们鼓励开发者根据其需求调整和部署这些安全措施,并提供参考实现以供参考。
Llama 3-Instruct
如负责任使用指南中概述,模型的有用性与模型一致性之间可能不可避免地存在某种妥协。开发者应自行斟酌如何权衡其特定使用情况和受众对一致性和有用性的利益。开发者在使用 Llama 模型时应小心谨慎,并根据需要利用额外的安全工具,以达到其使用案例的正确安全水平。
安全
对于我们的指令微调模型,我们进行了广泛的红队练习,执行了对抗性评估并实施了缓解技术以降低残余风险。与其他大型语言模型一样,残余风险可能仍然存在,我们建议开发者根据其使用案例评估这些风险。同时,我们正在与社区合作,使 AI 安全基准标准透明、严格和可解释。
拒绝
除了残留风险之外,我们还非常重视模型对良性提示的拒绝。过度拒绝不仅可能影响用户体验,在某些情况下甚至可能造成危害。我们已经收到开发社区的意见反馈,并改进了微调,以确保Llama 3错误拒绝提示的可能性显著低于Llama 2。
我们建立了内部基准,开发了缓解措施,限制误拒绝,使Llama 3成为我们迄今为止最有帮助的模型。
负责任发布
除了上述负责任的使用考量外,我们在做出发布决定前,遵循了一个严格的过程,需要我们采取额外措施防止滥用和关键风险。
滥用
如果您访问或使用Llama 3,则同意使用接受政策。本政策的最新版本可在以下链接找到:[https://llama.meta.com/llama3/use-policy/](https://llama.meta.com/llama3/use-policy/)
关键风险
CBRNE(化学、生物、辐射、核能和高当量爆炸物)
我们对模型在这一领域的安全性进行了双向评估
- 在模型训练过程中进行迭代测试,以评估与CBRNE威胁和其他对抗性风险相关的响应的安全性。
- 包括外部CBRNE专家,进行提升测试,评估模型准确提供专业知识以降低潜在CBRNE滥用的障碍,方法是参考使用网络搜索(不使用模型)可以实现的内容。
网络安全
我们已经使用Meta的网络安全安全评估套件CyberSecEval评估了Llama 3,衡量当用作编码助手时,Llama 3提出不安全代码的倾向,以及Llama 3遵守协助执行网络攻击请求的倾向,其中攻击按行业标准MITRE ATT&CK网络攻击本体定义。在我们的不安全编码和攻击者有用性测试中,Llama 3的行为与同等编码能力的模型相比处于相同的范围或更安全。
儿童安全
儿童安全风险评估由专家团队进行,以评估模型产生可能造成儿童安全风险输出的能力,并通过对模型进行微调说明任何必要和适当的缓解措施。我们利用这些专家红队演习,通过Llama 3模型开发扩大了我们的评估基准的覆盖范围。对于Llama 3,我们使用基于目标的方法开展了新的深入会话,从多个攻击向量评估模型风险。我们还与内容专家合作执行红队演习,评估潜在违反内容,同时考虑到市场特定的细微差别或经验。
社区
生成式AI的安全性需要专业知识和工具,我们相信开放社区的强大力量可以加速其进步。我们是开放式联盟的积极成员,包括AI联盟、人工智能伙伴关系和MLCommons,积极致力于安全标准化和透明度。我们鼓励社区采用像MLCommons概念验证评估这样的分类法,以促进安全和内容评估方面的协作和透明度。我们的紫色Llama工具是开源的,供社区使用,广泛分布于生态系统合作伙伴,包括云服务提供商。我们鼓励社区为我们的GitHub存储库做出贡献。
最后,我们建立了一组资源,包括一个输出报告机制和漏洞赏金计划,借助社区的力量不断改进Llama技术。
道德考量与限制
Llama 3 的核心价值观是开放性、包容性和乐于助人。其旨在服务于每一位用户,并适用于广泛的用例。因此,它被设计得能够使来自不同背景、经历和观点的人们都能够使用。Llama 3 针对用户及其现状进行设计,不加入不必要的判断或规范性,同时反映了即使某些内容在某些情况下可能存在问题时,也可能在其它情况下发挥宝贵的作用。它尊重所有用户的尊严和自主权,特别是在创新和进步中起作用的自由思考和表达的价值。
但 Llama 3 是一种新技术,与任何新技术一样,它的使用都存在风险。迄今为止,进行的测试都是英文的,并没有涵盖,也无法涵盖所有场景。因此,与所有大型语言模型(LLM)一样,无法提前预测 Llama 3 模型的可能输出,模型在某些情况下可能会产生不准确、具有偏见或其它令人反感的对用户提示的响应。因此,在部署 Llama 3 模型的任何应用程序之前,开发者应执行针对其特定模型应用程序的安全测试和调整。正如责任使用指南中概述的,我们建议将 Purple Llama 解决方案融入到您的工作流程中,并特别推荐 Llama Guard,它提供了一个基模用来过滤输入和输出提示,在模型级别的安全之上增加系统级别的安全性。
请在以下网址查看责任使用指南: http://llama.meta.com/responsible-use-guide
引用说明
@article{llama3modelcard,
title={Llama 3 Model Card},
author={AI@Meta},
year={2024},
url = {https://github.com/meta-llama/llama3/blob/main/MODEL_CARD.md}
}
贡献者
Aaditya Singh; Aaron Grattafiori; Abhimanyu Dubey; Abhinav Jauhri; Abhinav Pandey; Abhishek Kadian; Adam Kelsey; Adi Gangidi; Ahmad Al-Dahle; Ahuva Goldstand; Aiesha Letman; Ajay Menon; Akhil Mathur; Alan Schelten; Alex Vaughan; Amy Yang; Andrei Lupu; Andres Alvarado; Andrew Gallagher; Andrew Gu; Andrew Ho; Andrew Poulton; Andrew Ryan; Angela Fan; Ankit Ramchandani; Anthony Hartshorn; Archi Mitra; Archie Sravankumar; Artem Korenev; Arun Rao; Ashley Gabriel; Ashwin Bharambe; Assaf Eisenman; Aston Zhang; Aurelien Rodriguez; Austen Gregerson; Ava Spataru; Baptiste Roziere; Ben Maurer; Benjamin Leonhardi; Bernie Huang; Bhargavi Paranjape; Bing Liu; Binh Tang; Bobbie Chern; Brani Stojkovic; Brian Fuller; Catalina Mejia Arenas; Chao Zhou; Charlotte Caucheteux; Chaya Nayak; Ching-Hsiang Chu; Chloe Bi; Chris Cai; Chris Cox; Chris Marra; Chris McConnell; Christian Keller; Christoph Feichtenhofer; Christophe Touret; Chunyang Wu; Corinne Wong; Cristian Canton Ferrer; Damien Allonsius; Daniel Kreymer; Daniel Haziza; Daniel Li; Danielle Pintz; Danny Livshits; Danny Wyatt; David Adkins; David Esiobu; David Xu; Davide Testuggine; Delia David; Devi Parikh; Dhruv Choudhary; Dhruv Mahajan; Diana Liskovich; Diego Garcia-Olano; Diego Perino; Dieuwke Hupkes; Dingkang Wang; Dustin Holland; Egor Lakomkin; Elina Lobanova; Xiaoqing Ellen Tan; Emily Dinan; Eric Smith; Erik Brinkman; Esteban Arcaute; Filip Radenovic; Firat Ozgenel; Francesco Caggioni; Frank Seide; Frank Zhang; Gabriel Synnaeve; Gabriella Schwarz; Gabrielle Lee; Gada Badeer; Georgia Anderson; Graeme Nail; Gregoire Mialon; Guan Pang; Guillem Cucurell; Hailey Nguyen; Hannah Korevaar; Hannah Wang; Haroun Habeeb; Harrison Rudolph; Henry Aspegren; Hu Xu; Hugo Touvron; Iga Kozlowska; Igor Molybog; Igor Tufanov; Iliyan Zarov; Imanol Arrieta Ibarra; Irina-Elena Veliche; Isabel Kloumann; Ishan Misra; Ivan Evtimov; Jacob Xu; Jade Copet; Jake Weissman; Jan Geffert; Jana Vranes; Japhet Asher; Jason Park; Jay Mahadeokar; Jean-Baptiste Gaya; Jeet Shah; Jelmer van der Linde; Jennifer Chan; Jenny Hong; Jenya Lee; Jeremy Fu; Jeremy Teboul; Jianfeng Chi; Jianyu Huang; Jie Wang; Jiecao Yu; Joanna Bitton; Joe Spisak; Joelle Pineau; Jon Carvill; Jongsoo Park; Joseph Rocca; Joshua Johnstun; Junteng Jia; Kalyan Vasuden Alwala; Kam Hou U; Kate Plawiak; Kartikeya Upasani; Kaushik Veeraraghavan; Ke Li; Kenneth Heafield; Kevin Stone; Khalid El-Arini; Krithika Iyer; Kshitiz Malik; Kuenley Chiu; Kunal Bhalla; Kyle Huang; Lakshya Garg; Lauren Rantala-Yeary; Laurens van der Maaten; Lawrence Chen; Leandro Silva; Lee Bell; Lei Zhang; Liang Tan; Louis Martin; Lovish Madaan; Luca Wehrstedt; Lukas Blecher; Luke de Oliveira; Madeline Muzzi; Madian Khabsa; Manav Avlani; Mannat Singh; Manohar Paluri; Mark Zuckerberg; Marcin Kardas; Martynas Mankus; Mathew Oldham; Mathieu Rita; Matthew Lennie; Maya Pavlova; Meghan Keneally; Melanie Kambadur; Mihir Patel; Mikayel Samvelyan; Mike Clark; Mike Lewis; Min Si; Mitesh Kumar Singh; Mo Metanat; Mona Hassan; Naman Goyal; Narjes Torabi; Nicolas Usunier; Nikolay Bashlykov; Nikolay Bogoychev; Niladri Chatterji; Ning Dong; Oliver Aobo Yang; Olivier Duchenne; Onur Celebi; Parth Parekh; Patrick Alrassy; Paul Saab; Pavan Balaji; Pedro Rittner; Pengchuan Zhang; Pengwei Li; Petar Vasic; Peter Weng; Polina Zvyagina; Prajjwal Bhargava; Pratik Dubal; Praveen Krishnan; Punit Singh Koura; Qing He; Rachel Rodriguez; Ragavan Srinivasan; Rahul Mitra; Ramon Calderer; Raymond Li; Robert Stojnic; Roberta Raileanu; Robin Battey; Rocky Wang; Rohit Girdhar; Rohit Patel; Romain Sauvestre; Ronnie Polidoro; Roshan Sumbaly; Ross Taylor; Ruan Silva; Rui Hou; Rui Wang; Russ Howes; Ruty Rinott; Saghar Hosseini; Sai Jayesh Bondu; Samyak Datta; Sanjay Singh; Sara Chugh; Sargun Dhillon; Satadru Pan; Sean Bell; Sergey Edunov; Shaoliang Nie; Sharan Narang; Sharath Raparthy; Shaun Lindsay; Sheng Feng; Sheng Shen; Shenghao Lin; Shiva Shankar; Shruti Bhosale; Shun Zhang; Simon Vandenhende; Sinong Wang; Seohyun Sonia Kim; Soumya Batra; Sten Sootla; Steve Kehoe; Suchin Gururangan; Sumit Gupta; Sunny Virk; Sydney Borodinsky; Tamar Glaser; Tamar Herman; Tamara Best; Tara Fowler; Thomas Georgiou; Thomas Scialom; Tianhe Li; Todor Mihaylov; Tong Xiao; Ujjwal Karn; Vedanuj Goswami; Vibhor Gupta; Vignesh Ramanathan; Viktor Kerkez; Vinay Satish Kumar; Vincent Gonguet; Vish Vogeti; Vlad Poenaru; Vlad Tiberiu Mihailescu; Vladan Petrovic; Vladimir Ivanov; Wei Li; Weiwei Chu; Wenhan Xiong; Wenyin Fu; Wes Bouaziz; Whitney Meers; Will Constable; Xavier Martinet; Xiaojian Wu; Xinbo Gao; Xinfeng Xie; Xuchao Jia; Yaelle Goldschlag; Yann LeCun; Yashesh Gaur; Yasmine Babaei; Ye Qi; Yenda Li; Yi Wen; Yiwen Song; Youngjin Nam; Yuchen Hao; Yuchen Zhang; Yun Wang; Yuning Mao; Yuzi He; Zacharie Delpierre Coudert; Zachary DeVito; Zahra Hankir; Zhaoduo Wen; Zheng Yan; Zhengxing Chen; Zhenyu Yang; Zoe Papakipos