Skip to content
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

the results of AMASS are very different trained on torch1.6 and torch1.7 #3

Closed
lingtengqiu opened this issue Jan 8, 2022 · 4 comments

Comments

@lingtengqiu
Copy link

I am very confused about the AMASS results on subject 50002 trained on different versions of pytorch.

According to your environments, it suggests to install pytorch==1.7.0. However the results trained on pytorch1.7 is less than the results I train on pytorch==1.6.0 significantly. I am very confused about it.

the training loss, and evaluation IoU is shown as(blue is trained on torch==1.6.0, and red is trained on 1.7.0):
Screenshot from 2022-01-08 14-15-30

Screenshot from 2022-01-08 14-15-11

Looking forward to your reply.

@lingtengqiu
Copy link
Author

I find the main issue is the broyden method can not converge to cvg_thresh(1e-5). Many (xd_opt -xd_tgt) coverage to 1e-4 trained on RTX3090, pytorch1.7.0. I do not know how to solve it, could you give me some suggestion?

@xuchen-ethz
Copy link
Owner

Hi @lingtengqiu, I've actually encountered the same problem on RTX3080. Later I switched to RTX2080 and haven't gotten the problem anymore. It seems to be a low-level problem and even hardware dependent, I am sorry that I don't really know how to solve this for RTX30xx.

The training curve for PyTorch1.6 seems good - is it also trained with RTX3090? and how does the result look qualitatively? if the qualitative result looks good then I would suggest just using PyTorch1.6. If there are incompatibilities between the code and PyTorch1.6 I am happy to resolve them.

@lingtengqiu
Copy link
Author

Thanks for your detailed answer.

The training curve for pytorch1.6 is the result of the model trained on RTX2080 and A-100. I find the main issue is the broyden method on RTX-30 series could not converge to 1e-5 (which leads to the number of valid verts is small, many pts are unable to train). If I modify the cvg_thresh to 1e-3, the training curve is good on RTX-30. I guess it is the implementation of graphic computing is different on 3090 ,compared with other devices.

@xuchen-ethz
Copy link
Owner

Thank you for the information. Then it's probably easiest to change GPU ( Given that A100 also works fine for you, I suspect that any model earlier than 8.6 should be okay https://en.wikipedia.org/wiki/CUDA#:~:text=A100%2040GB%2C%20A30-,8.6,-GA102%2C%20GA104%2C%20GA106)

Setting a larger cvg_thresh (e.g. 1e-3) on RTX30xx might cause problems based on my experience - you might get artifacts (noisy spikes) on the output mesh because the loose cvg_thresh could introduce false correspondences.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants