16:55:28.501 [main] ERROR org.deeplearning4j.common.config.DL4JClassLoading - Cannot create instance of class ‘org.deeplearning4j.cuda.convolution.CudnnConvolutionHelper’.
java.lang.NoSuchMethodException: org.deeplearning4j.cuda.convolution.CudnnConvolutionHelper.(java.lang.Class,org.nd4j.linalg.api.buffer.DataType)
at java.base/java.lang.Class.getConstructor0(Class.java:3517)
at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2691)
at org.deeplearning4j.common.config.DL4JClassLoading.createNewInstance(DL4JClassLoading.java:103)
at org.deeplearning4j.common.config.DL4JClassLoading.createNewInstance(DL4JClassLoading.java:89)
at org.deeplearning4j.common.config.DL4JClassLoading.createNewInstance(DL4JClassLoading.java:74)
at org.deeplearning4j.nn.layers.HelperUtils.createHelper(HelperUtils.java:58)
at org.deeplearning4j.nn.layers.convolution.ConvolutionLayer.initializeHelper(ConvolutionLayer.java:75)
at org.deeplearning4j.nn.layers.convolution.ConvolutionLayer.(ConvolutionLayer.java:70)
at org.deeplearning4j.nn.conf.layers.ConvolutionLayer.instantiate(ConvolutionLayer.java:173)
at org.deeplearning4j.nn.conf.graph.LayerVertex.instantiate(LayerVertex.java:106)
at org.deeplearning4j.nn.graph.ComputationGraph.init(ComputationGraph.java:572)
at org.deeplearning4j.nn.graph.ComputationGraph.init(ComputationGraph.java:437)
i’ve checked my class path and .m2/repository/org/deeplearning4j/deeplearning4j-cuda-11.2/1.0.0-SNAPSHOT/deeplearning4j-cuda-11.2-1.0.0-SNAPSHOT.jar is on it and checked the jar and the CudnnConvolutionHelper.class (32.1KB) is there. I tried to debug it and the class loader does actually find the class in the jar but something goes wrong when it is instantiated to an actual class object, something to do with the constructor it seems.
I can also confirm that org.nd4j.linalg.api.buffer.DataType.class is present in .m2/repository/org/nd4j/nd4j-api/1.0.0-SNAPSHOT/nd4j-api-1.0.0-SNAPSHOT.jar
This looks like something we’ve fixed already but that may not have propagated to the snapshots yet. If it still doesn’t work with the snapshots tomorrow, ping us again please.
@MPdaedalus thanks. Yeah that’s fine. My suggestion did workfor another user and should keep your setup running, but I understand the hesitation in wanting to deal with cloning the code base.
The main issue atm is I’m simultaneously doing release testing + the need to do manual snapshots atm. Ideally this whole process would be automated, but with github actions quotas, they kill your jobs if you run too many at once. This is on top of sonatype purging snapshots every 3 days or so. I’ll work out a more sustainable solution after the release is done.
It should be this week from the looks of things. I’ll let everyone know after final release testing is done.
thanks for the info, will check them out on monday, Thanks for all the great work you’ve put in, I don’t know where i’d be without dl4j as i’ve only been a java dev for two decades and refuse to use dynamically typed languages like python due to debug nightmare/performance problems (been there two decades ago and not going back) so other than a half assed java api to something else like tensorflow/mxnet, DL4J is my only option.
@MPdaedalus sure! There’s still a lot of work to do though! If there’s anything missing from those frameworks that you need, please do keep filing feature requests.
just tested M1 but I still get the same error although this method also returns NoSuchMethod error when also adding listeners or loading training examples before running model but they are handled successfully. The error does not crop up in beta7 with same code.
The error occurs because arrayContentsEq returns false as the two params don’t match
where
constructor=public org.deeplearning4j.cuda.convolution.CudnnConvolutionHelper(org.nd4j.linalg.api.buffer.DataType)
parameterTypes=[class java.lang.Class, class [Ljava.lang.Object;]
and fact.getExecutableSharedParameterTypes(constructor) returns>
[class org.nd4j.linalg.api.buffer.DataType]
at Class.class line 3506
with code>
private Constructor getConstructor0(Class<?> parameterTypes,
int which) throws NoSuchMethodException
{
ReflectionFactory fact = getReflectionFactory();
Constructor constructors = privateGetDeclaredConstructors((which == Member.PUBLIC));
for (Constructor constructor : constructors) {
if (arrayContentsEq(parameterTypes,
fact.getExecutableSharedParameterTypes(constructor))) {
return constructor;
}
}
throw new NoSuchMethodException(methodToString(“”, parameterTypes));
}
java.lang.NoSuchMethodException: org.deeplearning4j.cuda.convolution.CudnnConvolutionHelper.(java.lang.Class,[Ljava.lang.Object;)
at java.base/java.lang.Class.getConstructor0(Class.java:3517)
at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2691)
at org.deeplearning4j.common.config.DL4JClassLoading.createNewInstance(DL4JClassLoading.java:103)
at org.deeplearning4j.common.config.DL4JClassLoading.createNewInstance(DL4JClassLoading.java:89)
at org.deeplearning4j.common.config.DL4JClassLoading.createNewInstance(DL4JClassLoading.java:74)
at org.deeplearning4j.nn.layers.HelperUtils.createHelper(HelperUtils.java:57)
at org.deeplearning4j.nn.layers.convolution.ConvolutionLayer.initializeHelper(ConvolutionLayer.java:72)
at org.deeplearning4j.nn.layers.convolution.ConvolutionLayer.(ConvolutionLayer.java:67)
at org.deeplearning4j.nn.conf.layers.ConvolutionLayer.instantiate(ConvolutionLayer.java:173)
at org.deeplearning4j.nn.conf.graph.LayerVertex.instantiate(LayerVertex.java:106)
at org.deeplearning4j.nn.graph.ComputationGraph.init(ComputationGraph.java:572)
at org.deeplearning4j.nn.graph.ComputationGraph.init(ComputationGraph.java:437)
this leads to runtimeexception at DL4JClassLoading.class line 108
just to double check to make sure something stupid in my config is not wrong, is it normal to get these can not find class messages in the first few lines?
OpenJDK 64-Bit Server VM warning: Option --illegal-access is deprecated and will be removed in a future release.
12:26:19.695 [main] INFO org.nd4j.linalg.factory.Nd4jBackend - Loaded [JCublasBackend] backend
12:26:19.712 [main] ERROR org.nd4j.common.config.ND4JClassLoading - Cannot find class [org.nd4j.linalg.jblas.JblasBackend] of provided class-loader.
12:26:19.713 [main] ERROR org.nd4j.common.config.ND4JClassLoading - Cannot find class [org.canova.api.io.data.DoubleWritable] of provided class-loader.
12:26:19.716 [main] ERROR org.nd4j.common.config.ND4JClassLoading - Cannot find class [org.nd4j.linalg.jblas.JblasBackend] of provided class-loader.
12:26:19.717 [main] ERROR org.nd4j.common.config.ND4JClassLoading - Cannot find class [org.canova.api.io.data.DoubleWritable] of provided class-loader.
12:26:22.197 [main] INFO org.nd4j.nativeblas.NativeOpsHolder - Number of threads used for linear algebra: 32
12:26:22.243 [main] INFO org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner - Backend used: [CUDA]; OS: [Linux]
12:26:22.243 [main] INFO org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner - Cores: [4]; Memory: [3.9GB];
12:26:22.243 [main] INFO org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner - Blas vendor: [CUBLAS]
12:26:22.260 [main] INFO org.nd4j.linalg.jcublas.JCublasBackend - ND4J CUDA build version: 11.2.152
12:26:22.263 [main] INFO org.nd4j.linalg.jcublas.JCublasBackend - CUDA device 0: [NVIDIA GeForce GTX 1070]; cc: [6.1]; Total memory: [8513585152]
12:26:22.263 [main] INFO org.nd4j.linalg.jcublas.JCublasBackend - Backend build information:
GCC: “7.5.0”
STD version: 201402L
CUDA: 11.2.152
DEFAULT_ENGINE: samediff::ENGINE_CUDA
HAVE_FLATBUFFERS
yea I spotted them when browsing sonatype.org so started using them for the snapshots. I think classifiers are the way forward to stop everything being pulled in needlessly. Watching stuff like ffmpeg-macosx getting pulled with cuda-platform-redist is kinda odd lol.
Using deeplearning4j-nn and not having to build everything on my crappy cpu is a relief.