Apache spark 运行DeepLearning4J MNIST示例时发生java.lang.OutOfMemoryError

Apache spark 运行DeepLearning4J MNIST示例时发生java.lang.OutOfMemoryError,apache-spark,mnist,deeplearning4j,Apache Spark,Mnist,Deeplearning4j,以下是我在单节点本地spark群集上所做的工作: git clone https://github.com/deeplearning4j/dl4j-spark-cdh5-examples.git cd dl4j-spark-cdh5-examples.git mvn package export SPARK_WORKER_MEMORY=13g spark-submit --class org.deeplearning4j.examples.cnn.MnistExample ./target/dl

以下是我在单节点本地spark群集上所做的工作:

git clone https://github.com/deeplearning4j/dl4j-spark-cdh5-examples.git
cd dl4j-spark-cdh5-examples.git
mvn package
export SPARK_WORKER_MEMORY=13g
spark-submit --class org.deeplearning4j.examples.cnn.MnistExample ./target/dl4j-spark-cdh5-examples-1.0-SNAPSHOT.jar
下面是我得到的:

Caused by: java.lang.OutOfMemoryError: Java heap space
这里是完整的堆栈跟踪:

spark提交——类org.deeplearning4j.examples.cnn.MnistExample ./target/dl4j-spark-cdh5-examples-1.0-SNAPSHOT.jar 21:21:13414信息~ 加载数据

警告:无法加载本机系统BLAS ND4J性能将受到影响 请安装本机BLAS库,如OpenBLAS或 有关更多详细信息,请参阅IntelMKL

21:21:20571信息~构建模型。。。。21:21:20776警告~目标 函数自动设置为最小化。神经网络中的集阶跃函数 配置以更改默认设置。21:21:20886信息~--- 开始网络培训---[阶段0:>(0+6)/6]

[阶段0:>(0+6)/6]线程“dispatcher-event-loop-3”中出现异常 java.lang.OutOfMemoryError:java堆空间21:24:12358错误~ 阶段0.0(TID 0)中任务0.0中的异常 java.lang.IllegalStateException:位于的未读块数据 ObjectInputStream$BlockDataInputStream.setBlockDataMode(ObjectInputStream.java:2421) 位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1382) 在 ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 位于java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:76) 在 org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:115) 在 org.apache.spark.executor.executor$TaskRunner.run(executor.scala:194) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:744)21:24:12358错误~ 阶段0.0(TID 5)中任务5.0中的异常java.lang.OutOfMemoryError: Java.lang.reflect.Array.newInstance(Array.Java:70)处的Java堆空间 位于java.io.ObjectInputStream.readArray(ObjectInputStream.java:1670) java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)位于 ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.doReadObject(BaseDataBuffer.java:880) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.readObject(BaseDataBuffer.java:868) 位于的sun.reflect.GeneratedMethodAccessor7.invoke(未知源) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.lang.reflect.Method.invoke(Method.java:606) java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 位于java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706) java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)位于 ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 ParallelCollectionPartition$$anonfun$readObject$1.apply$mcV$sp(ParallelCollectionRDD.scala:74) 位于org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1204) 21:24:12358错误~第0.0阶段任务3.0中出现异常(TID 3) java.lang.OutOfMemoryError:位于的java堆空间 java.lang.reflect.Array.newInstance(Array.java:70)位于 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1670)位于 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)位于 ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.doReadObject(BaseDataBuffer.java:880) 在 org.nd4j.linalg.api.buffer.BaseDataBuffer.readObject(BaseDataBuffer.java:868) 位于的sun.reflect.GeneratedMethodAccessor7.invoke(未知源) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.lang.reflect.Method.invoke(Method.java:606) java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 在 ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)