资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

导入Prefix+Suffix+Middle代码补全数据

登录到千帆ModelBuilder操作台,在左侧功能列选择通用数据集,进入主任务界面。

FIM(Fill In the Middle)结构说明

FIM 结构

FIM(Fill In the Middle,中间填充)是OpenAI提出的一种大模型训练方法,旨在提高大模型的内容补全能力,使模型能够在给定上下文中预测中间缺失的内容,而不仅仅是从左到右生成文本。

通常大模型训练过程中,采用从左到右的方式生成文本,即仅根据前缀(prefix)预测下文。然而,在许多实际应用场景(特别是代码补全任务)中,大模型需要能够在已有文本的中间插入、修改内容。而在 FIM 训练过程中,训练的文本样本被拆分为三个部分:

  • 前缀prefix):文本的开头部分
  • 中间middle):需要被模型预测的缺失部分
  • 后缀suffix):剩余的文本内容

FIM 训练让模型在已有的前缀和后缀的基础上补全中间内容。这种方式可以极大提升模型在代码补全等方面的能力。

FIM 精调的优势

  • 更好地填充中间内容:通过FIM训练,模型能学会如何在已有的上下文中生成更自然的衔接内容,从而更好地补全复杂文本。
  • 不损失原有生成能力:OpenAI 的研究表明,使用 FIM 结构的数据进行训练,不会影响模型原本的左到右生成能力。模型在不损失原有能力的情况下,额外学会了填充任务。

适合的精调场景

  • 代码补全:特别适用于编程大模型(如ERNIE Code等),支持自动补全函数体、修复问题代码段、补充注释等。

FIM格式的数据当前仅适用于ERNIE Code模型精调,暂不支持其它模型训练。

数据格式说明

Prefix+Suffix+Middle:单轮的FIM(Fill In the Middle)结构数据,涵盖代码补全位置的前/后缀及待补全内容。适用于有监督微调SFT的代码生成大模型训练。

  • 有后缀样例
# "prefix" 为必填字段,表示代码补全位置的前文
# "suffix" 为可选字段,表示代码补全位置的后文
# "middle" 为必填字段,表示代码补全位置的内容
{"prefix": "def process_data(data):", "suffix": "    return processed", "middle": "    # 对数据元素进行翻倍\n    processed = [d * 2 for d in data]"}
{"prefix": "def calculate_sum(a, b):", "suffix": "    return result", "middle": "    # 计算两个数的和\n    result = a + b"}

FIM数据固定为单轮形式。

  • 无后缀样例
# "prefix" 为必填字段,表示代码补全位置的前文
# "suffix" 为可选字段,表示代码补全位置的后文
# "middle" 为必填字段,表示代码补全位置的内容
{"prefix":"import pandas as pd\n# 读取test.xlsx文件并打印数据集描述\n", "middle": "df = pd.read_excel('test.xlsx') \nprint(df.describe()) \nprint(df.columns) \nprint(df.shape[0])"}

可不填写suffix字段,例如上述依据代码和注释补全的场景。

数据文件要求

文件类型 无后缀数据 有后缀数据
jsonl文件
  • 文件内单条数据格式为 {"prefix": "代码前缀", "middle": "待补全内容"}
  • 文件内单条数据格式为 {"prefix": "代码前缀","suffix": "代码后缀", "middle": "待补全内容"}。
xlsx文件
  • 文件内单条数据在表格中为一行,由表头定义prefix和middle。
  • 文件内单条数据在表格中为一行,由表头定义prefix、suffix和middle。
csv文件
  • 文件内单条数据在表格中为一行,由表头定义prefix和middle。
  • 文件内单条数据在表格中为一行,由表头定义prefix、suffix和middle。
压缩包
  • 支持 tar.gz/zip 压缩包。
  • 文件编码支持UTF-8。

数据导入方式

创建数据集完成后,在数据集管理页面中,找到该数据集,点击右侧操作列下的“导入”按钮,即可进入导入数据页面。

您可以使用以下方案上传数据集:本地导入、BOS导入、分享链接导入、平台已有数据集。

导入方式 存储类型:对象存储BOS 存储类型:平台共享存储
本地导入
  • 文件限制:对文件大小和数量无限制。
  • 文件限制:单个文件/压缩包源文件大小,均不超过1G,所有文件数量不超过100。
BOS导入
  • 支持文件导入和目录导入两种方式。
  • 文件限制:单个文件/压缩包源文件大小,均不超过50G,所有文件数量不超过1000。

  • 支持文件导入和目录导入两种方式。
  • 文件限制:单个文件/压缩包源文件大小,均不超过50G,所有文件数量不超过100。

分享链接导入
  • 支持来自百度BOS、阿里OSS、腾讯COS、华为OBS的共享链接。
  • 文件限制:链接地址要求为tar.gz/zip格式压缩包,文件类型支持jsonl、csv、xlsx,同时压缩包源文件大小在5G以内。
  • 支持来自百度BOS、阿里OSS、腾讯COS、华为OBS的共享链接。
  • 文件限制:链接地址要求为tar.gz/zip格式压缩包,文件类型支持jsonl、csv、xlsx,同时压缩包源文件大小在1G以内。
平台已有数据集
  • 支持选择相同数据格式的非空数据集版本。
  • 支持选择相同数据格式的非空数据集版本。
上一篇
导入Role(user+assistant)数据
下一篇
导入纯文本数据