Thanks for posting this question.
You can serialise however you want, so long as you appropriately preprocess (apply serializable) and post-process (apply restore!) as described here.
So, for bundling everything in one file, you can do something like this:
using MLJ
# should not be needed after https://github.com/alan-turing-institute/MLJ.jl/issues/975
import MLJBase: restore!, serializable
X, y = @load_iris
KNNClassifier = @load KNNClassifier pkg=NearestNeighborModels
machs = map(2:10) do K
model = KNNClassifier(; K)
mach = machine(model, X, y) |> fit!
end
serializable_machs = serializable.(machs)
using JLSO
JLSO.save("machines.jlso", :machines => serializable_machs)
loaded_machs = JLSO.load("machines.jlso")[:machines]
restore!.(loaded_machs)
julia> foreach(loaded_machs) do mach
loss = round(log_loss(predict(mach, X), y) |> mean, sigdigits=3)
println("K=$(mach.model.K) \t traing_loss=$loss")
end
K=2 traing_loss=0.0277
K=3 traing_loss=0.0494
K=4 traing_loss=0.0604
K=5 traing_loss=0.0566
K=6 traing_loss=0.0644
K=7 traing_loss=0.074
K=8 traing_loss=0.072
K=9 traing_loss=0.0693
K=10 traing_loss=0.0729
Does this address your issue?