Memory Layers:如何在不增加算力成本的情况下扩大模型的参数容量?Meta 开源解决方法

简介: Meta 开源的 Memory Layers 技术,通过键值查找机制扩展大模型参数,显著提升模型性能,尤其适用于事实性任务。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 功能扩展:Memory Layers 通过键值查找机制扩展模型参数,不增加计算负担。
  2. 性能提升:显著提升模型在事实性任务中的准确性,超越传统密集模型。
  3. 技术原理:基于稀疏激活和产品量化键,实现高效信息存储与检索。

正文(附运行示例)

Memory Layers 是什么

公众号: 蚝油菜花 - memory

Memory Layers 是 Meta 推出的一种通过可训练的键值查找机制为模型增加额外参数的技术。它不会增加浮点运算次数(FLOPs),而是通过稀疏激活的方式补充计算密集型的前馈层,提供专门的容量来廉价地存储和检索信息。

在大规模语言模型中,Memory Layers 显示出显著的实用性,尤其是在处理事实性任务时,能够显著提高模型的性能。通过替换 Transformer 层中的一个或多个前馈网络(FFN)为记忆层,Memory Layers 在不显著增加计算成本的情况下,显著提升了模型的事实准确性和知识获取能力。

Memory Layers 的主要功能

  • 参数扩展:支持模型在不增加计算负担(即不增加 FLOPs)的情况下增加额外的参数,扩展模型的容量。
  • 信息存储与检索:提供专门的机制存储和检索信息。
  • 补充密集层:与计算密集型的前馈层(feed-forward layers)互补,基于稀疏激活模式提供信息存储和检索的专用容量。
  • 提高事实准确性:在事实性任务中,显著提高语言模型的准确性,让模型更准确地记忆和使用训练数据中的事实。
  • 性能提升:在计算和参数匹配的情况下,让模型性能超过传统的密集模型和混合专家模型。

Memory Layers 的技术原理

  • 键值查找机制:基于简单的键值查找机制工作,其中键和值都编码为嵌入向量。给定查询向量 q,及一组键 K 和值 V,输出是值的一个软组合,权重根据 q 与对应键的相似度确定。
  • 稀疏激活:与传统的注意力机制不同,Memory Layers 中的键和值是可训练的参数,而不是激活值。由于键和值的数量通常很大,Memory Layers 需要进行稀疏查找和更新,只有与查询最相似的 top-k 键和对应的值参与输出计算。
  • 产品键查找:为解决大规模记忆中查询-键检索的瓶颈,Memory Layers 采用产品量化键(product-quantized keys),用两组较小的键有效地执行全键集的 top-k 查找。
  • 并行化实现:由于 Memory Layers 对内存的需求很大,在多个 GPU 上并行化嵌入查找和聚合实现大规模扩展。
  • 共享记忆参数:用共享的记忆参数池,在不增加参数数量的情况下,基于多个记忆层增加性能。

如何运行 Memory Layers

1. 克隆仓库并创建环境

git clone https://github.com/facebookresearch/memory
cd memory

bash setup/create_env.sh
# 或者如果你有 SLURM 集群访问权限
sbatch setup/create_env.sh

2. 激活环境

conda activate lingua_<date>

3. 下载并准备数据

python setup/download_prepare_hf_data.py fineweb_edu <MEMORY> --data_dir ./data --seed 42

4. 下载分词器

python setup/download_tokenizer.py llama3 <SAVE_PATH> --api_key <HUGGINGFACE_TOKEN>

5. 启动调试任务

# stool 代表 SLURM 工具!
python -m lingua.stool script=apps.main.train config=apps/main/configs/pkplus_373m_1024k.yaml nodes=1 partition=<partition>
# 如果你想在本地运行,可以使用 torchrun
torchrun --nproc-per-node 8 -m apps.main.train config=apps/main/configs/pkplus_373m_1024k.yaml
# 或者你也可以在 1 个 GPU 上运行
python -m apps.main.train config=apps/main/configs/pkplus_373m_1024k.yaml

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
关系型数据库 MySQL Go
MySQL数据库安装(超详细完整步骤)
MySQL数据库安装(超详细完整步骤)
2083 1
|
并行计算 TensorFlow 调度
推荐场景GPU优化的探索与实践:CUDA Graph与多流并行的比较与分析
RTP 系统(即 Rank Service),是一个面向搜索和推荐的 ranking 需求,支持多种模型的在线 inference 服务,是阿里智能引擎团队沉淀多年的技术产品。今年,团队在推荐场景的GPU性能优化上又做了新尝试——在RTP上集成了Multi Stream,改变了TensorFlow的单流机制,让多流的执行并行,作为增加GPU并行度的另一种选择。本文详细介绍与比较了CUDA Graph与多流并行这两个方案,以及团队的实践成果与心得。
|
JavaScript 定位技术
vue3 引入天地图
vue3 引入天地图
1387 0
|
3月前
|
机器学习/深度学习 文字识别 数据挖掘
BookRAG:面向层级文档的树-图融合RAG框架
BookRAG是专为书籍类层级文档设计的新型RAG框架,首创“树+图+链接+Agent”四元结构:构建融合版面层级树与知识图谱的BookIndex,通过GT-Link双向映射实现结构与语义统一;引入信息觅食启发的Agent,动态规划检索路径,支持单跳、多跳及全局聚合查询,在精度、覆盖率与效率上显著优于传统文本/版面优先方法。
509 5
BookRAG:面向层级文档的树-图融合RAG框架
|
运维 监控 Kubernetes
【大模型】RAG增强检索:大模型运维的基石
RAG(检索增强生成)是一种结合大模型与外部知识库的技术,通过“先查资料再作答”的流程,解决模型幻觉、知识更新滞后等问题。其核心包括四大模块:文档处理中心、知识检索库、提问处理器和智能应答器。RAG在大模型运维中实现知识保鲜、精准控制和成本优化,同时支持动态治理、安全合规增强及运维效率提升,推动智能运维从“人工救火”向“预测性维护”演进。
2666 10
【大模型】RAG增强检索:大模型运维的基石
|
监控 前端开发 JavaScript
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
1314 6
|
12月前
|
人工智能 搜索推荐 数据安全/隐私保护
AI矩阵获客系统开发部署策略
在竞争激烈的市场中,企业亟需高效获客工具。AI矩阵获客系统基于人工智能技术,通过大数据分析和智能匹配,精准定位目标客户,降低营销成本,提升转化率。其自动化营销功能可显著减轻人工负担。随着市场需求增长和技术成熟,开发该系统具备较高投资回报率。然而,企业在开发时需关注功能完善、隐私保护及法规遵循,以确保系统稳定性和竞争力。总体而言,AI矩阵获客系统值得投入资源开发,助力企业抢占市场先机。
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的2FSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的2FSK调制解调系统,包含高斯信道、误码率统计模块及testbench。系统增加了ILA在线数据采集和VIO在线SNR设置模块,支持不同SNR下的硬件测试,并提供操作视频指导。理论部分涵盖频移键控(FSK)原理,包括相位连续与不连续FSK信号的特点及功率谱密度特性。Verilog代码实现了FSK调制解调的核心功能,支持在不同开发板上移植。硬件测试结果展示了不同SNR下的性能表现。
618 6

热门文章

最新文章