align-anything icon indicating copy to clipboard operation
align-anything copied to clipboard

[Question] 我想要对janus进行SFT,我大概需要什么样的算力?

Open 125jx opened this issue 10 months ago • 6 comments

Required prerequisites

Questions

我想要对janus进行SFT,我大概需要什么样的算力?一张V100-32G是否可以满足要求?

125jx avatar Apr 07 '25 11:04 125jx

您好,感谢您对Align Anything的关注和兴趣!

Janus和Janus Pro目前有两种模型大小:1B和7B。我们目前没有在V100-32G上运行过Janus训练,但是微调Janus系列的1B模型所需要的显存是小于32G的,V100-32G应当可以满足需求。如果您需要对Janus系列的7B模型进行微调,我们推荐使用8*80G左右的GPU。

如果您在训练过程中遇到问题或者有其他疑问,欢迎在本issue中进一步提出!

htlou avatar Apr 07 '25 19:04 htlou

非常感谢你的回答!

如果我对整个模型使用LoRA微调,什么样的显卡可以满足JanusPro-7B的微调呢?

125jx avatar Apr 08 '25 02:04 125jx

如果我对整个模型使用LoRA微调,什么样的显卡可以满足JanusPro-7B的微调呢?

目前我们没有尝试使用LoRA对Janus Pro 7B进行微调,但根据过去在其他模型上进行LoRA的经历,我认为单张80GB或者40GB的GPU是一个相对较为合理的数值。我们在代码仓库中已实现QLoRA等内存优化技术,但目前无法确保能将显存需求优化至24GB以下的消费级显卡范围。

如果您在实际训练过程中遇到任何技术问题或需要进一步的参数调优建议,欢迎在此issue中继续讨论,我们团队将提供技术支持 ;)

htlou avatar Apr 08 '25 07:04 htlou

当我使用代码进行微调时候,我遇到了下面的问题:

Image 然后我查看了一下,我很好奇这个self.processor为什么选用VLMImageProcessor,而不是选用janus中的VLChatProcessor?因为在SupeviseDataset中的preprocess的过程需要传输给其conversation和image。如果processor是image-processor,那岂不是无法处理conversation?

Image

125jx avatar Apr 09 '25 10:04 125jx

当我使用代码进行微调时候,我遇到了下面的问题:

请问你能否提供你使用的数据样例以供我进行复现?这有助于我定位具体是哪个模块的问题。

然后我查看了一下,我很好奇这个self.processor为什么选用VLMImageProcessor,而不是选用janus中的VLChatProcessor?因为在SupeviseDataset中的preprocess的过程需要传输给其conversation和image。如果processor是image-processor,那岂不是无法处理conversation?

by design这里的self.processor应当是VLChatProcessor,你是如何得到VLMImageProcessor的呢?我们复现成功后将会修复这个问题

htlou avatar Apr 16 '25 13:04 htlou

当我使用代码进行微调时候,我遇到了下面的问题:

请问你能否提供你使用的数据样例以供我进行复现?这有助于我定位具体是哪个模块的问题。

然后我查看了一下,我很好奇这个self.processor为什么选用VLMImageProcessor,而不是选用janus中的VLChatProcessor?因为在SupeviseDataset中的preprocess的过程需要传输给其conversation和image。如果processor是image-processor,那岂不是无法处理conversation?

by design这里的self.processor应当是VLChatProcessor,你是如何得到VLMImageProcessor的呢?我们复现成功后将会修复这个问题

Image这里初始化模型的时候加载的就是image-processor,我猜测应该改成text-processor,但是仍然存在一个问题,就是这样的输入(return_dict)如何适应forward过程,我观察到forward的过程中的understanding是直接调用的父类函数,但我没有看到在哪里实现?

Image

125jx avatar Apr 21 '25 12:04 125jx