ms-swift icon indicating copy to clipboard operation
ms-swift copied to clipboard

支持GME微调么

Open ae86208 opened this issue 10 months ago • 88 comments

Describe the feature gme

ae86208 avatar Feb 05 '25 07:02 ae86208

+1,求支持gme微调

Bond-H avatar Feb 14 '25 03:02 Bond-H

支持ing,下周完成

tastelikefeet avatar Feb 14 '25 03:02 tastelikefeet

同问,最近也在看这个向量模型

yu9s avatar Feb 19 '25 09:02 yu9s

最近在集中处理GRPO的事情,人手不足,再稍等几天

tastelikefeet avatar Feb 19 '25 09:02 tastelikefeet

gentle ping,求问一下这个有ETA么

ae86208 avatar Mar 03 '25 08:03 ae86208

这两天要先把GRPO的一些事情弄完,尽量这周下半周开始处理~ 人手不足希望大家谅解~

tastelikefeet avatar Mar 03 '25 08:03 tastelikefeet

哈喽,作者您好,礼貌问下:这个多模态检索模型支持起来了吗。****尝试开源工程修改失败

yu9s avatar Mar 12 '25 01:03 yu9s

Supported by #3513

tastelikefeet avatar Mar 15 '25 14:03 tastelikefeet

check docs: https://swift.readthedocs.io/zh-cn/latest/BestPractices/Embedding%E8%AE%AD%E7%BB%83.html

tastelikefeet avatar Mar 15 '25 14:03 tastelikefeet

感谢您的工作! 请问 InfoNCE 数据格式这里如何支持多张图片呢?

# LLM
{"query": "sentence1", "response":  "sentence2"}
# MLLM
{"query": "<image>", "response":  "sentence", "images": "/some/images.jpg"}
{"query": "<image>sentence1", "response":  "sentence2", "images": "/some/images.jpg"}

Adenialzz avatar Mar 17 '25 06:03 Adenialzz

感谢您的工作! 请问 InfoNCE 数据格式这里如何支持多张图片呢?

LLM

{"query": "sentence1", "response": "sentence2"}

MLLM

{"query": "", "response": "sentence", "images": "/some/images.jpg"} {"query": "sentence1", "response": "sentence2", "images": "/some/images.jpg"}

同问! 是否支持 it2it,以及是否支持多图,如何构建数据集

tttttrigh avatar Mar 17 '25 11:03 tttttrigh

支持多图的,比如:

{"query": "<image><image>sentence1", "response": "sentence2", "images": ['img1', 'img2']}

tastelikefeet avatar Mar 17 '25 11:03 tastelikefeet

image2image的我要实际试一下,应该会比较好支持

tastelikefeet avatar Mar 17 '25 11:03 tastelikefeet

支持多图的,比如:

{"query": "sentence1", "response": "sentence2", "images": ['img1', 'img2']}

感谢回复。请问这样如何标识图片是来自 query 还是 response 呢?

Adenialzz avatar Mar 17 '25 11:03 Adenialzz

格式问题,我这里加了特殊字符的

Image

tastelikefeet avatar Mar 17 '25 11:03 tastelikefeet

哦哦。这样 images 列表里是 query 和 response 里按照 <image> 顺序读吗?e.g.

{"query": "<image><image>sentence1", "response": "<image>sentence2", "images": ['/path/to/img1', '/path/to/img2', '/path/to/img3']}
--->
{"query": "<img1><img2>sentence1", "response": "<img3>sentence2"}

也就是先 query 图片后 response 图片?因为 VLM text gen 只有 input 有图片,而 UMR 这里 query 和 response 都可能有图片,所以想问一下。

Adenialzz avatar Mar 17 '25 11:03 Adenialzz

response里面带有图片的格式我现在正在调试,尽快支持

tastelikefeet avatar Mar 17 '25 11:03 tastelikefeet

response里面带有图片的格式我现在正在调试,尽快支持

okok 辛苦

Adenialzz avatar Mar 17 '25 11:03 Adenialzz

🙏感谢您的工作!

请问”contrastive/online_contrastive loss对应的格式“内部的loss也是infonce吗?只不过是负样本是数据集里指定的? “infonce 格式”的每个raw就是一个anchor-postive对? 请教作者

QVQZZZ avatar Mar 17 '25 12:03 QVQZZZ

目前的支持是没有负样本,也就是一个batch的其他样本被当做本样本的负样本。 每个样本携带一定数量的负样本的feature在开发中,预计和上面的feature会一起尽快PR

tastelikefeet avatar Mar 17 '25 12:03 tastelikefeet

🙏感谢您的工作!

请问”contrastive/online_contrastive loss对应的格式“内部的loss也是infonce吗?只不过是负样本是数据集里指定的? “infonce 格式”的每个raw就是一个anchor-postive对? 请教作者

我们支持的loss都在这个文件中: https://github.com/modelscope/ms-swift/blob/main/swift/plugin/loss.py 可以直接看一下,如果需要添加新的loss,在这个文件中添加,命令行--loss_type xxx即可支持 contrastive/online_contrastive loss 的格式是query和response是否是相似的,也就是label所指定的数值,不会使用batch里面的其他sample “infonce 格式”的每个raw就是一个anchor-postive对?是的

tastelikefeet avatar Mar 17 '25 12:03 tastelikefeet

我们支持的loss都在这个文件中: https://github.com/modelscope/ms-swift/blob/main/swift/plugin/loss.py 可以直接看一下,如果需要添加新的loss,在这个文件中添加,命令行--loss_type xxx即可支持 contrastive/online_contrastive loss 的格式是query和response是否是相似的,也就是label所指定的数值,不会使用batch里面的其他sample “infonce 格式”的每个raw就是一个anchor-postive对?是的

好的,谢谢

QVQZZZ avatar Mar 18 '25 02:03 QVQZZZ

重现gme的时候出现下面问题,这是为什么呀

Image

AriesJin avatar Mar 18 '25 06:03 AriesJin

重现gme的时候出现下面问题,这是为什么呀

Image

你按照例程重走一遍,应该没问题的

yu9s avatar Mar 18 '25 07:03 yu9s

🙏感谢您的工作! 请问”contrastive/online_contrastive loss对应的格式“内部的loss也是infonce吗?只不过是负样本是数据集里指定的? “infonce 格式”的每个raw就是一个anchor-postive对? 请教作者

我们支持的loss都在这个文件中: https://github.com/modelscope/ms-swift/blob/main/swift/plugin/loss.py 可以直接看一下,如果需要添加新的loss,在这个文件中添加,命令行--loss_type xxx即可支持 contrastive/online_contrastive loss 的格式是query和response是否是相似的,也就是label所指定的数值,不会使用batch里面的其他sample “infonce 格式”的每个raw就是一个anchor-postive对?是的

作者你好,有没有测试demo啊,我应该怎么拿到微调后的模型的输出向量呢

yu9s avatar Mar 18 '25 09:03 yu9s

重现gme的时候出现下面问题,这是为什么呀 Image

你按照例程重走一遍,应该没问题的

我什么都没改,直接按照官方设置,我不知道是不是还有什么版本问题,我用的3.2.1版本,具体报错如下:

File "<string>", line 295, in __init__
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/train_args.py", line 174, in __post_init__
    BaseArguments.__post_init__(self)
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/base_args/base_args.py", line 154, in __post_init__
    ModelArguments.__post_init__(self)
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/base_args/model_args.py", line 150, in __post_init__
    self._init_torch_dtype()
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/base_args/model_args.py", line 108, in _init_torch_dtype
    self.torch_dtype: torch.dtype = self._init_model_info()
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/base_args/model_args.py", line 135, in _init_model_info
    self.model_info, self.model_meta = get_model_info_meta(**self.get_model_kwargs())
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/model/register.py", line 442, in get_model_info_meta
    model_info = _get_model_info(model_dir, model_type, quantization_config=quantization_config)
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/model/register.py", line 399, in _get_model_info
    raise ValueError('Please explicitly pass the model_type. For reference, '
ValueError: Please explicitly pass the model_type. For reference, the available model_types: ['qwen2_vl', 'qvq'].
Downloading Model to directory: /data/home/***/.cache/modelscope/hub/models/iic/gme-Qwen2-VL-2B-Instruct
[WARNING:modelscope] Using branch: master as version is unstable, use with caution

AriesJin avatar Mar 18 '25 10:03 AriesJin

重现gme的时候出现下面问题,这是为什么呀 Image

你按照例程重走一遍,应该没问题的

我什么都没改,直接按照官方设置,我不知道是不是还有什么版本问题,我用的3.2.1版本,具体报错如下:

File "<string>", line 295, in __init__
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/train_args.py", line 174, in __post_init__
    BaseArguments.__post_init__(self)
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/base_args/base_args.py", line 154, in __post_init__
    ModelArguments.__post_init__(self)
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/base_args/model_args.py", line 150, in __post_init__
    self._init_torch_dtype()
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/base_args/model_args.py", line 108, in _init_torch_dtype
    self.torch_dtype: torch.dtype = self._init_model_info()
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/base_args/model_args.py", line 135, in _init_model_info
    self.model_info, self.model_meta = get_model_info_meta(**self.get_model_kwargs())
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/model/register.py", line 442, in get_model_info_meta
    model_info = _get_model_info(model_dir, model_type, quantization_config=quantization_config)
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/model/register.py", line 399, in _get_model_info
    raise ValueError('Please explicitly pass the model_type. For reference, '
ValueError: Please explicitly pass the model_type. For reference, the available model_types: ['qwen2_vl', 'qvq'].
Downloading Model to directory: /data/home/***/.cache/modelscope/hub/models/iic/gme-Qwen2-VL-2B-Instruct
[WARNING:modelscope] Using branch: master as version is unstable, use with caution

拉取最新的,好像得3.3以上的

yu9s avatar Mar 18 '25 10:03 yu9s

重现gme的时候出现下面问题,这是为什么呀 Image

你按照例程重走一遍,应该没问题的

我什么都没改,直接按照官方设置,我不知道是不是还有什么版本问题,我用的3.2.1版本,具体报错如下:

File "<string>", line 295, in __init__
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/train_args.py", line 174, in __post_init__
    BaseArguments.__post_init__(self)
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/base_args/base_args.py", line 154, in __post_init__
    ModelArguments.__post_init__(self)
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/base_args/model_args.py", line 150, in __post_init__
    self._init_torch_dtype()
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/base_args/model_args.py", line 108, in _init_torch_dtype
    self.torch_dtype: torch.dtype = self._init_model_info()
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/argument/base_args/model_args.py", line 135, in _init_model_info
    self.model_info, self.model_meta = get_model_info_meta(**self.get_model_kwargs())
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/model/register.py", line 442, in get_model_info_meta
    model_info = _get_model_info(model_dir, model_type, quantization_config=quantization_config)
  File "/data/home/***/miniforge3/envs/py39/lib/python3.9/site-packages/swift/llm/model/register.py", line 399, in _get_model_info
    raise ValueError('Please explicitly pass the model_type. For reference, '
ValueError: Please explicitly pass the model_type. For reference, the available model_types: ['qwen2_vl', 'qvq'].
Downloading Model to directory: /data/home/***/.cache/modelscope/hub/models/iic/gme-Qwen2-VL-2B-Instruct
[WARNING:modelscope] Using branch: master as version is unstable, use with caution

拉取最新的,好像得3.3以上的

确实是这个问题,但是需要源码安装才可以3.3版本,

AriesJin avatar Mar 18 '25 10:03 AriesJin

🙏感谢您的工作! 请问”contrastive/online_contrastive loss对应的格式“内部的loss也是infonce吗?只不过是负样本是数据集里指定的? “infonce 格式”的每个raw就是一个anchor-postive对? 请教作者

我们支持的loss都在这个文件中: https://github.com/modelscope/ms-swift/blob/main/swift/plugin/loss.py 可以直接看一下,如果需要添加新的loss,在这个文件中添加,命令行--loss_type xxx即可支持 contrastive/online_contrastive loss 的格式是query和response是否是相似的,也就是label所指定的数值,不会使用batch里面的其他sample “infonce 格式”的每个raw就是一个anchor-postive对?是的

作者你好,有没有测试demo啊,我应该怎么拿到微调后的模型的输出向量呢

向量你直接看modlescope上的推理代码呀,早就开源了

QVQZZZ avatar Mar 18 '25 15:03 QVQZZZ

我更新了gme训练的代码,请查看文档:https://swift.readthedocs.io/zh-cn/latest/BestPractices/Embedding%E8%AE%AD%E7%BB%83.html 具体改进:

  1. 支持fusion模式,anchor positive negatives均支持多图文
  2. 支持hard negatives
  3. 支持多卡训练时所有的samples一起计算similarity 与此同时支持了几个环境变量:

Image

与此同时,命令行使用--task_type embedding可以支持其他模型也变为embedding模型进行训练,上述的fusion模式和hard negatives等feature也可以在其他模型中使用

tastelikefeet avatar Mar 19 '25 09:03 tastelikefeet