Flux.jl 没有利用 julia 中所有可用的线程进行机器学习

问题描述

我对下面提到的来自 model-zoo 的通量代码进行了基准测试。我注意到一些性能问题:

  1. Flux 比等效的 Python 慢。
  2. Flux 不会利用所有线程来执行(通常 cpu 使用率约为 50%)。

代码

#model
using Flux
vgg19() = Chain(            
    Conv((3,3),3 => 64,relu,pad=(1,1),stride=(1,1)),Conv((3,64 => 64,MaxPool((2,2)),64 => 128,128 => 128,128 => 256,256 => 256,256 => 512,512 => 512,Batchnorm(512),flatten,Dense(512,4096,relu),Dropout(0.5),Dense(4096,10),softmax
)

#data

using MLDatasets: CIFAR10
using Flux: onehotbatch
# Data comes pre-normalized in Julia
trainX,trainY = CIFAR10.traindata(Float32)
testX,testY = CIFAR10.testdata(Float32)
# One hot encode labels
trainY = onehotbatch(trainY,0:9)
testY = onehotbatch(testY,0:9)

#training

using Flux: crossentropy,@epochs
using Flux.Data: DataLoader
model = vgg19()
opt = Momentum(.001,.9)
loss(x,y) = crossentropy(model(x),y)
data = DataLoader(trainX,trainY,batchsize=64)
@epochs 100 Flux.train!(loss,params(model),data,opt)

我曾尝试使用 sysimage 包括 pre-compilation 文件运行此代码,但结果仍然不利于通量。

评论在这代码中的错误,这使它比 python 慢。正如我想知道 julia 应该比 python 快。

我也在 julia-discourse 上发布了这个问题。

提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)