{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 04 - Full Waveform Inversion with Devito and Dask" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this tutorial, we will build on the [previous](https://github.com/devitocodes/devito/blob/master/examples/seismic/tutorials/03_fwi.ipynb) FWI tutorial and implement parallel versions of both forward modeling and FWI objective functions. Furthermore, we will show how our parallel FWI function can be passed to black-box third party optimization libraries, such as SciPy's [optimize](https://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html) package, to access sophisticated optimization algorithms without having to implement them from scratch!\n", "\n", "To implement parallel versions of forward modeling and FWI, we will use [Dask](https://dask.pydata.org/en/latest/#dask), a Python library for distributed computing based on parallel data structures and task-based programming. As computing multiple seismic shot records or gradients for subsequent source locations is an embarassingly parallel process, we will use Dask to dynamically distribute our workload to a pool of available workers and afterwards collect the results.\n", "\n", "The first part of this tutorial closely follows [tutorial 3](https://github.com/devitocodes/devito/blob/master/examples/seismic/tutorials/03_fwi.ipynb) and consists of reading the velocity model and setting up the acquisition geometry. Subsequently, we will implement serial versions of forward modeling and FWI objective functions and then show how we can use Dask to implement parallel versions of these functions. Finally, we will show how to write a wrapper that lets us pass our objective function to scipy's optimize package and how to run a small 2D FWI example using a limited-memory Quasi-Newton method." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## GPU Aware Dask" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The default method to start a Dask Cluster is LocalCluster(...). This method enables CPU worker threads, but it shares one GPU for all workers. To enable Dask to use multi-GPU, or a GPU per Dask worker, the method to start a Dask Cluster needs to be changed to LocalCUDACluster. This Dask modification is pulled from the Rapids.ai open source project.\n", "\n", "Reference: https://github.com/rapidsai/dask-cuda" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "USE_GPU_AWARE_DASK = False" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Set up velocity models" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As before, we start by reading the true (i.e. unknown) velocity model, as well as the starting model for FWI. For our example, we once again use the 2D Camembert model with a transmission acquisition set up, which involves having sources on one side of the model and receivers on the other side.\n", "\n", "In reality, we obvisouly cannot know what the true velocity is, but here we use the true model to generate our own data (inverse crime alert!) and to compare it to our FWI result." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Operator `initdamp` run in 0.01 s\n", "Operator `padfunc` run in 0.01 s\n", "Operator `initdamp` run in 0.01 s\n", "Operator `padfunc` run in 0.01 s\n" ] } ], "source": [ "from examples.seismic import demo_model\n", "\n", "# Set up velocity model\n", "shape = (101, 101) # Number of grid points (nx, nz).\n", "spacing = (10., 10.) # Grid spacing in m. The domain size is now 1km by 1km.\n", "origin = (0, 0) # Need origin to define relative source and receiver locations.\n", "nbl = 40\n", "\n", "# True model\n", "model1 = demo_model('circle-isotropic', vp_circle=3.0, vp_background=2.5,\n", " origin=origin, shape=shape, spacing=spacing, nbl=nbl)\n", "\n", "# Initial model\n", "model0 = demo_model('circle-isotropic', vp_circle=2.5, vp_background=2.5,\n", " origin=origin, shape=shape, spacing=spacing, nbl=nbl, grid = model1.grid)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Acquisition geometry" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the acquisition geometry, we use the same setup as in tutorial 3 and position 5 source position on one side of the model, and an array of 101 receivers on the other side. Note that now our source coordinate array (`src_coordinates`) is a 5 x 2 array, containing the shot locations of all 5 source experiments. After defining the source/receiver coordinates, we set up individual geometry objects for both the observed data (using `model`) and the predicted data (using `model0`)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from examples.seismic import AcquisitionGeometry\n", "import numpy as np\n", "\n", "# Set up acquisiton geometry\n", "t0 = 0.\n", "tn = 1000. \n", "f0 = 0.010\n", "\n", "# Set up source geometry, but define 5 sources instead of just one.\n", "nsources = 5\n", "src_coordinates = np.empty((nsources, 2))\n", "src_coordinates[:, 1] = np.linspace(0, model1.domain_size[0], num=nsources)\n", "src_coordinates[:, 0] = 20. # Source depth is 20m\n", "\n", "# Initialize receivers for synthetic and imaging data\n", "nreceivers = 101\n", "rec_coordinates = np.empty((nreceivers, 2))\n", "rec_coordinates[:, 1] = np.linspace(spacing[0], model1.domain_size[0] - spacing[0], num=nreceivers)\n", "rec_coordinates[:, 0] = 980. # Receiver depth\n", "# Set up geometry objects for observed and predicted data\n", "geometry1 = AcquisitionGeometry(model1, rec_coordinates, src_coordinates, t0, tn, f0=f0, src_type='Ricker')\n", "geometry0 = AcquisitionGeometry(model0, rec_coordinates, src_coordinates, t0, tn, f0=f0, src_type='Ricker')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Forward modeling" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before diving into FWI, we will start with forward modeling and show how we can use Dask to implement a parallel wrapper around a serial modeling function to compute seismic shot records for multiple source locations in parallel.\n", "\n", "First, we implement a forward modeling function for a single shot, which takes a geometry data structure as the only mandatory input argument. This function assumes that the geometry structure only contains a *single* source location. To solve the wave equation for the current shot location and model as specified in `geometry`, we use the `AcousticSolver` from previous tutorials, which is an abstract layer built on top of (generic) Devito objects. `AcousticSolver` contains Devito implementations of forward and adjoint wave equations, as well as Jacobians as specified in tutorials 1 and 2, so we don't have to re-implement these PDEs here." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from examples.seismic.acoustic import AcousticWaveSolver\n", "\n", "# Serial modeling function\n", "def forward_modeling_single_shot(model, geometry, save=False, dt=4.0):\n", " solver = AcousticWaveSolver(model, geometry, space_order=4)\n", " d_obs, u0 = solver.forward(vp=model.vp, save=save)[0:2]\n", " return d_obs.resample(dt), u0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With our modeling function for a single shot record in place, we now implement our parallel version of our modeling function, which consists of a loop over all source locations. As the `geometry` object in `forward_modeling_single_shot` expects only a single source location, we set up a new geometry structure for the i-th source location to pass to our modeling function. However, rather than simpling calling the modeling function for single shots, we tell Dask to create a *task* for each source location and to distribute them to the available parallel workers. Dask returns a remote reference to the result on each worker called `future`. The `wait` statement tells our function to wait for all tasks to finish their computations, after which we collect the modeled shot records from the workers." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Parallel modeling function\n", "def forward_modeling_multi_shots(model, geometry, save=False, dt=4.0):\n", "\n", " futures = []\n", " for i in range(geometry.nsrc):\n", "\n", " # Geometry for current shot\n", " geometry_i = AcquisitionGeometry(model, geometry.rec_positions, geometry.src_positions[i,:], \n", " geometry.t0, geometry.tn, f0=geometry.f0, src_type=geometry.src_type)\n", " \n", " # Call serial modeling function for each index\n", " futures.append(client.submit(forward_modeling_single_shot, model, geometry_i, save=save, dt=dt))\n", "\n", " # Wait for all workers to finish and collect shots\n", " wait(futures)\n", " shots = []\n", " for i in range(geometry.nsrc):\n", " shots.append(futures[i].result()[0])\n", "\n", " return shots" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use this parallel modeling function to generate our own observed data set, which we will subsequently use for our FWI example. In reality, we would instead read our observed data from a SEG-Y file. To compute the data in parallel, we launch a pool of workers on our local machine and then call the parallel modeling function:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [], "source": [ "from distributed import Client, wait\n", "\n", "# Start Dask cluster\n", "if USE_GPU_AWARE_DASK:\n", " from dask_cuda import LocalCUDACluster\n", " cluster = LocalCUDACluster(threads_per_worker=1, death_timeout=600) \n", "else:\n", " from distributed import LocalCluster\n", " cluster = LocalCluster(n_workers=nsources, death_timeout=600)\n", " \n", "client = Client(cluster)\n", "\n", "# Compute observed data in parallel (inverse crime). In real life we would read the SEG-Y data here.\n", "d_obs = forward_modeling_multi_shots(model1, geometry1, save=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The variable `d_obs` is a list of the 5 shots records and we can plot one of the shot records as follows:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAckAAAGDCAYAAABA/Ot7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9eZQlWX3f+bn58r1cKiuX2rq6oLurm0ZNL8MmGmEhY4Sso5aEmtFwNMbWgqxjQKPR6vFYeITxqMUcaxuEsWSbZhjJAnykGVnjRvYYZAFCNjIMjdQIqtiarl6gu7qWrNwz38vlzh8vf1G/+OWNePHy7e/d7zl58r6IuBE3bty43/v9/X73hvPeExEREREREXEQY70uQERERERERL8ikmREREREREQGIklGRERERERkIJJkREREREREBiJJRkREREREZCCSZERERERERAa6TpLOuZucc3/gnFt2zq045/7QOXdzwbyTzrlfc84945zbdM79V+fcqzpd5oiIiIiI0URXSdI5Nw18DHgB8Ebgh4HnAx93zh0pcIr3AW8C3g68FngG+Ihz7sWdKXFERERExCjDdXMxAefczwDvBO7w3j+6v+1W4KvAP/TevzMn74uAR4Af897/9v62ceAc8GXv/f2dLn9ERERExGih2+bW+4FPCUECeO8vAJ8EXlcg7zbw+yrvDvB7wHc55ybaX9yIiIiIiFFGt0nybuALge3ngLsK5L3gvd8I5K0At7devIiIiIiIiOvoNkkeA64Fti8CCy3klf0RERERERFtw3ivC9BpOOfeDLwZoFwuf/OJEyd6XKKIiIiI/sHS0hIbGxsO4L777vNXrlxp6Xyf/exnP+K9v68thesDdJskrxFWjFkq0ea9JSMvXFeUKXjvHwQeBDhz5ox/y1veUqykERERESOA97znPUn6ypUrfOYzn2npfGNjY0OlRLptbj1H3bdocRdwvkDeW/enkdi8NeDRg1kGB/GTZYON+Pwi2oXYlvoL3SbJDwGvcM7dJhucc2eBV+7vy8MfAWXgB1TeceBvAX/sva+2u7DdhHOu7eeUly2+dJ1HJ55fxGii123Je9/S37Ch2yT5XuBx4CHn3Oucc/cDDwFPAYnmd87d4pzbcc69XbZ57/+S+vSPdznn/p5z7juoT/+4FfgnXbyHruOwDU9e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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from examples.seismic import plot_shotrecord\n", "\n", "# Plot shot no. 3 of 5\n", "plot_shotrecord(d_obs[2].data, model1, t0, tn)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Parallel Full-Waveform Inversion" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we know how to use Dask to implement a parallel loop around a (serial) modeling function for a single shot, we can apply the same concept to an FWI objective function, which computes the FWI function value and gradient for a given geometry and observed shot record. This function follows largely the structure in tutorial 3 and involves computing the predicted data and backpropagating the residual to compute the gradient. As we do not want to update the velocity in the area of the absorbing boundaries, we only return the gradient on the (original) physical grid." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from devito import Function\n", "from examples.seismic import Receiver\n", "\n", "# Serial FWI objective function\n", "def fwi_objective_single_shot(model, geometry, d_obs):\n", "\n", " # Devito objects for gradient and data residual\n", " grad = Function(name=\"grad\", grid=model.grid)\n", " residual = Receiver(name='rec', grid=model.grid,\n", " time_range=geometry.time_axis, \n", " coordinates=geometry.rec_positions)\n", " solver = AcousticWaveSolver(model, geometry, space_order=4)\n", "\n", " # Predicted data and residual\n", " d_pred, u0 = solver.forward(vp=model.vp, save=True)[0:2]\n", " residual.data[:] = d_pred.data[:] - d_obs.resample(geometry.dt).data[:][0:d_pred.data.shape[0], :]\n", "\n", " # Function value and gradient \n", " fval = .5*np.linalg.norm(residual.data.flatten())**2\n", " solver.gradient(rec=residual, u=u0, vp=model.vp, grad=grad)\n", " \n", " # Convert to numpy array and remove absorbing boundaries\n", " grad_crop = np.array(grad.data[:])[model.nbl:-model.nbl, model.nbl:-model.nbl]\n", " \n", " return fval, grad_crop" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As for the serial modeling function, we can call `fwi_objective_single_shot` with a geometry structure containing a single source location and a single observed shot record. Since we are interested in evaluating this function for multiple sources in parallel, we follow the strategy from our forward modeling example and implement a parallel loop over all shots, in which we create a task for each shot location. As before, we use Dask to create one task per shot location and evaluate the single-shot FWI objective function for each source. We wait for all computations to finish via `wait(futures)` and then we sum the function values and gradients from all workers." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Parallel FWI objective function\n", "def fwi_objective_multi_shots(model, geometry, d_obs):\n", "\n", " futures = []\n", " for i in range(geometry.nsrc):\n", "\n", " # Geometry for current shot\n", " geometry_i = AcquisitionGeometry(model, geometry.rec_positions, geometry.src_positions[i,:], \n", " geometry.t0, geometry.tn, f0=geometry.f0, src_type=geometry.src_type)\n", " \n", " # Call serial FWI objective function for each shot location\n", " futures.append(client.submit(fwi_objective_single_shot, model, geometry_i, d_obs[i]))\n", "\n", " # Wait for all workers to finish and collect function values and gradients\n", " wait(futures)\n", " fval = 0.0\n", " grad = np.zeros(model.shape)\n", " for i in range(geometry.nsrc):\n", " fval += futures[i].result()[0]\n", " grad += futures[i].result()[1]\n", "\n", " return fval, grad" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can compute a single gradient of the FWI objective function for all shots by passing the geometry structure with the initial model to the objective function, as well as the observed data we generated earlier." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [], "source": [ "# Compute FWI gradient for 5 shots\n", "f, g = fwi_objective_multi_shots(model0, geometry0, d_obs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The physical units of the gradient are $s^2/km^2$, which means our gradient is an update of the squared slowness, rather than of the velocity." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from examples.seismic import plot_image\n", "\n", "# Plot g\n", "plot_image(g.reshape(model1.shape), vmin=-6e3, vmax=6e3, cmap=\"cividis\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## FWI with SciPy's L-BFGS\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With our parallel FWI objective function in place, we can in principle implement a wide range of gradient-based optimization algorithms for FWI, such as (stochastic) gradient descent or the nonlinear conjugate gradient method. However, many optimization algorithms, especially second order methods or algorithms for constrained optimization, are far from trivial to implement correctly from scratch. Luckily, many optimization libraries exist that we can adapt for our purposes. \n", "\n", "Here, we demonstrate how we can interface the scipy *optimize* package to run FWI with a limited-memory Quasi-Newton method. The scipy optimize package was not specifically designed for FWI, but this does not matter, as the library accepts any Python function that can be evaluated for a current model iterate `x` and returns the function value and gradient:\n", "\n", "```\n", "f, g = objective_function(x, args)\n", "```\n", "\n", "where `f` is function value and `g` is a one-dimensional numpy array of type `float64`. Our parallel FWI function does not take the current model as an input argument, but instead expects a geometry structure and the observed data. Therefore, we have to write a little wrapper function called `loss`, which provides the input argument structure that is expected by `scipy.optimize`. The function takes the current model iteratve `x` (in squared slowness) as the first input argument and overwrites the current velocity in `geometry` with `x`. The gradient that is returned to `scipy.optimize` is converted to a numpy array of the required type (`float64`)." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# Wrapper for scipy optimizer: x is current model in squared slowness [s^2/km^2]\n", "def loss(x, model, geometry, d_obs):\n", " \n", " # Convert x to velocity\n", " v_curr = 1.0/np.sqrt(x.reshape(model.shape))\n", " \n", " # Overwrite current velocity in geometry (don't update boundary region)\n", " model.update('vp', v_curr.reshape(model.shape))\n", " \n", " # Evaluate objective function \n", " fval, grad = fwi_objective_multi_shots(model, geometry, d_obs)\n", " return fval, grad.flatten().astype(np.float64) # scipy expects double precision vector" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `scipy.optimize` function also takes an optional callback function as an input argument, which can be used to keep track of the model error as a function of the iteration number. The callback function takes the current model iterate `xk` as the only input argument and computes the $\\ell_2$-misfit with the true model `m`:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# Callback to track model error\n", "model_error = []\n", "def fwi_callback(xk):\n", " vp = model1.vp.data[model1.nbl:-model1.nbl, model1.nbl:-model1.nbl]\n", " m = 1.0 / (vp.reshape(-1).astype(np.float64))**2\n", " model_error.append(np.linalg.norm((xk - m)/m))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The final preparation step before we can run our example, is the definition of box constraints for the velocity. At each iteration, the optimizer will project the current model iterate onto a feasible set of velocites as defined by the lower and upper bounds `vmin` and `vmax`. Box contraints allow us to prevent velocities from taking negative values or values that are too small or large for the stability criteria of our modeling stepping scheme. We define the box constraints for the velocity in $km/s$ and then convert them to squared slownesses. Furthermore, we define our initial guess `m0`:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# Box contraints\n", "vmin = 1.4 # do not allow velocities slower than water\n", "vmax = 4.0\n", "bounds = [(1.0/vmax**2, 1.0/vmin**2) for _ in range(np.prod(model0.shape))] # in [s^2/km^2]\n", "\n", "# Initial guess\n", "v0 = model0.vp.data[model0.nbl:-model0.nbl, model0.nbl:-model0.nbl]\n", "m0 = 1.0 / (v0.reshape(-1).astype(np.float64))**2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we run our 2D FWI example by calling the `optimize.minimize` function. The first input argument is the function to be minimized, which is our `loss` function. The second input argument is the starting value, which in our case is our initial model in squared slowness. The third input argument (`args`) are the arguments that are passed to the loss function other than `x`. For this example we use the L-BFGS algorithm, a limited-memory Quasi-Newton algorithm which builds up an approximation of the (inverse) hessian as we iterate. As our `loss` function returns the analytically computed gradient (as opposed to a numerically approximated gradient), we set the argument `jac=True`. Furthermore, we pass our callback function, box constraints and the maximum number of iterations (in this case 5) to the optimizer. " ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Operator `padfunc` run in 0.01 s\n", "Operator `padfunc` run in 0.01 s\n", "Operator `padfunc` run in 0.01 s\n", "Operator `padfunc` run in 0.01 s\n", "Operator `padfunc` run in 0.01 s\n", "Operator `padfunc` run in 0.01 s\n", "Operator `padfunc` run in 0.01 s\n", "Operator `padfunc` run in 0.01 s\n" ] } ], "source": [ "from scipy import optimize\n", "\n", "# FWI with L-BFGS\n", "ftol = 0.1\n", "maxiter = 5\n", "result = optimize.minimize(loss, m0, args=(model0, geometry0, d_obs), method='L-BFGS-B', jac=True, \n", " callback=fwi_callback, bounds=bounds, options={'ftol':ftol, 'maxiter':maxiter, 'disp':True})" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "# Check termination criteria\n", "assert np.isclose(result['fun'], ftol) or result['nit'] == maxiter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After either the maximum iteration number is reached or we find the minimum of the objective function within some tolerance level `ftol`, the optimizer returns a dictionary with the results and some additional information. We convert the result back to the velocity in $km/s$ and compare it to the true model:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot FWI result\n", "vp = 1.0/np.sqrt(result['x'].reshape(model1.shape))\n", "plot_image(model1.vp.data[model1.nbl:-model1.nbl, model1.nbl:-model1.nbl], vmin=2.4, vmax=2.8, cmap=\"cividis\")\n", "plot_image(vp, vmin=2.4, vmax=2.8, cmap=\"cividis\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looking at the model error as a function of the iteration number, we find that the error decays monotonically, as we would expect." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "# Plot model error\n", "plt.plot(range(1, maxiter+1), model_error); plt.xlabel('Iteration number'); plt.ylabel('L2-model error')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Next steps" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In our current example, the master process keeps all shot records in memory and distributes the data to the workers in the parallel pool. This works perfectly fine for 2D and even small 3D examples, but quickly becomes infeasible for large-scale data sets. Therefore, an extension of our current code should include the following steps if we want to scale things up in the future:\n", "\n", " - Write shot records directly to disk on each worker and return a file pointer back to the master process.\n", " \n", " - Avoid sending the velocity model to the workers and read the model directly onto each worker.\n", " \n", " - Include optimal checkpointing or domain-decomposition to address the memory bottleneck in the gradient computations.\n", " \n", " \n", "For scaling Devito to industry-scale problems and being able to work on data sets in the range of multiple terabytes, it is furthermore necessary to have a fast SEG-Y reader that is able to scan through large data volumes and efficiently access blocks of data such as single shot records. Furthermore, we need the SEG-Y reader to be able to interact with Devito and automatically set up `geometry` objects from the SEG-Y headers. For this purpose, please check out the [Julia Devito Inversion framework (JUDI)](https://github.com/slimgroup/JUDI.jl), an extension built on top of Devito in the Julia programming language. JUDI consists on an abstract linear algebra framework and an interface to a fast and parallel SEG-Y reader called [SEGYIO.jl](https://github.com/slimgroup/SegyIO.jl), making it possible to:\n", "\n", " - Scan large-scale data sets and create look-up tables from which shot records can be directly accessed through their byte locations (no need to loop over traces or read full files).\n", " \n", " - Use look-up tables to automatically set up Devito objects with source and receiver coordinates. \n", " \n", " - Work with out-of-core data containers that only read the data into memory when it is used for computations.\n", " \n", "You can find a full FWI example of the 3D Overthrust model using a 1.1 TB large data set on [JUDI's Github page](https://github.com/slimgroup/JUDI.jl/blob/master/examples/software_paper/examples/fwi_3D_overthrust_spg.jl)." ] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }