Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support nested Flux Chains in LRP #119

Merged
merged 43 commits into from
Aug 21, 2023
Merged

Support nested Flux Chains in LRP #119

merged 43 commits into from
Aug 21, 2023

Conversation

adrhill
Copy link
Member

@adrhill adrhill commented Aug 21, 2023

Closes #90.

This PR adds support for Flux models that are nested Chains containing other Chains.
It is a large step towards #10 and a v0.6 release that supports ResNets.

Changes:

  • refactors LRP rules, composites, model checks to support Chains containing other Chains.
  • introduces "functional"-like utilities on Flux Chains:
    • wrapper types ChainTuple and ParallelTuple to maintain model structure on outputs without type piracy
    • internal functions chainmap, chainzip, chainall, chainflatten, chainkeys in src/flux_chain_utils.jl
  • drop LinearAlgebra and PrettyTables.jl dependencies

Breaking changes:

  • LRP keyword argument is_flat=false is now called flatten=true
  • removed check_model (replaced by non-exported check_lrp_compat)
  • lrp! calls now take an extra argument layer, avoiding copies of unmodified layers
  • removed composite LastNTypeRule
  • removed internal functions head_tail, collect_activations, has_activation_fn

removes `LastNTypeRule`, which is of limited use
flattens both model and rules by default.
This is required for chains of chains. It also allows for small performance optimizations, e.g. defining `modify_layer(::Rule, layer) = nothing` for rules without layer modifications.
@codecov
Copy link

codecov bot commented Aug 21, 2023

Codecov Report

Merging #119 (a871756) into master (ee31b37) will increase coverage by 0.89%.
Report is 2 commits behind head on master.
The diff coverage is 88.84%.

@@            Coverage Diff             @@
##           master     #119      +/-   ##
==========================================
+ Coverage   92.29%   93.18%   +0.89%     
==========================================
  Files          17       18       +1     
  Lines         558      646      +88     
==========================================
+ Hits          515      602      +87     
- Misses         43       44       +1     
Files Changed Coverage Δ
src/ExplainableAI.jl 100.00% <ø> (ø)
src/analyze_api.jl 100.00% <ø> (ø)
src/lrp/composite_presets.jl 100.00% <ø> (ø)
src/lrp/checks.jl 80.00% <73.33%> (+33.84%) ⬆️
src/flux_chain_utils.jl 82.95% <82.95%> (ø)
src/flux_layer_utils.jl 86.66% <86.66%> (ø)
src/lrp/rules.jl 93.19% <87.50%> (-2.67%) ⬇️
src/lrp/lrp.jl 96.42% <94.44%> (-3.58%) ⬇️
src/lrp/show.jl 97.80% <95.83%> (-2.20%) ⬇️
src/lrp/canonize.jl 96.42% <100.00%> (-0.13%) ⬇️
... and 1 more

Fixes `MethodError: no method matching iterate(::Base.Iterators.Reverse{ChainTuple{Tuple{ZeroRule}}})`
@adrhill adrhill added the run benchmark Run benchmark CI action label Aug 21, 2023
@adrhill adrhill merged commit 6e12cd2 into master Aug 21, 2023
7 of 8 checks passed
@adrhill adrhill deleted the ah/chain-of-chains branch August 21, 2023 14:49
@github-actions
Copy link

Benchmark result

Judge result

Benchmark Report for /home/runner/work/ExplainableAI.jl/ExplainableAI.jl

Job Properties

  • Time of benchmarks:
    • Target: 21 Aug 2023 - 14:45
    • Baseline: 21 Aug 2023 - 14:51
  • Package commits:
    • Target: 42bded
    • Baseline: 10a5e0
  • Julia commits:
    • Target: e4ee48
    • Baseline: e4ee48
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: None
    • Baseline: None

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["VGG11", "Gradient", "construct analyzer"] 0.77 (5%) ✅ 0.70 (1%) ✅
["VGG11", "InputTimesGradient", "analyze"] 0.05 (5%) ✅ 0.71 (1%) ✅
["VGG11", "InputTimesGradient", "construct analyzer"] 0.83 (5%) ✅ 0.70 (1%) ✅
["VGG11", "IntegratedGradients", "construct analyzer"] 0.83 (5%) ✅ 0.64 (1%) ✅
["VGG11", "LREpsilonPlusFlat", "analyze"] 0.55 (5%) ✅ 0.84 (1%) ✅
["VGG11", "LREpsilonPlusFlat", "construct analyzer"] 984.46 (5%) ❌ 1176.24 (1%) ❌
["VGG11", "LRP", "analyze"] 1.01 (5%) 1.08 (1%) ❌
["VGG11", "LRP", "construct analyzer"] 12.72 (5%) ❌ 2.89 (1%) ❌
["VGG11", "SmoothGrad", "construct analyzer"] 0.86 (5%) ✅ 0.64 (1%) ✅
["apply rule", "AlphaBetaRule", "Conv"] 1.11 (5%) ❌ 1.00 (1%)
["apply rule", "AlphaBetaRule", "Dense"] 0.70 (5%) ✅ 1.00 (1%)
["apply rule", "EpsilonRule", "Conv"] 1.14 (5%) ❌ 1.00 (1%)
["apply rule", "FlatRule", "Conv"] 1.06 (5%) ❌ 1.00 (1%)
["apply rule", "GammaRule", "Conv"] 1.10 (5%) ❌ 1.00 (1%)
["apply rule", "WSquareRule", "Conv"] 1.08 (5%) ❌ 1.00 (1%)
["apply rule", "WSquareRule", "Dense"] 1.08 (5%) ❌ 1.00 (1%)
["apply rule", "ZBoxRule", "Conv"] 1.06 (5%) ❌ 1.00 (1%)
["apply rule", "ZPlusRule", "Conv"] 1.08 (5%) ❌ 1.00 (1%)
["apply rule", "ZPlusRule", "Dense"] 1.08 (5%) ❌ 1.00 (1%)
["apply rule", "ZeroRule", "Conv"] 1.09 (5%) ❌ 1.00 (1%)
["apply rule", "ZeroRule", "Dense"] 1.11 (5%) ❌ 1.00 (1%)
["modify layer", "AlphaBetaRule", "Dense"] 0.90 (5%) ✅ 1.00 (1%)
["modify layer", "EpsilonRule", "Conv"] 0.47 (5%) ✅ 1.00 (1%)
["modify layer", "EpsilonRule", "Dense"] 0.11 (5%) ✅ 1.00 (1%)
["modify layer", "FlatRule", "Conv"] 1.05 (5%) ❌ 1.00 (1%)
["modify layer", "FlatRule", "Dense"] 1.39 (5%) ❌ 1.00 (1%)
["modify layer", "GammaRule", "Conv"] 1.18 (5%) ❌ 1.00 (1%)
["modify layer", "GammaRule", "Dense"] 1.73 (5%) ❌ 1.00 (1%)
["modify layer", "WSquareRule", "Conv"] 1.06 (5%) ❌ 1.00 (1%)
["modify layer", "WSquareRule", "Dense"] 1.23 (5%) ❌ 1.00 (1%)
["modify layer", "ZBoxRule", "Conv"] 1.06 (5%) ❌ 1.00 (1%)
["modify layer", "ZBoxRule", "Dense"] 2.01 (5%) ❌ 1.00 (1%)
["modify layer", "ZPlusRule", "Dense"] 1.80 (5%) ❌ 1.00 (1%)
["modify layer", "ZeroRule", "Conv"] 0.43 (5%) ✅ 1.00 (1%)
["modify layer", "ZeroRule", "Dense"] 0.12 (5%) ✅ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["VGG11", "Gradient"]
  • ["VGG11", "InputTimesGradient"]
  • ["VGG11", "IntegratedGradients"]
  • ["VGG11", "LREpsilonPlusFlat"]
  • ["VGG11", "LRP"]
  • ["VGG11", "SmoothGrad"]
  • ["apply rule", "AlphaBetaRule"]
  • ["apply rule", "EpsilonRule"]
  • ["apply rule", "FlatRule"]
  • ["apply rule", "GammaRule"]
  • ["apply rule", "WSquareRule"]
  • ["apply rule", "ZBoxRule"]
  • ["apply rule", "ZPlusRule"]
  • ["apply rule", "ZeroRule"]
  • ["modify layer", "AlphaBetaRule"]
  • ["modify layer", "EpsilonRule"]
  • ["modify layer", "FlatRule"]
  • ["modify layer", "GammaRule"]
  • ["modify layer", "WSquareRule"]
  • ["modify layer", "ZBoxRule"]
  • ["modify layer", "ZPlusRule"]
  • ["modify layer", "ZeroRule"]

Julia versioninfo

Target

Julia Version 1.9.2
Commit e4ee485e909 (2023-07-05 09:39 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.3 LTS
  uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       9868 s          0 s        585 s        776 s          0 s
       #2  2294 MHz       2967 s          0 s        506 s       7670 s          0 s
  Memory: 6.7694854736328125 GB (2927.0390625 MB free)
  Uptime: 1132.17 sec
  Load Avg:  1.02  1.13  1.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores

Baseline

Julia Version 1.9.2
Commit e4ee485e909 (2023-07-05 09:39 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.3 LTS
  uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz      13270 s          0 s        658 s       1169 s          0 s
       #2  2294 MHz       3388 s          0 s        589 s      11028 s          0 s
  Memory: 6.7694854736328125 GB (3445.84765625 MB free)
  Uptime: 1519.92 sec
  Load Avg:  1.16  1.09  1.01
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores

Target result

Benchmark Report for /home/runner/work/ExplainableAI.jl/ExplainableAI.jl

Job Properties

  • Time of benchmark: 21 Aug 2023 - 14:45
  • Package commit: 42bded
  • Julia commit: e4ee48
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["VGG11", "Gradient", "analyze"] 2.501 s (5%) 10.476 ms 1.10 GiB (1%) 1758
["VGG11", "Gradient", "construct analyzer"] 10.200 μs (5%) 8.02 KiB (1%) 157
["VGG11", "InputTimesGradient", "analyze"] 2.508 s (5%) 10.666 ms 1.11 GiB (1%) 1761
["VGG11", "InputTimesGradient", "construct analyzer"] 10.000 μs (5%) 8.02 KiB (1%) 157
["VGG11", "IntegratedGradients", "analyze"] 12.318 s (5%) 74.489 ms 5.30 GiB (1%) 7508
["VGG11", "IntegratedGradients", "construct analyzer"] 9.800 μs (5%) 6.05 KiB (1%) 155
["VGG11", "LREpsilonPlusFlat", "analyze"] 3.274 s (5%) 16.755 ms 1.08 GiB (1%) 2740
["VGG11", "LREpsilonPlusFlat", "construct analyzer"] 36.328 ms (5%) 70.52 MiB (1%) 1257
["VGG11", "LRP", "analyze"] 2.274 s (5%) 17.626 ms 761.91 MiB (1%) 1881
["VGG11", "LRP", "construct analyzer"] 183.102 μs (5%) 124.66 KiB (1%) 868
["VGG11", "SmoothGrad", "analyze"] 12.265 s (5%) 77.189 ms 5.30 GiB (1%) 7463
["VGG11", "SmoothGrad", "construct analyzer"] 9.000 μs (5%) 6.05 KiB (1%) 155
["apply rule", "AlphaBetaRule", "Conv"] 3.821 ms (5%) 5.48 MiB (1%) 506
["apply rule", "AlphaBetaRule", "Dense"] 644.507 μs (5%) 800.94 KiB (1%) 38
["apply rule", "EpsilonRule", "Conv"] 930.909 μs (5%) 1.36 MiB (1%) 127
["apply rule", "EpsilonRule", "Dense"] 78.600 μs (5%) 1.45 KiB (1%) 3
["apply rule", "FlatRule", "Conv"] 958.709 μs (5%) 1.41 MiB (1%) 130
["apply rule", "FlatRule", "Dense"] 93.306 ns (5%)
["apply rule", "GammaRule", "Conv"] 949.710 μs (5%) 1.36 MiB (1%) 127
["apply rule", "GammaRule", "Dense"] 71.000 μs (5%) 1.45 KiB (1%) 3
["apply rule", "WSquareRule", "Conv"] 964.306 μs (5%) 1.41 MiB (1%) 130
["apply rule", "WSquareRule", "Dense"] 25.300 μs (5%) 576 bytes (1%) 5
["apply rule", "ZBoxRule", "Conv"] 2.835 ms (5%) 4.12 MiB (1%) 381
["apply rule", "ZBoxRule", "Dense"] 482.305 μs (5%) 602.48 KiB (1%) 32
["apply rule", "ZPlusRule", "Conv"] 1.876 ms (5%) 2.79 MiB (1%) 257
["apply rule", "ZPlusRule", "Dense"] 334.404 μs (5%) 402.55 KiB (1%) 21
["apply rule", "ZeroRule", "Conv"] 949.009 μs (5%) 1.36 MiB (1%) 127
["apply rule", "ZeroRule", "Dense"] 80.200 μs (5%) 1.45 KiB (1%) 3
["modify layer", "AlphaBetaRule", "Conv"] 823.077 ns (5%) 1.56 KiB (1%) 12
["modify layer", "AlphaBetaRule", "Dense"] 116.801 μs (5%) 783.38 KiB (1%) 12
["modify layer", "EpsilonRule", "Conv"] 1.600 ns (5%)
["modify layer", "EpsilonRule", "Dense"] 1.400 ns (5%)
["modify layer", "FlatRule", "Conv"] 128.447 ns (5%) 400 bytes (1%) 3
["modify layer", "FlatRule", "Dense"] 27.600 μs (5%) 195.84 KiB (1%) 3
["modify layer", "GammaRule", "Conv"] 314.889 ns (5%) 400 bytes (1%) 3
["modify layer", "GammaRule", "Dense"] 34.001 μs (5%) 195.84 KiB (1%) 3
["modify layer", "WSquareRule", "Conv"] 236.809 ns (5%) 400 bytes (1%) 3
["modify layer", "WSquareRule", "Dense"] 33.001 μs (5%) 195.84 KiB (1%) 3
["modify layer", "ZBoxRule", "Conv"] 504.597 ns (5%) 800 bytes (1%) 6
["modify layer", "ZBoxRule", "Dense"] 63.800 μs (5%) 391.69 KiB (1%) 6
["modify layer", "ZPlusRule", "Conv"] 505.533 ns (5%) 800 bytes (1%) 6
["modify layer", "ZPlusRule", "Dense"] 63.201 μs (5%) 391.69 KiB (1%) 6
["modify layer", "ZeroRule", "Conv"] 1.600 ns (5%)
["modify layer", "ZeroRule", "Dense"] 1.600 ns (5%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["VGG11", "Gradient"]
  • ["VGG11", "InputTimesGradient"]
  • ["VGG11", "IntegratedGradients"]
  • ["VGG11", "LREpsilonPlusFlat"]
  • ["VGG11", "LRP"]
  • ["VGG11", "SmoothGrad"]
  • ["apply rule", "AlphaBetaRule"]
  • ["apply rule", "EpsilonRule"]
  • ["apply rule", "FlatRule"]
  • ["apply rule", "GammaRule"]
  • ["apply rule", "WSquareRule"]
  • ["apply rule", "ZBoxRule"]
  • ["apply rule", "ZPlusRule"]
  • ["apply rule", "ZeroRule"]
  • ["modify layer", "AlphaBetaRule"]
  • ["modify layer", "EpsilonRule"]
  • ["modify layer", "FlatRule"]
  • ["modify layer", "GammaRule"]
  • ["modify layer", "WSquareRule"]
  • ["modify layer", "ZBoxRule"]
  • ["modify layer", "ZPlusRule"]
  • ["modify layer", "ZeroRule"]

Julia versioninfo

Julia Version 1.9.2
Commit e4ee485e909 (2023-07-05 09:39 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.3 LTS
  uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       9868 s          0 s        585 s        776 s          0 s
       #2  2294 MHz       2967 s          0 s        506 s       7670 s          0 s
  Memory: 6.7694854736328125 GB (2927.0390625 MB free)
  Uptime: 1132.17 sec
  Load Avg:  1.02  1.13  1.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores

Baseline result

Benchmark Report for /home/runner/work/ExplainableAI.jl/ExplainableAI.jl

Job Properties

  • Time of benchmark: 21 Aug 2023 - 14:51
  • Package commit: 10a5e0
  • Julia commit: e4ee48
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["VGG11", "Gradient", "analyze"] 2.563 s (5%) 47.594 ms 1.10 GiB (1%) 1950
["VGG11", "Gradient", "construct analyzer"] 13.200 μs (5%) 11.45 KiB (1%) 200
["VGG11", "InputTimesGradient", "analyze"] 46.080 s (5%) 476.754 ms 1.55 GiB (1%) 8315209
["VGG11", "InputTimesGradient", "construct analyzer"] 12.100 μs (5%) 11.45 KiB (1%) 200
["VGG11", "IntegratedGradients", "analyze"] 12.544 s (5%) 134.417 ms 5.30 GiB (1%) 8468
["VGG11", "IntegratedGradients", "construct analyzer"] 11.800 μs (5%) 9.48 KiB (1%) 198
["VGG11", "LREpsilonPlusFlat", "analyze"] 5.965 s (5%) 167.849 ms 1.29 GiB (1%) 2272404
["VGG11", "LREpsilonPlusFlat", "construct analyzer"] 36.901 μs (5%) 61.39 KiB (1%) 123
["VGG11", "LRP", "analyze"] 2.247 s (5%) 20.995 ms 704.91 MiB (1%) 1821
["VGG11", "LRP", "construct analyzer"] 14.400 μs (5%) 43.09 KiB (1%) 82
["VGG11", "SmoothGrad", "analyze"] 12.818 s (5%) 221.714 ms 5.30 GiB (1%) 55967
["VGG11", "SmoothGrad", "construct analyzer"] 10.500 μs (5%) 9.48 KiB (1%) 198
["apply rule", "AlphaBetaRule", "Conv"] 3.438 ms (5%) 5.48 MiB (1%) 506
["apply rule", "AlphaBetaRule", "Dense"] 919.208 μs (5%) 800.94 KiB (1%) 38
["apply rule", "EpsilonRule", "Conv"] 816.002 μs (5%) 1.36 MiB (1%) 127
["apply rule", "EpsilonRule", "Dense"] 76.701 μs (5%) 1.45 KiB (1%) 3
["apply rule", "FlatRule", "Conv"] 907.208 μs (5%) 1.41 MiB (1%) 130
["apply rule", "FlatRule", "Dense"] 96.445 ns (5%)
["apply rule", "GammaRule", "Conv"] 859.508 μs (5%) 1.36 MiB (1%) 127
["apply rule", "GammaRule", "Dense"] 71.401 μs (5%) 1.45 KiB (1%) 3
["apply rule", "WSquareRule", "Conv"] 891.508 μs (5%) 1.41 MiB (1%) 130
["apply rule", "WSquareRule", "Dense"] 23.500 μs (5%) 576 bytes (1%) 5
["apply rule", "ZBoxRule", "Conv"] 2.674 ms (5%) 4.12 MiB (1%) 381
["apply rule", "ZBoxRule", "Dense"] 500.405 μs (5%) 601.52 KiB (1%) 30
["apply rule", "ZPlusRule", "Conv"] 1.745 ms (5%) 2.79 MiB (1%) 257
["apply rule", "ZPlusRule", "Dense"] 309.003 μs (5%) 402.55 KiB (1%) 21
["apply rule", "ZeroRule", "Conv"] 870.507 μs (5%) 1.36 MiB (1%) 127
["apply rule", "ZeroRule", "Dense"] 72.501 μs (5%) 1.45 KiB (1%) 3
["modify layer", "AlphaBetaRule", "Conv"] 844.231 ns (5%) 1.56 KiB (1%) 12
["modify layer", "AlphaBetaRule", "Dense"] 130.301 μs (5%) 783.38 KiB (1%) 12
["modify layer", "EpsilonRule", "Conv"] 3.400 ns (5%)
["modify layer", "EpsilonRule", "Dense"] 13.100 ns (5%)
["modify layer", "FlatRule", "Conv"] 122.272 ns (5%) 400 bytes (1%) 3
["modify layer", "FlatRule", "Dense"] 19.801 μs (5%) 195.84 KiB (1%) 3
["modify layer", "GammaRule", "Conv"] 266.416 ns (5%) 400 bytes (1%) 3
["modify layer", "GammaRule", "Dense"] 19.601 μs (5%) 195.84 KiB (1%) 3
["modify layer", "WSquareRule", "Conv"] 222.619 ns (5%) 400 bytes (1%) 3
["modify layer", "WSquareRule", "Dense"] 26.900 μs (5%) 195.84 KiB (1%) 3
["modify layer", "ZBoxRule", "Conv"] 474.495 ns (5%) 800 bytes (1%) 6
["modify layer", "ZBoxRule", "Dense"] 31.700 μs (5%) 391.69 KiB (1%) 6
["modify layer", "ZPlusRule", "Conv"] 493.472 ns (5%) 800 bytes (1%) 6
["modify layer", "ZPlusRule", "Dense"] 35.200 μs (5%) 391.69 KiB (1%) 6
["modify layer", "ZeroRule", "Conv"] 3.700 ns (5%)
["modify layer", "ZeroRule", "Dense"] 13.100 ns (5%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["VGG11", "Gradient"]
  • ["VGG11", "InputTimesGradient"]
  • ["VGG11", "IntegratedGradients"]
  • ["VGG11", "LREpsilonPlusFlat"]
  • ["VGG11", "LRP"]
  • ["VGG11", "SmoothGrad"]
  • ["apply rule", "AlphaBetaRule"]
  • ["apply rule", "EpsilonRule"]
  • ["apply rule", "FlatRule"]
  • ["apply rule", "GammaRule"]
  • ["apply rule", "WSquareRule"]
  • ["apply rule", "ZBoxRule"]
  • ["apply rule", "ZPlusRule"]
  • ["apply rule", "ZeroRule"]
  • ["modify layer", "AlphaBetaRule"]
  • ["modify layer", "EpsilonRule"]
  • ["modify layer", "FlatRule"]
  • ["modify layer", "GammaRule"]
  • ["modify layer", "WSquareRule"]
  • ["modify layer", "ZBoxRule"]
  • ["modify layer", "ZPlusRule"]
  • ["modify layer", "ZeroRule"]

Julia versioninfo

Julia Version 1.9.2
Commit e4ee485e909 (2023-07-05 09:39 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.3 LTS
  uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz      13270 s          0 s        658 s       1169 s          0 s
       #2  2294 MHz       3388 s          0 s        589 s      11028 s          0 s
  Memory: 6.7694854736328125 GB (3445.84765625 MB free)
  Uptime: 1519.92 sec
  Load Avg:  1.16  1.09  1.01
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores

Runtime information

Runtime Info
BLAS #threads 1
BLAS.vendor() lbt
Sys.CPU_THREADS 2

lscpu output:

Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Address sizes:                   46 bits physical, 48 bits virtual
Byte Order:                      Little Endian
CPU(s):                          2
On-line CPU(s) list:             0,1
Vendor ID:                       GenuineIntel
Model name:                      Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
CPU family:                      6
Model:                           79
Thread(s) per core:              1
Core(s) per socket:              2
Socket(s):                       1
Stepping:                        1
BogoMIPS:                        4589.37
Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt md_clear
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB (2 instances)
L1i cache:                       64 KiB (2 instances)
L2 cache:                        512 KiB (2 instances)
L3 cache:                        50 MiB (1 instance)
NUMA node(s):                    1
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Mmio stale data:   Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Vulnerability Retbleed:          Not affected
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Mitigation; Clear CPU buffers; SMT Host state unknown
Cpu Property Value
Brand Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
Vendor :Intel
Architecture :Broadwell
Model Family: 0x06, Model: 0x4f, Stepping: 0x01, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 256, 51200) kbytes
64 byte cache line size
Address Size 48 bits virtual, 46 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC increased at every clock cycle (non-invariant TSC)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
run benchmark Run benchmark CI action
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add LRP support for nested Chains
1 participant