Magic迷局揭秘:小模型+令牌化,千万Token检索100%!

一篇关于AI初创公司技术谜团的解析:从HashHop挑战到记忆增强型语言模型的探索
在蓬勃发展的全球人工智能浪潮中,新技术与新模式层出不穷。对于身处中国跨境行业的我们而言,紧密关注海外前沿动态,不仅能拓宽视野,更能为自身发展带来新的启示。2024年,一家名为Magic的旧金山初创公司曾以其惊人的技术宣称和巨额融资,在全球AI领域引发广泛关注。这家仅有24名员工的公司,宣布其模型具备高达1亿个Token的上下文窗口,是当时主流模型上下文长度的数十倍。埃里克·施密特(Eric Schmidt)领投的3.2亿美元投资,使其总融资额超过5亿美元,估值达到15亿美元。
Magic团队宣称,相较于行业内如Llama 3.1 405B模型,存储1亿Token上下文的KV缓存需要638块H100 GPU,而他们的LTM-2-mini模型仅需一小部分单块GPU的资源,单位Token解码成本更是低了约1000倍。然而,在这一令人振奋的声明之后,Magic团队却出人意料地陷入了沉寂——没有产品发布,没有API开放,也未见更多研究论文公开发表。只留下了一篇引人深思的博客文章,其中包含了一些有趣的演示,以及一个名为HashHop的基准测试,该测试随后在GitHub上开源。出于对技术原理的深层探究与对AI长上下文处理能力的极大好奇,我们的团队尝试逆向分析,并成功解决了HashHop挑战,甚至构建了一个工作原型,以期揭示Magic团队系统背后的可能原理。
Magic团队遗留的技术线索
Magic团队在其博客文章中描述了两个富有启发性的演示:
- 独特的图形用户界面框架计算器: 模型在没有任何预训练的情况下,纯粹通过上下文学习并构建了一个全新的GUI框架计算器。
- Documenso密码强度计: 模型能够在不熟悉的代码库中自主导航,并实现一个密码强度检测功能。
同时,他们还引入了HashHop基准测试,旨在揭示现有长上下文评估方法中的潜在弱点。
HashHop挑战的深层考量
传统上,评估长上下文能力的基准测试,如“大海捞针”(Needle in a Haystack),通常测试模型能否在冗长文档中找到一个特定句子。然而,这类测试存在一个问题:模型可能学会识别那些与周围文本不符的“异常”句子,从而将任务变成一种模式匹配,而非真正的信息检索。HashHop挑战的巧妙之处在于,它通过呈现不可压缩的哈希对,即随机的字母字符串,有效避免了这种“捷径”:
YOJVrdjKMNPLqWXZ = ABCDEFGHIJKLmnop
ABCDEFGHIJKLmnop = 'QRSTUVWXYZabcdef'
Query: YOJVrdjKMNPLqWXZ -> ?
Answer: QRSTUVWXYZabcdef
模型必须在可能包含数百万个Token的文本中,遵循一条从哈希1到哈希2再到最终值的关联链。由于这些随机字符串不具备任何语义结构,模型无法利用文本的意义进行预测或压缩。要解决此问题,模型必须正确地存储了这些信息,并能精准地检索出来。Magic团队曾报告,其LTM-2-mini模型在1亿个Token的测试中达到了95%的准确率。这激发了我们团队深入探索其背后原理的强烈愿望。
令牌化(Tokenization)的关键洞察
在对Magic团队如何实现其宣称的近乎完美的性能进行分析时,我们发现了一个关键性的突破点——这与令牌化机制息息相关。
传统上,像GPT-2这类大型语言模型所使用的标准令牌化器,会将“ABCDEFGHIJKLmnop”这样的哈希字符串拆分成多个独立的Token,例如:“ABCDEFGHIJKLmnop”可能被分解为“[ABC”, “DE”, “FG”, “HIJ”, “KL”, “mn”, “op]”等序列。在这种情况下,模型需要学习的是一个复杂的“多Token输入到多Token输出”的映射关系,这无疑增加了信息检索和关联学习的难度。这种复杂性要求模型具备高度精密的模式识别能力才能实现。
然而,如果我们将每个哈希字符串都视为一个独立的Token呢?例如,将“ABCDEFGHIJKLmnop”直接映射为“[Token_42]”,将“QRSTUVWXYZabcdef”映射为“[Token_87]”。在这种理想的令牌化处理下,原本复杂的关联问题就简化为“Token_42 -> Token_87”这样直接的映射。这正是注意力机制所擅长的任务:高效的键值查找(Key-Value Lookup)。
这一洞察与斯坦福大学Zoology项目组近期在多查询关联召回(Multi-Query Associative Recall, MQAR)方面的研究不谋而合。当键和值本身就是单一Token时,基于注意力机制的Transformer模型,便能展现出类似完美哈希表的功能,实现高效且准确的信息检索。
关键数学原理的支撑
为何单一Token的键能够实现近乎完美的检索?这背后蕴含着几个重要的数学原理:
- 随机正交性: 当我们从高维空间(例如128维)中随机采样单位向量作为嵌入时,这些向量彼此之间几乎是正交的。随着维度的增加,两个随机单位向量的预期点积趋近于零。这种特性保证了不同的Token在嵌入空间中具有足够的可区分性。
- 硬注意力(Hard Attention): 在注意力机制中,通过使用较低的softmax温度参数,可以使得注意力权重趋向于“one-hot”分布。这意味着模型在众多键中,能够以极高的置信度精准地选择与查询最匹配的那一个键。
- 完美的检索能力: 在这种机制下,查询嵌入与其自身的键嵌入具有最大的相似度,因此注意力机制能够稳定且可靠地选中正确的对应值,从而实现高效的信息检索。
我们基于这些原理,用大约300行Python代码实现了一个简化版的Token化检索器:
class TokenizedRetriever:
"""Token-based associative memory using attention mechanism."""
def __init__(self, d_model: int = 128):
self.d_model = d_model
self.embeddings: Dict[int, np.ndarray] = {}
def _get_embedding(self, tid: int) -> np.ndarray:
"""Random unit vector embedding, nearly orthogonal between tokens."""
if tid not in self.embeddings:
emb = np.random.randn(self.d_model)
emb = emb / np.linalg.norm(emb)
self.embeddings[tid] = emb
return self.embeddings[tid]
def retrieve(self, query_id, key_ids, value_ids, temperature=0.001):
"""Attention-based lookup with hard attention."""
q_emb = self._get_embedding(query_id)
k_embs = np.array([self._get_embedding(k) for k in key_ids])
# Dot product attention
scores = k_embs @ q_emb / temperature
attn = softmax(scores)
# Retrieve nearest value
return argmax_value(attn, value_ids)
在任意规模下实现高度准确
通过上述的Token化处理和注意力机制,我们的开源实现展示了在HashHop基准测试中,在不同上下文长度下,显著优于传统模型的表现。在特定场景下,该方法展现了达到100%准确率的潜力。
| 上下文长度 | Gemini 1.5 Flash | Token化方案 |
|---|---|---|
| 1千个Token | 100% | 100% |
| 1万个Token | 96% | 100% |
| 10万个Token | 77% | 100% |
| 100万个Token | 4% | 100% |
| 1000万个Token | - | 100% |
这是首个公开实现,能够在任意规模下达到HashHop基准测试的理想准确率。这一核心洞察再次强调:将每个哈希字符串视为单一Token,是解决这类特定检索问题的关键。
从HashHop到代码检索的实践
攻克HashHop挑战虽然令人欣喜,但其在实践中的意义更值得深思。如果这种原理能够应用到更广泛的场景中,将带来巨大的潜力。
让我们对比HashHop的结构:哈希字符串 -> 哈希字符串 -> 最终值。
再看看代码检索的模式:函数名 -> 函数实现。
这两种模式在结构上是惊人地相似。这意味着,如果我们将每个函数名也视为一个单一Token,那么理论上我们应该能够实现近乎完美的函数检索。这正是Magic团队在Documenso演示中所展现的能力。受此启发,我们着手构建了MALM:记忆增强型语言模型(Memory-Augmented Language Model)。
MALM:一个1.65亿参数的记忆增强型模型
MALM将HashHop的核心洞察应用于实际的代码搜索场景。
架构细节
MALM模型总参数量约为1.65亿,其设计中的一个关键考量是将函数名作为单一Token加入到词汇表中,从而继承了HashHop挑战中实现近乎完美检索的能力。
| 组件 | 参数量(百万) |
|---|---|
| Token嵌入层 | 11.1 |
| 位置嵌入层 | 0.1 |
| 查询编码器 (4层) | 28.4 |
| 值编码器 (4层) | 28.4 |
| 解码器 (12层) | 85.1 |
| 输出投影层 | 11.1 |
| 总计 | 约165 |
训练过程
我们使用CodeParrot数据集对MALM进行了训练,该数据集包含了大量代码。在训练过程中,我们从中提取函数并生成了多样化的查询变体,以提升模型的泛化能力:
- 基于名称的查询: 例如“function add”、“find calculate_sum”。
- 语义查询: 例如“add two numbers”、“function that sorts a list”。
- 基于文档字符串的查询: 直接使用函数的文档注释作为查询来源。
训练采用对比学习损失,旨在最大化查询与其目标函数之间的相似度,同时最小化查询与所有其他函数之间的相似度。
训练结果
通过上述训练,MALM在代码检索任务中展现了良好的性能:
- 小规模测试(2千个函数):
| 查询类型 | 准确率 |
|---|---|
| 精确名称查询 | 100% |
| 语义查询 | 100% |
- 大规模测试(2万个函数):
| 查询类型 | 准确率 |
|---|---|
| 精确名称查询 | 70% |
| 语义查询 | 67% |
在大规模函数库(2万个函数)测试中,模型的准确率受限于词汇冲突(即多个函数映射到相似的嵌入空间),但在精确名称查询且使用单一Token键的场景下,检索仍然表现出高度的可靠性。目前,预训练模型已在Hugging Face平台开源:codelion/malm-165m。
复现Magic团队的演示场景
在MALM模型提供了高效检索能力的基础上,我们将其与Qwen2.5-Coder-1.5B模型结合起来进行代码生成。整个系统总参数量约为17亿。
场景一:基于新颖GUI框架的计算器
Magic团队曾宣称其模型仅通过上下文就能学习并运用一个全新的GUI框架。我们通过一个自定义框架进行了验证,该框架对于任何现有模型来说都是完全陌生的:
# 新颖GUI框架 (仅通过上下文提供)
class App:
def __init__(self, title: str):
self.title = title
self.widgets = []
class Button:
def __init__(self, id: str, text: str, on_click: Callable):
...
class TextInput:
def __init__(self, id: str, placeholder: str):
...
结果: 我们的系统成功生成了一个功能完善的计算器应用。
生成的计算器应用:
+------------------------------------------+
| Simple Calculator |
| [_______] [_______] |
| [ = ] |
| [ + ] [ - ] [ * ] [ / ] [ C ] |
+------------------------------------------+
--- 实时演示 ---
42 + 8 = 50.0
100 - 37 = 63.0
7 * 6 = 42.0
144 / 12 = 12.0
计算器在自定义GUI框架下正常工作!
场景二:密码强度计
Magic团队还演示了如何为Documenso代码库添加一个密码强度计功能。我们创建了一个类似的演示,应用于一个类似DocuSign的应用程序:
密码: 'P@ssw0rd!' (强密码) [█████] 非常强
✓ 至少8个字符
✓ 包含大写字母
✓ 包含小写字母
✓ 包含数字
✓ 包含特殊字符
密码强度计已与注册页面集成!
该系统能够检索相关的组件(如身份验证、表单、UI元素),并根据现有代码模式生成相应的代码,成功实现了密码强度计的集成。
从实践中获得的启示
令牌化方式决定模型能力边界:
模型如何进行令牌化,从根本上决定了其能完成的任务类型。标准的令牌化方法常常会破坏进行精确键值检索所需的内部结构,导致信息难以准确匹配。而针对特定任务进行精心设计的令牌化策略,则能赋予模型原本看似不可能实现的能力。这提示我们,在AI应用开发中,对底层数据表示的理解和优化,其重要性不亚于模型架构的选择。检索机制在特定场景下优于纯粹的上下文长度:
Magic团队宣称的1亿Token上下文窗口固然令人印象深刻,但其真正的创新可能在于其独特的检索机制。我们的团队使用一个相对较小的检索模型(1.65亿参数)来查找相关代码片段,然后将其传递给一个轻量级的生成模型(15亿参数),整个系统的总参数量约为17亿。这一组合在性能上能够与一些前沿的大模型演示效果相媲美。这表明,在实际应用中,尤其是在需要精准信息提取和利用的场景,高效的检索机制可能比单纯追求极长的上下文窗口更为务实和经济。技术演示与产品落地之间存在挑战:
Magic团队虽然获得了巨额投资,但在产品落地方面尚未有公开进展。构建令人惊艳的技术演示相对容易,但要打造一个稳定可靠、能够应对真实世界复杂性的产品系统,则面临诸多挑战。例如,我们的实现虽然在干净的基准测试中表现良好,但要将其部署到生产环境中,还需要解决以下问题:- 带有错别字和模糊语义的噪声查询。
- 不遵循标准命名约定的代码库。
- 多文件依赖和复杂的导入关系。
- 代码库的持续增量更新与维护。
- 满足交互式使用所需的低延迟要求。
HashHop基准测试主要评估纯粹的检索能力,但实际的智能代码辅助工具,其复杂度远不止于此。从技术演示到规模化产品,还需要在工程化、鲁棒性、用户体验等多个维度进行深入打磨。
尝试与探索
我们鼓励国内的开发者和研究人员共同参与到这一开放的探索中。
HashHop 求解器
您可以克隆并运行我们的HashHop求解器:
git clone hash-hop
cd hash-hop
poetry install
# 在1万个Token下运行
poetry run python tokenized_hashhop.py --tokens 10000
# 运行完整的基准测试 (从1千到1千万个Token)
poetry run python tokenized_hashhop.py --benchmark
MALM 代码搜索
下载预训练模型并进行推理:
# 下载预训练模型
pip install mlx huggingface_hub numpy
huggingface-cli download codelion/malm-165m --local-dir ./malm-165m
# 运行推理
python malm-165m/inference.py --query "function that sorts a list"
示例输出:
Query: function that sorts a list
------------------------------------------------------------
1. array_sort (score: 0.9526)
Signature: array_sort(col)
Docstring: Collection function: sorts the input array in ascending order...
2. sort_array (score: 0.7707)
Signature: sort_array(col, asc)
Docstring: Collection function: sorts the input array in ascending or descending order...
运行演示
poetry run python code_llm/demos/run_demo.py
结语
Magic团队5亿美元的融资及其随后的沉寂,依然是一个充满悬念的谜团。但他们留下的HashHop基准测试和简短的技术演示,为我们重构其可能的技术路径提供了足够的线索。核心洞察在于其优雅的设计:将检索键视为单一Token。这一方法将一个看似不可能的挑战(在数百万个Token中匹配任意长度的字符串)转化为了一个相对直接的问题(通过注意力机制实现键值查找)。
Magic团队的实际实现是否与我们推测的类似,目前尚不得而知。但我们的探索表明:
- HashHop挑战可以通过令牌化方法在任意规模下实现高度准确的解决。
- 相同的原理能够应用于实际的代码检索场景,具有广阔的应用前景。
- 结合高效检索机制的小型模型(约17亿参数),同样能够实现与一些前沿大模型相媲美的技术演示效果。
所有的代码都是开源的,MALM模型也已在Hugging Face上发布。我们诚挚邀请全球,特别是国内的AI从业者和开发者,共同在此基础上继续探索和创新。也许有一天,Magic团队会公布他们的故事,但在那之前,我们将持续探索人工智能技术的无限可能。对于国内的跨境电商、游戏、支付和贸易等行业的从业者而言,关注这类底层技术原理的突破,或许能为未来的智能化转型和效率提升,带来更多新思路和解决方案。
相关资源
- GitHub Repository: codelion/hash-hop
- 预训练MALM模型: codelion/malm-165m
- Magic团队原始博客文章: 100M Token Context Windows
- HashHop原始仓库: magicproduct/hash-hop
延伸阅读
- Zoology: Measuring and Improving Recall in Efficient Language Models - 斯坦福大学关于MQAR的研究
- In-context Learning and Induction Heads - Anthropic关于基于注意力机制检索的研究
- Mamba: Linear-Time Sequence Modeling with Selective State Spaces - 替代注意力机制以处理长上下文的方案
新媒网(公号: 新媒网跨境发布),是一个专业的跨境电商、游戏、支付、贸易和广告社区平台,为百万跨境人传递最新的海外淘金精准资讯情报。
本文来源:新媒网 https://nmedialink.com/posts/magic-secret-revealed-10m-token-100-recall.html


粤公网安备 44011302004783号 











