InternVL
InternVL copied to clipboard
如何微调InternVL-Chat-V1.2-Plus
你好,你可以参考这个指南来微调InternVL-Chat-V1.2-Plus.
哦哦好滴 感谢 如果只是做中文的图文对话微调 该怎么设置一下呀
哦哦好滴 感谢 如果只是做中文的图文对话微调 该怎么设置一下呀
在第二步里,准备一下中文数据的meta信息。
首先在internvl_chat/shell/data/
这个目录底下新建一个json文件,在里面写上你的中文数据集的meta信息,这里以中文数据llava_instruct_150k_zh
为例,就是:
{
"llava_instruct_150k_zh": {
"root": "playground/data/coco/",
"annotation": "playground/llava_instruct_150k_zh.jsonl",
"data_augment": false,
"repeat_time": 1,
"length": 157712
}
}
如果数据量不大的话,可以选择微调lora模型,那么就使用这个shell脚本。
在--model_name_or_path
填写下载的模型路径,如果要微调Plus版本,请修改为--model_name_or_path "./pretrained/InternVL-Chat-Chinese-V1-2-Plus"
。然后在--meta_path
这里写上刚刚新建的json文件的路径。
最后用2个A100 80G GPU来训练这个模型。
哦哦好滴 输入是 img+text 输出是 text 这个要怎么设置一下数据集格式呀
数据格式
我们的数据采用了JSONL(JSON Lines)格式。JSONL是一种文本格式,每行都是一个独立的JSON对象。每个JSON对象表示一个数据示例,其中包含了对话内容以及相关的元数据。
数据结构
每个数据示例都包含以下字段:
-
"id"
: 数据示例的唯一标识符。 -
"image"
: 图像文件的路径。 -
"conversations"
: 对话内容列表,包含了交替的用户(human)和模型(gpt)对话。
对话内容列表中的每个对话对象包含以下字段:
-
"from"
: 对话的发起者,可以是 "human" 或 "gpt"。 -
"value"
: 对话内容。
数据准备步骤
为了准备数据以供使用,您可以按照以下步骤进行操作:
-
准备图像数据:确保您的图像数据位于指定路径下,以便与JSONL文件中的路径匹配。您可以将图像文件放置在名为 "images" 的文件夹中,或者根据需要调整路径。
-
创建JSONL文件:创建一个新的JSONL文件,按照上述数据结构的格式,将每个数据示例写入文件中。确保每行都是一个独立的JSON对象,并包含必要的字段。
-
编辑对话内容:根据您的需求编辑对话内容,确保它们与您的应用场景或任务相关,并且与图像数据对应。
-
验证数据格式:在使用之前,请确保您的JSONL文件格式正确,并且每个数据示例都包含了必要的字段和信息。
示例
以下是一个示例数据示例:
{
"id": 0,
"image": "images/5.png",
"conversations": [
{
"from": "human",
"value": "<image>\n第一轮对话的问题"
},
{
"from": "gpt",
"value": "第一轮对话的回答"
},
{
"from": "human",
"value": "第二轮对话的问题"
},
{
"from": "gpt",
"value": "第二轮对话的回答"
}
]
}
注意事项
- 请确保您的图像文件与JSONL文件中指定的路径匹配。
- 在编辑对话内容时,请注意确保对话内容的格式和语法正确。
-
<image>\n
只在第一轮对话的value处出现,在后续的多轮对话中不出现
[E ProcessGroupNCCL.cpp:828] [Rank 1] Watchdog caught collective operation timeout: WorkNCCL(SeqNum=1, OpType=BROADCAST, Timeout(ms)=1800000) ran for 1807490 milliseconds before timing out. [E ProcessGroupNCCL.cpp:828] [Rank 0] Watchdog caught collective operation timeout: WorkNCCL(SeqNum=2, OpType=BROADCAST, Timeout(ms)=1800000) ran for 1807478 milliseconds before timing out.
when i use two RTX 8000, how to solve it problem?
数据格式
我们的数据采用了JSONL(JSON Lines)格式。JSONL是一种文本格式,每行都是一个独立的JSON对象。每个JSON对象表示一个数据示例,其中包含了对话内容以及相关的元数据。
数据结构
每个数据示例都包含以下字段:
"id"
: 数据示例的唯一标识符。"image"
: 图像文件的路径。"conversations"
: 对话内容列表,包含了交替的用户(human)和模型(gpt)对话。对话内容列表中的每个对话对象包含以下字段:
"from"
: 对话的发起者,可以是 "human" 或 "gpt"。"value"
: 对话内容。数据准备步骤
为了准备数据以供使用,您可以按照以下步骤进行操作:
- 准备图像数据:确保您的图像数据位于指定路径下,以便与JSONL文件中的路径匹配。您可以将图像文件放置在名为 "images" 的文件夹中,或者根据需要调整路径。
- 创建JSONL文件:创建一个新的JSONL文件,按照上述数据结构的格式,将每个数据示例写入文件中。确保每行都是一个独立的JSON对象,并包含必要的字段。
- 编辑对话内容:根据您的需求编辑对话内容,确保它们与您的应用场景或任务相关,并且与图像数据对应。
- 验证数据格式:在使用之前,请确保您的JSONL文件格式正确,并且每个数据示例都包含了必要的字段和信息。
示例
以下是一个示例数据示例:
{ "id": 0, "image": "images/5.png", "conversations": [ { "from": "human", "value": "<image>\n第一轮对话的问题" }, { "from": "gpt", "value": "第一轮对话的回答" }, { "from": "human", "value": "第二轮对话的问题" }, { "from": "gpt", "value": "第二轮对话的回答" } ] }
注意事项
- 请确保您的图像文件与JSONL文件中指定的路径匹配。
- 在编辑对话内容时,请注意确保对话内容的格式和语法正确。
<image>\n
只在第一轮对话的value处出现,在后续的多轮对话中不出现
感谢大佬帮助 前期微调基本完成了,想问下如何进行批量推理呢 主要想看下测试集的效果
大佬 lora微调完后合并的脚本有吗
- 路径
你好,如果微调数据没有图片,目前支持嘛,如果支持的话,数据格式 中 image直接设置为None嘛
大佬 lora微调完后合并的脚本有吗
@zhangfan-algo 大佬您解决了吗
@czczup 我也想请教一下大佬,lora finetune脚本中,训练会在一定步数的iteration和结束训练后,直接使用huggingface的trainer的save_model(),saved后的model是包含原始模型weight和lora weight的。但不能直接用这个saved model ckpt来做推理,结果会直接乱掉belike: \x\x\x\x。
请问有什么比较好的方法进行处理么
- 路径
你好,如果微调数据没有图片,目前支持嘛,如果支持的话,数据格式 中 image直接设置为None嘛
您读一下微调的代码(internvl_chat\internvl\train\internvl_chat_finetune.py),可以支持无图片的输入的
- 路径
你好,如果微调数据没有图片,目前支持嘛,如果支持的话,数据格式 中 image直接设置为None嘛
您读一下微调的代码(internvl_chat\internvl\train\internvl_chat_finetune.py),可以支持无图片的输入的
好的,已经解决
大佬 lora微调完后合并的脚本有吗
@zhangfan-algo 大佬您解决了吗
@czczup 我也想请教一下大佬,lora finetune脚本中,训练会在一定步数的iteration和结束训练后,直接使用huggingface的trainer的save_model(),saved后的model是包含原始模型weight和lora weight的。但不能直接用这个saved model ckpt来做推理,结果会直接乱掉belike: \x\x\x\x。
请问有什么比较好的方法进行处理么
@czczup 这个问题如何解决?