The CPU_ NUM is not specified, you should set CPU_ NUM in the environment variable list。 CPU NUM

Posted 醉公子~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了The CPU_ NUM is not specified, you should set CPU_ NUM in the environment variable list。 CPU NUM相关的知识,希望对你有一定的参考价值。

!!! The CPU_ NUM is not specified, you should set CPU_ NUM in the environment variable list。 CPU NUM indicates that how many CPUPlace are used in the current task. And if this parameter are set as N (equal to the number of physical CPU core) the program may be faster。
export CPU_ NUM=4 # for example, set CPU_ NUM as number of physical CPU core which is 4.

num_workers参数的设置

  • num_workers的值大于0,要在运行的部分放进__main__()函数里

  • dataloader一次性创建num_worker个worker,(也可以说dataloader一次性创建num_worker个工作进程,worker也是普通的工作进程),并用batch_sampler将指定batch分配给指定worker,worker将它负责的batch加载进RAM。
    然后,dataloader从RAM中找本轮迭代要用的batch,如果找到了,就使用。如果没找到,就要num_worker个worker继续加载batch到内存,直到dataloader在RAM中找到目标batch。一般情况下都是能找到的,因为batch_sampler指定batch时当然优先指定本轮要用的batch。

  • num_worker设置得大,好处是寻batch速度快,因为下一轮迭代的batch很可能在上一轮/上上一轮…迭代时已经加载好了。坏处是内存开销大,也加重了CPU负担(worker加载数据到RAM的进程是CPU复制的嘛)。num_workers的经验设置值是自己电脑/服务器的CPU核心数,如果CPU很强、RAM也很充足,就可以设置得更大些。

  • 如果num_worker设为0,意味着每一轮迭代时,dataloader不再有自主加载数据到RAM这一步骤(因为没有worker了),而是在RAM中找batch,找不到时再加载相应的batch。缺点当然是速度更慢。

如果我们在跑torch或者paddle代码的时候,使用CPU训练模型时,要将num_works设置为0

解决办法:

num_works=0

以上是关于The CPU_ NUM is not specified, you should set CPU_ NUM in the environment variable list。 CPU NUM的主要内容,如果未能解决你的问题,请参考以下文章

The CPU_ NUM is not specified, you should set CPU_ NUM in the environment variable list。 CPU NUM(代码片

IDEA错误:Cannot start compilation: the output path is not specified for module "Test". Speci

IDEA错误:Cannot start compilation: the output path is not specified for module "Test". Speci

IDEA错误:Cannot start compilation: the output path is not specified for module "Test". Speci

IDEA错误:Cannot start compilation: the output path is not specified for module "Test". Speci

Salt之Cpu 100%无响应故障 Salt request timed out. The master is not responding