AI for Kidneys

It’s been a long time since my last post and now you can all know the reason why. I have been working on an Applied ML project at Deepmind to detect Acute Kidney Injury (AKI) earlier than current hardcoded rule-based systems.

For those of us that don’t remember much biology: the kidney is a filter in your body and gets rid of all the toxic waste produced by your cells. If your kidney isn’t working well, these toxins will accumulate and poison the patient. That’s why people go into hemodialysis, to clean up these toxins using an external device. Note that hemodialysis is extremely invasive and awful, the person may fell wasted, unable to walk, extremely nauseated… See Michael’s story here, which was a great personal inspiration to work on this problem.

AKI is an extremely serious issue and if not treated in time, it may cause life lasting sequelae or even death. Around 100,000 people in the UK and 500,000 people in the USA have AKI related deaths each year.

Our model uses Recurrent Neural Networks (RNNs) to process the events that happen to a patient sequentially and outputs a risk score of that patient having an AKI within the next 48h. This can enable earlier care and maybe prevent irreversible damage, but this has to be validated when a system like this is deployed and used live in hospitals.

Here are some links to the paper and some press coverage:

  1. Eric Topol’s Nature editorial
  2. Nature Paper
  3. Detailed protocol for reproduction
  4. Press:

Distributed Neural Networks

I just saw this paper about distributed Neural Networks: http://www.eecs.harvard.edu/~htk/publication/2017-icdcs-teerapittayanon-mcdanel-kung.pdf

The basic idea is to have small NN in the device, such as a mobile phone and fallback to the cloud if there is no confidence that the small NN is able to classify the example correctly.

It also helps to reduce the bandwidth consumption, since the device might send only a smaller and compressed representation of the data, much like an embedding.

They give an example of a surveillance system. Imagine: using this technique, we might be able to create (of that doesn’t exist yet) something like a God’s eye which can find anyone anywhere.

Open sourcing CUDA MOSP

Happy Sunday!

I was organizing my stuff and I realized that I have a lot of past projects which were not on github. Some of them I lost and other I had already forgot that I made, some of which are pretty cool.

So I decided to push some of my projects and I started by my graduation white paper. I used GPU programming to parallelize solutions of a NP-hard problem (MOSP). I used CUDA, which is a platform created by NVIDIA to enable mere mortal developers to exploit the massive parallel architecture of GPUs.

During this project, it was nice to returns to my origins and code in C. I used C++11 for the code that runs in the CPU, but had to fallback to pure C in the CUDA kernels (functions executed by the GPU).

I have good feelings for C, it was my first programming language and taught me so much. I even made my own version of bomberman using OpenGL back in 2011. I didn’t know I could use images, so I had to drawn everything mathematically, i.e, ellipses for the head and hat, saw function for the explosion effect and so on. I lost that code though, because I had never heard of git nor cloud storage at the time.

Returning to the paper, there were some nice performance gains by using CUDA C/C++. See:

If you can read Portuguese, check out the white paper.

Project link: https://github.com/Andresnds/cuda-mosp

 

Practicing AI: OpenAI Gym

I recently found this website gym.openai.com and it’s all I always wanted for my machine learning hobbies.

One of the boring parts of playing with AI was adapting the problem to the AI framework. The gym gives you a AI problem already in this frames work and the best part is that it gives you nice visualizations, i. e., for some problems you have a nice UI to see your agent’s progress.

It reminds me of the project Mjolnir that some classmates made back in school.

Check it out: