掘金 人工智能 05月30日 11:23
FIM与传统生成差异大,哪种更好用?
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入剖析了Fill-in-the-Middle(FIM)技术,这是一种专为大语言模型设计的上下文生成范式。它打破了传统从左到右的单向生成限制,使模型能够在给定的前缀和后缀之间生成符合逻辑的中间内容。文章详细对比了FIM与传统生成方式的差异,阐述了其关键技术实现,包括数据格式处理、特殊标记设计和注意力掩码改造。此外,还介绍了FIM的训练策略创新,包括动态上下文分割、双向上下文建模和课程学习策略,旨在帮助读者全面理解FIM技术。

🧩Fill-in-the-Middle (FIM) 技术的核心在于,它允许大语言模型在给定的前缀(prefix)和后缀(suffix)之间,生成符合逻辑的中间内容(middle),从而突破了传统从左到右单向生成的限制。

🏷️FIM 的关键技术实现包括:使用 <FIMPREFIX>、<FIMMIDDLE>、<FIMSUFFIX>、<FIMEND> 等特殊标记来格式化数据,以及改造注意力掩码,使得模型能够同时关注前缀和后缀的信息。

📚FIM 的训练策略创新包括:动态上下文分割(随机选择分割点,并改变 gap 长度)、双向上下文建模(使用前缀编码器、后缀编码器和交叉注意力)以及课程学习策略(在训练早期调整 gapratio)。

各位专业人士,大家好!本次将对 Fill-in-the-Middle(FIM)技术展开深度剖析。作为该领域的研究者,认为有必要向广大从业者进行专业科普。

一、核心概念

Fill-in-the-Middle(填中)是专门为大语言模型设计的上下文生成范式,它突破了传统从左到右单向生成的限制。其核心在于使模型能够在给定的前缀(prefix)和后缀(suffix)之间,生成符合逻辑的中间内容(middle)。

二、与传统生成方式的对比

以下表格对比了不同的生成方式:

生成方式输入结构典型应用场景技术挑战
左到右生成[前缀] → 生成后续文本续写长距离依赖建模
填空生成[前缀][后缀] → 填洞完形填空局部语义一致性
FIM生成[前缀] [后缀]代码补全双向上下文理解

不同生成方式差异显著,每种方式都有其独特特点与难点,专业人员能够清晰辨别。

三、关键技术实现

1. 数据格式处理

以下是原始的 Python 代码:

def add(a, b):    return a + b

经过 FIM 格式化(P - M - S 结构)后变为:

<FIMPREFIX>def add(a, b):<FIMSUFFIX>return a + b<FIMMIDDLE><FIMEND>

2. 特殊标记设计

以下是几个重要的特殊标记:

3. 注意力掩码改造

通过下图可更直观地看出传统注意力掩码与 FIM 注意力掩码的区别。

graph LRA[前缀Token] --> C[中间Token]B[后缀Token] --> CC --> D[预测Token]

对比传统注意力掩码(左)与 FIM 注意力掩码(右) ,差异一目了然。

四、训练策略创新

1. 动态上下文分割

采用随机选择分割点的方法,约有 p ~ 50% 的概率在函数体内部进行分割。且 gap 长度可变,会遮蔽 20% - 80% 的内容。

2. 双向上下文建模

包括三个关键部分:

3. 课程学习策略

在训练阶段进行如下调整:

训练阶段调整if epoch < 5:gapratio = 0.3

若存在表述不精准之处,望各位谅解。期望本次深度科普能使各位对 FIM 技术有更清晰的认知。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Fill-in-the-Middle 大语言模型 上下文生成 代码补全
相关文章