-
Notifications
You must be signed in to change notification settings - Fork 69
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
scanpy_funcs: Use multi-target regression #104
scanpy_funcs: Use multi-target regression #104
Conversation
cuML gained support for multi-target regression in version 22.12. This removes the need for a Python for loop and speeds up the code significantly. This commit adds support for using the multi-target regression. To prevent running out of memory when the input is too large (more than 100000 rows), the existing iterative code path is used.
99eef26
to
3780943
Compare
For a representative use case, this PR speeds up the regression step by a factor of ~20.
Results on a Volta V100 GPU:
|
Dear Allard, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ahendriksen this repository hasn't been updated for RAPIDS 22.12 yet. Can you update the environment yaml files in conda/environment/*.yaml
and the Dockerfile
and verify the notebooks still run successfully?
Also, @Intron7 has a valid point- it would be great to still maintain some level of chunking even w/ the multiple outputs support.
So I implement this chunking already for my repo rapids_singlecell and it works really well. I'm still figuring out the details of the syntax, because its still pretty clunky |
@Intron7 if you have time to do that, it would certainly be really useful to show off. |
@cjnolet @ahendriksen done. I created a PR for @ahendriksen branch with the batching update. I have to test tomorrow if we have to change the code for the multigpu notebook to set the |
still need to test if this works with multi-GPU in the batched format.
Thank you for adding the batching update @Intron7!
I have tested that the code / notebook in this PR runs successfully on RAPIDS 22.12. I have not tested if all other notebooks continue to run successfully. |
@ahendriksen @cjnolet Perfect. I think this in a hugh improvement since this was one of the slowest parts of the analysis |
@Intron7 were you able to check this? Does it run successfully for you? If so, I'm okay merging this and I can update the conda yaml file in a follow-on PR. |
I found one error within the UVM 1million notebook. Its a memory error with cupy and the cubin hash in the
|
@cjnolet The Multi_GPU notebook runs perfectly fine with the default of running 100 genes at once during |
@Intron7 what hardware did you use to test the UVM notebook? I've found that illegal memory error can commonly happen when 1) precision overflow for an indexing type (like using an int for nnz in sparse data) or 2) when the memory is oversubscribed by too much. |
@cjnolet I ran it on a node with an 80GB A100 PCIe and on one of the 80GB A100s in the dgx both the same error. |
Thanks for verifying that, @Intron7! I'll try and take a little deeper look as well |
It could also be our badly setup GPUs. So if this notebooks work on your end I think its us. |
cuML will gain support for multi-target regression in version 22.12. This speeds up the code significantly since the regression no longer has to be performed inside a for loop. As described in rapidsai/cuml#4988, the speedup can be up to 50x.
This PR adds support for using the multi-target regression. To prevent running out of memory when the input is too large (more than 100000 rows), the existing iterative code path is used.