baghishov commited on
Commit
58f12de
·
verified ·
1 Parent(s): 12a47b5

Sample with the paper's Euler 100 steps; model card with the paper's final results.

Browse files
Files changed (2) hide show
  1. README.md +11 -8
  2. config.json +1 -1
README.md CHANGED
@@ -39,13 +39,14 @@ model = resflow.load_pretrained() # this repository
39
 
40
  vols = model.generate('meander', n=8) # (8, 64, 64, 32) uint8, 1 = sand
41
  vols = model.generate('lobe', n=4, ntg=0.35, width_cells=30, azimuth=45)
 
42
  ens = model.generate('meander', n=32, # every realisation honours the well exactly
43
  wells=[resflow.Well(x=32, y=32, facies=column)])
44
  field = model.generate_field('lobe', shape=(512, 512, 32), ntg=0.5)
45
  ```
46
 
47
  A walkthrough notebook is in the code repository at `examples/pretrained/quickstart.ipynb`. A GPU is recommended:
48
- on an NVIDIA GH200 a 64×64×32 volume takes about 1.6 s in batches of 128 and a 512×512×32 field about 4 minutes.
49
  A CPU works, but takes tens of minutes per volume.
50
 
51
  ## Inputs
@@ -73,7 +74,7 @@ Parameters left out take the environment's typical value (the median over its tr
73
  A 32.6M-parameter 3D diffusion transformer (4×4×2 patches, 12 blocks, width 384, 6 heads, QK-norm, 3D rotary
74
  positions with θ = 100, adaptive layer norm) trained with conditional flow matching. The 18-number condition vector
75
  holds the environment one-hot, NTG, width, depth, the sine and cosine of the azimuth, and five environment-specific
76
- parameters; wells enter as two extra input channels. Sampling uses Heun's method with 100 steps and
77
  classifier-free guidance 3. Volumes use global attention as in training; fields switch to sliding-window attention
78
  of ±12 tokens per axis, so any extent is generated whole, without tiling.
79
 
@@ -84,10 +85,12 @@ the final epoch-40 exponential moving average.
84
  ## Evaluation
85
 
86
  On ResBench, which scores each check against the simulator's own run-to-run variability (1 means
87
- indistinguishable from the simulator, lower is better), ResFlow scores 2.56 overall: 2.33 on unconditional
88
- volumes, 3.12 on well-conditioned volumes, and 2.24 on fields. Given the same inputs, it is closer to the simulator
89
- than GANSim-3D, DiffSIM and a 3D latent diffusion model in every environment where they were compared, and it beats single-environment specialists with its own
90
- architecture and recipe in six of eight environments. Details are in the paper.
 
 
91
 
92
  ## Limitations
93
 
@@ -97,8 +100,8 @@ architecture and recipe in six of eight environments. Details are in the paper.
97
  (the API warns).
98
  - Under a fixed input it underestimates the simulator's uncertainty in most channel environments, so its ensembles
99
  understate uncertainty there.
100
- - Distal sheets contain isolated sand specks; at field scale, connectivity in shoestring and delta fields deviates
101
- most from the simulator.
102
 
103
  ## Citation
104
 
 
39
 
40
  vols = model.generate('meander', n=8) # (8, 64, 64, 32) uint8, 1 = sand
41
  vols = model.generate('lobe', n=4, ntg=0.35, width_cells=30, azimuth=45)
42
+ column = [0] * 10 + [1] * 8 + [0] * 14 # a well log, base to top: 1 sand, 0 mud, -1 unknown
43
  ens = model.generate('meander', n=32, # every realisation honours the well exactly
44
  wells=[resflow.Well(x=32, y=32, facies=column)])
45
  field = model.generate_field('lobe', shape=(512, 512, 32), ntg=0.5)
46
  ```
47
 
48
  A walkthrough notebook is in the code repository at `examples/pretrained/quickstart.ipynb`. A GPU is recommended:
49
+ on an NVIDIA GH200 a 64×64×32 volume takes about 0.8 s in batches of 128 and a 512×512×32 field about 2 minutes.
50
  A CPU works, but takes tens of minutes per volume.
51
 
52
  ## Inputs
 
74
  A 32.6M-parameter 3D diffusion transformer (4×4×2 patches, 12 blocks, width 384, 6 heads, QK-norm, 3D rotary
75
  positions with θ = 100, adaptive layer norm) trained with conditional flow matching. The 18-number condition vector
76
  holds the environment one-hot, NTG, width, depth, the sine and cosine of the azimuth, and five environment-specific
77
+ parameters; wells enter as two extra input channels. Sampling uses Euler's method with 100 steps and
78
  classifier-free guidance 3. Volumes use global attention as in training; fields switch to sliding-window attention
79
  of ±12 tokens per axis, so any extent is generated whole, without tiling.
80
 
 
85
  ## Evaluation
86
 
87
  On ResBench, which scores each check against the simulator's own run-to-run variability (1 means
88
+ indistinguishable from the simulator, lower is better), ResFlow scores 1.70 overall: 1.24 on unconditional
89
+ volumes, 1.96 on well-conditioned volumes, and 1.90 on fields. It beats single-environment specialists with its own
90
+ architecture and recipe in seven of eight environments. Given the same inputs, it is far closer to the simulator
91
+ than GANSim-3D and a 3D latent diffusion model, and on par with DiffSIM, a diffusion model five times larger that
92
+ is trained per environment and not built for heterogeneous fields (meander 1.67 against 1.81, PV shoestring 1.55
93
+ against 1.52, SH proximal 1.84 against 1.67). Details are in the paper.
94
 
95
  ## Limitations
96
 
 
100
  (the API warns).
101
  - Under a fixed input it underestimates the simulator's uncertainty in most channel environments, so its ensembles
102
  understate uncertainty there.
103
+ - At field scale, connectivity and variograms deviate most from the simulator, in shoestring, delta and SH proximal
104
+ fields, and lobe fields carry more isolated sand specks than the simulator's.
105
 
106
  ## Citation
107
 
config.json CHANGED
@@ -351,7 +351,7 @@
351
  }
352
  },
353
  "sampler": {
354
- "solver": "heun",
355
  "steps": 100,
356
  "guidance": 3.0,
357
  "field_radius": 12
 
351
  }
352
  },
353
  "sampler": {
354
+ "solver": "euler",
355
  "steps": 100,
356
  "guidance": 3.0,
357
  "field_radius": 12