From 7f13463d151ce16b4163e216de43863820d0f45d Mon Sep 17 00:00:00 2001 From: Michael Abbott <32575566+mcabbott@users.noreply.github.com> Date: Sun, 5 Feb 2023 10:21:42 -0500 Subject: [PATCH] update --- vision/convmixer_cifar10/Manifest.toml | 240 ++++++++++++++----------- vision/convmixer_cifar10/Project.toml | 3 +- vision/convmixer_cifar10/convmixer.jl | 140 +++++++-------- 3 files changed, 204 insertions(+), 179 deletions(-) diff --git a/vision/convmixer_cifar10/Manifest.toml b/vision/convmixer_cifar10/Manifest.toml index e5483b14..2b8eb59c 100644 --- a/vision/convmixer_cifar10/Manifest.toml +++ b/vision/convmixer_cifar10/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.8.2" manifest_format = "2.0" -project_hash = "0971b7fc249aeb92189298c7af206f7a0b462b2f" +project_hash = "af0450f7f2a93144fd31acd93aa241ec7385ef43" [[deps.AbstractFFTs]] deps = ["ChainRulesCore", "LinearAlgebra"] @@ -11,16 +11,16 @@ uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" version = "1.2.1" [[deps.Accessors]] -deps = ["Compat", "CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "LinearAlgebra", "MacroTools", "Requires", "Test"] -git-tree-sha1 = "eb7a1342ff77f4f9b6552605f27fd432745a53a3" +deps = ["Compat", "CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "LinearAlgebra", "MacroTools", "Requires", "StaticArrays", "Test"] +git-tree-sha1 = "b9661b900b50ba475145b311a9a0ef9d2a9c85ea" uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" -version = "0.1.22" +version = "0.1.26" [[deps.Adapt]] deps = ["LinearAlgebra"] -git-tree-sha1 = "195c5505521008abea5aee4f96930717958eac6f" +git-tree-sha1 = "0310e08cb19f5da31d08341c6120c047598f5b9c" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.4.0" +version = "3.5.0" [[deps.ArgCheck]] git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" @@ -36,9 +36,9 @@ uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" [[deps.BFloat16s]] deps = ["LinearAlgebra", "Printf", "Random", "Test"] -git-tree-sha1 = "a598ecb0d717092b5539dbbe890c98bac842b072" +git-tree-sha1 = "dbf84058d0a8cbbadee18d25cf606934b22d7c66" uuid = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" -version = "0.2.0" +version = "0.4.2" [[deps.BSON]] git-tree-sha1 = "86e9781ac28f4e80e9b98f7f96eae21891332ac2" @@ -81,34 +81,58 @@ uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" version = "0.4.2" [[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings"] -git-tree-sha1 = "c5fd7cd27ac4aed0acf4b73948f0110ff2a854b2" +deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "SentinelArrays", "SnoopPrecompile", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] +git-tree-sha1 = "c700cce799b51c9045473de751e9319bdd1c6e94" uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.7" +version = "0.10.9" [[deps.CUDA]] -deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CompilerSupportLibraries_jll", "ExprTools", "GPUArrays", "GPUCompiler", "LLVM", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "SpecialFunctions", "TimerOutputs"] -git-tree-sha1 = "49549e2c28ffb9cc77b3689dc10e46e6271e9452" +deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "CompilerSupportLibraries_jll", "ExprTools", "GPUArrays", "GPUCompiler", "LLVM", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "Preferences", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "SpecialFunctions"] +git-tree-sha1 = "edff14c60784c8f7191a62a23b15a421185bc8a8" uuid = "052768ef-5323-5732-b1bb-66c8b64840ba" -version = "3.12.0" +version = "4.0.1" + +[[deps.CUDA_Driver_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] +git-tree-sha1 = "75d7896d1ec079ef10d3aee8f3668c11354c03a1" +uuid = "4ee394cb-3365-5eb0-8335-949819d2adfc" +version = "0.2.0+0" + +[[deps.CUDA_Runtime_Discovery]] +deps = ["Libdl"] +git-tree-sha1 = "58dd8ec29f54f08c04b052d2c2fa6760b4f4b3a4" +uuid = "1af6417a-86b4-443c-805f-a4643ffb695f" +version = "0.1.1" + +[[deps.CUDA_Runtime_jll]] +deps = ["Artifacts", "CUDA_Driver_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg", "TOML"] +git-tree-sha1 = "d3e6ccd30f84936c1a3a53d622d85d7d3f9b9486" +uuid = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" +version = "0.2.3+2" + +[[deps.CUDNN_jll]] +deps = ["Artifacts", "CUDA_Runtime_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg", "TOML"] +git-tree-sha1 = "57011df4fce448828165e566af9befa2ea94350a" +uuid = "62b44479-cb7b-5706-934f-f13b2eb2e645" +version = "8.6.0+3" [[deps.ChainRules]] deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "Statistics", "StructArrays"] -git-tree-sha1 = "0c8c8887763f42583e1206ee35413a43c91e2623" +git-tree-sha1 = "c46adabdd0348f0ee8de91142cfc4a72a613ac0a" uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.45.0" +version = "1.46.1" [[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "e7ff6cadf743c098e08fca25c91103ee4303c9bb" +git-tree-sha1 = "c6d890a52d2c4d55d326439580c3b8d0875a77d9" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.15.6" +version = "1.15.7" [[deps.ChangesOfVariables]] deps = ["ChainRulesCore", "LinearAlgebra", "Test"] -git-tree-sha1 = "38f7a08f19d8810338d4f5085211c7dfa5d5bdd8" +git-tree-sha1 = "844b061c104c408b24537482469400af6075aae4" uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" -version = "0.1.4" +version = "0.1.5" [[deps.Chemfiles]] deps = ["BinaryProvider", "Chemfiles_jll", "DocStringExtensions", "Libdl"] @@ -124,9 +148,9 @@ version = "0.10.3+0" [[deps.CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "ded953804d019afa9a3f98981d99b33e3db7b6da" +git-tree-sha1 = "9c209fb7536406834aa938fb149964b985de6c83" uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.0" +version = "0.7.1" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] @@ -136,15 +160,15 @@ version = "0.11.4" [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"] -git-tree-sha1 = "d08c20eef1f2cbc6e60fd3612ac4340b89fea322" +git-tree-sha1 = "600cc5508d66b78aae350f7accdb58763ac18589" uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.9.9" +version = "0.9.10" [[deps.Colors]] deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "417b0ed7b8b838aa6ca0a87aadf1bb9eb111ce40" +git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.8" +version = "0.12.10" [[deps.CommonSubexpressions]] deps = ["MacroTools", "Test"] @@ -154,9 +178,9 @@ version = "0.3.0" [[deps.Compat]] deps = ["Dates", "LinearAlgebra", "UUIDs"] -git-tree-sha1 = "00a2cccc7f098ff3b66806862d275ca3db9e6e5a" +git-tree-sha1 = "61fdd77467a5c3ad071ef8277ac6bd6af7dd4c04" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.5.0" +version = "4.6.0" [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] @@ -186,9 +210,9 @@ uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" version = "4.1.1" [[deps.DataAPI]] -git-tree-sha1 = "e08915633fcb3ea83bf9d6126292e5bc5c739922" +git-tree-sha1 = "e8119c1a33d267e16108be441a287a6981ba1630" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.13.0" +version = "1.14.0" [[deps.DataDeps]] deps = ["HTTP", "Libdl", "Reexport", "SHA", "p7zip_jll"] @@ -198,9 +222,9 @@ version = "0.7.10" [[deps.DataFrames]] deps = ["Compat", "DataAPI", "Future", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SnoopPrecompile", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "0f44494fe4271cc966ac4fea524111bef63ba86c" +git-tree-sha1 = "d4f69885afa5e6149d0cab3818491565cf41446d" uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.4.3" +version = "1.4.4" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] @@ -244,9 +268,9 @@ uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" [[deps.DocStringExtensions]] deps = ["LibGit2"] -git-tree-sha1 = "c36550cb29cbe373e95b3f40486b9a4148f89ffd" +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.2" +version = "0.9.3" [[deps.Downloads]] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] @@ -287,9 +311,9 @@ uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" [[deps.FillArrays]] deps = ["LinearAlgebra", "Random", "SparseArrays", "Statistics"] -git-tree-sha1 = "802bfc139833d2ba893dd9e62ba1767c88d708ae" +git-tree-sha1 = "d3ba08ab64bdfd27234d3f61956c966266757fe6" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "0.13.5" +version = "0.13.7" [[deps.FixedPointNumbers]] deps = ["Statistics"] @@ -299,9 +323,9 @@ version = "0.8.4" [[deps.Flux]] deps = ["Adapt", "CUDA", "ChainRulesCore", "Functors", "LinearAlgebra", "MLUtils", "MacroTools", "NNlib", "NNlibCUDA", "OneHotArrays", "Optimisers", "ProgressLogging", "Random", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "Zygote"] -git-tree-sha1 = "2b85cb85f5d71f05e41089a2446ac33b8e94ebed" +git-tree-sha1 = "c258e51850ac1fdc465f62380a61995d4a66d603" uuid = "587475ba-b771-5e3f-ad9e-33799f191a9c" -version = "0.13.9" +version = "0.13.12" [[deps.FoldsThreads]] deps = ["Accessors", "FunctionWrappers", "InitialValues", "SplittablesBase", "Transducers"] @@ -317,9 +341,9 @@ version = "0.4.2" [[deps.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"] -git-tree-sha1 = "10fa12fe96e4d76acfa738f4df2126589a67374f" +git-tree-sha1 = "a69dd6db8a809f78846ff259298678f0d6212180" uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.33" +version = "0.10.34" [[deps.FunctionWrappers]] git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" @@ -328,9 +352,9 @@ version = "1.1.3" [[deps.Functors]] deps = ["LinearAlgebra"] -git-tree-sha1 = "993c2b4a9a54496b6d8e265db1244db418f37e01" +git-tree-sha1 = "61fa9cf802d35fe1b5b8ea9fbaac4b8f020d19b1" uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.4.1" +version = "0.4.2" [[deps.Future]] deps = ["Random"] @@ -338,21 +362,21 @@ uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" [[deps.GPUArrays]] deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "45d7deaf05cbb44116ba785d147c518ab46352d7" +git-tree-sha1 = "4dfaff044eb2ce11a897fecd85538310e60b91e6" uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "8.5.0" +version = "8.6.2" [[deps.GPUArraysCore]] deps = ["Adapt"] -git-tree-sha1 = "6872f5ec8fd1a38880f027a26739d42dcda6691f" +git-tree-sha1 = "57f7cde02d7a53c9d1d28443b9f11ac5fbe7ebc9" uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.2" +version = "0.1.3" [[deps.GPUCompiler]] deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "TimerOutputs", "UUIDs"] -git-tree-sha1 = "76f70a337a153c1632104af19d29023dbb6f30dd" +git-tree-sha1 = "48832a7cacbe56e591a7bef690c78b9d00bcc692" uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" -version = "0.16.6" +version = "0.17.1" [[deps.GZip]] deps = ["Libdl"] @@ -372,10 +396,10 @@ uuid = "a2bd30eb-e257-5431-a919-1863eab51364" version = "1.1.2" [[deps.HDF5]] -deps = ["Compat", "HDF5_jll", "Libdl", "Mmap", "Random", "Requires"] -git-tree-sha1 = "19effd6b5af759c8aaeb9c77f89422d3f975ab65" +deps = ["Compat", "HDF5_jll", "Libdl", "Mmap", "Random", "Requires", "UUIDs"] +git-tree-sha1 = "b5df7c3cab3a00c33c2e09c6bd23982a75e2fbb2" uuid = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" -version = "0.16.12" +version = "0.16.13" [[deps.HDF5_jll]] deps = ["Artifacts", "JLLWrappers", "LibCURL_jll", "Libdl", "OpenSSL_jll", "Pkg", "Zlib_jll"] @@ -385,9 +409,9 @@ version = "1.12.2+2" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "Dates", "IniFile", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "e1acc37ed078d99a714ed8376446f92a5535ca65" +git-tree-sha1 = "37e4657cd56b11abe3d10cd4a1ec5fbdb4180263" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.5.5" +version = "1.7.4" [[deps.IRTools]] deps = ["InteractiveUtils", "MacroTools", "Test"] @@ -425,9 +449,9 @@ version = "0.3.1" [[deps.InlineStrings]] deps = ["Parsers"] -git-tree-sha1 = "0cf92ec945125946352f3d46c96976ab972bde6f" +git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.3.2" +version = "1.4.0" [[deps.InteractiveUtils]] deps = ["Markdown"] @@ -462,9 +486,9 @@ version = "1.0.0" [[deps.JLD2]] deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "Printf", "Reexport", "TranscodingStreams", "UUIDs"] -git-tree-sha1 = "ec8a9c9f0ecb1c687e34c1fda2699de4d054672a" +git-tree-sha1 = "c3244ef42b7d4508c638339df1bdbf4353e144db" uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.29" +version = "0.4.30" [[deps.JLLWrappers]] deps = ["Preferences"] @@ -486,9 +510,9 @@ version = "0.2.4" [[deps.LLVM]] deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Printf", "Unicode"] -git-tree-sha1 = "e7e9184b0bf0158ac4e4aa9daf00041b5909bf1a" +git-tree-sha1 = "b8ae281340f0d3e973aae7b96fb7502b0119b376" uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "4.14.0" +version = "4.15.0" [[deps.LLVMExtra_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg", "TOML"] @@ -534,9 +558,9 @@ uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[deps.Libiconv_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "42b62845d70a619f063a7da093d995ec8e15e778" +git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+1" +version = "1.16.1+2" [[deps.LinearAlgebra]] deps = ["Libdl", "libblastrampoline_jll"] @@ -544,9 +568,9 @@ uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" [[deps.LogExpFunctions]] deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "946607f84feb96220f480e0422d3484c49c00239" +git-tree-sha1 = "45b288af6956e67e621c5cbb2d75a261ab58300b" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.19" +version = "0.3.20" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" @@ -565,9 +589,9 @@ version = "0.10.3" [[deps.MLDatasets]] deps = ["CSV", "Chemfiles", "DataDeps", "DataFrames", "DelimitedFiles", "FileIO", "FixedPointNumbers", "GZip", "Glob", "HDF5", "ImageShow", "JLD2", "JSON3", "LazyModules", "MAT", "MLUtils", "NPZ", "Pickle", "Printf", "Requires", "SparseArrays", "Tables"] -git-tree-sha1 = "77345a68d55cf88c7df7cc5bcc2596717f93d6c5" +git-tree-sha1 = "498b37aa3ebb4407adea36df1b244fa4e397de5e" uuid = "eb30cadb-4394-5ae3-aed4-317e484a6458" -version = "0.7.6" +version = "0.7.9" [[deps.MLStyle]] git-tree-sha1 = "060ef7956fef2dc06b0e63b294f7dbfbcbdc7ea2" @@ -575,10 +599,10 @@ uuid = "d8e11817-5142-5d16-987a-aa16d5891078" version = "0.4.16" [[deps.MLUtils]] -deps = ["ChainRulesCore", "DataAPI", "DelimitedFiles", "FLoops", "FoldsThreads", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] -git-tree-sha1 = "82c1104919d664ab1024663ad851701415300c5f" +deps = ["ChainRulesCore", "Compat", "DataAPI", "DelimitedFiles", "FLoops", "FoldsThreads", "NNlib", "Random", "ShowCases", "SimpleTraits", "Statistics", "StatsBase", "Tables", "Transducers"] +git-tree-sha1 = "266c67f773feb756474c2c4a7424ea5363290300" uuid = "f1d291b0-491e-4a28-83b9-f70985020b54" -version = "0.3.1" +version = "0.4.0" [[deps.MacroTools]] deps = ["Markdown", "Random"] @@ -614,9 +638,9 @@ version = "0.1.3" [[deps.Missings]] deps = ["DataAPI"] -git-tree-sha1 = "bf210ce90b6c9eed32d25dbcae1ebc565df2687f" +git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.0.2" +version = "1.1.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" @@ -632,16 +656,16 @@ uuid = "14a3606d-f60d-562e-9121-12d972cd8159" version = "2022.2.1" [[deps.NNlib]] -deps = ["Adapt", "ChainRulesCore", "LinearAlgebra", "Pkg", "Requires", "Statistics"] -git-tree-sha1 = "37596c26f107f2fd93818166ed3dab1a2e6b2f05" +deps = ["Adapt", "ChainRulesCore", "LinearAlgebra", "Pkg", "Random", "Requires", "Statistics"] +git-tree-sha1 = "e69bf048c892296a45083f0abab02ee8cffe1378" uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.8.11" +version = "0.8.17" [[deps.NNlibCUDA]] -deps = ["Adapt", "CUDA", "LinearAlgebra", "NNlib", "Random", "Statistics"] -git-tree-sha1 = "4429261364c5ea5b7308aecaa10e803ace101631" +deps = ["Adapt", "CUDA", "LinearAlgebra", "NNlib", "Random", "Statistics", "cuDNN"] +git-tree-sha1 = "f94a9684394ff0d325cc12b06da7032d8be01aaf" uuid = "a00861dc-f156-4864-bf3c-e6376f28a68d" -version = "0.2.4" +version = "0.2.7" [[deps.NPZ]] deps = ["FileIO", "ZipFile"] @@ -667,15 +691,15 @@ version = "1.2.0" [[deps.OffsetArrays]] deps = ["Adapt"] -git-tree-sha1 = "f71d8950b724e9ff6110fc948dff5a329f901d64" +git-tree-sha1 = "82d7c9e310fe55aa54996e6f7f94674e2a38fcb4" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.12.8" +version = "1.12.9" [[deps.OneHotArrays]] -deps = ["Adapt", "ChainRulesCore", "GPUArraysCore", "LinearAlgebra", "MLUtils", "NNlib"] -git-tree-sha1 = "aee0130122fa7c1f3d394231376f07869f1e097c" +deps = ["Adapt", "ChainRulesCore", "Compat", "GPUArraysCore", "LinearAlgebra", "NNlib"] +git-tree-sha1 = "f511fca956ed9e70b80cd3417bb8c2dde4b68644" uuid = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" -version = "0.2.0" +version = "0.2.3" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] @@ -689,9 +713,9 @@ version = "0.8.1+0" [[deps.OpenSSL]] deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "df6830e37943c7aaa10023471ca47fb3065cc3c4" +git-tree-sha1 = "6503b77492fd7fcb9379bf73cd31035670e3c509" uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.3.2" +version = "1.3.3" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -707,9 +731,9 @@ version = "0.5.5+0" [[deps.Optimisers]] deps = ["ChainRulesCore", "Functors", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "f1cccb9f879dd4eaa4d92b115ab793545965d763" +git-tree-sha1 = "e657acef119cc0de2a8c0762666d3b64727b053b" uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" -version = "0.2.13" +version = "0.2.14" [[deps.OrderedCollections]] git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" @@ -724,9 +748,9 @@ version = "0.5.11" [[deps.Parsers]] deps = ["Dates", "SnoopPrecompile"] -git-tree-sha1 = "b64719e8b4504983c7fca6cc9db3ebc8acc2a4d6" +git-tree-sha1 = "151d91d63d8d6c1a5789ecb7de51547e00480f1b" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.5.1" +version = "2.5.4" [[deps.Pickle]] deps = ["DataStructures", "InternedStrings", "Serialization", "SparseArrays", "Strided", "StringEncodings", "ZipFile"] @@ -815,9 +839,9 @@ version = "0.7.0" [[deps.SentinelArrays]] deps = ["Dates", "Random"] -git-tree-sha1 = "efd23b378ea5f2db53a55ae53d3133de4e080aa9" +git-tree-sha1 = "c02bd3c9c3fc8463d3591a62a378f90d2d8ab0f3" uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.3.16" +version = "1.3.17" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -845,9 +869,10 @@ uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" version = "0.9.4" [[deps.SnoopPrecompile]] -git-tree-sha1 = "f604441450a3c0569830946e5b33b78c928e1a85" +deps = ["Preferences"] +git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" -version = "1.0.1" +version = "1.0.3" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" @@ -882,9 +907,9 @@ version = "0.1.1" [[deps.StaticArrays]] deps = ["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"] -git-tree-sha1 = "ffc098086f35909741f71ce21d03dadf0d2bfa76" +git-tree-sha1 = "6954a456979f23d05085727adb17c4551c19ecd1" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.5.11" +version = "1.5.12" [[deps.StaticArraysCore]] git-tree-sha1 = "6b7ba252635a5eff6a0b0664a41ee140a1c9e72a" @@ -915,9 +940,9 @@ version = "1.2.3" [[deps.StringEncodings]] deps = ["Libiconv_jll"] -git-tree-sha1 = "50ccd5ddb00d19392577902f0079267a72c5ab04" +git-tree-sha1 = "33c0da881af3248dafefb939a21694b97cfece76" uuid = "69024149-9ee7-55f6-a4c4-859efe599b68" -version = "0.3.5" +version = "0.3.6" [[deps.StringManipulation]] git-tree-sha1 = "46da2434b41f41ac3594ee9816ce5541c6096123" @@ -925,10 +950,10 @@ uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" version = "0.3.0" [[deps.StructArrays]] -deps = ["Adapt", "DataAPI", "StaticArraysCore", "Tables"] -git-tree-sha1 = "13237798b407150a6d2e2bce5d793d7d9576e99e" +deps = ["Adapt", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"] +git-tree-sha1 = "b03a3b745aa49b566f128977a7dd1be8711c5e71" uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.13" +version = "0.6.14" [[deps.StructTypes]] deps = ["Dates", "UUIDs"] @@ -976,9 +1001,9 @@ version = "0.5.22" [[deps.TranscodingStreams]] deps = ["Random", "Test"] -git-tree-sha1 = "8a75929dcd3c38611db2f8d08546decb514fcadf" +git-tree-sha1 = "94f38103c984f89cf77c402f2a68dbd870f8165f" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.9" +version = "0.9.11" [[deps.Transducers]] deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] @@ -1009,6 +1034,11 @@ git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" version = "1.4.2" +[[deps.WorkerUtilities]] +git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" +uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" +version = "1.6.1" + [[deps.ZipFile]] deps = ["Libdl", "Printf", "Zlib_jll"] git-tree-sha1 = "f492b7fe1698e623024e873244f10d89c95c340a" @@ -1022,9 +1052,9 @@ version = "1.2.12+3" [[deps.Zygote]] deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "a6f1287943ac05fae56fa06049d1a7846dfbc65f" +git-tree-sha1 = "e1af683167eea952684188f5e1e29b9cabc2e5f9" uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.51" +version = "0.6.55" [[deps.ZygoteRules]] deps = ["MacroTools"] @@ -1032,6 +1062,12 @@ git-tree-sha1 = "8c1a8e4dfacb1fd631745552c8db35d0deb09ea0" uuid = "700de1a5-db45-46bc-99cf-38207098b444" version = "0.2.2" +[[deps.cuDNN]] +deps = ["CEnum", "CUDA", "CUDNN_jll"] +git-tree-sha1 = "c0ffcb38d1e8c0bbcd3dab2559cf9c369130b2f2" +uuid = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" +version = "1.0.1" + [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl", "OpenBLAS_jll"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" diff --git a/vision/convmixer_cifar10/Project.toml b/vision/convmixer_cifar10/Project.toml index cabe737f..2e29bc13 100644 --- a/vision/convmixer_cifar10/Project.toml +++ b/vision/convmixer_cifar10/Project.toml @@ -1,9 +1,10 @@ [deps] BSON = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" +CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" MLDatasets = "eb30cadb-4394-5ae3-aed4-317e484a6458" [compat] -Flux = "0.13.9" +Flux = "0.13.12" MLDatasets = "0.7.6" julia = "1.6" diff --git a/vision/convmixer_cifar10/convmixer.jl b/vision/convmixer_cifar10/convmixer.jl index 95edb769..95630982 100644 --- a/vision/convmixer_cifar10/convmixer.jl +++ b/vision/convmixer_cifar10/convmixer.jl @@ -1,34 +1,35 @@ -using Flux, MLDatasets -using Flux: onehotbatch, onecold, DataLoader, flatten, OptimiserChain +using Flux, CUDA, MLDatasets +using Flux: onehotbatch, onecold, logitcrossentropy, DataLoader, flatten, OptimiserChain using BSON:@save,@load -ENV["DATADEPS_ALWAYS_ACCEPT"] = "true" - -# wrong in Flux 0.13.9 -Flux._old_to_new(rule::ClipNorm) = Flux.Optimisers.ClipNorm(rule.thresh) -# Also, quick test of train(epochs=10, images=128) shows increasing loss, not sure why. +# This will silence questions from MLDatasets about whether to download new data: +ENV["DATADEPS_ALWAYS_ACCEPT"] = "true" function ConvMixer(in_channels, kernel_size, patch_size, dim, depth, N_classes) - f = Chain( - Conv((patch_size, patch_size), in_channels=>dim, gelu; stride=patch_size), - BatchNorm(dim), - [ - Chain( - SkipConnection(Chain(Conv((kernel_size,kernel_size), dim=>dim, gelu; pad=SamePad(), groups=dim), BatchNorm(dim)), +), - Chain(Conv((1,1), dim=>dim, gelu), BatchNorm(dim)) - ) - for i in 1:depth - ]..., - AdaptiveMeanPool((1,1)), - flatten, - Dense(dim,N_classes) - ) - return f + Chain( + Conv((patch_size, patch_size), in_channels => dim, gelu; stride=patch_size), + BatchNorm(dim), + [ + Chain( + SkipConnection(Chain( + Conv((kernel_size,kernel_size), dim=>dim, gelu; pad=SamePad(), +groups=dim), + BatchNorm(dim) + ), +), + Conv((1,1), dim=>dim, gelu), + BatchNorm(dim), + ) + for i in 1:depth + ]..., + AdaptiveMeanPool((1,1)), + flatten, + Dense(dim => N_classes) + ) end """ By default gives the full dataset, keyword images gives (for testing purposes) -only the 1:images elements of the train set. +only the 1:images elements of the training set. """ function get_data(batchsize; dataset = MLDatasets.CIFAR10, images = :) @@ -36,12 +37,13 @@ function get_data(batchsize; dataset = MLDatasets.CIFAR10, images = :) if images === (:) xtrain, ytrain = dataset(:train)[:] xtest, ytest = dataset(:test)[:] - else + else xtrain, ytrain = dataset(:train)[1:images] xtest, ytest = dataset(:test)[1:(images÷10)] end - # Reshape Data to comply to Julia's (width, height, channels, batch_size) convention in case there are only 1 channel (eg MNIST) + # Reshape data to comply to Julia's (width, height, channels, batch_size) convention in +case there are only 1 channel (eg MNIST) if ndims(xtrain)==3 w = size(xtrain)[1] xtrain = reshape(xtrain, (w,w,1,:)) @@ -56,57 +58,41 @@ function get_data(batchsize; dataset = MLDatasets.CIFAR10, images = :) return train_loader, test_loader end -function create_loss_function(dataloader, device) - - function loss(model) - n = 0 - l = 0.0f0 - acc = 0.0f0 - - for (x,y) in dataloader - x,y = x |> device, y |> device - z = model(x) - l += Flux.logitcrossentropy(z, y, agg=sum) - acc += sum(onecold(z).==onecold(y)) - n += size(x)[end] - end - l / n, acc / n +""" +This function is used only for logging, with either train_loader or test_loader. +""" +function loss_and_accuracy(model, dataloader) + n = 0 # count images seen + l = 0.0f0 # total loss + c = 0 # count correct classifications + + for (x1, y1) in dataloader + x, y = gpu(x1), gpu(y1) + z = model(x) + l += logitcrossentropy(z, y, agg=sum) + c += sum(onecold(z).==onecold(y)) + n += size(x)[end] end - - return loss - + return l/n, c/n # mean loss, and accuracy end - +""" +Main function: loads data, creates model, trains it, then saves trained model in "model.bson" +Keyword `images=99` will use only the first 99 images of the training set (to check that it +runs). +""" function train(; epochs=100, images=:) - - #params: warning, the training can be long with these params train_loader, test_loader = get_data(128; images) - η = 3f-4 + + # hyper-parameters. Note that training can be long with these! in_channel = 3 patch_size = 2 kernel_size = 7 dim = 128 - dimPL = 2 depth = 18 - use_cuda = true - - #logging the losses - train_save = zeros(epochs, 2) - test_save = zeros(epochs, 2) - - if use_cuda - device = gpu - @info "Training on GPU" - else - device = cpu - @info "Training on CPU" - end + η = 3f-4 # learning rate - train_loss_fn = create_loss_function(train_loader, device) - test_loss_fn = create_loss_function(test_loader, device) - - model = ConvMixer(in_channel, kernel_size, patch_size, dim, depth, 10) |> device + model = ConvMixer(in_channel, kernel_size, patch_size, dim, depth, 10) |> gpu opt = OptimiserChain( WeightDecay(1f-3), @@ -115,30 +101,32 @@ function train(; epochs=100, images=:) ) state = Flux.setup(opt, model) + # arrays for logging: + train_save = zeros(epochs, 2) + test_save = zeros(epochs, 2) + for epoch in 1:epochs - for (x,y) in train_loader - x,y = x|>device, y|>device - grads = gradient(m->Flux.logitcrossentropy(m(x), y, agg=sum), model) + for (x1, y1) in train_loader + x, y = gpu(x1), gpu(y1) + grads = gradient(m -> logitcrossentropy(m(x), y, agg=sum), model) Flux.update!(state, model, grads[1]) end - #logging - train_loss, train_acc = train_loss_fn(model) |> cpu - test_loss, test_acc = test_loss_fn(model) |> cpu + # logging + train_loss, train_acc = loss_and_accuracy(model, train_loader, device) + test_loss, test_acc = loss_and_accuracy(model, test_loader, device) train_save[epoch,:] = [train_loss, train_acc] test_save[epoch,:] = [test_loss, test_acc] if epoch%5==0 - @info "Epoch $epoch : Train loss = $train_loss || Validation accuracy = $test_acc." + @info "Epoch $epoch" train_loss test_acc end - end - model = model |> cpu - @save "model.bson" model + @save "model.bson" cpu(model) @save "losses.bson" train_save test_save end if abspath(PROGRAM_FILE) == @__FILE__ train() -end \ No newline at end of file +end