问题描述
我对下面提到的来自 model-zoo 的通量代码进行了基准测试。我注意到一些性能问题:
- Flux 比等效的 Python 慢。
- 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 (将#修改为@)