美文网首页
SKIL/配置/内存设置

SKIL/配置/内存设置

作者: hello风一样的男子 | 来源:发表于2019-04-24 11:38 被阅读0次

    内存设置

    神经网络需要内存,而更雄心勃勃的SKIL项目将需要更多的内存分配给SKIL和笔记本。通常,内存不足是作为java.lang.OutOfMemoryError出现的,并且知道如何更改内存设置可以在将来防止这种情况发生。

    环境变量

    要解决Zeppelin(笔记本后面的系统)中的内存问题,请增加可用的JVM RAM数量。Zeppelin的默认配置在JVM上提供8GB的RAM和4GB的堆外空间。你可以通过更改默认DEFAULT_ZEPPELIN_JVM_ARGS环境变量并删除“进程”选项卡中的Zeppelin解释器进程来扩展这些参数。

    设置此变量有两种方法:

    • 启动SKIL Docker容器时指定-e
    • 把它添加到 /etc/skil/skil-env.sh (或 /etc/profile.d/skil-env.sh 如果 /etc/skil-env.sh 不存在)

    如果你有一个GPU(如K80),那么以下几行足以使你的系统最大化:

    Shell

    DEFAULT_ZEPPELIN_JVM_ARGS=-Xmx16g -Dorg.bytedeco.javacpp.maxbytes=16G -Dorg.bytedeco.javacpp.maxphysicalbytes=16G -Dorg.nd4j.versioncheck=false -Dorg.deeplearning4j.config.custom.enabled=false
    
    image.gif

    更新设置后,需要重新启动SKIL。如果你安装了bare-metal SKIL:

    Shell

    sudo systemctl stop skil
    sudo systemctl start skil
    
    image.gif

    否则,你需要docker exec进入SKIL docker实例并从bash实例重新启动它。

    Docker 内存

    在某些情况下,除了其他调整之外,你可能还需要确保Docker在运行时有足够的内存。Windows和OSX上的Docker在用户界面中内置了这些功能。如果在Linux或服务器上运行并使用Docker CLI,则可以将值传递给--memory标记。请注意,这通常用于限制内存。
    你可以在Docker网站上阅读更多内容。

    常见错误

    通常,当一个SKIL工作间或实验受到内存限制时,它会显示为类似于:

    Scala

    java.lang.OutOfMemoryError: Cannot allocate new DoublePointer(100000000): totalBytes = 588M, physicalBytes = 4G
        at org.bytedeco.javacpp.DoublePointer.<init>(DoublePointer.java:76)
        at org.nd4j.linalg.api.buffer.BaseDataBuffer.<init>(BaseDataBuffer.java:549)
        ...
    
    image.gif

    取决于你的代码中使用的NDArray的数据类型,这也可能与FloatPointers一起出现,或者在内存释放期间出现。

    相关文章

      网友评论

          本文标题:SKIL/配置/内存设置

          本文链接:https://www.haomeiwen.com/subject/oegwgqtx.html