Closed MikeDean2367 closed 1 year ago
你好,projects文件下的MT5和T5的区别是什么?如果我需要训练MT5,建议使用哪个代码为基准?
建议使用projects/MT5
你好,projects文件下的MT5和T5的区别是什么?如果我需要训练MT5,建议使用哪个代码为基准?
建议使用projects/MT5
非常感谢你的回复。我在阅读MT5文件时发现了以下的问题:
libai/projects/MT5/configs/mt5_pretrain.py
文件中使用的dataloader和tokenization来自libai/configs/common/data/t5_dataset.py
文件,该文件中的tokenization使用的是BertTokenizer,而不是T5Tokenizer;libai/libai/data/datasets/t5_dataset.py
文件中的T5Dataset类,该类中存在cls_id
mask_id
等成员变量,当我将第1点中的BertTokenizer更换成T5Tokenizer时(并将vocab_file更换为huggingface中的spiece.model),若保持T5Dataset类不变,则会报错,因为T5的vocab中并不存在[CLS] [SEP] [MASK]特殊token。我将上面对应的成员变量删除后,发现在该类的getitem中存在build_training_sample函数的调用,该函数又调用了其他相关的函数,且都存在对于[CLS] [SEP] [MASK]的操作。那么对于dataloader,我是否需要重新构建?还是说projects/T5中的dataloader可以借鉴?(T5中的dataloader使用的collate_fn位于libai/projects/T5/datasets/dataset.py
文件中,在其call中返回的时候存在loss_mask,不太清楚这个是干什么作用的)
你好,projects文件下的MT5和T5的区别是什么?如果我需要训练MT5,建议使用哪个代码为基准?
建议使用projects/MT5
非常感谢你的回复。我在阅读MT5文件时发现了以下的问题:
- 在
libai/projects/MT5/configs/mt5_pretrain.py
文件中使用的dataloader和tokenization来自libai/configs/common/data/t5_dataset.py
文件,该文件中的tokenization使用的是BertTokenizer,而不是T5Tokenizer;- 上面提到的dataloader实例化的类型在
libai/libai/data/datasets/t5_dataset.py
文件中的T5Dataset类,该类中存在cls_id
mask_id
等成员变量,当我将第1点中的BertTokenizer更换成T5Tokenizer时(并将vocab_file更换为huggingface中的spiece.model),若保持T5Dataset类不变,则会报错,因为T5的vocab中并不存在[CLS] [SEP] [MASK]特殊token。我将上面对应的成员变量删除后,发现在该类的getitem中存在build_training_sample函数的调用,该函数又调用了其他相关的函数,且都存在对于[CLS] [SEP] [MASK]的操作。那么对于dataloader,我是否需要重新构建?还是说projects/T5中的dataloader可以借鉴?(T5中的dataloader使用的collate_fn位于
libai/projects/T5/datasets/dataset.py
文件中,在其call中返回的时候存在loss_mask,不太清楚这个是干什么作用的)
你好,可以把T5Tokenzier兼容到T5Dataset中去,可以参考其他projects自己写一下,比较简单,我们的训练代码是和megatron保持一致的,所以使用了BertTokenizer,或者等待我们后续支持一下
你好,projects文件下的MT5和T5的区别是什么?如果我需要训练MT5,建议使用哪个代码为基准?
建议使用projects/MT5
非常感谢你的回复。我在阅读MT5文件时发现了以下的问题:
- 在
libai/projects/MT5/configs/mt5_pretrain.py
文件中使用的dataloader和tokenization来自libai/configs/common/data/t5_dataset.py
文件,该文件中的tokenization使用的是BertTokenizer,而不是T5Tokenizer;- 上面提到的dataloader实例化的类型在
libai/libai/data/datasets/t5_dataset.py
文件中的T5Dataset类,该类中存在cls_id
mask_id
等成员变量,当我将第1点中的BertTokenizer更换成T5Tokenizer时(并将vocab_file更换为huggingface中的spiece.model),若保持T5Dataset类不变,则会报错,因为T5的vocab中并不存在[CLS] [SEP] [MASK]特殊token。我将上面对应的成员变量删除后,发现在该类的getitem中存在build_training_sample函数的调用,该函数又调用了其他相关的函数,且都存在对于[CLS] [SEP] [MASK]的操作。那么对于dataloader,我是否需要重新构建?还是说projects/T5中的dataloader可以借鉴?(T5中的dataloader使用的collate_fn位于
libai/projects/T5/datasets/dataset.py
文件中,在其call中返回的时候存在loss_mask,不太清楚这个是干什么作用的)你好,可以把T5Tokenzier兼容到T5Dataset中去,可以参考其他projects自己写一下,比较简单,我们的训练代码是和megatron保持一致的,所以使用了BertTokenizer,或者等待我们后续支持一下
好的,非常感谢,我先自己参考写一下
你好,projects文件下的MT5和T5的区别是什么?如果我需要训练MT5,建议使用哪个代码为基准?