Skip to content

UDE Training does not work with AutoZygote #20

Closed
@sathvikbhagavan

Description

@sathvikbhagavan

Describe the bug 🐞

UDE Training does not work with AutoZygote

Expected behavior

It should work.

Minimal Reproducible Example 👇

The lotka volterra test in tests/lotka_volterra.jl

Error & Stacktrace ⚠️

julia> res = solve(op, Adam(), maxiters = 10)
ERROR: MethodError: no method matching length(::ModelingToolkit.MTKParameters{Tuple{Vector{Vector{Float64}}}, Tuple{}, Tuple{Vector{Float64}}, Tuple{}, Tuple{Vector{DataType}}, Nothing, Nothing})

Closest candidates are:
  length(::LaTeXStrings.LaTeXString)
   @ LaTeXStrings ~/.julia/packages/LaTeXStrings/ZtSdh/src/LaTeXStrings.jl:115
  length(::SymbolicUtils.Code.Assignment)
   @ SymbolicUtils ~/.julia/packages/SymbolicUtils/c0xQb/src/utils.jl:225
  length(::CSTParser.EXPR)
   @ CSTParser ~/.julia/packages/CSTParser/mVfZt/src/spec.jl:278
  ...

Stacktrace:
  [1] automatic_sensealg_choice(prob::ODEProblem{…}, u0::Vector{…}, p::ModelingToolkit.MTKParameters{…}, verbose::Bool)
    @ SciMLSensitivity ~/.julia/packages/SciMLSensitivity/rXkM4/src/concrete_solve.jl:84
  [2] _concrete_solve_adjoint(::ODEProblem{…}, ::Rodas4{…}, ::Nothing, ::Vector{…}, ::ModelingToolkit.MTKParameters{…}, ::SciMLBase.ChainRulesOriginator; verbose::Bool, kwargs::@Kwargs{})
    @ SciMLSensitivity ~/.julia/packages/SciMLSensitivity/rXkM4/src/concrete_solve.jl:218
  [3] _solve_adjoint(prob::ODEProblem{…}, sensealg::Nothing, u0::Vector{…}, p::ModelingToolkit.MTKParameters{…}, originator::SciMLBase.ChainRulesOriginator, args::Rodas4{…}; merge_callbacks::Bool, kwargs::@Kwargs{})
    @ DiffEqBase ~/.julia/packages/DiffEqBase/O8cUq/src/solve.jl:1537
  [4] rrule(::typeof(DiffEqBase.solve_up), prob::ODEProblem{…}, sensealg::Nothing, u0::Vector{…}, p::ModelingToolkit.MTKParameters{…}, args::Rodas4{…}; kwargs::@Kwargs{})
    @ DiffEqBaseChainRulesCoreExt ~/.julia/packages/DiffEqBase/O8cUq/ext/DiffEqBaseChainRulesCoreExt.jl:26
  [5] kwcall(::@NamedTuple{}, ::typeof(ChainRulesCore.rrule), ::Zygote.ZygoteRuleConfig{…}, ::Function, ::ODEProblem{…}, ::Nothing, ::Vector{…}, ::ModelingToolkit.MTKParameters{…}, ::Rodas4{…})
    @ ChainRulesCore ~/.julia/packages/ChainRulesCore/zgT0R/src/rules.jl:140
  [6] chain_rrule_kw
    @ ~/.julia/packages/Zygote/jxHJc/src/compiler/chainrules.jl:235 [inlined]
  [7] macro expansion
    @ ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0 [inlined]
  [8] _pullback(::Zygote.Context{…}, ::typeof(Core.kwcall), ::@NamedTuple{}, ::typeof(DiffEqBase.solve_up), ::ODEProblem{…}, ::Nothing, ::Vector{…}, ::ModelingToolkit.MTKParameters{…}, ::Rodas4{…})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:81
  [9] _apply(::Function, ::Vararg{Any})
    @ Core ./boot.jl:838
 [10] adjoint
    @ ~/.julia/packages/Zygote/jxHJc/src/lib/lib.jl:203 [inlined]
 [11] _pullback
    @ ~/.julia/packages/ZygoteRules/M4xmc/src/adjoint.jl:67 [inlined]
 [12] #solve#51
    @ ~/.julia/packages/DiffEqBase/O8cUq/src/solve.jl:1003 [inlined]
 [13] _pullback(::Zygote.Context{…}, ::DiffEqBase.var"##solve#51", ::Nothing, ::Nothing, ::Nothing, ::Val{…}, ::@Kwargs{}, ::typeof(solve), ::ODEProblem{…}, ::Rodas4{…})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [14] _apply(::Function, ::Vararg{Any})
    @ Core ./boot.jl:838
 [15] adjoint
    @ ~/.julia/packages/Zygote/jxHJc/src/lib/lib.jl:203 [inlined]
 [16] _pullback
    @ ~/.julia/packages/ZygoteRules/M4xmc/src/adjoint.jl:67 [inlined]
 [17] solve
    @ ~/.julia/packages/DiffEqBase/O8cUq/src/solve.jl:993 [inlined]
 [18] _pullback(::Zygote.Context{…}, ::typeof(Core.kwcall), ::@NamedTuple{}, ::typeof(solve), ::ODEProblem{…}, ::Rodas4{…})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [19] loss
    @ ./REPL[30]:5 [inlined]
 [20] _pullback(::Zygote.Context{…}, ::typeof(loss), ::Vector{…}, ::Tuple{…})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [21] _apply
    @ ./boot.jl:838 [inlined]
 [22] adjoint
    @ ~/.julia/packages/Zygote/jxHJc/src/lib/lib.jl:203 [inlined]
 [23] _pullback
    @ ~/.julia/packages/ZygoteRules/M4xmc/src/adjoint.jl:67 [inlined]
 [24] OptimizationFunction
    @ ~/.julia/packages/SciMLBase/NjslX/src/scimlfunctions.jl:3649 [inlined]
 [25] _pullback(::Zygote.Context{…}, ::OptimizationFunction{…}, ::Vector{…}, ::Tuple{…})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [26] _apply(::Function, ::Vararg{Any})
    @ Core ./boot.jl:838
 [27] adjoint
    @ ~/.julia/packages/Zygote/jxHJc/src/lib/lib.jl:203 [inlined]
 [28] _pullback
    @ ~/.julia/packages/ZygoteRules/M4xmc/src/adjoint.jl:67 [inlined]
 [29] #37
    @ ~/.julia/packages/OptimizationBase/rRpJs/ext/OptimizationZygoteExt.jl:90 [inlined]
 [30] _pullback(ctx::Zygote.Context{false}, f::OptimizationZygoteExt.var"#37#55"{OptimizationFunction{}, OptimizationBase.ReInitCache{}}, args::Vector{Float64})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [31] _apply(::Function, ::Vararg{Any})
    @ Core ./boot.jl:838
 [32] adjoint
    @ ~/.julia/packages/Zygote/jxHJc/src/lib/lib.jl:203 [inlined]
 [33] _pullback
    @ ~/.julia/packages/ZygoteRules/M4xmc/src/adjoint.jl:67 [inlined]
 [34] #39
    @ ~/.julia/packages/OptimizationBase/rRpJs/ext/OptimizationZygoteExt.jl:93 [inlined]
 [35] _pullback(ctx::Zygote.Context{false}, f::OptimizationZygoteExt.var"#39#57"{Tuple{}, OptimizationZygoteExt.var"#37#55"{}}, args::Vector{Float64})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface2.jl:0
 [36] pullback(f::Function, cx::Zygote.Context{false}, args::Vector{Float64})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface.jl:90
 [37] pullback
    @ ~/.julia/packages/Zygote/jxHJc/src/compiler/interface.jl:88 [inlined]
 [38] gradient(f::Function, args::Vector{Float64})
    @ Zygote ~/.julia/packages/Zygote/jxHJc/src/compiler/interface.jl:147
 [39] (::OptimizationZygoteExt.var"#38#56"{OptimizationZygoteExt.var"#37#55"{OptimizationFunction{}, OptimizationBase.ReInitCache{}}})(::Vector{Float64}, ::Vector{Float64})
    @ OptimizationZygoteExt ~/.julia/packages/OptimizationBase/rRpJs/ext/OptimizationZygoteExt.jl:93
 [40] macro expansion
    @ ~/.julia/packages/OptimizationOptimisers/AOkbT/src/OptimizationOptimisers.jl:68 [inlined]
 [41] macro expansion
    @ ~/.julia/packages/Optimization/5DEdF/src/utils.jl:32 [inlined]
 [42] __solve(cache::OptimizationCache{…})
    @ OptimizationOptimisers ~/.julia/packages/OptimizationOptimisers/AOkbT/src/OptimizationOptimisers.jl:66
 [43] solve!(cache::OptimizationCache{…})
    @ SciMLBase ~/.julia/packages/SciMLBase/NjslX/src/solve.jl:180
 [44] solve(::OptimizationProblem{…}, ::Adam; kwargs::@Kwargs{})
    @ SciMLBase ~/.julia/packages/SciMLBase/NjslX/src/solve.jl:96
 [45] top-level scope
    @ REPL[35]:1
Some type information was truncated. Use `show(err)` to see complete types.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions