- Data Preprocessing - Completed, Tested. Done for both Ronak [11/25/2024] and Abhisek[12/04/2024]
- Abhisek working on Case Studies 1 and 2 with DeepOnet [12/05/2024]
- Ronak working on Case Studies 3 and 4. Made code changes to DeepONet to time march the model prediction process. Testing in progress. [12/05/2024]
- DeepONet - Can use it for rectangular domains. Starting with this model.
- FNO - Find a way to handle rectangular domains.
- Poseidon/scOT - Can't handle rectangular domains. Checked with the authors. They want us to do it.
- CNO - Not sure about this one.
-
The objective for the changes:
- We want to time march the model prediction process so that it can reuse previous predictions to make future predictions. e.g.,
- Train x1, x2, x3, x4, x5 -> x6
- Train x2, x3, x4, x5, x6* -> x7
- Train x3, x4, x5, x6*, x7* -> x8
- Train x4, x5, x6*, x7*, x8* -> x9
- Train x5, x6*, x7*, x8*, x9* -> x10
Here x6*, x7*, x8*, x9* are the past predictions made by the model. The model should be able to reuse these predictions to make future predictions.
- We want to time march the model prediction process so that it can reuse previous predictions to make future predictions. e.g.,
-
Review Required on two files:
./model_training/models/deeponet.py ./model_training/data/dataset_fpo.py -
Changes Made in deeponet.py
- Added method
on_train_epoch_end(). This allows us to perform the following operations at the end of each epoch:- Save the current prediction to a
.npyfile - Reload the Dataset object by discarding the first prediction and adding the new prediction
- Do it every 100 epochs
- Calls an
update_data()method in theDataModuleobject to update the dataset
- Save the current prediction to a
- Added method
-
Changes Made in dataset_fpo.py
-
Added class
FPODataModuleand in it a methodupdate_data(). This allows us to perform the following operations:- Load the current prediction from the
.npyfile - Performs the full range of time stepping calculations to update the dataset
- Uses the time calculations to call the
DataLoaderobject to update the dataset.
- Load the current prediction from the
-
Added a new
FPODatasetMixdataloader that allows us to mix the current prediction with the actual data to train the model, given a set of time indices.
-
-
Request an Interactive Node and activate the virtual environment on Nova:
salloc -N 2 -n 72 -t 08:00:00 --mem 369G source /work/mech-ai/rtali/mlpythonenv/bin/activate -
Check the data settings here:
./dataset_generation/data.ini -
Run the following command to generate the dataset:
python3 ./dataset_generation/data_prep.py -
Two numpy tensor files will be generated:
./dataset_generation/fpo/in_data.npz ./dataset_generation/fpo/out_data.npz
- Request an Interactive GPU Node and activate the virtual environment on Nova:
salloc -N 1 -n 8 --gres gpu:a100:1 -t 8:00:00 --mem 369G source /work/mech-ai/rtali/mlpythonenv/bin/activate