【问题标题】:What to do for memory related exception while working with NLP Stanford?在使用 NLP 斯坦福时如何处理与内存相关的异常?
【发布时间】:2017-02-24 09:45:31
【问题描述】:

我正在尝试通过以下链接运行 Class : Word2VecSentimentRNN:

https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/recurrent/word2vecsentiment/Word2VecSentimentRNN.java

这个例子很大,因此这里给出了例子的链接。
我还从以下链接下载了示例矢量文件:
https://github.com/mmihaltz/word2vec-GoogleNews-vectors
我收到以下错误:

Exception in thread "main" java.lang.OutOfMemoryError: Cannot allocate 3103474 + 3600000000 bytes (> Pointer.maxBytes)
    at org.bytedeco.javacpp.Pointer.deallocator(Pointer.java:484)
    at org.bytedeco.javacpp.Pointer.init(Pointer.java:118)
    at org.bytedeco.javacpp.FloatPointer.allocateArray(Native Method)
    at org.bytedeco.javacpp.FloatPointer.<init>(FloatPointer.java:68)
    at org.nd4j.linalg.api.buffer.BaseDataBuffer.<init>(BaseDataBuffer.java:457)
    at org.nd4j.linalg.api.buffer.FloatBuffer.<init>(FloatBuffer.java:57)
    at org.nd4j.linalg.api.buffer.factory.DefaultDataBufferFactory.createFloat(DefaultDataBufferFactory.java:238)
    at org.nd4j.linalg.factory.Nd4j.createBuffer(Nd4j.java:1201)
    at org.nd4j.linalg.factory.Nd4j.createBuffer(Nd4j.java:1176)
    at org.nd4j.linalg.api.ndarray.BaseNDArray.<init>(BaseNDArray.java:230)
    at org.nd4j.linalg.cpu.nativecpu.NDArray.<init>(NDArray.java:111)
    at org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory.create(CpuNDArrayFactory.java:247)
    at org.nd4j.linalg.factory.Nd4j.create(Nd4j.java:4261)
    at org.nd4j.linalg.factory.Nd4j.create(Nd4j.java:4227)
    at org.nd4j.linalg.factory.Nd4j.create(Nd4j.java:3501)
    at org.deeplearning4j.models.embeddings.loader.WordVectorSerializer.readBinaryModel(WordVectorSerializer.java:219)
    at org.deeplearning4j.models.embeddings.loader.WordVectorSerializer.loadGoogleModel(WordVectorSerializer.java:118)
    at com.nyu.sentimentanalysis.core.Word2VecSentimentRNN.run(Word2VecSentimentRNN.java:77)

我尝试使用参数-Xmx2g and -Xms2g 启动应用程序。甚至不时更改值以检查它是否有帮助或有效。
请让我知道我该怎么做。被关在这里了。

【问题讨论】:

  • 我不知道这是否有帮助,但请注意,3600000000 字节是 3.6 GB,所以您可能想运行 -Xmx4g 看看会发生什么,-Xmx2g 只会分配 2 GB
  • @StanfordNLPHelp 我尝试将其设为 4G,但没有成功。所以我换了我的电脑,换成了 8GB 的​​电脑。现在它正在运行。但是现在在训练数据时显示 NullPointer 错误。我会弄清楚的。

标签: java maven stanford-nlp


【解决方案1】:

我在运行标准 Word2vec 代码时遇到了这个问题,并且系统在一段时间后因 OutOfMemory 而死机。

以下设置对我有用,可以使用 Word2vec 预训练模型维持基于 DL4J/ND4J 的应用的长期生产负载

java -Xmx2G -Dorg.bytedeco.javacpp.maxbytes=6G -Dorg.bytedeco.javacpp.maxphysicalbytes=6G

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2016-04-13
    相关资源
    最近更新 更多