For seismic imaging, the repository shows how you can leverage open-source PDE solver Devito, to perform Full-Waveform Inversion (FWI) at scale on Azure using Dask and k8s
Steps to run:
- Build the docker image:
docker-compose build
should create the docker image. - Tag and upload the built image to ACR - note the name of the image.
- Update
dask-cluster.yaml
to use this docker image for both the scheduler and worker. - Do the background to provision a kubernetes cluster and have
kubectl
working on it. kubectl apply -f dask-cluster.yaml
- Get the dask scheduler IP from this cluster and put it in
docker-compose.yaml
- Put your azure storage credentials in
azureio.py
docker-compose run daks /bin/bash
- this will launch a local container with the same image we created in step 1. All code communicating with the cluster should be run from a similar container.cd daks
make shots.blob
- this downloads the 3D Overthrust Model from SLIM group's FTP server (thanks to them for providing this) to the local directory, extracts a 2D slice, uploads the 2D slice to blob storage, and then runs the shot generation script that reads from blob storage directly on the k8s cluster and writes shot data to blob storage directly.- You should now have blobs named
shot_0.h5
toshot_19.h5
(for default nshots=20, can be passed as a command-line parameter topython generate_shot_data.py --nshots <NUMBER>
) in a container calledshots
in your blob storage account. python fwi.py
(ormake fwi
) - this will run fwi using the shots generated previously.