jonathan-laurent / AlphaZero.jl

A generic, simple and fast implementation of Deepmind's AlphaZero algorithm.

Home Page:https://jonathan-laurent.github.io/AlphaZero.jl/stable/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

running session = Session(experiment, dir="sessions/connect-four") causes Error

Snimm opened this issue · comments

I have RTX 3060 12 GB, Julia version 1.8.3,
It was working perfectly yesterday, now it is causing issue.
running session = Session(experiment, dir="sessions/connect-four") causes the following Error:


experiment = Examples.experiments["connect-four"]
Experiment("connect-four", AlphaZero.Examples.ConnectFour.GameSpec(), Params(SelfPlayParams(MctsParams(1.0, 2.0, 600, PLSchedule{Float64}([0, 20, 30], [1.0, 1.0, 0.3]), 0.25, 1.0, 1.0), SimParams(5000, 128, 64, true, true, 2, 0.0, false)), nothing, LearningParams(true, true, LOG_WEIGHT, Adam(0.002f0), 0.0001f0, 1.0f0, 1.0f0, 1024, 1024, 1, 2000, 1), ArenaParams(MctsParams(1.0, 2.0, 600, ConstSchedule{Float64}(0.2), 0.05, 1.0, 1.0), SimParams(128, 128, 128, true, true, 2, 0.5, true), 0.05), 15, true, true, PLSchedule{Int64}([0, 15], [400000, 1000000])), ResNet, ResNetHP(5, 128, (3, 3), 32, 32, 0.1f0), AlphaZero.Benchmark.Duel[AlphaZero.Benchmark.Duel(AlphaZero.Benchmark.Full(MctsParams(1.0, 2.0, 600, ConstSchedule{Float64}(0.2), 0.05, 1.0, 1.0)), AlphaZero.Benchmark.MctsRollouts(MctsParams(1.0, 1.0, 1000, ConstSchedule{Float64}(0.2), 0.05, 1.0, 1.0)), SimParams(256, 256, 256, true, true, 2, 0.5, false)), AlphaZero.Benchmark.Duel(AlphaZero.Benchmark.NetworkOnly(0.5), AlphaZero.Benchmark.MctsRollouts(MctsParams(1.0, 1.0, 1000, ConstSchedule{Float64}(0.2), 0.05, 1.0, 1.0)), SimParams(256, 256, 256, true, true, 2, 0.5, false))])


session = Session(experiment, dir="sessions/connect-four")
Loading environment from: sessions/connect-four
TypeError: in new, expected Tuple{Flux.Conv{2, 2, typeof(identity), Array{Float32, 4}, Vector{Float32}}, Flux.BatchNorm{typeof(NNlib.relu), Vector{Float32}, Float32, Vector{Float32}}, Flux.Conv{2, 2, typeof(identity), Array{Float32, 4}, Vector{Float32}}, Flux.BatchNorm{typeof(identity), Vector{Float32}, Float32, Vector{Float32}}}, got a value of type Tuple{Flux.Conv{2, 2, typeof(identity), Array{Float32, 4}, Vector{Float32}}, Int64, Flux.BatchNorm{typeof(NNlib.relu), Vector{Float32}, Float32, Vector{Float32}}, Flux.Conv{2, 2, typeof(identity), Array{Float32, 4}, Vector{Float32}}}
Stacktrace:
  [1] deserialize(s::Serialization.Serializer{IOStream}, t::DataType)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:1485
  [2] handle_deserialize(s::Serialization.Serializer{IOStream}, b::Int32)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:877
  [3] deserialize(s::Serialization.Serializer{IOStream}, t::DataType)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:1479
  [4] handle_deserialize(s::Serialization.Serializer{IOStream}, b::Int32)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:877
  [5] deserialize(s::Serialization.Serializer{IOStream})
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:813
  [6] (::Serialization.var"#5#6"{Serialization.Serializer{IOStream}})(i::Int64)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:972
  [7] ntupleany(f::Serialization.var"#5#6"{Serialization.Serializer{IOStream}}, n::Int64)
    @ Base .\ntuple.jl:43
  [8] deserialize_tuple(s::Serialization.Serializer{IOStream}, len::Int64)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:972
  [9] handle_deserialize(s::Serialization.Serializer{IOStream}, b::Int32)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:856
 [10] deserialize(s::Serialization.Serializer{IOStream}, t::DataType)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:1479
 [11] handle_deserialize(s::Serialization.Serializer{IOStream}, b::Int32)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:877
 [12] deserialize(s::Serialization.Serializer{IOStream})
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:813
 [13] (::Serialization.var"#5#6"{Serialization.Serializer{IOStream}})(i::Int64)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:972
 [14] ntupleany(f::Serialization.var"#5#6"{Serialization.Serializer{IOStream}}, n::Int64)
    @ Base .\ntuple.jl:43
 [15] deserialize_tuple(s::Serialization.Serializer{IOStream}, len::Int64)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:972
 [16] handle_deserialize(s::Serialization.Serializer{IOStream}, b::Int32)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:856
 [17] deserialize(s::Serialization.Serializer{IOStream}, t::DataType)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:1479
 [18] handle_deserialize(s::Serialization.Serializer{IOStream}, b::Int32)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:877
 [19] deserialize(s::Serialization.Serializer{IOStream}, t::DataType)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:1467
 [20] handle_deserialize(s::Serialization.Serializer{IOStream}, b::Int32)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:882
 [21] deserialize(s::Serialization.Serializer{IOStream})
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:813
 [22] handle_deserialize(s::Serialization.Serializer{IOStream}, b::Int32)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:919
 [23] deserialize
    @ C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:813 [inlined]
 [24] deserialize(s::IOStream)
    @ Serialization C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:800
 [25] open(f::typeof(Serialization.deserialize), args::String; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Base .\io.jl:384
 [26] open
    @ .\io.jl:381 [inlined]
 [27] deserialize
    @ C:\Users\rexze\AppData\Local\Programs\Julia-1.8.3\share\julia\stdlib\v1.8\Serialization\src\Serialization.jl:810 [inlined]
 [28] load_env(dir::String)
    @ AlphaZero.UserInterface C:\Users\rexze\.julia\packages\AlphaZero\p8fyV\src\ui\session.jl:113
 [29] Session(e::Experiment; dir::String, autosave::Bool, nostdout::Bool, save_intermediate::Bool)
    @ AlphaZero.UserInterface C:\Users\rexze\.julia\packages\AlphaZero\p8fyV\src\ui\session.jl:284
 [30] top-level scope
    @ REPL[3]:1
 [31] top-level scope
    @ C:\Users\rexze\.julia\packages\CUDA\DfvRa\src\initialization.jl:52

The error is resolved if I create a new environment from scratch.

The serialization formats are not guaranteed to be stable so even updating Flux to a different minor version could break it.