你好老师,ModelScope load数据那块还是没看懂,数据格式有很多种,但是呢,比如我微调这条数据,{image:url 链接或者base64,text:"图片描述"}, 数据类型这种嘛 train.tsv 字段有 id,base64 对应数据 12,base64 train.json {"text_id": 8428, "text": "高级感托特包斜挎", "image_ids": [12]} MsDataset.load() 我怎么加载这个适配呢?
如果你想使用ModelScope来加载你的微调数据,可以按照以下步骤进行:
将你的微调数据转换成符合ModelScope的数据格式。根据你提供的信息,你的微调数据应该是一个包含图片URL或者base64编码和图片描述的字典,比如{image: url或base64编码, text: '图片描述'}。你需要将这个字典转换成符合ModelScope数据格式的JSON格式,比如{"text_id": 8428, "text": "图片描述", "image_ids": [1]},其中text_id是图片描述的id,text是图片描述的文本,image_ids是一个包含图片id的列表,这里只有一个图片id,即1。
将转换后的数据保存到train.tsv或train.json文件中,具体格式和字段根据你的需求而定。
使用MsDataset类的load方法加载数据。这个方法有两个参数,data_dir是数据所在的目录,data_type是数据类型,可以是"tsv"或"json",具体取决于你保存数据的文件格式。例如:
Copy
from modelscope.datasets import MsDataset
data_dir = "/path/to/data"
data_type = "json" # 或者 "tsv"
dataset = MsDataset.load(data_dir=data_dir, data_type=data_type)
可以使用 huggingface dataset 的 map 方法在训练前将您的数据处理成模型接受输入的格式,再转换成 MsDataset 输入模型 类似以下的代码,您可以自定义具体数据的处理逻辑: def update_item(example: dict): # 您的数据处理逻辑 example['idx'] = example['idx'] + 10 return example
ds = MsDataset.load(...) ds.ds_instance.map(update_item) MsDataset.load()得到的dataset对象支持map()操作,具体处理方式示例:
def map_func(example): example['res'] = 'xxx' return example
ds = MsDataset.load('csv', data_files=['/path/to/xxx.csv', '/path/to/yyy.csv'], split='train') ds_new = ds.ds_instance.map(map_func) for item in ds_new: print(item)
比如你需要对每条数据中的某个字段,做自定义的修改,比如格式转换等操作,就放到 map_func()里即可。,此回答整理自钉群“魔搭ModelScope开发者联盟群 ①”
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352