-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
你好,我有一个8万张图片的数据集,我想用一张A100来进行训练,不用分布式训练,请问你可以告诉我要改哪些设置吗 #27
Comments
感谢您的关注。如果你使用和code里面一样的dataloader,可以直接把八万张图片放在train文件夹里就可以了。一张a100足够训练representation generator(RDM),也不需要修改参数,但是要训练image generator(MAGE)可能不够。 |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
单卡的问题是因为MAGE在generate的时候会把所有GPU上生成的图片进行concat_all_gather操作。对于单卡来说这个会报错,把这句话注释掉就行。我没有在多卡A100上调试过,但多卡A6000上torch 1.7.1也会出现问题,你可以试试如下操作:
|
谢谢您的回答! |
This comment was marked as off-topic.
This comment was marked as off-topic.
我觉得可能有如下几个问题,供您参考: 第一,在您的数据集上的生成模型表现不应该用传统的FID进行衡量。FID使用的是在imagenet上预训练的inception network从图像中提取特征,然后计算真实数据集的特征分布与生成数据的特征分布之间的frechet distance。在imagenet上预训练的inception network很难从你的数据中提取出有意义的特征。并且,请不要使用我提供的这个方式安装torch-fidelity 第二,mage使用的tokenizer是在imagenet上预训练的,在您的数据集上表现不一定好。DiT和LDM的tokenizer在OpenImage上进行预训练,效果可能会好一些。但我建议您自己在您的数据集上预训练tokenizer,或者不使用tokenizer,用类似ADM的方法直接diffuse pixel也可以考虑。 第三,由于您的数据集与imagenet分布差异非常大,我建议您重新训练每一个模块,包括Moco v3,RDM,tokenizer,pixel generator。 希望对您有所帮助! |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
我用自己的数据集训练一下这个,https://github.com/dome272/VQGAN-pytorch |
哎哎,我看到mage好像没有用到vqgan呀,只有ldm用到了对吗 |
MAGE用到的是Google训练的tokenizer https://github.com/LTH14/rcg/blob/main/pixel_generator/mage/models_mage.py#L299-L302 |
好,那么moco v3用这个来训练对吗,谢谢 |
对 |
This comment was marked as off-topic.
This comment was marked as off-topic.
这个权重是Google内部训练的VQGAN。他的网络结构确实和原本的VQGAN不完全一样(虽然差距很小)。我建议你把这个文件https://github.com/LTH14/rcg/blob/main/pixel_generator/mage/taming/modules/diffusionmodules/model.py |
图片size没有很大关系。我建议你print一下预训练模型state_dict里的keys。有一种可能是,moco训练的模型存的keys是base_encoder.xxxxx,你可能需要把这个base_encoder.给去掉才能把两边的keys对应上。
…On Sat, May 11, 2024 at 6:52 AM Thu YinJun ***@***.***> wrote:
我在moco上面是用224的图片训练的,在mage上面用的图片是256,请问这个会有关系吗。mocov3官方用的就是224的尺寸
—
Reply to this email directly, view it on GitHub
<#27 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AFJD3KAWO4V3AWDEMTF6W7DZBXZ75AVCNFSM6AAAAABFQRRQ2SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMBVGY3TINRQGE>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
谢谢老哥,我找到了原因是因为我单卡训练的时候keys里面没有module这个词,我删掉就好。另外在vqgan载入的时候用原来的训练的权重里面会多一些东西,在load的时候把strict改为false就可以。和你交流很愉快,你这么厉害,却还这么耐心回答一些初学者的问题,谢谢你。现在我就等两边moco和vqgan都训练完就可以看到结果了。 |
祝顺利! |
你好! 可以分享一下训练moco-v3的经验吗?我用小数据训练总是timeout,查了很久也不知道怎么处理。我用torch 1.11, torchvision 0.12, 双卡训练的 @gzhuinjune |
您好!请问您是否能具体说明一下是什么timeout的错误呢? |
就是submit job之后就不动了,一直是下面这个状态:
|
单卡训练是没有问题的吗?如果单卡训练没问题,那大概率是卡间通讯的问题,可能需要检查一下master address什么的? |
这个moco-v3 repo 说只支持多卡,我用单卡会报错:In this repo, only multi-gpu, DistributedDataParallel training is supported; single-gpu or DataParallel training is not supported. This code is improved to better suit the multi-node setting, and by default uses automatic mixed-precision for pre-training. |
我觉得有可能是pytorch版本的问题,我之前好像在换到torch 1.11之后也遇到过MAE没法训练的情况。你试试回退到更早的pytorch版本呢,比如1.7.1或者1.10? |
official repo推荐的是CUDA 10.2 PyTorch 1.9.0, 但是需要设置master address, 您可以告诉我怎么设置吗? -a vit_base \
--optimizer=adamw --lr=1.5e-4 --weight-decay=.1 \
--epochs=300 --warmup-epochs=40 \
--stop-grad-conv1 --moco-m-cos --moco-t=.2 \
--dist-url 'tcp://[your first node address]:[specified port]' \
--multiprocessing-distributed --world-size 8 --rank 0 \
[your imagenet-folder with train and val folders] |
你如果就用一台机器的话,可以考虑设置成'tcp://localhost:8888'。如果要使用多台可能需要知道你学校服务器的名字(也就是ssh account_name@server_name的server_name,把localhost替换成统一的master server name |
注释掉这个就好,然后接着报错,你把用多卡算loss的部分注释掉就行 |
谢谢回复! 我刚发现用旧版本跑成功了,需要设置正确的master address和port。 |
你好,我其实也不会设置这个master address和port,请问你可以和我说说你是如何设置的吗 |
我才看到您两天前开了一个issue,不好意思没有及时回复。解决了就好,祝顺利! |
多谢!👍 |
用slurm就会输出一个node名字: MASTER_ADDR=$(scontrol show hostname $SLURM_NODELIST | head -n 1) |
谢谢您 |
你好请问你也在用自己的训练集训练吗,你现在得到的效果如何呀,咱们可以加个联系方式沟通一下吗,我训练了好久,但是依然遇到一些麻烦 |
你好,请问怎么添加联系方式呢? @gzhuinjune |
我的微信号是yj1392576398 |
你好!我想请问一下,训练完MAGE后,我的图片生成出来是很亮很模糊,我自己的数据是microscopy的,您知道在训练的时候需要注意和调节哪些参数吗?是不是跟imagenet图片差异很大造成的? |
你使用的是自己训练的VQGAN还是MAGE里的VQGAN呢?MAGE里的VQGAN是在imagenet上预训练的,如果你的图片和imagenet图片差异很大,则需要重新在你自己的图片上训练VQGAN |
This comment was marked as off-topic.
This comment was marked as off-topic.
另外,我想问问moco里面这个mean和std是拿我整个数据集进行计算得到的,还是利用训练集呢,下面的几个数据增强我需要再删掉哪些呢,是不是高斯模糊也应该关掉呢。如您看到的,我的数据集是颜色敏感的,因为不同的颜色直接代表不同的语义,而且它需要图片生成的线条是横平竖直的 normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
|
另外我还觉得有一个可能的原因导致我的训练效果不佳,就是我的每个类别下面的图片数量非常不均衡,多的有几万张,少的只有几十张,我现在删掉了图片数量过少的类别。请问我需要重新训练全部的vqgan和rdm以及moco和像素生成器吗,还是只需要重新训练moco和像素生成器就行,我感觉我之前训练的vqgan和rdm的效果还是不错的(现在只是删掉了其中的一些类别) |
有几个比较细节的点可能需要注意一下:
|
谢谢您的回答,请问您说的这个normalize在哪个地方呀,这个地方我确实没有留意 |
This comment was marked as duplicate.
This comment was marked as duplicate.
关于normalize,在这个codebase里的MAGE是没有normalize的,也就是by default [0, 1]: https://github.com/LTH14/rcg/blob/main/main_mage.py#L164-L169. 但是原始的VQGAN是有normalize到[-1, 1]的https://github.com/CompVis/taming-transformers/blob/master/taming/data/base.py#L51。如果你使用了原始的VQGAN code训练的VQGAN,那也需要把这里MAGE的输入也normalize到[-1, 1]。另外需要注意的是,我们在RDM以及rep-cond MAGE的训练里都hard code了moco的augmentation:https://github.com/LTH14/rcg/blob/main/rdm/models/diffusion/ddpm.py#L572-L573, https://github.com/LTH14/rcg/blob/main/pixel_generator/mage/models_mage.py#L459-L460,也就是把[0, 1]的input按照moco原本的方式进行normalization。如果你对moco训练的normalization有改变的话,这两个地方也需要相应改变。 |
总之,我建议仔细检查各个地方的image normalization -- 包括你刚刚展示的效果图,看起来像是统一都比较暗,这很有可能是normalization出现了问题。 |
谢谢哥们! |
谢谢解答,收获很多! |
您好,这里我有点看不清楚。MOCO那里我去掉了多的augmentation,只有resize, crop和normalize[0, 1],那RDM和rep-cond MAGE那里的MOCO需要怎么改呢?就是留下resize, crop 和normalize[0, 1]对吗?这个你说的hard code normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])我可以不改吗? |
如果moco那里的normalize是 [0,1],那么RDM和rep-cond的地方使用到moco的pre-trained model的时候就不需要进行原本的default normalization(之前在RDM和rep-cond中进行的mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]的normalization是imagenet的标准normalization也是moco的default normalization) |
imagenet对我来说太大了,我想用自己的图片来进行训练,我是不是直接把八万张图片丢到train文件夹里面就可以了呢,请问一张a100够吗,我需要调整哪些别的超参数呢,谢谢您的工作,祝您一切顺利!!!
The text was updated successfully, but these errors were encountered: