如何准备数据#

本章节介绍AngelSlim中如何准备压缩所需数据,准备完成后将数据路径填入config文件data_path字段即可。

支持文件格式#

AngelSlim支持jsonlparquent两种文件格式。

jsonl文件#

jsonl格式为一行一条data,每行data为json格式。支持如下格式

格式1#

此格式为类openai抓取的messages格式

{"system_prompt": "你是一个人工智能助手", "messages": [{"role": "user", "content": "回答脑筋急转弯:睡美人最怕的是什么?"}, {"role": "assistant", "content": "睡美人最怕的是闹钟。因为闹钟会把她从梦中唤醒。这个脑筋急转弯以幽默的方式表达了睡美人这一角色的特点。"}]}
  • "system_prompt":数据的system prompt

  • "messages":dict中的数据为prompt与answer信息。"role"为user表示prompt数据,assistant为模型answer数据

格式2#

简单dict格式

{"system_prompt": "你是一个人工智能助手", "input": "回答脑筋急转弯:睡美人最怕的是什么?", "output": "睡美人最怕的是闹钟。因为闹钟会把她从梦中唤醒。这个脑筋急转弯以幽默的方式表达了睡美人这一角色的特点。"}
  • "system_prompt":数据的system prompt

  • "input":prompt数据

  • "output":answer数据

格式3#

开源sharegpt数据集格式

{"conversations":[{"from":"human","value":"回答脑筋急转弯:睡美人最怕的是什么?"},{"from":"gpt","value":"睡美人最怕的是闹钟。因为闹钟会把她从梦中唤醒。这个脑筋急转弯以幽默的方式表达了睡美人这一角色的特点。"}]}
  • "conversations":dict中”from”字段为human为prompt数据,gpt为模型answer数据

parquet文件#

支持parquet文件喂入AngelSlim 需要parquet中的text列数据为下所示的开源sharegpt格式即可,AngelSlim会读取text列内容喂入tokenizer解码。

[ { "from": "human", "value": "这本著作极其出色。请用同义词替换加粗的词语,构建一个新的句子。" }, { "from": "gpt", "value": "这部作品极为杰出。" } ]

DATA文件测试#

from transformers import AutoModelForCausalLM, AutoTokenizer

from angelslim.data.dataloader import DataLoaderFactory

model_path = "/CKPT/PATH"
data_path = "/DATASET/PATH"
tokenizer = AutoTokenizer.from_pretrained(
    model_path, trust_remote_code=True
)
dataloader = DataLoaderFactory.create_data_loader(
    data_type='TextDataset',
    processor=tokenizer,
    device='cpu',
    max_length=2048,
    batch_size=1,
    num_samples=256,
    data_source=data_path,
)