InternVL icon indicating copy to clipboard operation
InternVL copied to clipboard

如何微调InternVL-Chat-V1.2-Plus

Open zhangfan-algo opened this issue 4 months ago • 8 comments

zhangfan-algo avatar Mar 04 '24 10:03 zhangfan-algo

你好,你可以参考这个指南来微调InternVL-Chat-V1.2-Plus.

czczup avatar Mar 04 '24 12:03 czczup

哦哦好滴 感谢 如果只是做中文的图文对话微调 该怎么设置一下呀

zhangfan-algo avatar Mar 05 '24 06:03 zhangfan-algo

哦哦好滴 感谢 如果只是做中文的图文对话微调 该怎么设置一下呀

第二步里,准备一下中文数据的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脚本

image

--model_name_or_path填写下载的模型路径,如果要微调Plus版本,请修改为--model_name_or_path "./pretrained/InternVL-Chat-Chinese-V1-2-Plus"。然后在--meta_path这里写上刚刚新建的json文件的路径。

最后用2个A100 80G GPU来训练这个模型。

czczup avatar Mar 05 '24 12:03 czczup

哦哦好滴 输入是 img+text 输出是 text 这个要怎么设置一下数据集格式呀

zhangfan-algo avatar Mar 06 '24 02:03 zhangfan-algo

数据格式

我们的数据采用了JSONL(JSON Lines)格式。JSONL是一种文本格式,每行都是一个独立的JSON对象。每个JSON对象表示一个数据示例,其中包含了对话内容以及相关的元数据。

数据结构

每个数据示例都包含以下字段:

  • "id": 数据示例的唯一标识符。
  • "image": 图像文件的路径。
  • "conversations": 对话内容列表,包含了交替的用户(human)和模型(gpt)对话。

对话内容列表中的每个对话对象包含以下字段:

  • "from": 对话的发起者,可以是 "human" 或 "gpt"。
  • "value": 对话内容。

数据准备步骤

为了准备数据以供使用,您可以按照以下步骤进行操作:

  1. 准备图像数据:确保您的图像数据位于指定路径下,以便与JSONL文件中的路径匹配。您可以将图像文件放置在名为 "images" 的文件夹中,或者根据需要调整路径。

  2. 创建JSONL文件:创建一个新的JSONL文件,按照上述数据结构的格式,将每个数据示例写入文件中。确保每行都是一个独立的JSON对象,并包含必要的字段。

  3. 编辑对话内容:根据您的需求编辑对话内容,确保它们与您的应用场景或任务相关,并且与图像数据对应。

  4. 验证数据格式:在使用之前,请确保您的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处出现,在后续的多轮对话中不出现

czczup avatar Mar 06 '24 12:03 czczup

[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?

YJYlala avatar Mar 19 '24 04:03 YJYlala

数据格式

我们的数据采用了JSONL(JSON Lines)格式。JSONL是一种文本格式,每行都是一个独立的JSON对象。每个JSON对象表示一个数据示例,其中包含了对话内容以及相关的元数据。

数据结构

每个数据示例都包含以下字段:

  • "id": 数据示例的唯一标识符。
  • "image": 图像文件的路径。
  • "conversations": 对话内容列表,包含了交替的用户(human)和模型(gpt)对话。

对话内容列表中的每个对话对象包含以下字段:

  • "from": 对话的发起者,可以是 "human" 或 "gpt"。
  • "value": 对话内容。

数据准备步骤

为了准备数据以供使用,您可以按照以下步骤进行操作:

  1. 准备图像数据:确保您的图像数据位于指定路径下,以便与JSONL文件中的路径匹配。您可以将图像文件放置在名为 "images" 的文件夹中,或者根据需要调整路径。
  2. 创建JSONL文件:创建一个新的JSONL文件,按照上述数据结构的格式,将每个数据示例写入文件中。确保每行都是一个独立的JSON对象,并包含必要的字段。
  3. 编辑对话内容:根据您的需求编辑对话内容,确保它们与您的应用场景或任务相关,并且与图像数据对应。
  4. 验证数据格式:在使用之前,请确保您的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处出现,在后续的多轮对话中不出现

感谢大佬帮助 前期微调基本完成了,想问下如何进行批量推理呢 主要想看下测试集的效果

zhangfan-algo avatar Apr 29 '24 03:04 zhangfan-algo

大佬 lora微调完后合并的脚本有吗

zhangfan-algo avatar Apr 29 '24 06:04 zhangfan-algo