[BUG] janus t2i finetune error
Required prerequisites
- [x] I have read the documentation https://align-anything.readthedocs.io.
- [x] I have searched the Issue Tracker and Discussions that this hasn't already been reported. (+1 or comment there if it has.)
- [ ] Consider asking first in a Discussion.
What version of align-anything are you using?
0.0.1.dev0
System information
官方安装流程,单节点8卡a800训练,128个训练样本,首先使用pre tokenizer转换为pt文件,把pt文件路径放到sft的训练脚本中,启动训练
MODEL_NAME_OR_PATH="/mnt/data_vlm/models/Janus-Pro-1B" TRAIN_DATASETS="/mnt/data_vlm/liang.hu/janus_train/sft_imagegen_data/" TRAIN_DATA_FILE="train.pt" OUTPUT_DIR="/mnt/data_vlm/liang.hu/janus_train/output/" JANUS_REPO_PATH="/mnt/data_vlm/liang.hu/Janus"
export PYTHONPATH=$PYTHONPATH:$JANUS_REPO_PATH export WANDB_API_KEY="xxx" export WANDB_PROJECT="Janus" export WANDB_NAME="xxx" export WANDB_MODE=online
Source the setup script
source ./setup.sh
Execute deepspeed command
deepspeed
--master_port ${MASTER_PORT}
--module align_anything.trainers.janus.sft
--model_name_or_path ${MODEL_NAME_OR_PATH}
--train_datasets ${TRAIN_DATASETS}
--train_data_files ${TRAIN_DATA_FILE}
--train_split train
--learning_rate 2e-5
--epochs 1
--weight_decay 0.1
--adam_beta1 0.9
--adam_beta2 0.95
--lr_scheduler_type constant
--output_dir ${OUTPUT_DIR}
Problem description
报错
[rank1]: Traceback (most recent call last):
[rank1]: File "
Reproducible example code
The Python snippets:
Command lines:
Extra dependencies:
Steps to reproduce:
Traceback
Expected behavior
No response
Additional context
No response
我看这个类 class SupervisedBatch(TypedDict, total=True): input_ids: torch.LongTensor # size = (B, L) labels: torch.LongTensor # size = (B, L) attention_mask: torch.BoolTensor # size = (B, L) pixel_values: torch.LongTensor | None # size = (B, C, H, W) task: str
已经包含task这个属性了,为啥forward方法又单独传一次,貌似传重复了就报错了= =然后我把forward里面的task这个key去掉,又报下面的错误= =
[rank1]: Traceback (most recent call last):
[rank1]: File "
这个model.forward应该怎么跟进去= =看不见代码了
麻烦帮看下,thanks~
感谢您的提问!我们正在复现问题,初步判断原因是Janus系列模型的支持实现时间相对较早,在后续框架的版本迭代中疏于维护导致self.model类型错误,我们复现问题后会第一时间进行更正并在issue内update相关信息,感谢海涵!
好的好的,非常感谢!麻烦高优看下!最近有个工作非常依赖janus的t2i训练,麻烦了!或者有什么我这边需要帮忙的也ok,我可以直接contribution 😅
tips: 我训练的是pro模型,不过跟24年10月份的janus架构应该是一样的,我理解只是训练strategy和模型参数变了下, thx
感谢您的提问!我们正在复现问题,初步判断原因是Janus系列模型的支持实现时间相对较早,在后续框架的版本迭代中疏于维护导致self.model类型错误,我们复现问题后会第一时间进行更正并在issue内update相关信息,感谢海涵!
[https://github.com/htlou/Align_Anything_Janus/blob/main/janus/models/modeling_vlm.py 中新的forward仅关注了generation部分的代码,但是关于understanding仅显示调用父类代码,就会出现问题。
感谢您的提问!我们正在复现问题,初步判断原因是Janus系列模型的支持实现时间相对较早,在后续框架的版本迭代中疏于维护导致self.model类型错误,我们复现问题后会第一时间进行更正并在issue内update相关信息,感谢海涵!
[https://github.com/htlou/Align_Anything_Janus/blob/main/janus/models/modeling_vlm.py 中新的forward仅关注了generation部分的代码,但是关于understanding仅显示调用父类代码,就会出现问题。
我擦咧,怎么还有这个仓库,宝藏啊,为什么这个里面有个forward方法,我看官方的janus没有,是作者自己撸的么?
哦!!!是不是janus的代码得用这个仓库的,不能用官方的啊?我用的janus是官方仓库
感谢您的提问!我们正在复现问题,初步判断原因是Janus系列模型的支持实现时间相对较早,在后续框架的版本迭代中疏于维护导致self.model类型错误,我们复现问题后会第一时间进行更正并在issue内update相关信息,感谢海涵!
[https://github.com/htlou/Align_Anything_Janus/blob/main/janus/models/modeling_vlm.py 中新的forward仅关注了generation部分的代码,但是关于understanding仅显示调用父类代码,就会出现问题。
我擦咧,怎么还有这个仓库,宝藏啊,为什么这个里面有个forward方法,我看官方的janus没有,是作者自己撸的么?
但是我在进行understanding 时候会报错,如果你有新的想法,可以讨论一下
感谢您的提问!我们正在复现问题,初步判断原因是Janus系列模型的支持实现时间相对较早,在后续框架的版本迭代中疏于维护导致self.model类型错误,我们复现问题后会第一时间进行更正并在issue内update相关信息,感谢海涵!
[https://github.com/htlou/Align_Anything_Janus/blob/main/janus/models/modeling_vlm.py 中新的forward仅关注了generation部分的代码,但是关于understanding仅显示调用父类代码,就会出现问题。
我擦咧,怎么还有这个仓库,宝藏啊,为什么这个里面有个forward方法,我看官方的janus没有,是作者自己撸的么?
但是我在进行understanding 时候会报错,如果你有新的想法,可以讨论一下
我目前倒是不需要understanding,你的意思是,janus如果用这个仓库generation是跑的通的?understanding那块我过两天要开始训练,我一起看下吧,看下这个仓库跟官方仓库的不同~~感谢!
它这个生成还有个比较麻烦的地方,它训练不知道用了cfg没有,推理侧是用了cfg的= =我是搞不懂一个ar模型为啥要用diffusion的东西= =囧
感谢您的提问!我们正在复现问题,初步判断原因是Janus系列模型的支持实现时间相对较早,在后续框架的版本迭代中疏于维护导致self.model类型错误,我们复现问题后会第一时间进行更正并在issue内update相关信息,感谢海涵!
[https://github.com/htlou/Align_Anything_Janus/blob/main/janus/models/modeling_vlm.py 中新的forward仅关注了generation部分的代码,但是关于understanding仅显示调用父类代码,就会出现问题。
我擦咧,怎么还有这个仓库,宝藏啊,为什么这个里面有个forward方法,我看官方的janus没有,是作者自己撸的么?
但是我在进行understanding 时候会报错,如果你有新的想法,可以讨论一下
它这个understanding我觉得自己写也非常好写,就是过一个siglip然后adaptor然后llm然后head出来算交叉熵就行~~
它这个生成还有个比较麻烦的地方,它训练不知道用了cfg没有,推理侧是用了cfg的= =我是搞不懂一个ar模型为啥要用diffusion的东西= =囧
它训练居然也是用cfg训练的= =碉堡了。。。
感谢您的提问!我们正在复现问题,初步判断原因是Janus系列模型的支持实现时间相对较早,在后续框架的版本迭代中疏于维护导致self.model类型错误,我们复现问题后会第一时间进行更正并在问题内更新相关信息感谢,海涵!
[https://github.com/htlou/Align_Anything_Janus/blob/main/janus/models/modeling_vlm.py 中新的forward仅关注了代部分的代码,但是关于理解仅显示调用父类代码,就会出现问题。
我擦擦,怎么还有这个仓库,宝藏啊,为什么这里面有个转发方法,我看官方的janus没有,是作者自己撸的么?
但是我在进行理解的时候会报错,如果你有新的想法,可以讨论一下
这个理解我觉得自己写也非常好写,就是过一个siglip然后adaptorllm然后head出来算交叉熵就行~~
是吗?我尝试自己写了代码但是存在问题,不知道您是否愿意分享一下您的版本
感谢您的提问!我们正在复现问题,初步判断原因是Janus系列模型的支持实现时间相对较早,在后续框架的版本迭代中疏于维护导致self.model类型错误,我们复现问题后会第一时间进行更正并在问题内更新相关信息感谢,海涵!
[https://github.com/htlou/Align_Anything_Janus/blob/main/janus/models/modeling_vlm.py 中新的forward仅关注了代部分的代码,但是关于理解仅显示调用父类代码,就会出现问题。
我擦擦,怎么还有这个仓库,宝藏啊,为什么这里面有个转发方法,我看官方的janus没有,是作者自己撸的么?
但是我在进行理解的时候会报错,如果你有新的想法,可以讨论一下
这个理解我觉得自己写也非常好写,就是过一个siglip然后adaptorllm然后head出来算交叉熵就行~~
是吗?我尝试自己写了代码但是存在问题,不知道您是否愿意分享一下您的版本
我转到verl去了,后续要大规模分布式训练
后面我贴上来
后面我贴上来
感谢,不知道大概什么时间您方便分享呢?
后面我贴上来
感谢,不知道大概什么时间您方便分享呢?
目前没定,我还在测试,等测试ok了就放,不然就尴尬了,哈哈
后面我贴上来
感谢,不知道大概什么时间您方便分享呢?
目前没定,我还在测试,等测试ok了就放,不然就尴尬了,哈哈
感谢您的提问!我们正在复现问题,初步判断原因是Janus系列模型的支持实现时间相对较早,在后续框架的版本迭代中疏于维护导致self.model类型错误,我们复现问题后会第一时间进行更正并在问题内更新相关信息感谢,海涵!
[https://github.com/htlou/Align_Anything_Janus/blob/main/janus/models/modeling_vlm.py 中新的forward仅关注了代部分的代码,但是关于理解仅显示调用父类代码,就会出现问题。
我擦擦,怎么还有这个仓库,宝藏啊,为什么这里面有个转发方法,我看官方的janus没有,是作者自己撸的么?
但是我在进行理解的时候会报错,如果你有新的想法,可以讨论一下
这个理解我觉得自己写也非常好写,就是过一个siglip然后adaptorllm然后head出来算交叉熵就行~~
非常抱歉,还是想打扰您一下,您说的先经过siglip,在经过adapter-->llm--->head-->交叉熵损失。输入是否已经不是inputs_id了呢?
后面我贴上来
感谢,不知道大概什么时间您方便分享呢?
目前没定,我还在测试,等测试ok了就放,不然就尴尬了,哈哈
感谢您的提问!我们正在复现问题,初步判断原因是Janus系列模型的支持实现时间相对较早,在后续框架的版本迭代中疏于维护导致self.model类型错误,我们复现问题后会第一时间进行更正并在问题内更新相关信息感谢,海涵!
[https://github.com/htlou/Align_Anything_Janus/blob/main/janus/models/modeling_vlm.py 中新的forward仅关注了代部分的代码,但是关于理解仅显示调用父类代码,就会出现问题。
我擦擦,怎么还有这个仓库,宝藏啊,为什么这里面有个转发方法,我看官方的janus没有,是作者自己撸的么?
但是我在进行理解的时候会报错,如果你有新的想法,可以讨论一下
这个理解我觉得自己写也非常好写,就是过一个siglip然后adaptorllm然后head出来算交叉熵就行~~
非常抱歉,还是想打扰您一下,您说的先经过siglip,在经过adapter-->llm--->head-->交叉熵损失。输入是否已经不是inputs_id了呢?
文本部分还是input_ids,图像部分是一个<image_placeholder>的占位符,经过embedding以后用图像的embedding去替代