nissy-dev / jaxchem

An experimental repo to work on some Jax models for chemistry
0 stars 0 forks source link

Daily Standup July #3

Closed nissy-dev closed 4 years ago

nissy-dev commented 4 years ago

Summary

JAXChem

In July, I was mainly working for the example notebook and the documentation. Firstly, I made the Tox21 example notebook with Google Colab. The content of this notebook is how to install the JAXChem, how to use a model of the JAXChem, how to train a model and so on. Google colab doesn't require the hard work of building the environment, so I think this is really useful for newcomers. And then, I made the JAXChem documentation and deployed to readthedocs.org.

In addition to this, I tried to refactor the sparse pattern model using jax.ops.segment_sum method in order to fix the performance issue. The reason I thought segment_sum method may solve the performance issue is the jax.ops.segment_sum is used in the GNN model of flax which google develops as a neural network library for JAX. But, this modification didn't resolve the problem because jax.ops.segment_sum method use jax.ops.index_add internally. I will continue to work for resolving this problem.

What I did

DeepChem

In July, I was mainly working for the nightly-build package and new dataclass for graphs. Firstly, I fixed the nightly-build installation guide and CI scripts. And then, after I improved the type annotation in deepchem.utils, deepchem.dock and deepchem.hyper, I implemented the new dataclass for graphs. Currently, DeepChem has specific data classes for each model (like ConvMol <- GraphConvModel), so I think this is not good situation considering about the maintainability or compatibility to PyG or DGL. (see the details https://github.com/deepchem/deepchem/issues/1942) Now I'm working for the CGCNN support using the new dataclass for graphs.

What I did

Next plan (during final evaluation period)

In August, I will continue to work for implementing the CGCNN model and the PyG or DGL support for DeepChem. This plan is different from the original plan, but I think this is a really useful for many newcomers which want to try ML with chemistry. And then, I will restart to work for JAXChem after finishing this crystal support.

nissy-dev commented 4 years ago

7/2

Yesterday

I write evaluations and issues. https://github.com/deepchem/jaxchem/issues/8, https://github.com/deepchem/deepchem/issues/1941, https://github.com/deepchem/deepchem/issues/1942

Today

I will make a notebook example

blockers

I think it is no bockers.

nissy-dev commented 4 years ago

7/4

Yesterday

I mad the notebook example

Today

I will write the blog post based on this comment https://github.com/nd-02110114/jaxchem/issues/1#issuecomment-651115458.

blockers

I think it is no bockers.

nissy-dev commented 4 years ago

7/7

Yesterday

I posted the blog! https://forum.deepchem.io/t/gsoc-brief-report-during-1st-evaluation-period/201

Today

I will build the documents using sphinx.

blockers

I think it is no bockers.

nissy-dev commented 4 years ago

7/8

Yesterday

I built the document using sphinx.

Today

I'll host the document using the https://readthedocs.org/.
And, I'll start looking into the Material Project Dataset support.

blockers

I think it is no bockers.

nissy-dev commented 4 years ago

7/9

Yesterday

I hosted the document using the https://readthedocs.org/. Link : https://jaxchem.readthedocs.io/en/latest/

Today

I'll fix the deepchem installation docs and review some PRs. And, I'll start looking into the Material Project Dataset support.

blockers

I think it is no bockers.

nissy-dev commented 4 years ago

7/13

Yesterday

I didn't work in 7/11, 7/12

Today

I will refactor the sparse pattern GCN. Currently, JAXChem uses the jax.ops.index_add for aggregating the neighbor nodes and this leads to a bad performance.

But, two day ago, I found the flax has the example of sparse GCN model. (it includes MPNN!) The flax uses the jax.ops.segment_sum . jax.ops.segment_sum is a almost same as the torch-scatter, I think it is better to use the jax.ops.segment_sum. (torch-scatter is used in PyG) And, I will try to implement the MPNN.

Flax GCN example : https://github.com/google/flax/blob/9cc9b042c52f394464a2f292f6764e1e2836a01a/examples/graph/models.py

About the Material Project Dataset support, I seem that Nathan is working hard https://github.com/deepchem/deepchem/issues/1999. So, after Nathan added the new materials datasets to molnet, I will try to implement the CGCNN.

blockers

I think it is no bockers.

nissy-dev commented 4 years ago

7/16

Yesterday

I refactor the sparse pattern GCN using jax.ops.segment_sum The PR is https://github.com/deepchem/jaxchem/pull/15 This modification didn't solve the issue because jax.ops.segment_sum also uses jax.ops.index_add internally...

Today

I implement the new molecule graph data and refactor some featurizers and ci scripts. After merging these PRs, I will make the new graph model featurizers using them

blockers

I think it is no bockers.

nissy-dev commented 4 years ago

7/18

Yesterday

In a few days, I improved the type annotation and keep codes more healthy. But, these works are not related to jaxchem... So, I am regretting my actions....

Today

In this week, I will focus on the CGCNN support. I will implement the CGCNN featurizer and molnet function for Materials Project Data.

My GSoC goal is supporting inorganic crystal data for DeepChem and fixing the sparse pattern models.

blockers

I think it is no bockers.

nissy-dev commented 4 years ago

7/23

Yesterday

In a few days, I couldn't work for GSoC because of my research work....

Today

Today, I added the CGCNN featurizer using new graph data class.

My GSoC goal is supporting inorganic crystal data for DeepChem and fixing the sparse pattern models.

blockers

I think it is no bockers.