Pytorch: рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдЧрддрд┐рд░реЛрдз

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдЕрдкреНрд░реИрд▓ 2017  ┬╖  189рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pytorch/pytorch

рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди pytorch/examples#148 рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ PyTorch рдореЗрдВ рд╣реА рдПрдХ рдмрдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдореБрдЭреЗ рд╕рд╛рдл рджрд┐рдЦрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ #1120 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджреЗ рд╕реЗ рдорд┐рд▓рд╛: рдЬрдм рдореИрдВ рдПрдХ рдпреБрдЧ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рдпреБрдЧ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред

рд╕рднреА 189 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд▓реЛрдбрд░ рдХреЗ рд░реБрдХрдиреЗ рдкрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рддрдиреА рдлреНрд░реА рдореЗрдореЛрд░реА рд╣реЛрддреА рд╣реИ?

@apaszke рдЕрдЧрд░ рдореИрдВ top рдЪреЗрдХ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╢реЗрд╖ рдореЗрдореЛрд░реА (рдХреИрд╢реНрдб рдореЗрдо рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ) рдЖрдорддреМрд░ рдкрд░ 2GB рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╢реНрдб рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╣рдореЗрд╢рд╛ рдмрд╣реБрдд рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ 30GB+ред

рд╕рд╛рде рд╣реА рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рддреНрдпрд╛рдкрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреНрдпреЛрдВ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд░ рдЬрдЧрд╣ рдирд╣реАрдВред

рд╕рдВрднрд╡рддрдГ рдХреНрдпреЛрдВрдХрд┐ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИред

@ngimel

рдореИрдВрдиреЗ рдЕрднреА рдлрд┐рд░ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдпрд╛ред рдФрд░ рдлрдВрд╕ рдЧрдпрд╛ред

top рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ:

~~~
рд╢реАрд░реНрд╖ - 17:51:18 2 рджрд┐рди рддрдХ, 21:05, 2 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рд▓реЛрдб рдФрд╕рдд: 0.49, 3.00, 5.41
рдХрд╛рд░реНрдп: рдХреБрд▓ 357, 2 рджреМрдбрд╝рдирд╛, 355 рд╕реЛ рд░рд╣рд╛ рд╣реИ, 0 рд░реБрдХрд╛ рд╣реБрдЖ рд╣реИ, 0 рдЬрд╝реЛрдВрдмреА
%Cpu(s): 1.9 us, 0.1 sy, 0.7 ni, 97.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB рдореЗрдо: 65863816 рдХреБрд▓, 60115084 рдкреНрд░рдпреБрдХреНрдд, 5748732 рдореБрдлрд╝реНрдд, 1372688 рдмрдлрд╝рд░реНрд╕
KiB рд╕реНрд╡реИрдк: 5917692 рдХреБрд▓, 620 рдкреНрд░рдпреБрдХреНрдд, 5917072 рдирд┐рдГрд╢реБрд▓реНрдХред 51154784 рдХреИрд╢реНрдб рдореЗрдореЛ

рдкреАрдЖрдИрдбреА тАЛтАЛрдпреВрдЬрд░ рдкреАрдЖрд░ рдПрдирдЖрдИ рд╡рд░реНрдЯ рд░реЗрд╕ рдПрд╕рдПрдЪрдЖрд░ рдПрд╕% рд╕реАрдкреАрдпреВ% рдореЗрдо рдЯрд╛рдЗрдо+ рдХрдорд╛рдВрдб 3067 рдЖрд▓рд░реЗрдЬрд╛ 20 0 143332 101816 21300 рдЖрд░ 46.1 0.2 1631:44 Xvnc
16613 рдЖрд▓рд░реЗрдЬрд╛ 30 10 32836 4880 3912 рдПрд╕ 16.9 0.0 1:06.92 рдлрд╛рдЗрдмрд░рд▓реИрдореНрдк 3221 рдЕрд▓рд░реЗрдЬрд╛ 20 0 8882348 1.017g 110120 рдПрд╕ 1.3 1.6 579:06.87 MATLAB
1285 рд░реВрдЯ 20 0 1404848 48252 25580 S 0.3 0.1 6:00.12 dockerd 16597 yimengz+ 20 0 25084 3252 2572 R 0.3 0.0 0:04.56 рд╢реАрд░реНрд╖
1 рд░реВрдЯ 20 0 33616 4008 2624 рдПрд╕ 0.0 0.0 0:01.43 init
~~~

free рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ

~yimengzh_everyday@yimengzh :~$ freeрдХреБрд▓ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдореБрдлреНрдд рд╕рд╛рдЭрд╛ рдмрдлрд░ рдХреИрд╢ рдХрд┐рдП рдЧрдПрдореЗрдо: 65863816 60122060 5741756 9954628 1372688 51154916-/+ рдмрдлрд╝рд░реНрд╕/рдХреИрд╢: 7594456 58269360рд╕реНрд╡реИрдк: 5917692 620 5917072~

nvidia-smi рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ

~~~
yimengzh_everyday@yimengzh :~$ nvidia-smi
рдордВрдЧрд▓ рдЕрдкреНрд░реИрд▓ 25 17:52:38 2017
+-------------------------------------------------------- -----------------------------+
| NVIDIA-SMI 375.39 рдбреНрд░рд╛рдЗрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг: 375.39 |
|------------------------------------------+----------------- -----+---------------------+
| GPU рдирд╛рдо рдкрд░реНрд╕рд┐рд╕реНрдЯреЗрдВрд╕-рдПрдо| рдмрд╕-рдЖрдИрдбреА рдбрд┐рд╕реНрдк.рдП | рдЕрд╕реНрдерд┐рд░ рдИрд╕реАрд╕реА |
| рдлреИрди рдЯреЗрдореНрдк рдкрд░рдл рдкреАрдЖрд░: рдЙрдкрдпреЛрдЧ/рдХреИрдк | рдореЗрдореЛрд░реА-рдЙрдкрдпреЛрдЧ | рдЬреАрдкреАрдпреВ-рдпреВрдЯрд┐рд▓ рдХрдВрдкреНрдпреВрдЯ рдПрдо. |
|=============================================================================================================================================================== =====+======================|
| 0 GeForce GTX TIT... рдСрдл | 0000:03:00.0 рдСрдл | рдПрди/рдП |
| 30% 42C P8 14W / 250W | 3986MiB / 6082MiB | 0% рдбрд┐рдлрд╝реЙрд▓реНрдЯ |
+---------------------------------------------------------------------- -----+---------------------+
| 1 рдЯреЗрд╕реНрд▓рд╛ K40c рдСрдл | 0000:81: 00.0 рдмрдВрдж | рдмрдВрдж |
| 0% 46C P0 57W / 235W | 0MiB / 12205MiB | 0% рдбрд┐рдлрд╝реЙрд▓реНрдЯ |
+---------------------------------------------------------------------- -----+---------------------+

+-------------------------------------------------------- -----------------------------+
| рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ: рдЬреАрдкреАрдпреВ рдореЗрдореЛрд░реА |
| GPU PID рдкреНрд░рдХрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд╛рдо рдЙрдкрдпреЛрдЧ |
|============================================ ============================|
| 0 16509 рд╕реА рдЕрдЬрдЧрд░ 3970MiB |
+-------------------------------------------------------- -----------------------------+
~~~

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╕реНрдореГрддрд┐ рдореБрджреНрджрд╛ рд╣реИред

рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реАрдорд╛рдПрдБ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк ipcs -lm рдпрд╛ cat /proc/sys/kernel/shmall рдФрд░ cat /proc/sys/kernel/shmmax рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ? рд╕рд╛рде рд╣реА, рдпрджрд┐ рдЖрдк рдХрдо рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 1 рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рдЪрд░рдо рдорд╛рдорд▓реЗ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг) рддреЛ рдХреНрдпрд╛ рдпрд╣ рдЧрддрд┐рд░реЛрдз рдХрд░рддрд╛ рд╣реИ?

@apaszke

~~~
yimengzh_everyday@yimengzh :~$ ipcs -lm

------ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рд╕реАрдорд╛ --------
рдЦрдВрдбреЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ = 4096
рдЕрдзрд┐рдХрддрдо seg рдЖрдХрд╛рд░ (kbytes) = 18014398509465599
рдЕрдзрд┐рдХрддрдо рдХреБрд▓ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ (kbytes) = 18446744073642442748
рдиреНрдпреВрдирддрдо рд╕реЗрдЧ рдЖрдХрд╛рд░ (рдмрд╛рдЗрдЯреНрд╕) = 1

yimengzh_everyday@yimengzh :~$ cat /proc/sys/kernel/shmall
18446744073692774399
yimengzh_everyday@yimengzh :~$ cat /proc/sys/kernel/shmmax
1844674407369274399
~~~

рд╡реЗ рдЖрдкрдХреЛ рдХреИрд╕реЗ рдвреВрдВрдврддреЗ рд╣реИрдВ?

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрдо рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдРрд╕рд╛ рдЕрдХреНрд╕рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред (рдореИрдВ рдЕрднреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ)ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдореБрдЭреЗ рдЗрддрдиреЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдзрд┐рдХрддрдо 4096 рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рд╕реЗрдЧрдореЗрдВрдЯ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдмрдврд╝рд╛рдХрд░ /proc/sys/kernel/shmmni рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╢рд╛рдпрдж 8192 рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ)ред рдЖрдкрдХреЛ рд╕реБрдкрд░рдпреБрд╕рд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

@apaszke рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдпреЗ Ubuntu рдФрд░ CentOS 6 рджреЛрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИрдВ ... рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ?

@apaszke рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо ipcs -a рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ?

@apaszke рдиреЗ рд╕рд╛рдЭрд╛ рдореЗрдо рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд░рдо (рдЕрднреА рднреА 22 рдХрд╛рд░реНрдпрдХрд░реНрддрд╛) рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдлрд┐рд░ рд╕реЗ рдЕрдЯрдХ рдЧрдпрд╛ред

~~~
yimengzh_everyday@yimengzh :~$ ipcs -lm

------ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рд╕реАрдорд╛ --------
рдЦрдВрдбреЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ = 8192
рдЕрдзрд┐рдХрддрдо seg рдЖрдХрд╛рд░ (kbytes) = 18014398509465599
рдЕрдзрд┐рдХрддрдо рдХреБрд▓ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ (kbytes) = 18446744073642442748
рдиреНрдпреВрдирддрдо рд╕реЗрдЧ рдЖрдХрд╛рд░ (рдмрд╛рдЗрдЯреНрд╕) = 1
~~~

рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреАред рдкрд╣рд▓рд╛, рд╡рд╣ рдзреАрдорд╛ рд╣реЛрдЧрд╛; рджреВрд╕рд░рд╛, рдЕрдЧрд░ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдб рд▓реЙрдХрд┐рдВрдЧ рд╣реИ, рддреЛ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧреАред

@ zym1010 рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд░реНрдХрд▓реЛрдб рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд╛рдБ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред ipcs рд╕рд┐рд╕реНрдЯрдо V рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╕рдорд╛рди рд╕реАрдорд╛рдПрдВ POSIX рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдкрд░ рд▓рд╛рдЧреВ рди рд╣реЛрдВред

рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрднрд╡рддрдГ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдФрд░ рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмреАрдЪ рдПрдХ рдЧрддрд┐рд░реЛрдз рд╣реИ, рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЗрд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡реИрд╕реЗ рднреА, рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рддрдм рддрдХ рдареАрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХрд┐рд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХреЛрдб рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ? рд╕рд╛рде рд╣реА, torch.__version__ рдХрд╛ рдореВрд▓реНрдп рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдбреЛрдХрд░ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ?

@apaszke рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЕрдм рдЖрдкрдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВред

64GB RAM, рдбреБрдЕрд▓ Xeon, рдФрд░ Titan Black (рдПрдХ K40 рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛) рдХреЗ рд╕рд╛рде Ubuntu 14.04 рдорд╢реАрди рдкрд░ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕рднреА рдкрд░рд┐рдгрд╛рдо рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред

рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢ CUDA_VISIBLE_DEVICES=0 PYTHONUNBUFFERED=1 python main.py -a alexnet --print-freq 20 --lr 0.01 --workers 22 --batch-size 256 /mnt/temp_drive_3/cv_datasets/ILSVRC2015/Data/CLS-LOC ред рдореИрдВрдиреЗ рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдореИрдВрдиреЗ рдкрд╛рдпрдереЙрди 3.5 рдкрд░ рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рдЗрдЯреЛрд░рдЪ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рдкрд╛рдЗрдЯреЛрд░рдЪ рд╕рдВрд╕реНрдХрд░рдг 0.1.11_5 ред рдбреЙрдХрд░ рдореЗрдВ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

BTW, рдореИрдВрдиреЗ 1 рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреАред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рджреВрд╕рд░реА рдорд╢реАрди (128GB RAM, рдбреБрдЕрд▓ Xeon, 4 Pascal Titan X, CentOS 6) рдкрд░ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ CUDA_VISIBLE_DEVICES=0 PYTHONUNBUFFERED=1 python main.py -a alexnet --print-freq 1 --lr 0.01 --workers 1 --batch-size 256 /ssd/cv_datasets/ILSVRC2015/Data/CLS-LOC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд▓рд╛рдпрд╛, рдФрд░ рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИред

Epoch: [0][5003/5005]   Time 2.463 (2.955)      Data 2.414 (2.903)      Loss 5.9677 (6.6311)    Prec<strong i="14">@1</strong> 3.516 (0.545)    Prec<strong i="15">@5</strong> 8.594 (2.262)
Epoch: [0][5004/5005]   Time 1.977 (2.955)      Data 1.303 (2.903)      Loss 5.9529 (6.6310)    Prec<strong i="16">@1</strong> 1.399 (0.545)    Prec<strong i="17">@5</strong> 7.692 (2.262)
^CTraceback (most recent call last):
  File "main.py", line 292, in <module>
    main()
  File "main.py", line 137, in main
    prec1 = validate(val_loader, model, criterion)
  File "main.py", line 210, in validate
    for i, (input, target) in enumerate(val_loader):
  File "/home/yimengzh/miniconda2/envs/pytorch/lib/python3.5/site-packages/torch/utils/data/dataloader.py", line 168, in __next__
    idx, batch = self.data_queue.get()
  File "/home/yimengzh/miniconda2/envs/pytorch/lib/python3.5/queue.py", line 164, in get
    self.not_empty.wait()
  File "/home/yimengzh/miniconda2/envs/pytorch/lib/python3.5/threading.py", line 293, in wait
    waiter.acquire()

top рдиреЗ 1 рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдлрдВрд╕рдиреЗ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд┐рдЦрд╛рдпрд╛ред

~рд╢реАрд░реНрд╖ - 08:34:33 рдКрдкрд░ 15 рджрд┐рди, 20:03, 0 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рд▓реЛрдб рдФрд╕рдд: 0.37, 0.39, 0.36рдХрд╛рд░реНрдп: рдХреБрд▓ 894, 1 рджреМрдбрд╝рдирд╛, 892 рд╕реЛ рд░рд╣рд╛ рд╣реИ, 0 рд░реБрдХрд╛ рд╣реБрдЖ рд╣реИ, 1 рдЬрд╝реЛрдВрдмреАрд╕реАрдкреАрдпреВ (рдУрдВ): 7.2% us, 2.8% sy, 0.0% ni, 89.7% id, 0.3% wa, 0.0% hi, 0.0% si, 0.0%stрдореЗрдо: 132196824k рдХреБрд▓, 131461528k рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛, 735296k рдореБрдлреНрдд, 347448k рдмрдлрд░рд╕реНрд╡реИрдк: 2047996k рдХреБрд▓, 22656k рдкреНрд░рдпреБрдХреНрдд, 2025340k рдирд┐рдГрд╢реБрд▓реНрдХ, 125226796k рдХреИрд╢реНрдб~

рдПрдХ рдФрд░ рдЪреАрдЬ рдЬреЛ рдореИрдВрдиреЗ рдкрд╛рдИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐, рдЕрдЧрд░ рдореИрдВрдиреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рд╕рднреА рдмреИрдЪреЛрдВ рд╕реЗ рди рдЧреБрдЬрд░реЗ, рдорд╛рди рд▓реАрдЬрд┐рдП, рдХреЗрд╡рд▓ 50 рдмреИрдЪреЛрдВ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░реЗрдВ

if i >= 50:
    break

рддрдм рдЧрддрд┐рд░реЛрдз рдЧрд╛рдпрдм рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИред

рдЖрдЧреЗ рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐, рдпрджрд┐ рдореИрдВ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рд░реАрдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдардВрдб рдЕрдзрд┐рдХ рдмрд╛рд░ рд╣реЛрддреА рд╣реИред рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рдХреБрдЫ рдХреИрд╢ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдлреНрд░реАрдЬрд┐рдВрдЧ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХрдо рд╣реИред

рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдмрдЧ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдореИрдВ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджреЗ рд╕реЗ рдорд┐рд▓рд╛: рдЬрдм рдореИрдВ рдПрдХ рдпреБрдЧ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рдпреБрдЧ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред

num_workers = 0 рдХрд╛рдо рд╕реЗрдЯ рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

@apaszke рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ? рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдардВрдб рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрднреА 0.12 рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдФрд░ рдпрд╣ рдЕрднреА рднреА рд╡рд╣реА рд╣реИред

рдПрдХ рдмрд╛рдд рдЬреЛ рдореИрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ pip рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдЗрдЯреЛрд░рдЪ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдУрдкрдирдмреАрдПрд▓рдПрдПрд╕-рд▓рд┐рдВрдХреНрдб numpy рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдФрд░ рдПрдордХреЗрдПрд▓ @soumith рдХреЗ рдПрдирд╛рдХреЛрдВрдбрд╛ рдХреНрд▓рд╛рдЙрдб рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЦреЗрд▓реЗрдВрдЧреЗред

рддреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ pytorch MKL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ numpy OpenBLAS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдпрд╣рд╛рдВ рдХреЗ рдореБрджреНрджреЗ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ рдЗрд╕реЗ рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдХрднреА рднреА рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдПрдордХреЗрдПрд▓/рдУрдкрдирдмреАрдПрд▓рдПрдПрд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╢рд╛рдпрдж рд╕рд┐рд╕реНрдЯрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рд╣реИ

@apaszke рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЕрднреА рдПрдирд╛рдХреЛрдВрдбрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реЗрдкреЛ рдФрд░ рдПрдордХреЗрдПрд▓ рдЖрдзрд╛рд░рд┐рдд рдкрд╛рдЗрдЯреЛрд░рдЪ рд╕реЗ рдЕрдЬрдЧрд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ред

рдбреЙрдХрд░ рдореЗрдВ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЕрднреА рднреА рдЕрдЯрдХред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, 4 рдореЗрдВ рд╕реЗ 1 GPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ nvidia-docker рдХреЗ рдЕрдВрджрд░ рдкрд╛рдЗрдЯреЛрд░рдЪ/рдЙрджрд╛рд╣рд░рдг рдЗрдореЗрдЬрдиреЗрдЯ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг (resnet18, 4 рдХрд╛рд░реНрдпрдХрд░реНрддрд╛) рдЪрд▓рд╛рдирд╛ред рдЕрдЧрд░ рдореИрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдПрдХ рдЬреАрдбреАрдмреА рдмреИрдХрдЯреНрд░реИрдХ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ .

рдХрдо рд╕реЗ рдХрдо OpenBLAS рдХреЛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрди рдореЗрдВ рдПрдХ рдЧрддрд┐рд░реЛрдз рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рд╣реА рд╣реЛрддрд╛ рд╣реИ: https://github.com/xianyi/OpenBLAS/issues/937ред рдпрд╣ рдмрдЧ рдХрдо рд╕реЗ рдХрдо 1.12.0 numpy рдореЗрдВ рдкреИрдХ рдХрд┐рдП рдЧрдП OpenBLAS рдореЗрдВ рдореМрдЬреВрдж рдерд╛ред

@jsainio рдореИрдВрдиреЗ рд╢реБрджреНрдз MKL рдЖрдзрд╛рд░рд┐рдд PyTorch рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА (numpy MKL рдХреЗ рд╕рд╛рде рднреА рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ), рдФрд░ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ред

рд╕рд╛рде рд╣реА, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд▓рд┐рдП), рдЕрдЧрд░ рдореИрдВ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдХреЗ рд▓рд┐рдП pin_memory рдмрд╛рд░реА рдХрд░рддрд╛ рд╣реВрдВред

рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдорд╛рдиреЛ рджреЛ рдордЬрджреВрд░реЛрдВ рдХреА рдореМрдд рд╣реЛ рдЧрдИ рд╣реЛред

рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди:

root<strong i="7">@b06f896d5c1d</strong>:~/mnt# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user+        1 33.2  4.7 91492324 3098288 ?    Ssl  10:51   1:10 python -m runne
user+       58 76.8  2.3 91079060 1547512 ?    Rl   10:54   1:03 python -m runne
user+       59 76.0  2.2 91006896 1484536 ?    Rl   10:54   1:02 python -m runne
user+       60 76.4  2.3 91099448 1559992 ?    Rl   10:54   1:02 python -m runne
user+       61 79.4  2.2 91008344 1465292 ?    Rl   10:54   1:05 python -m runne

рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:

root<strong i="11">@b06f896d5c1d</strong>:~/mnt# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user+        1 24.8  4.4 91509728 2919744 ?    Ssl  14:25  13:01 python -m runne
user+       58 51.7  0.0      0     0 ?        Z    14:27  26:20 [python] <defun
user+       59 52.1  0.0      0     0 ?        Z    14:27  26:34 [python] <defun
user+       60 52.0  2.4 91147008 1604628 ?    Sl   14:27  26:31 python -m runne
user+       61 52.0  2.3 91128424 1532088 ?    Sl   14:27  26:29 python -m runne

рдПрдХ рдЕрднреА рднреА рд╢реЗрд╖ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬреАрдбреАрдмреА рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рдХреА рд╢реБрд░реБрдЖрдд рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

root<strong i="15">@b06f896d5c1d</strong>:~/mnt# gdb --pid 60
GNU gdb (GDB) 8.0
Attaching to process 60
[New LWP 65]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007f36f52af827 in do_futex_wait.constprop ()
   from /lib/x86_64-linux-gnu/libpthread.so.0

(gdb) bt
#0  0x00007f36f52af827 in do_futex_wait.constprop ()
   from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007f36f52af8d4 in __new_sem_wait_slow.constprop.0 ()
   from /lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007f36f52af97a in sem_wait@@GLIBC_2.2.5 ()
   from /lib/x86_64-linux-gnu/libpthread.so.0
#3  0x00007f36f157efb1 in semlock_acquire (self=0x7f3656296458,
    args=<optimized out>, kwds=<optimized out>)
    at /home/ilan/minonda/conda-bld/work/Python-3.5.2/Modules/_multiprocessing/semaphore.c:307
#4  0x00007f36f5579621 in PyCFunction_Call (func=
    <built-in method __enter__ of _multiprocessing.SemLock object at remote 0x7f3656296458>, args=(), kwds=<optimized out>) at Objects/methodobject.c:98
#5  0x00007f36f5600bd5 in call_function (oparg=<optimized out>,
    pp_stack=0x7f36c7ffbdb8) at Python/ceval.c:4705
#6  PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>)
    at Python/ceval.c:3236
#7  0x00007f36f5601b49 in _PyEval_EvalCodeWithName (_co=<optimized out>,
    globals=<optimized out>, locals=<optimized out>, args=<optimized out>,
    argcount=1, kws=0x0, kwcount=0, defs=0x0, defcount=0, kwdefs=0x0,
    closure=0x0, name=0x0, qualname=0x0) at Python/ceval.c:4018
#8  0x00007f36f5601cd8 in PyEval_EvalCodeEx (_co=<optimized out>,
    globals=<optimized out>, locals=<optimized out>, args=<optimized out>,
    argcount=<optimized out>, kws=<optimized out>, kwcount=0, defs=0x0,
    defcount=0, kwdefs=0x0, closure=0x0) at Python/ceval.c:4039
#9  0x00007f36f5557542 in function_call (
    func=<function at remote 0x7f36561c7d08>,
    arg=(<Lock(release=<built-in method release of _multiprocessing.SemLock object at remote 0x7f3656296458>, acquire=<built-in method acquire of _multiprocessing.SemLock object at remote 0x7f3656296458>, _semlock=<_multiprocessing.SemLock at remote 0x7f3656296458>) at remote 0x7f3656296438>,), kw=0x0)
    at Objects/funcobject.c:627
#10 0x00007f36f5524236 in PyObject_Call (
    func=<function at remote 0x7f36561c7d08>, arg=<optimized out>,
    kw=<optimized out>) at Objects/abstract.c:2165
#11 0x00007f36f554077c in method_call (
    func=<function at remote 0x7f36561c7d08>,
    arg=(<Lock(release=<built-in method release of _multiprocessing.SemLock object at remote 0x7f3656296458>, acquire=<built-in method acquire of _multiprocessing.SemLock object at remote 0x7f3656296458>, _semlock=<_multiprocessing.SemLock at remote 0x7f3656296458>) at remote 0x7f3656296438>,), kw=0x0)
    at Objects/classobject.c:330
#12 0x00007f36f5524236 in PyObject_Call (
    func=<method at remote 0x7f36556f9248>, arg=<optimized out>,
    kw=<optimized out>) at Objects/abstract.c:2165
#13 0x00007f36f55277d9 in PyObject_CallFunctionObjArgs (
    callable=<method at remote 0x7f36556f9248>) at Objects/abstract.c:2445
#14 0x00007f36f55fc3a9 in PyEval_EvalFrameEx (f=<optimized out>,
    throwflag=<optimized out>) at Python/ceval.c:3107
#15 0x00007f36f5601166 in fast_function (nk=<optimized out>, na=1,
    n=<optimized out>, pp_stack=0x7f36c7ffc418,
    func=<function at remote 0x7f36561c78c8>) at Python/ceval.c:4803
#16 call_function (oparg=<optimized out>, pp_stack=0x7f36c7ffc418)
    at Python/ceval.c:4730
#17 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>)
    at Python/ceval.c:3236
#18 0x00007f36f5601b49 in _PyEval_EvalCodeWithName (_co=<optimized out>,
    globals=<optimized out>, locals=<optimized out>, args=<optimized out>,
    argcount=4, kws=0x7f36f5b85060, kwcount=0, defs=0x0, defcount=0,
    kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at Python/ceval.c:4018
#19 0x00007f36f5601cd8 in PyEval_EvalCodeEx (_co=<optimized out>,
    globals=<optimized out>, locals=<optimized out>, args=<optimized out>,
    argcount=<optimized out>, kws=<optimized out>, kwcount=0, defs=0x0,
    defcount=0, kwdefs=0x0, closure=0x0) at Python/ceval.c:4039
#20 0x00007f36f5557661 in function_call (
    func=<function at remote 0x7f36e14170d0>,
    arg=(<ImageFolder(class_to_idx={'n04153751': 783, 'n02051845': 144, 'n03461385': 582, 'n04350905': 834, 'n02105056': 224, 'n02112137': 260, 'n03938244': 721, 'n01739381': 59, 'n01797886': 82, 'n04286575': 818, 'n02113978': 268, 'n03998194': 741, 'n15075141': 999, 'n03594945': 609, 'n04099969': 765, 'n02002724': 128, 'n03131574': 520, 'n07697537': 934, 'n04380533': 846, 'n02114712': 271, 'n01631663': 27, 'n04259630': 808, 'n04326547': 825, 'n02480855': 366, 'n02099429': 206, 'n03590841': 607, 'n02497673': 383, 'n09332890': 975, 'n02643566': 396, 'n03658185': 623, 'n04090263': 764, 'n03404251': 568, 'n03627232': 616, 'n01534433': 13, 'n04476259': 868, 'n03495258': 594, 'n04579145': 901, 'n04266014': 812, 'n01665541': 34, 'n09472597': 980, 'n02095570': 189, 'n02089867': 166, 'n02009229': 131, 'n02094433': 187, 'n04154565': 784, 'n02107312': 237, 'n04372370': 844, 'n02489166': 376, 'n03482405': 588, 'n04040759': 753, 'n01774750': 76, 'n01614925': 22, 'n01855032': 98, 'n03903868': 708, 'n02422699': 352, 'n01560419': 1...(truncated), kw={}) at Objects/funcobject.c:627
#21 0x00007f36f5524236 in PyObject_Call (
    func=<function at remote 0x7f36e14170d0>, arg=<optimized out>,
    kw=<optimized out>) at Objects/abstract.c:2165
#22 0x00007f36f55fe234 in ext_do_call (nk=1444355432, na=0,
    flags=<optimized out>, pp_stack=0x7f36c7ffc768,
    func=<function at remote 0x7f36e14170d0>) at Python/ceval.c:5034
#23 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>)
    at Python/ceval.c:3275
--snip--

рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдЯрдХреА рд╣реБрдИ рдереА: self.data_queue.get()
рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдореИрдВрдиреЗ рдУрдкрдирд╕реАрд╡реА рдХреЛ рдЗрдореЗрдЬ рд▓реЛрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдФрд░ cv2.imread рдлрд╝рдВрдХреНрд╢рди рдЗрдореЗрдЬрдиреЗрдЯ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЫрд╡рд┐ ("n01630670/n01630670_1010.jpeg") рдкрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд┐рдирд╛ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рддрдХ рд▓рдЯрдХ рд░рд╣рд╛ рдерд╛ред

рдЕрдЧрд░ рдЖрдкрдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП num_workers = 0 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рддреЛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдЯреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ num_workers = 0 рд╕рд╛рде рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЕрднреА рддрдХ рдХреЛрдИ рд╣реИрдВрдЧ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдореИрдВ https://github.com/pytorch/examples/blob/master/imagenet/main.py рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ pytorch/vision ImageFolder рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ PIL рдпрд╛ pytorch/accimage рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХреЛрдИ OpenCV рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред

num_workers = 4 , рдореИрдВ рдХрднреА-рдХрднреА рдкрд╣рд▓реА рдпреБрдЧ рдЯреНрд░реЗрди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдиреНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рджреВрд╕рд░реЗ рдпреБрдЧ рдХреЗ рдмреАрдЪ рдореЗрдВ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдбреЗрдЯрд╛рд╕реЗрдЯ/рд▓реЛрдбрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣ ImageLoader рдореЗрдВ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдЬреИрд╕рд╛ рдХреБрдЫ рджрд┐рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╣рд╛рд░реНрдбрд╡реЗрдпрд░/рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕рдВрдпреЛрдЬрди рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рджреБрд░реНрд▓рдн рд░реВрдк рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@ zym1010 рд╕реВрдЪрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ pin_memory = False рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рджрд┐рд▓рдЪрд╕реНрдкред рдореЗрд░реЗ рд╕реЗрдЯрдЕрдк рдкрд░, pin_memory = False рдФрд░ num_workers = 4 рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдкрд░ рдЗрдореЗрдЬрдиреЗрдЯ рдЙрджрд╛рд╣рд░рдг рд▓рдЧрднрдЧ рддреБрд░рдВрдд рд╣реА рд▓рдЯрдХ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рддреАрди рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЬрд╝реЛрдВрдмреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ:

root<strong i="8">@034c4212d022</strong>:~/mnt# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user+        1  6.7  2.8 92167056 1876612 ?    Ssl  13:50   0:36 python -m runner
user+       38  1.9  0.0      0     0 ?        Z    13:51   0:08 [python] <defunct>
user+       39  4.3  2.3 91069804 1550736 ?    Sl   13:51   0:19 python -m runner
user+       40  2.0  0.0      0     0 ?        Z    13:51   0:09 [python] <defunct>
user+       41  4.1  0.0      0     0 ?        Z    13:51   0:18 [python] <defunct>

рдореЗрд░реЗ рд╕реЗрдЯрдЕрдк рдореЗрдВ, рдбреЗрдЯрд╛рд╕реЗрдЯ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╕реНрдХ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ рдЬрд┐рд╕реЗ NFS рдкрд░ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред pin_memory = False рдФрд░ num_workers = 4 рдореИрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХрд╛рдлреА рддреЗрдЬреА рд╕реЗ рд╡рд┐рдлрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

=> creating model 'resnet18'
- training epoch 0
Epoch: [0][0/5005]  Time 10.713 (10.713)    Data 4.619 (4.619)  Loss 6.9555 (6.9555)    Prec<strong i="8">@1</strong> 0.000 (0.000)    Prec<strong i="9">@5</strong> 0.000 (0.000)
Traceback (most recent call last):
--snip--
imagenet_pytorch.main.main([data_dir, "--transient_dir", context.transient_dir])
  File "/home/user/mnt/imagenet_pytorch/main.py", line 140, in main

train(train_loader, model, criterion, optimizer, epoch, args)
  File "/home/user/mnt/imagenet_pytorch/main.py", line 168, in train

for i, (input, target) in enumerate(train_loader):
  File "/home/user/anaconda/lib/python3.5/site-packages/torch/utils/data/dataloader.py", line 206, in __next__

idx, batch = self.data_queue.get()
  File "/home/user/anaconda/lib/python3.5/multiprocessing/queues.py", line 345, in get

return ForkingPickler.loads(res)
  File "/home/user/anaconda/lib/python3.5/site-packages/torch/multiprocessing/reductions.py", line 70, in rebuild_storage_fd

fd = df.detach()
  File "/home/user/anaconda/lib/python3.5/multiprocessing/resource_sharer.py", line 57, in detach

with _resource_sharer.get_connection(self._id) as conn:
  File "/home/user/anaconda/lib/python3.5/multiprocessing/resource_sharer.py", line 87, in get_connection

c = Client(address, authkey=process.current_process().authkey)
  File "/home/user/anaconda/lib/python3.5/multiprocessing/connection.py", line 493, in Client

answer_challenge(c, authkey)
  File "/home/user/anaconda/lib/python3.5/multiprocessing/connection.py", line 732, in answer_challenge

message = connection.recv_bytes(256)         # reject large message
  File "/home/user/anaconda/lib/python3.5/multiprocessing/connection.py", line 216, in recv_bytes

buf = self._recv_bytes(maxlength)
  File "/home/user/anaconda/lib/python3.5/multiprocessing/connection.py", line 407, in _recv_bytes

buf = self._recv(4)
  File "/home/user/anaconda/lib/python3.5/multiprocessing/connection.py", line 379, in _recv

chunk = read(handle, remaining)
ConnectionResetError
: 
[Errno 104] Connection reset by peer

@ zym1010 рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╕реНрдХ рдпрд╛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХрддрд╛рдИ рдбрд┐рд╕реНрдХ рд╣реИ рдЬреЛ рд╡рд┐рд▓рдВрдмрддрд╛/рдЖрджрд┐ рдореЗрдВ рдзреАрдореА рд╣реЛ рд╕рдХрддреА рд╣реИ?

@jsainio

рдореИрдВ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдХрдВрдкреНрдпреВрдЯ рдиреЛрдб рдкрд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдПрд╕рдПрд╕рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреЛрдб рдПрдХ рдПрдирдПрдлрдПрд╕ рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрддрдо рд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрдерд╛рдиреАрдп рдПрд╕рдПрд╕рдбреА рдкрд░ рд╣реИред NFS рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХрднреА рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

@ zym1010 рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдХрдВрдкреНрдпреВрдЯ рдиреЛрдб рдкрд░ рднреА рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ num_workers = 0 рдкреНрд░рдпреЛрдЧ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╣реА рдиреЛрдб рдкрд░ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЬрдмрдХрд┐ num_workers = 4 рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреЛ рдЖрдЬрдорд╛ рд░рд╣рд╛ рд╣реВрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рдкреНрд░рдпреЛрдЧ рдкрд░реНрдпрд╛рдкреНрдд рднрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣рд╛ рд╣реЛ рддрд╛рдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдмрд╛рдж рдореЗрдВ рдЦреБрдж рдХреЛ рддреЗрдЬреА рд╕реЗ рдкреНрд░рдХрдЯ рдХрд░ рд╕рдХреЗред

@apaszke рдЬрдм рдЖрдкрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдХреНрдпрд╛ рдЖрдкрдиреЗ рджреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕рд╛рде-рд╕рд╛рде рдЪрд▓рд╛рдиреЗ рдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреНрдп рд▓реЛрдб рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдерд╛?

@jsainio рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдЕрдЬреАрдм рд╣реИ, рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ рдмрд╛рд░ рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рджред рдХреНрдпрд╛ рдЖрдк рдпрд╣ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдХреНрдпреЛрдВ рдирд┐рдХрд▓ рдЬрд╛рддреЗ рд╣реИрдВ? рд╢рд╛рдпрдж рдХрд░реНрдиреЗрд▓ рд▓реЙрдЧ ( dmesg ) рдЬрд╛рдВрдЪреЗрдВ?

рдирд╣реАрдВ, рдореИрдВрдиреЗ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рддрдм рднреА рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдРрд╕рд╛ рдирд╣реАрдВ рдерд╛ IIRC

@apaszke рдареАрдХ рд╣реИ, рдпрд╣ рдЬрд╛рдирдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдХрд┐ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред

рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡реЗ рдмрд╛рд╣рд░ рдХреНрдпреЛрдВ рдирд┐рдХрд▓рддреЗ рд╣реИрдВред dmesg рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред (рдореИрдВ рдПрдирд╛рдХреЛрдВрдбрд╛ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдмрдВрдЯреВ 16.04-рд╡реНрдпреБрддреНрдкрдиреНрди рдбреЙрдХрд░ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ)

рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд░реНрдХрд░ рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдХрдИ рдкреНрд░рд┐рдВрдЯреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡реЗ рдЪреБрдкрдЪрд╛рдк рдмрд╛рд╣рд░ рдХреНрдпреЛрдВ рдирд┐рдХрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ stderr рдкрд░ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдпрд╛ рддреЛ рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╛ рдУрдПрд╕ рджреНрд╡рд╛рд░рд╛ рдорд╛рд░реЗ рдЬрд╛рддреЗ рд╣реИрдВ (рд╢рд╛рдпрдж рд╕рд┐рдЧреНрдирд▓ рджреНрд╡рд╛рд░рд╛?)

@jsainio , рдмрд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдк --ipc=host рдХреЗ рд╕рд╛рде docker рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ (рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)? рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рд╕реЗрдЧрдореЗрдВрдЯ (df -h | grep shm) рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ngimel рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ --shm-size=1024m ред df -h | grep shm рддрджрдиреБрд╕рд╛рд░ рд░рд┐рдкреЛрд░реНрдЯ:

root<strong i="9">@db92462e8c19</strong>:~/mnt# df -h | grep shm
shm                                                          1.0G  883M  142M  87% /dev/shm

рд╡рд╣ рдЙрдкрдпреЛрдЧ рдмрд▓реНрдХрд┐ рдЙрдЪреНрдЪ рдХрдард┐рди рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рджреЛ рдЬрд╝реЛрдВрдмреА рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЙрдХрдЯрд░ рдкрд░ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рд╢рдо рдЖрдХрд╛рд░ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВрдиреЗ рдЕрднреА рдЬрд╛рдБрдЪ рдХреА рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╣рд╛рдБ рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╡рд╣ 16GB рдерд╛ред рдЖрдк рдпрд╛ рддреЛ рдбреЙрдХрд░ рдзреНрд╡рдЬ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рдпрд╛ рджреМрдбрд╝рддреЗ рд╣реИрдВ

mount -o remount,size=8G /dev/shm

рдореИрдВрдиреЗ рдЖрдХрд╛рд░ рдХреЛ 512MB рддрдХ рдХрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЧрддрд┐рд░реЛрдз рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рдЕрднреА рднреА рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ ЁЯШХ

рдбреЙрдХрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рдо рдЧрддрд┐рд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬрдм shm рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдмрдЬрд╛рдп рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ, рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╢рдо рдХреЛ рдмрдврд╝рд╛рдХрд░ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдФрд░ рдореБрдЭреЗ 1 рдЬреА рдХреЗ рд╕рд╛рде рдЧрддрд┐рд░реЛрдз рдорд┐рд▓рд╛)ред

рдареАрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 10 рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрдард╛рдИ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ 4 рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ 58%/dev/shm рдЙрдкрдпреЛрдЧ рдкрд░ рдЧрддрд┐рд░реЛрдз рдорд┐рд▓рддрд╛ рд╣реИ! рдореИрдВрдиреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд░реВрдк рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЛрд╕реНрдЯ рдХреА рдЬреЛ #1579 рдореЗрдВ рд╣реИрдВрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреА рд╣реИ, рдФрд░ рдЖрдкрдиреЗ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╣реИрдВрдЧ рдирд╣реАрдВ рд╣реБрдИред рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдореИрдХрдмреБрдХ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЕрднреА рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдФрд░ рдпрд╣ рд▓рдЯрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдиреЗ рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рддреЛ рдпрд╣ рдореИрдХ рдкрд░ рднреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рдж рдпрд╣ рдПрдХ рдЕрдЬреАрдм рдореБрджреНрджрд╛ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЬрдм рдореИрдВ /dev/shm рдХреЛ рдХреЗрд╡рд▓ 128MB рдмрдбрд╝рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд▓рд┐рдирдХреНрд╕ рд╣рдореЗрдВ рд╡рд╣рд╛рдВ 147MB рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ mmap рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреГрд╖реНрдареЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдШрд╛рддрдХ SIGBUS рднреЗрдЬ рджреЗрдЧрд╛ред ... рдореИрдВ рдХрд┐рд╕реА рднреА рддрдВрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рдЬреЛ рд╣рдореЗрдВ рдЙрди рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреГрд╖реНрдареЛрдВ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдФрд░ рд╣рд░ рдПрдХ рдХреЛ рдЫреВрдиреЗ рдХреЗ рд╕рд╛рде, рдПрдХ SIGBUS рд╣реИрдВрдбрд▓рд░ рдкрдВрдЬреАрдХреГрдд рд╣реИ ...

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ, рдЕрднреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди /dev/shm рдХреЛ mount рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИред 16GB рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ (рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд RAM рд╣реИ рддреЛ ofc)ред

рдЗрд╕рдХрд╛ рдХреЛрдИ рдЙрд▓реНрд▓реЗрдЦ рдорд┐рд▓рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ рд╣реИ ред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдореБрдЭреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкрд╛рдЧрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ! рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭреВрдВ рддреЛ рдореБрдЭреЗ /dev/shm рдХреЛ 8G рдХреЗ рдмрдЬрд╛рдп 16G рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬрдм рдХреЛрд╢рд┐рд╢ рдореЗрдВ df -h , рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рд╕рднреА рд░рд╛рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ: (рдореЗрд░реЗ рдкрд╛рд╕ 16 рдЬреА рд╣реИ)

tmpfs              7,8G    393M  7,4G   5% /dev/shm
tmpfs              5,0M    4,0K  5,0M   1% /run/lock
tmpfs              7,8G       0  7,8G   0% /sys/fs/cgroup
tmpfs              1,6G     60K  1,6G   1% /run/user/1001

рдпрд╣ рдЧрддрд┐рд░реЛрдз рдХреЗ рджреМрд░рд╛рди df -h рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ 16G рдХрд╛ SWAP рд╡рд┐рднрд╛рдЬрди рд╣реИ, рддреЛ рдореИрдВ tmpfs рдХреЛ 32G рддрдХ рдорд╛рдЙрдВрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП /dev/shm рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд╣реИ рдирд╛?

рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ cgroup рд╡рд┐рднрд╛рдЬрди рдФрд░ рдЙрд╕рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрд░рд╛рди рд╣реВрдБ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реА RAM рдХрд╛ рд▓рдЧрднрдЧ рдЖрдзрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдЗрд╕реЗ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрд╣реБ-рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рд╕рднреА рднреМрддрд┐рдХ рд░реИрдо рдХреЛ рд╢рдо рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмрджрд▓ рджреЗрдЧрд╛ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ 16 рдЬреА рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ) рдФрд░ рдЗрд╕реЗ SWAP рдореЗрдВ рдбрд╛рд▓реЗрдВ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ RAM рдФрд░ SWAP рдореЗрдВ рдПрдХ рд╕рд╛рде рд╣реЛрдВрдЧреЗ)

@apaszke рдзрдиреНрдпрд╡рд╛рдж! рдмрдврд╝рд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░рдг рдорд┐рд▓ рдЧрдпрд╛ред рдореБрдЭреЗ рдХрднреА-рдХрднреА рдбреЙрдХрдЯрд░ --shm-size=1024m рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди "рдХрдиреЗрдХреНрд╢рди рд░реАрд╕реЗрдЯ" рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ рдбреЗрдбрд▓реЙрдХреНрд╕ рджреЛрдиреЛрдВ рдорд┐рд▓ рд░рд╣реЗ рдереЗ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдорд╢реАрди рдореЗрдВ рдХреМрди рд╕рд╛ рд▓реЛрдб рдерд╛ред --shm-size=16384m рдФрд░ 4 рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрднреА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

@jsainio ConnectionReset рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдиреЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рд╢рдо рдЕрдВрддрд░рд┐рдХреНрд╖ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЧрдпрд╛ рддреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╕рд┐рдЧрдмрд╕ рднреЗрдЬрд╛ рдЧрдпрд╛ рдФрд░ рдЙрд╕реЗ рдорд╛рд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред

@ClementPinard рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЬрд┐рддрдирд╛ рдЪрд╛рд╣реЗрдВ рдЙрддрдирд╛ рдмрдбрд╝рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЬрдм рдЖрдк рд░реИрдо рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рддреЛ рдпрд╣ рдЖрдкрдХреА рдорд╢реАрди рдХреЛ рдлреНрд░реАрдЬ рдХрд░ рджреЗрдЧрд╛ (рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрдиреЗрд▓ рднреА рдЗрд╕ рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред рдЖрдкрдХреЛ рд╢рд╛рдпрдж /sys/fs/cgroup рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рди рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред tmpfs рд╡рд┐рднрд╛рдЬрди рд╕реНрдореГрддрд┐ рдХреЛ рдЖрд▓рд╕реА рд░реВрдк рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рдЙрдкрдпреЛрдЧ 0B рдкрд░ рд░рд╣рддрд╛ рд╣реИ, рдпрд╣ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдЦрд░реНрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рд╕реАрдорд╛ рд╕рд╣рд┐рдд)ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕реНрд╡реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдк shm рдЖрдХрд╛рд░ рдХреЛ 12GB рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рд╢рдо рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рд╛рд░реА рд░реИрдо рдХрд╛ рдкреНрд░рдпреЛрдЧ рди рдХрд░реЗрдВ!) рдпрд╣рд╛рдБ рдХрд░реНрдиреЗрд▓ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ /dev/shm рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реЛрдиреЗ рдкрд░ рднреА рдЧрддрд┐рд░реЛрдз рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ (рдореЗрд░реА рдорд╢реАрди рдкрд░ 20kB рдкрд░ рд╣реЛрддрд╛ рд╣реИ)ред рд╢рд╛рдпрдж рдХрд░реНрдиреЗрд▓ рдЕрддреНрдпрдзрд┐рдХ рдЖрд╢рд╛рд╡рд╛рджреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдЖрдк рдЗрд╕реЗ рднрд░ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╛рд░ рджреЗрддрд╛ рд╣реИред

рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ 12рдЬреА рдФрд░ рдЖрдзреЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг, рдФрд░ рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рд╛ :(
рдпрд╣ рд▓реБрдЖ рдорд╢рд╛рд▓ рд╕рдВрд╕реНрдХрд░рдг (рд╕рдорд╛рди рдЧрддрд┐, рд╕рдорд╛рди рд╢реНрд░рдорд┐рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рдореЗрдВ рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬреЛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ /dev/shm рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рдкрд╛рдЗрдерди рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдХрд░реАрдм рдирд╣реАрдВ рд╣реИ ...

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЬреАрдм рдмрд╛рдд (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ) рдпрд╣ рд╣реИ рдХрд┐ /dev/shm рдХрднреА рднреА рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдХрд░реАрдм рдирд╣реАрдВ рд╣реИред рдкрд╣рд▓реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдпреБрдЧ рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рдХрднреА рднреА 500Mo рд╕реЗ рдКрдкрд░ рдирд╣реАрдВ рдЧрдпрд╛ред рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рдпреБрдЧ рдХреЗ рджреМрд░рд╛рди рдХрднреА рднреА рд▓реЙрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЯреНрд░реЗрди рд▓реЛрдбрд░ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реВрдВ рддреЛ рд╕рднреА рдпреБрдЧреЛрдВ рдореЗрдВ рдХрднреА рднреА рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдпреБрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╕рдордп рдЧрддрд┐рд░реЛрдз рдХреЗрд╡рд▓ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред рдЯреНрд░реЗрди рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдореБрдЭреЗ /dev/shm рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдмрджрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЪрд░рдо рдЙрдкрдпреЛрдЧ рд╣реЛред

@ClementPinard рдЙрдЪреНрдЪ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рднреА, рдФрд░ рдбреЙрдХрд░ рдХреЗ рдмрд┐рдирд╛, рдпрд╣ рдЕрднреА рднреА рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдорд╢рд╛рд▓ рд╕рдВрд╕реНрдХрд░рдг == рд▓реБрдЖ рдорд╢рд╛рд▓, рддреЛ рдпрд╣ рдЕрднреА рднреА /dev/shm рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реБрдЖ рдорд╢рд╛рд▓ рдзрд╛рдЧреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдХреЛрдИ рдЬреАрдЖрдИрдПрд▓ рдирд╣реАрдВ рд╣реИ), рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдореЗрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рдкрддрд╛ рд╕реНрдерд╛рди рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ)ред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ рдЬрд╣рд╛рдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛рд▓реЛрдбрд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдирдП рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдпрд╛ рд╕рддреНрдпрд╛рдкрди рдпреБрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рдереЗ (i) рдореЗрд░рд╛ /dev/shm 32GB рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрднреА рднреА 2.5GB рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ (ii) pin_memory=False рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓рд╛ред

рдпрд╣ рд╢рд╛рдпрдж рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╣реИ? рдореЗрд░рд╛ рдХреЛрдб рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдореБрдЭреЗ рдПрдХ рдЕрдирдВрдд рдЗрдЯрд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдиреАрдЪреЗ next() рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ :-)

def train():
    train_iter = train_loader.__iter__()
    for i in xrange(max_batches):
        try:
            x, y = next(train_iter)
        except StopIteration:
            train_iter = train_loader.__iter__()
        ...
    del train_iter

train_loader рдПрдХ DataLoader рд╡рд╕реНрддреБ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрдкрд╖реНрдЯ del train_iter рд▓рд╛рдЗрди рдХреЗ рдмрд┐рдирд╛, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рдореЗрд╢рд╛ 2-3 рдпреБрдЧреЛрдВ рдХреЗ рдмрд╛рдж рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддреА рд╣реИ ( /dev/shm рдЕрднреА рднреА 2.5 рдЬреАрдмреА рджрд┐рдЦрд╛рддрд╛ рд╣реИ)ред рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛!

рдореИрдВ 4 рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рд╕рдВрд╕реНрдХрд░рдг 0.1.12_2 Ubuntu 16.04 рдкрд░ CUDA 8.0 рдХреЗ рд╕рд╛рде)ред

рдореИрдВ рдЧрддрд┐рд░реЛрдз рд╕реЗ рднреА рдорд┐рд▓рд╛, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╡рд░реНрдХ_рдирдВрдмрд░ рдмрдбрд╝рд╛ рд╣реЛред рдХреНрдпрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреЛрдИ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ? рдореЗрд░рд╛ /dev/shm рдЖрдХрд╛рд░ 32GB рд╣реИ, cuda 7.5, pytorch 0.1.12 рдФрд░ рдЕрдЬрдЧрд░ 2.7.13 рдХреЗ рд╕рд╛рдеред рдореГрддреНрдпреБ рдХреЗ рдмрд╛рдж рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИред рдпрд╣ рд╕реНрдореГрддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддрд╛ рд╣реИред @apaszke

default
image

@zhengyunqq рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ pin_memory=False рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ True рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдореБрдЭреЗ рдХрд┐рд╕реА рд╕рдорд╛рдзрд╛рди рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред

num_workers рдмрдбрд╝реЗ рд╣реЛрдиреЗ рдкрд░ рдореИрдВ рдЧрддрд┐рд░реЛрдз рд╕реЗ рднреА рдорд┐рд▓рд╛ рд╣реВрдВред

рдореЗрд░реЗ рд▓рд┐рдП, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдзрд╛рдЧрд╛ рдорд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ index_queue.put рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд▓рдЯрдХ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрдХрд┐рдВрдЧ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдорд░рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░рдг рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЕрдирдкрд┐рдХрд▓рд░ рдлреЗрд▓ рд╣реЛрдирд╛ рд╣реИред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдордИ 2017 рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдЗрд╕ рдкрд╛рдпрдерди рдмрдЧрдлрд┐рдХреНрд╕ рддрдХ, рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдзрд╛рдЧрд╛ рдорд░ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдВрддрд╣реАрди рд╣реИрдВрдЧ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧрд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреИрдЪ рдкреНрд░реА-рдлрд╝реЗрдЪрд┐рдВрдЧ рдкреНрд░рд╛рдЗрдорд┐рдВрдЧ рдЪрд░рдг рдореЗрдВ рд╣реИрдВрдЧ рд╣реЛ рд░рд╣рд╛ рдерд╛ред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ SimpleQueue рдЙрдкрдпреЛрдЧ DataLoaderIter рдореЗрдВ Queue рдЬреЛ рдПрдХ рд╕реБрдВрджрд░ рдЕрдкрд╡рд╛рдж рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

UPD: рдореБрдЭрд╕реЗ рдЧрд▓рддреА рд╣реБрдИ рдереА, рдпрд╣ рдмрдЧрдлрд┐рдХреНрд╕ рдкреИрдЪ Queue , рди рдХрд┐ SimpleQueue ред рдпрд╣ рдЕрднреА рднреА рд╕рдЪ рд╣реИ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рд╡рд░реНрдХрд░ рдереНрд░реЗрдб рдСрдирд▓рд╛рдЗрди рдирд╣реАрдВ рд╣реИ рддреЛ SimpleQueue рд▓реЙрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ self.workers = [] ред

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рд╢рдо (рдЕрдиреБрдорддрд┐ рдХреЗ рдмрд┐рдирд╛) рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛, рд╢рд╛рдпрдж рдХрддрд╛рд░ рдпрд╛ рдХреБрдЫ рдФрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ?

рдореБрдЭреЗ рдПрдХ рдРрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдпрд╣ рдХреЛрдб рдлреНрд░реАрдЬ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрднреА рднреА рдХреБрдЫ рднреА рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЕрдЧрд░ рдореИрдВ num_workers = 0 рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛

dataloader = DataLoader(transformed_dataset, batch_size=2, shuffle=True, num_workers=2)
model.cuda()
for i, batch in enumerate(dataloader):
 print(i)

рдЕрдЧрд░ рдореИрдВ рд▓реВрдк рдХреЗ рдкреАрдЫреЗ model.cuda() рдбрд╛рд▓рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рдЪрд▓реЗрдЧрд╛ред

dataloader = DataLoader(transformed_dataset, batch_size=2, shuffle=True, num_workers=2)

for i, batch in enumerate(dataloader):
 print(i)
model.cuda()

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ?

рдореИрдВрдиреЗ рдЗрдореЗрдЬрдиреЗрдЯ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рднреА рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд▓рдЧрд╛рддрд╛рд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рдкрд╣рд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рд▓рдЯрдХрд╛ рд░рд╣реЗрдЧрд╛ (рдФрд░ рд╕рдорд╛рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд╕рд░реНрд╡рд░реЛрдВ рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╡рд╛рд▓реЗ рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рдирд╣реАрдВ), рд▓реЗрдХрд┐рди рд╕рддреНрдпрд╛рдкрди рдкрд░ eval рдХреЗ рджреМрд░рд╛рди рд╣рдореЗрд╢рд╛ рдкрд╣рд▓рд╛ iterред рдЬрдм рдореИрдВ рдорд╢рд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдПрдирд╕реАрд╕реАрдПрд▓ рдЗрд╕ рддрд░рд╣ рдЧрддрд┐рд░реЛрдз рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдкрд╣рд▓реЗ рдпреБрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдлрдВрд╕ рдЧрдпрд╛ред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдХрд╛рдордХрд╛рдЬ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм Ctrl-C рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрдиреНрд╣реЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ:

Traceback (most recent call last):
  File "/home/zhangheng_li/applications/anaconda3/lib/python3.6/multiprocessing/process.py", line 249, in _bootstrap
    self.run()
  File "/home/zhangheng_li/applications/anaconda3/lib/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/home/zhangheng_li/applications/anaconda3/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 44, in _worker_loop
    data_queue.put((idx, samples))
  File "/home/zhangheng_li/applications/anaconda3/lib/python3.6/multiprocessing/queues.py", line 354, in put
    self._writer.send_bytes(obj)
  File "/home/zhangheng_li/applications/anaconda3/lib/python3.6/multiprocessing/connection.py", line 200, in send_bytes
    self._send_bytes(m[offset:offset + size])
  File "/home/zhangheng_li/applications/anaconda3/lib/python3.6/multiprocessing/connection.py", line 398, in _send_bytes
    self._send(buf)
  File "/home/zhangheng_li/applications/anaconda3/lib/python3.6/multiprocessing/connection.py", line 368, in _send
    n = write(self._handle, buf)
KeyboardInterrupt
Traceback (most recent call last):
  File "scripts/train_model.py", line 640, in <module>
    main(args)
  File "scripts/train_model.py", line 193, in main
    train_loop(args, train_loader, val_loader)
  File "scripts/train_model.py", line 341, in train_loop
    ee_optimizer.step()
  File "/home/zhangheng_li/applications/anaconda3/lib/python3.6/site-packages/torch/optim/adam.py", line 74, in step
    p.data.addcdiv_(-step_size, exp_avg, denom)
KeyboardInterrupt

рдореБрдЭреЗ рдбреЙрдХрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд░реЛрдз рд╣реЛрдиреЗ рдХреА рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рд╕рдорд╕реНрдпрд╛ рдереАред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдбреЙрдХрд░ рдХреЗрд╡рд▓ 64 рдПрдордмреА рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ 1 рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП 440 рдПрдордмреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд╢рд╛рдпрдж @apaszke рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИред

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдлрд┐рд░ рднреА рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдореЗрд░реЗ рдЗрдирдкреБрдЯ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Windows10 рдХреЗ рддрд╣рдд peterjc123 рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдЙрддреНрдХреГрд╖реНрдЯ рдХреЛрдВрдбрд╛ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрд░рд╛ рдкрд╛рдЗрдЯреЛрд░рдЪ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореИрдВ cifar10 рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдХреБрдЫ рд╕реАрдПрдирдПрди рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБред рдбреЗрдЯрд╛рд▓реЛрдбрд░реНрд╕ рдХреЗ рд▓рд┐рдП, num_workers 1 рдкрд░ рд╕реЗрдЯ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ num_workers> 0 рд╣реЛрдиреЗ рд╕реЗ BrokenPipeError рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдФрд░ # 494 рдореЗрдВ рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдореИрдВ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ BrokenPipeError рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдХреБрдЫ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рддреНрд░реБрдЯрд┐ рд╣реИред рддреНрд░реБрдЯрд┐ рд╣рдореЗрд╢рд╛ рд▓рдЧрднрдЧ 50 рдпреБрдЧреЛрдВ рдореЗрдВ рд╣реЛрддреА рд╣реИ, рдкрд┐рдЫрд▓реЗ рдпреБрдЧ рдХреА рдорд╛рдиреНрдпрддрд╛ рдХреЗ рдареАрдХ рдмрд╛рдж рдФрд░ рдЕрдЧрд▓реЗ рдпреБрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗред 90% рдмрд╛рд░ рдпрд╣ рдареАрдХ 50 рдпреБрдЧ рд╣реИ, рджреВрд╕рд░реА рдмрд╛рд░ рдпрд╣ 1 рдпрд╛ 2 рдпреБрдЧреЛрдВ рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕реБрд╕рдВрдЧрдд рд╣реИред num_workers=0 рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧреАред

@paulguerrero рд╕рд╣реА рд╣реИред рдореИрдВрдиреЗ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЛ 64M рд╕реЗ 2G рддрдХ рдмрдврд╝рд╛рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред рд╢рд╛рдпрдж рдпрд╣ рдбреЛрдХрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред

@berzjackson рдпрд╣ рдХреЛрдВрдбрд╛ рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рдЬреНрдЮрд╛рдд рдмрдЧ рд╣реИред рдирд╡реАрдирддрдо рд╕реАрдЖрдИ рдмрд┐рд▓реНрдб рдореЗрдВ рдлрд┐рдХреНрд╕реНрдбред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ ~600 рд▓реЛрдЧ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдирдпрд╛ рдХреЛрд░реНрд╕ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╕реЛрдорд╡рд╛рд░ рдХреЛ рдкрд╛рдЗрдЯреЛрд░рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдордВрдЪ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЛрдЧ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреБрдЫ AWS P2 рдкрд░, рдХреБрдЫ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ GTX 1070, рдХреБрдЫ Titan X)ред

рдЬрдм рд╡реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХрд╛ рдЕрдВрдд рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

~/anaconda2/envs/fastai/lib/python3.6/multiprocessing/connection.py in _recv_bytes(self, maxsize)
    405 
    406     def _recv_bytes(self, maxsize=None):
--> 407         buf = self._recv(4)
    408         size, = struct.unpack("!i", buf.getvalue())
    409         if maxsize is not None and size > maxsize:

~/anaconda2/envs/fastai/lib/python3.6/multiprocessing/connection.py in _recv(self, size, read)
    377         remaining = size
    378         while remaining > 0:
--> 379             chunk = read(handle, remaining)
    380             n = len(chunk)
    381             if n == 0:

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ num_workers=4, pin_memory=False. рдореИрдВрдиреЗ рдЙрдирд╕реЗ рдЙрдирдХреА рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рдпрд╛ рд╣рдо рдкрд╛рдЗрдЯреЛрд░рдЪ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)? (num_workers рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЪреАрдЬреЗрдВ рдХрд╛рдлреА рдзреАрдореА рд╣реЛ рдЬрд╛рдПрдВрдЧреАред)

рдореИрдВ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╣реВрдБ @ jph00 (рдзрдиреНрдпрд╡рд╛рдж рдЬреЗрд░реЗрдореА! :)) рд╕рдВрджрд░реНрднрд┐рддред рдореИрдВрдиреЗ "num_workers=0" рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдЕрднреА рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬрд╣рд╛рдВ resnet34 рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред рдлрд┐рдЯрд┐рдВрдЧ рднреА рдмрд╣реБрдд рдзреАрдореА рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЬреАрдм рдмрд╛рдд рд╣реИ: рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдиреЛрдЯрдмреБрдХ рд╕рддреНрд░ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдХ рдмрд╛рд░ рдЬрдм рдбреЗрдЯрд╛ рд▓реЛрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рдЯрд┐рдВрдЧ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдИ рдЬрд╛рддреА рд╣реИ, рддреЛ рдореИрдВ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдо рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЪрд░рдгреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВ ... рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ 4 num_workers рдХреЗ рд╕рд╛рде рднреА, рдФрд░ GPU рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдореИрдВ PyTorch 0.2.0_4, Python 3.6.2, Torchvision 0.1.9, Ubuntu 16.04 LTS рдкрд░ рд╣реВрдВред рдореЗрд░реЗ рдЯрд░реНрдорд┐рдирд▓ рдкрд░ "df -h" рдХрд░рдиреЗ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ /dev/shm рдкрд░ 16GB рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рдХрдо рдерд╛ред

рдпрд╣рд╛рдВ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИ рдЬрд╣рд╛рдВ рд▓реЛрдбрд┐рдВрдЧ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП num_workers=0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ)
(рдЫреЛрдЯреЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореБрдЭреЗ рд╕рдм рдХреБрдЫ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝реВрдо рдЖрдЙрдЯ рдХрд░рдирд╛ рдкрдбрд╝рд╛...)

screenshot 2017-11-01 13 55 46

@apiltamang рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИ - рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд▓рдХреНрд╖рдгреЛрдВ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдирд┐рджрд╛рди fast.ai рдлреЛрд░рдо рдкрд░ рдХрд░реЗрдВ, рдпрд╣рд╛рдВ рдирд╣реАрдВред

рдЗрд╕ ASAP рдореЗрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ!

@soumith рдореИрдВрдиреЗ @apaszke рдХреЛ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдирд┐рдЬреА рдордВрдЪ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХреА рд╣реИ рдФрд░ рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд▓реЗ рдЫрд╛рддреНрд░реЛрдВ рд╕реЗ рд╣рдореЗрдВ рдЙрдирдХреЗ рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рд╣реИред

@ jph00 рд╣рд╛рдп рдЬреЗрд░реЗрдореА, рдХреНрдпрд╛ рдХрд┐рд╕реА рдЫрд╛рддреНрд░ рдиреЗ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП @apaszke рдХреЗ рд░реВрдк рдореЗрдВ shm рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА? рдХреНрдпрд╛ рдпрд╣ рдорджрджрдЧрд╛рд░ рдерд╛?

@SsnL рдЫрд╛рддреНрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдкреБрд╖реНрдЯрд┐ рдХреА рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рд╣реИ, рдФрд░ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рд╕реЗ рднреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рд╣реИред

@ jph00 рдзрдиреНрдпрд╡рд╛рдж! рдХрдо рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдХреЗ рдХрд╛рд░рдг рдореИрдВрдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣реИрдВрдЧ рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ред рдЕрдЧрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╣реАрдВ рдФрд░ рд╣реИ рддреЛ рдореБрдЭреЗ рдФрд░ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛! рдХреНрдпрд╛ рдЖрдк рдореЗрд░реЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдЬрд╝рд░реВрд░ - рдпрд╣рд╛рдБ рд╡рд╣ рдиреЛрдЯрдмреБрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: https://github.com/fastai/fastai/blob/master/courses/dl1/lesson1.ipynb ред рдЫрд╛рддреНрд░реЛрдВ рдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╡реЗ рд╕рднреА рдХрдХреНрд╖реЛрдВ рдХреЛ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╡реЗ рдиреЛрдЯрдмреБрдХ рдореЗрдВ рд╣реИрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдиреЛрдЯрдмреБрдХ рд╕реНрд╡-рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдХреЛрдИ рдкрд░реЗрд╢рд╛рдиреА рд╣реИ - рдЗрд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИред

рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдк рджреЛрд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдХреЛрдИ рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╛ рдиреЛрдЯрдмреБрдХ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕рд╕реЗ рдмрдЪ рдЬрд╛рдПрдЧрд╛?

@ jph00 рдЕрднреА рдХреЛрдб рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╢рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЖрд╢рд╛ рд╣реИ!

рдореИрдВ рдПрдХ рдкреАрдЖрд░ рднреА рднреЗрдЬреВрдВрдЧрд╛ рддрд╛рдХрд┐ рд╢рдо рд╕реАрдорд╛ рдХреЛ рдорд╛рд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рд▓рдЯрдХрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ CUDA 9 AMI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд╡реАрдирддрдо Pytorch conda рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдирдП AWS P2 рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реАрдзреЗ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБред рдореЗрд░рд╛ рдИрдореЗрд▓ рдореЗрд░реЗ рдирд╛рдо рдХрд╛ рдкрд╣рд▓рд╛ рдЕрдХреНрд╖рд░ рд╣реИ fast.ai

@ jph00 рдиреЗ рдЕрднреА рдЖрдкрдХреЛ рдПрдХ рдИрдореЗрд▓ рднреЗрдЬрд╛ рд╣реИ :) рдзрдиреНрдпрд╡рд╛рдж!

@ jph00 рдФрд░ FYI рдХрд░реЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдореЗрд░реЗ рдмреЙрдХреНрд╕ рдкрд░ 400MB рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рд▓реАред рддреЛ рдпрд╣ рдЙрди рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдереА рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдореБрдлреНрдд рд╢рдо рд╣реИред

рдареАрдХ рд╣реИ рддреЛ рдореИрдВрдиреЗ рдореВрд▓ рдореБрджреНрджреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдУрдкрдирд╕реАрд╡реА рдФрд░ рдкрд╛рдЗрдЯреЛрд░рдЪ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрднреА-рдХрднреА рдПрдХ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдЦреЗрд▓рддреЗ рд╣реИрдВред рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рд╣рдорд╛рд░реЗ рдмреЙрдХреНрд╕ рдкрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдорд╕реНрдпрд╛рдПрдВ (рдирдП рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг CUDA 9 AMI рдкрд░ P2 рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде)ред рд╕рднреА cv2 рдХреЙрд▓ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд▓реЙрдХрд┐рдВрдЧ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ cv2.setNumThreads(0) рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдареАрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ:

from multiprocessing import set_start_method
set_start_method('spawn')

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд▓рдЧрднрдЧ 15% рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдУрдкрдирд╕реАрд╡реА рдЬреАрдердм рдореБрджреНрджреЗ рдореЗрдВ рд╕рд┐рдлрд╛рд░рд┐рд╢ https://github.com/tomMoral/loky рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд░реЙрдХ-рд╕реЙрд▓рд┐рдб рдкрд╛рдпрд╛ рд╣реИред рдЕрддреНрдпрд╛рд╡рд╢реНрдпрдХ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдХреЗ рд▓рд┐рдП рд▓реЛрдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдкрд╛рдЗрдЯреЛрд░рдЪ рдХреА рдХрддрд╛рд░ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдП рддрд╛рдХрд┐ рдпреЗ рдЕрдирдВрдд рд▓рдЯрдХреЗ рдкрдХрдбрд╝реЗ рдЬрд╛ рд╕рдХреЗрдВред

рдПрдлрд╡рд╛рдИрдЖрдИ, рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдЕрд▓рдЧ рдлрд┐рдХреНрд╕ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХреНрдпреЛрдВрдХрд┐ 'рд╕реНрдкреЙрди' рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ 2-3x рдзреАрдорд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ - рдЬреЛ рдХрд┐ рдореИрдВрдиреЗ рдЙрди рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рдХреБрдЫ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдиреАрдВрдж рдЬреЛрдбрд╝ рджреА рдЬреЛ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рднреА рдареАрдХ рд╣реЛ рдЧрдИ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢рд╛рдпрдж рдЖрджрд░реНрд╢ рдирд╣реАрдВ!

рдЗрд╕рдореЗрдВ рдЦреЛрджрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдЬрд╛рдирдХрд░ рдЦреБрд╢реА рд╣реБрдИ рдХрд┐ рдЖрдкрдХреЛ рджреЛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓ рдЧрдП рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдЕрдиреБрдХреНрд░рдордг рдкрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдЬреЛрдбрд╝рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдХрд▓ рдЙрд╕ рдорд╛рд░реНрдЧ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЖрдкрд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВрдЧреЗред

cc @soumith рд▓реЛрдХреА рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдо рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдЬреЛ рд▓реЛрдЧ рдЙрдкрд░реЛрдХреНрдд рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП https://github.com/opencv/opencv/issues/5150 рдкрд░ opencv рдореБрджреНрджреЗ рдкрд░ рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪрд┐рдд рдлрд┐рдХреНрд╕ рд╣реИ - рдореИрдВрдиреЗ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ProcessPoolExecutor.map() рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИ рдФрд░ рдЯреЗрдВрд╕рд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдореВрд▓ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рджреЗрдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ рд╣реИ, рдФрд░ рдпрд╣ рдЙрди рд╕рднреА рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рд╕реНрдерд┐рд░ рд░рд╣рд╛ рд╣реИ рдЬрд┐рди рдкрд░ рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рдХреЛрдб рднреА рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ https://github.com/fastai/fastai/blob/master/fastai/dataloader.py рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдкреАрдЖрдИ рдорд╛рдирдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдорд╛рди рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдПрдХ рдкрд╛рдЗрдЯреЛрд░рдЪ рдЯреЗрдВрд╕рд░ рдирд╣реАрдВ рд▓реМрдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЗрд╕реЗ numpy arrays рдпрд╛ python рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреБрд░рд╛рдиреЗ рдкрд╛рдпрдерди рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд░ рд╡рд╣рд╛рдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

(рдЗрд╕ рдкрде рдХреЗ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╣рд╛рд▓ рдХреЗ GPU рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг/рд╕рдВрд╡рд░реНрдзрди рдХрд░рддреЗ рд╕рдордп рдкрд╛рдпрд╛ рдХрд┐ рдореИрдВ GPU рдХреЛ рд╡реНрдпрд╕реНрдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рддреЗрдЬреА рд╕реЗ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рдЕрдЧрд░ рдореИрдВрдиреЗ Pytorch CPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд┐рдпрд╛ рдерд╛ рд╕рдВрдЪрд╛рд▓рди; рд╣рд╛рд▓рд╛рдБрдХрд┐ opencv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рддреЗрдЬрд╝ рдерд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореИрдВ GPU рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред)

рдУрд╣, рдЕрдЧрд░ рдпрд╣ рдПрдХ рдУрдкрдирд╕реАрд╡реА рдореБрджреНрджрд╛ рд╣реИ рддреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдереНрд░реЗрдб рдкреВрд▓ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдлреЛрд░реНрдХрд┐рдВрдЧ рдЦрддрд░рдирд╛рдХ рд╣реЛрддреА рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рд░рдирдЯрд╛рдЗрдо рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдирд╣реАрдВ рд╣реИ), рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ PyTorch рдЯреЗрдВрд╕рд░ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рдкрд╛рдПрдЧрд╛ред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдЧрддрд┐рд░реЛрдз рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИ рдФрд░ @SsnL рдЙрд╕ рдкрд░ рд╣реИред

@ jph00 рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкрд┐рд▓реЛ-рд╕рд┐рдо рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ? рдЗрд╕реЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЯреЙрд░реНрдЪрд╡рд┐рдЬрд╝рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рдЕрдЪреНрдЫреА рдмрд╛рддреЗрдВ рд╕реБрдиреА рд╣реИрдВред

рд╣рд╛рдБ рдореИрдВ рддрдХрд┐рдП-рд╕рд┐рдо рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рдЬрд╛рдирддрд╛ рд╣реВрдБред рдпрд╣ рдХреЗрд╡рд▓ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ, рдзреБрдВрдзрд▓рд╛ рдХрд░рдиреЗ рдФрд░ RGB рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИред

рдореИрдВ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЖрдк рдпрд╣рд╛рдВ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдУрдкрдирд╕реАрд╡реА рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ (рд╡реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд╛рдпрдерди рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рдЕрдзрд┐рдХ рдЖрдо рддреМрд░ рдкрд░ рд╕рдорд░реНрдерди рджреЗрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдХреЗрд▓реЗ рдкрд╛рдЗрдЯреЛрд░рдЪ рдХреЗ рд╡рд┐рд╢реЗрд╖-рдЖрд╡рд░рдг рд╡рд╛рд▓реЗ рдмрд╣реБ-рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ) рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкрд╛рдЗрдЯреЛрд░рдЪ рдореБрджреНрджрд╛ рднреА рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкрд╛рдЗрдЯреЛрд░рдЪ рдЪреБрдкрдЪрд╛рдк рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ рджрд┐рдП рдмрд┐рдирд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ (рдЖрдИрдПрдордУ) рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдмрд╣реБрдд рд╕реЗ рд╕реНрдорд╛рд░реНрдЯ рд▓реЛрдЧ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╕рд╛рд▓реЛрдВ рдореЗрдВ рдмреЗрд╣рддрд░ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ рдпрд╣ рдПрдХ рддрд░рд╣ред рдЖрдк рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рд▓рд╛рдП рдмрд┐рдирд╛ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рд╕реЗ рдЙрдзрд╛рд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

рдУрд▓рд┐рд╡рд┐рдпрд░ рдЧреНрд░рд┐рд╕реЗрд▓, рдЬреЛ рд▓реЛрдХреА рдХреЗ рдкреАрдЫреЗ рдХреЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдХреЗ рдкрд╛рд╕ рдкрд╛рдЗрдерди рдореЗрдВ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реНрд▓рд╛рдЗрдб рдбреЗрдХ рд╣реИ: http://ogrisel.github.io/decks/2017_euroscipy_parallelism/

рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЕрдм рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рд▓рд┐рдЦрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдкрд╛рдЗрдЯреЛрд░рдЪ рдХреА рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдореБрджреНрджрд╛ ubuntu 14.04 рдкрд░ Python 2.7 рдкрд░ рдерд╛ред рдореЗрд░рд╛ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдПрдХ sqlite рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ num_workers=0 рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХрднреА-рдХрднреА num_workers=1 рд╕рд╛рде рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рдЙрдЪреНрдЪ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрд▓реНрджреА рдЧрддрд┐рд░реЛрдз рд╣реЛрддрд╛ рд╣реИред рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ recv_bytes рдореЗрдВ рд▓рдЯрдХреА рд╣реБрдИ рд╣реИред

рдЪреАрдЬреЗрдВ рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреАрдВ:

  • рдбреЙрдХрд░ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╕рдордп --shm-size 8G рдпрд╛ --ipc=host рдХрд░рдирд╛
  • рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рд╕реЗрдЧрдореЗрдВрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП echo 16834 | sudo tee /proc/sys/kernel/shmmni рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рдореЗрд░реА рдорд╢реАрди рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ 4096 рдерд╛)
  • pin_memory=True рдпрд╛ pin_memory=False , рдХрд┐рд╕реА рдиреЗ рднреА рдорджрдж рдирд╣реАрдВ рдХреА

рдЬрд┐рд╕ рдЪреАрдЬрд╝ рдиреЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдордЬрд╝рдмреВрддреА рд╕реЗ рдареАрдХ рдХрд┐рдпрд╛, рд╡рд╣ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рдкрд╛рдпрдерди 3 рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣реА рдереАред рдПрдХ рдкрд╛рдпрдерди 3.6 рдЗрдВрд╕реНрдЯреЗрдВрд╕ (рдПрдирд╛рдХреЛрдВрдбрд╛ рд╕реЗ) рдХреЗ рдЕрдВрджрд░ рдорд╢рд╛рд▓ рдХреЗ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реЛ рдЧрдИ рдФрд░ рдЕрдм рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдЕрдм рдФрд░ рд▓рдЯрдХрд╛ рдирд╣реАрдВ рд╣реИред

@apaszke рдпрд╣рд╛рдБ opencv рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдХреНрдпреЛрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, FYI рдХрд░реЗрдВ (рдФрд░ рдХреНрдпреЛрдВ рдорд╢рд╛рд▓ рдирдореВрдирд╛ рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ - рдпрд╣ <200 рдЫрд╡рд┐рдпреЛрдВ/рд╕реЗрдХрдВрдб рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ!):
image

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛?

@iqbalu рдКрдкрд░ рджреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЖрдЬрд╝рдорд╛рдПрдВ: https://github.com/fastai/fastai/blob/master/fastai/dataloader.py
рдЗрд╕рдиреЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреА рд▓реЗрдХрд┐рди рдпрд╣ num_workers=0 рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@elbaro рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХрдИ рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╡рд╣рд╛рдВ рдХреБрдЫ рдмрджрд▓рд╛?

@iqbalu fast.ai рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдХрднреА рднреА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХреБрдЫ рдЯреВрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рди рджреЗрдВ

@apaszke @elbaro @ jph00 Fast.ai рдХреЗ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдиреЗ рдбреЗрдЯрд╛ рд░реАрдбрд┐рдВрдЧ рдХреЛ 10x рд╕реЗ рдЕрдзрд┐рдХ рдзреАрдорд╛ рдХрд░ рджрд┐рдпрд╛ред рдореИрдВ num_workers=8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдХреЛрдИ рд╕рдВрдХреЗрдд рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ GIL рдХреЛ рдирд╣реАрдВ рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ

@apaszke рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ рд╕рд╛рдЭрд╛-рд╕реНрдореГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдпреБрдЧреЛрдВ рдХреЗ рдмрд╛рдж рдмрдврд╝рддрд╛ рд░рд╣рддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ 400 рдПрдордмреА рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╣рд░ ~ 20 рд╡реЗрдВ рдпреБрдЧ рдореЗрдВ 400 рдПрдордмреА рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

@iqbalu рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдореИрдВрдиреЗ рдХрдИ рдЪреАрдЬреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ cv2.setNumThreads(0) рдиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреАред

рдзрдиреНрдпрд╡рд╛рдж @jph00

рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реВрдВред cv2.setNumThreads(0) рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп scikit-image рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА cv2 рдХреЛрдб рднреА рдмрджрд▓рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рдкрд╛рд╕ /dev/shm рд▓рд┐рдП 16G рд╣реИред рдПрдХрд╛рдзрд┐рдХ gpus рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдХреЗрд╡рд▓ рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╕рд┐рдВрдЧрд▓ рдЬреАрдкреАрдпреВ рдкрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╕рдорд╛рдзрд╛рди рдкрд░ рдХреЛрдИ рдирдпрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ?

рд╡рд╣реА рддреНрд░реБрдЯрд┐ред рд╕рд┐рдВрдЧрд▓ рдЬреАрдкреАрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП opencv рдереНрд░реЗрдбреНрд╕ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ:
cv2.setNumThreads(0)

рдЗрд╕реЗ pytorch 0.3, cuda 8.0, ubuntu 16.04 . рдХреЗ рд╕рд╛рде рднреА рд╣рд┐рдЯ рдХрд░реЗрдВ
рдХреЛрдИ рдУрдкрдирд╕реАрд╡реА рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдореИрдВ pytorch 0.3, cuda 8.0, ubuntu 14.04 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВрдиреЗ cv2.resize () рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╣реИрдВрдЧ рдХреЛ рджреЗрдЦрд╛

cv2.setNumThreads(0) рдиреЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреАред

рдореИрдВ рджреЛ 1080Ti рдФрд░ 32GB RAM рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЕрдЬрдЧрд░ 3.6, pytorch 0.3.0, cuda 8.0 рдФрд░ ubuntu 17.04 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП 8 рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдЧрддрд┐рд░реЛрдз рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ (рдпрд╣ рдкрд╣рд▓реЗ рдпреБрдЧ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ)ред рдЬрдм рдореИрдВ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ 4 рддрдХ рдХрдо рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдореИрдВрдиреЗ 80 рдпреБрдЧ рдЪрд▓рд╛рдП)ред

рдЬрдм рдЧрддрд┐рд░реЛрдз рд╣реЛрддрд╛ рд╣реИ, рддрдм рднреА рдореЗрд░реЗ рдкрд╛рд╕ RAM рдкрд░ ~ 10GB рдореБрдлрд╝реНрдд рд╣реИред

screenshot from 2018-03-02 19-57-47

рдпрд╣рд╛рдВ рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд▓реЙрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://gist.github.com/milani/42f50c023cdca407115b309237d29c70

рдЕрджреНрдпрддрди: рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ SHMMNI рдХреЛ рдмрдврд╝рд╛рдХрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЙрдмрдВрдЯреВ 17.04 рдкрд░, рдореИрдВрдиреЗ kernel.shmmni=8192 рд╕реЗ /etc/sysctl.conf рдЬреЛрдбрд╝рд╛ред

рд╕рд╛рде рд╣реА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддреЗ рд╣реБрдП, Ubuntu 17.10, Python 3.6, Pytorch 0.3.1, CUDA 8.0ред рдЬрдм рдЧрддрд┐рд░реЛрдз рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рдордп рдЕрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИ рддреЛ рдмрд╣реБрдд рд╕реА RAM рдмрдЪреА рд╣реЛрддреА рд╣реИ - 1-рд╕реЗрдВрдЯ рдпреБрдЧ рдХреЗ рдмрд╛рдж, рдпрд╛ 200-рд╡реЗрдВ рдХреЗ рдмрд╛рдж рд╣реЛ рд╕рдХрддреА рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ kernel.shmmni=8192 рдФрд░ cv2.setNumThreads(0) рд╕рдВрдпреЛрдЬрди рдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╡реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рдереЗред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд╣реАред рдЕрдЧрд░ рдореИрдВ num_workers=4 рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдПрдХ рдЧрддрд┐рд░реЛрдз рдХрд╛ рдЕрдиреБрднрд╡ рд╣реБрдЖред рдореИрдВ рдЙрдмрдВрдЯреВ 17.10, рдкрд╛рдЗрдЯреЛрд░рдЪ 0.3.1, рд╕реАрдпреВрдбреАрдП 9.1, рдкрд╛рдпрдерди 3.6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ 4 рдЕрдЬрдЧрд░ рдзрд╛рдЧреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 1.6 рдЬреАрдмреА рдореЗрдореЛрд░реА рд╣реИ рдЬрдмрдХрд┐ рд╕реАрдкреАрдпреВ (4 рдХреЛрд░) рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░рд╣рддрд╛ рд╣реИред num_workers=0 рд╕реЗрдЯ рдХрд░рдирд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдареАрдХ рдПрдХ рдпреБрдЧ рдХреЗ рдмрд╛рдж рдЬрдорд╛ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдкреБрди: рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдбреЛрдХрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ CUDA 9.1, Pytorch 0.3.1, Python 3.6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВрдиреЗ @ jph00 рдХреЗ Dataloader рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧрдХреЗрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзреАрдорд╛ рдерд╛ред рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдпреБрдЧ рд╕реЗ рдкрд╣рд▓реЗ Pytorch DataLoader рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рд╣реИред рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрджрд╕реВрд░рдд рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ Ubuntu 17.10, CUDA 9.1, Pytorch рдорд╛рд╕реНрдЯрд░ (19/04 рд╕реБрдмрд╣ рд╕рдВрдХрд▓рд┐рдд) рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реА рдореБрджреНрджрд╛ рдерд╛ред рдореЗрд░реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рд╕рдмрдХреНрд▓рд╛рд╕ рдореЗрдВ рдУрдкрдирд╕реАрд╡реА рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

рддрдм рдореИрдВ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реНрдЯрд╛рд░реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ 'рдлреЛрд░реНрдХрд╕реЗрд╡рд░' рд╕реЗ 'рд╕реНрдкреЙрди' рдореЗрдВ рдмрджрд▓рдХрд░ рдЧрддрд┐рд░реЛрдз рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:

# Set multiprocessing start method - deadlock
set_start_method(forkserver')

# Set multiprocessing start method - runs fine
set_start_method('spawn')

рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА! рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛!
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЕрд╕рдВрдЧрддрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдкрд╛рдЗрдЯреЛрд░рдЪ рдЗрд╕реЗ рдХреИрд╕реЗ рдЙрддреНрддреЗрдЬрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ! рдпрд╣ рдкрд╛рдЗрдЯреЛрд░рдЪ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рднреА рд╕рдХрддреА рд╣реИ рдФрд░ рдирд╣реАрдВ рднреА!

рддреЛ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреИрд╕реЗ рд╣реБрдЖ:
_рдореИрдВ BIOS рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ!

рдЗрд╕реЗ рдорд╛рд░ рджреЗрдВред рдХрдо рд╕реЗ рдХрдо рдЗрд╕рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЬрд╛рдПред

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЙрдмрдВрдЯреВ рдкрд╛рдпрдЯреЛрд░рдЪ 0.4, рдкрд╛рдпрдерди 3.6ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА pytorch 0.4 рдФрд░ рдЕрдЬрдЧрд░ 3.6 рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ pytorch рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВ opencv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ num_workers=8 , pin_memory=True рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдКрдкрд░ рдмрддрд╛рдИ рдЧрдИ рд╕рднреА рддрд░рдХреАрдмреЛрдВ рдХреЛ рдЖрдЬрдорд╛рддрд╛ рд╣реВрдВ рдФрд░ cv2.setNumThreads(0) рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред

(1) PyTorch рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдореЗрдВ num_workers=0 рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ (рдКрдкрд░ рджреЗрдЦреЗрдВ) рдпрд╛
(2) cv2.setNumThreads(0) рдХрд╛рдлреА рдмрдбрд╝реЗ num_workers рдХреЗ рд╕рд╛рде рднреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ

рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдереНрд░реЗрдб рд▓реЙрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред

рдореИрдВрдиреЗ cv2.setNumThreads(0) рдХреЛ рдЕрдкрдиреА рдореБрдЦреНрдп рдкрд╛рдпрдерди рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдУрд░ рдХрд╣реАрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рддрдм рд╕реЗ рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрднреА рдирд╣реАрдВ рд╣реБрдИ рд╣реИред

рд╣рд╛рдВ, рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рдореБрджреНрджреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХрд╛рдВрдЯреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реИрдВред рд╕реНрдкреЙрди рд╕реНрдЯрд╛рд░реНрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП, рдбреЗрдбрд▓реЙрдХ рд╕рдорд╕реНрдпрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЛ nn.DataParallel рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрддрд╛ рд╣реВрдВ рдФрд░ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдореЗрдВ num_workers> 0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред Nn.DataParallel рд░реИрдкрд░ рдХреЛ рд╣рдЯрд╛рдХрд░, рдореИрдВ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВред
CUDA_VISIBLE_DEVICES=0 рдЕрдЬрдЧрд░ myscript.py --split 1
CUDA_VISIBLE_DEVICES=1 рдЕрдЬрдЧрд░ myscript.py --split 2

рдПрдХрд╛рдзрд┐рдХ GPU рдХреЗ рдмрд┐рдирд╛, рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдзреАрдореА рдЪрд▓рддреА рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рднрд╛рдЬрди рдкрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВред

рдореБрдЭреЗ Python 3.6.2/Pytorch 0.4.0 рдкрд░ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдФрд░ рдореИрдВрдиреЗ рдкрд┐рди_рдореЗрдореЛрд░реА рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ, рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рд╕реЗ рдКрдкрд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдореИрдВ рд╕реНрдХреАрдореЗрдЬ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ (рдореИрдВ рд╕реАрд╡реА 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ !!), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдирд╛рдпрд╛рд╕ рд╣реА рдЙрда рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╕рд┐рд░реНрдл рдХрдВрд╕реЛрд▓ рджреЗрдЦрдирд╛ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред

@ jinh574 рдореИрдВрдиреЗ рдЕрднреА рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 0 рдкрд░ рд╕реЗрдЯ рдХреА рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@Shuailong рдореБрдЭреЗ рдмрдбрд╝реЗ рдЖрдХрд╛рд░ рдХреА рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЧрддрд┐ рдХреЗ рдХрд╛рд░рдг рдЙрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдореБрдЭреЗ Python 3.6/Pytorch 0.4.0 рдкрд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреНрдпрд╛ pin_memory рд╡рд┐рдХрд▓реНрдк рдХреБрдЫ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ?

рдпрджрд┐ рдЖрдк PyTorch рд╕рдВрд╕реНрдХрд░рдг <0.4 рдХреЗ рд╕рд╛рде Collate_fn, рдФрд░ num_workers>0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ __getitem__() рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╢реВрдиреНрдп рдордВрдж рдЯреЗрдиреНрд╕рд░ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╛ рдЙрдиреНрд╣реЗрдВ numpy Arrays рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░реЗрдВред

рдореЗрд░реЗ рдкрд╛рд╕ num_workers=0 рдпрд╛ cv2.setNumThreads(0) рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдпрд╣ рдЗрди рджреЛ рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдХрд┐рд╕реА рдФрд░ рдХреЛ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ?

рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/runpy.py", рдкрдВрдХреНрддрд┐ 193, _run_module_as_main рдореЗрдВ
"__main__", mod_spec)
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/runpy.py", рд▓рд╛рдЗрди 85, _run_code рдореЗрдВ
рдирд┐рд╖реНрдкрд╛рджрди (рдХреЛрдб, run_globals)
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/site-packages/torch/distributed/launch.py", рд▓рд╛рдЗрди 209, рдореЗрдВ
рдореБрдЦреНрдп()
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/site-packages/torch/distributed/launch.py", рд▓рд╛рдЗрди 205, рдореБрдЦреНрдп рдореЗрдВ
рдкреНрд░рдХреНрд░рд┐рдпрд╛ред рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ ()
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/subprocess.py", рд▓рд╛рдЗрди 1457, рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ
(рдкреАрдЖрдИрдбреА, рдПрд╕рдЯреАрдПрд╕) = рд╕реНрд╡рдпрдВ._try_wait(0)
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/subprocess.py", рд▓рд╛рдЗрди 1404, _try_wait рдореЗрдВ
(рдкреАрдЖрдИрдбреА, рдПрд╕рдЯреАрдПрд╕) = рдУрдПрд╕ рд╡реЗрдЯрдкрд┐рдб (рд╕реЗрд▓реНрдл.рдкрд┐рдб, рд╡реЗрдЯ_рдлреНрд▓реИрдЧреНрд╕)
рдХреАрдмреЛрд░реНрдб рдЗрдВрдЯрд░рдкреНрдЯ

рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/multiprocessing/process.py", рд▓рд╛рдЗрди 258, _bootstrap рдореЗрдВ
рд╕реЗрд▓реНрдл.рд░рди ()
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/multiprocessing/process.py", рд▓рд╛рдЗрди 93, рдЪрд▓ рд░рд╣реА рд╣реИ
self._target( self._args, * self._kwargs)
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/site-packages/torch/utils/data/dataloader.py", рд▓рд╛рдЗрди 96, _worker_loop рдореЗрдВ
рдЖрд░ = index_queue.get (рд╕рдордпрдмрд╛рд╣реНрдп = MANAGER_STATUS_CHECK_INTERVAL)
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/multiprocessing/queues.py", рд▓рд╛рдЗрди 104, рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ
рдпрджрд┐ рд╕реНрд╡рдпрдВ рдирд╣реАрдВред_рдкреЛрд▓ (рд╕рдордпрдмрд╛рд╣реНрдп):
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/multiprocessing/connection.py", рд▓рд╛рдЗрди 257, рдкреЛрд▓ рдореЗрдВ
рд╕реНрд╡рдпрдВ рд▓реМрдЯреЗрдВ._рдкреЛрд▓ (рд╕рдордп рд╕рдорд╛рдкреНрдд)
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/multiprocessing/connection.py", рд▓рд╛рдЗрди 414, _poll рдореЗрдВ
рдЖрд░ = рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ ([рд╕реНрд╡рдпрдВ], рд╕рдордп рд╕рдорд╛рдкреНрдд)
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/multiprocessing/connection.py", рд▓рд╛рдЗрди 911, рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ
рддреИрдпрд╛рд░ = рдЪрдпрдирдХрд░реНрддрд╛ред рдЪрдпрди рдХрд░реЗрдВ (рд╕рдордпрдмрд╛рд╣реНрдп)
рдлрд╝рд╛рдЗрд▓ "/opt/conda/envs/pytorch-py3.6/lib/python3.6/selectors.py", рдкрдВрдХреНрддрд┐ 376, рдЪрдпрди рдореЗрдВ
fd_event_list = self._poll.poll (рд╕рдордпрдмрд╛рд╣реНрдп)
рдХреАрдмреЛрд░реНрдб рдЗрдВрдЯрд░рдкреНрдЯ

рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг '0.5.0a0+f57e4ce' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдпрд╛ рддреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдХреЛ рд░рджреНрдж рдХрд░рдирд╛ (num_workers=0) рдпрд╛ cv2.setNumThreads(0) рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдкреВрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ #11985 рдХреЛ рд╕рднреА рд░реБрдХрд╛рд╡рдЯреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬрдм рддрдХ рдХрд┐ рдЖрдк рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╕рдордп рдкрд░ рдмрд╛рдзрд┐рдд рди рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╣рдо рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ)ред рдЕрдм рдЬрдм рдЗрд╕рдХрд╛ рд╡рд┐рд▓рдп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

cv2 рдХреЗ рд╕рд╛рде рд╣реИрдВрдЧ рднреА рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ cv2 рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЦреЗрд▓рддрд╛ рд╣реИред

рдЕрднреА рднреА рдЗрд╕реЗ torch_nightly-1.0.0.dev20181029 рд░реВрдк рдореЗрдВ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпрд╛ рдкреАрдЖрд░ рдХреЛ рдЕрднреА рддрдХ рд╡рд╣рд╛рдВ рд╡рд┐рд▓рдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

@Evpok рдЗрд╕реЗ рд╡рд╣реАрдВ рдорд┐рд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдкреИрдЪ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рдЧрддрд┐рд░реЛрдз рд╕рдВрднрд╡ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЖрд╕рд╛рди рд░реЗрдкреНрд░реЛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдЕрдкрдиреА рддрд░рдл рд╕реЗ рдПрдХ рдЕрд╕рдВрдмрдВрдзрд┐рдд рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЧрдбрд╝рдмрдбрд╝реА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред

рдирдорд╕реНрддреЗ @Evpok
рдореИрдВ torch_nightly-1.0.0 рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рд╣реИ?

рдпрджрд┐ рдЖрдк PyTorch рд╕рдВрд╕реНрдХрд░рдг <0.4 рдХреЗ рд╕рд╛рде Collate_fn, рдФрд░ num_workers>0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ __getitem__() рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╢реВрдиреНрдп рдордВрдж рдЯреЗрдиреНрд╕рд░ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╛ рдЙрдиреНрд╣реЗрдВ numpy Arrays рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдЬрд╝реАрд░реЛ рдбрд┐рдо рдЯреЗрдВрд╕рд░ рд▓реМрдЯрдиреЗ рдХреА рдЕрдкрдиреА рдмрдЧ рддрдп рдХреА рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред

@ zimenglan-sysu-512 рдореБрдЦреНрдп рдореБрджреНрджрд╛ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рдерд╛: spawn рдпрд╛ forkserver (рдЬреЛ CPU-GPU рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмреАрдЪ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдмрд▓реНрдХрд┐ рд╕реАрдорд┐рдд рд╣реИ рдФрд░ рдирд╣реАрдВ рдореИрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреА рддрд░рд╣ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред

рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдиреЗ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд╡реАрдирддрдо рдУрдкрдирд╕реАрд╡реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ( 3.4.0.12 рд╕реЗ 3.4.3.18 рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреБрдЫ рдирд╣реАрдВ):
sudo pip3 install --upgrade opencv-python

@ рджреЗрдЦреЗрдВ - рдпрд╣ рдЬрд╛рдирдХрд░ рдЦреБрд╢реА рд╣реБрдИ рдХрд┐ рдУрдкрдирд╕реАрд╡реА рдиреЗ рдЙрдирдХреА рдмрд╛рдд рддрдп рдХрд░ рджреА :)

рдореИрдВ рдУрдкрдирд╕реАрд╡реА 3.4.3.18 рдкрд░ рдкрд╛рдпрдерди 2.7 рдХреЗ рд╕рд╛рде рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА рдбреЗрдбрд▓реЙрдХ рд╣реЛ рд░рд╣рд╛ рд╣реИред :/

рдХреГрдкрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдпрд╛рд╕ рдХреАрдЬрд┐рдП:

from torch.utils.data.dataloader import DataLoader

рдХреЗ рдмрдЬрд╛рдП

from torch.utils.data import DataLoader

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ:
https://github.com/pytorch/pytorch/blob/656b565a0f53d9f24547b060bd27aa67ebb89b88/torch/utils/data/dataloader.py#L816

рдХреГрдкрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдпрд╛рд╕ рдХреАрдЬрд┐рдП:

from torch.utils.data.dataloader import DataLoader

рдХреЗ рдмрдЬрд╛рдП

from torch.utils.data import DataLoader

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ:

pytorch/рдорд╢рд╛рд▓/рдмрд░реНрддрди/рдбреЗрдЯрд╛/dataloader.py

рд▓рд╛рдЗрди 816 рдореЗрдВ 656рдмреА565
рд╕реБрдкрд░ (рдбреЗрдЯрд╛ рд▓реЛрдбрд░, рд╕реНрд╡рдпрдВ)ред __setattr__ (attr, рд╡реИрд▓)

рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЙрдкрдирд╛рдо рдирд╣реАрдВ рд╣реИ? Torch.utils.data.__init__ рдореЗрдВ рд╡реЗ dataloader.DataLoader рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ

рдореИрдВ рднреА num_workers > 0 рдХреЗ рд╕рд╛рде рд▓рдЯрдХ рд░рд╣рд╛ рдерд╛ред рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдХреЛрдИ opencv рдирд╣реАрдВ рд╣реИ, рдФрд░ /dev/shm рдХреА рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рд╕реБрдЭрд╛рд╡ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореЗрд░рд╛ рдлрд┐рдХреНрд╕ 1.14.1 рд╕реЗ 1.14.5 рддрдХ numpy рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдерд╛:
conda install numpy=1.14.5
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрджрдЧрд╛рд░ рд╣реИред

рд╣рдореНрдо, рдореЗрд░рд╛ рд╕реБрдиреНрди рд╕рдВрд╕реНрдХрд░рдг 1.15.4 рд╣реИ, рдЗрд╕рд▓рд┐рдП 1.14.5 рд╕реЗ рдирдпрд╛ рд╣реИ... рддреЛ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╣рдореНрдо, рдореЗрд░рд╛ рд╕реБрдиреНрди рд╕рдВрд╕реНрдХрд░рдг 1.15.4 рд╣реИ, рдЗрд╕рд▓рд┐рдП 1.14.5 рд╕реЗ рдирдпрд╛ рд╣реИ... рддреЛ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

Idk, рдореЗрд░реЗ рдЕрдкрдбреЗрдЯ рдСрдл numpy рдиреЗ рднреА mkl рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред

рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреМрди рд╕рд╛ рдПрдордХреЗрдПрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ? рдореЗрд░рд╛ 2019 рд╣реИ (рдмрд┐рд▓реНрдб 144) рдФрд░ рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдЬрд┐рдирдореЗрдВ рдЙрдирдХреЗ рдирд╛рдо рдкрд░ рдПрдордХреЗрдПрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ:

рдПрдордХреЗрдПрд▓-рд╕реЗрд╡рд╛ 1.1.2 py37he904b0f_5
mkl_fft 1.0.6 py37hd81dba3_0
mkl_random 1.0.2 py37hd81dba3_0

рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреМрди рд╕рд╛ рдПрдордХреЗрдПрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ? рдореЗрд░рд╛ 2019 рд╣реИ (рдмрд┐рд▓реНрдб 144) рдФрд░ рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдЬрд┐рдирдореЗрдВ рдЙрдирдХреЗ рдирд╛рдо рдкрд░ рдПрдордХреЗрдПрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ:

рдПрдордХреЗрдПрд▓-рд╕реЗрд╡рд╛ 1.1.2 py37he904b0f_5
mkl_fft 1.0.6 py37hd81dba3_0
mkl_random 1.0.2 py37hd81dba3_0

conda list | grep mkl
mkl                       2018.0.1             h19d6760_4
mkl-service               1.1.2            py36h17a0993_4

рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдирд╡реАрдирддрдо рдкрд╛рдЗрдЯреЛрд░рдЪ рдореЗрдВ рд╣реИрдВрдЧ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдПрдХ рдЫреЛрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рдЧрддрд┐рд░реЛрдз рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдПрдХ рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рд╣реЛред

pin_memory=True рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред

рдореЗрд░реЗ рд▓рд┐рдП pin_memory=True рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЕрднреА рднреА 70 рдпреБрдЧреЛрдВ рдХреЗ рдмрд╛рдж рдЕрдЯрдХ рдЧрдпрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдм рддрдХ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ num_workers=0 , рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдзреАрдореА рд╣реИред

рдореИрдВ рднреА рдЧрддрд┐рд░реЛрдз рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдмрд╣реБрдд рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ)ред pin_memory рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ Numpy рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдорд╢реАрди рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдХрдИ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ (рдФрд░ рд╡реИрд╕реЗ, рдпрд╣ GIL рдХреЗ рдХрд╛рд░рдг рдкрд╛рдпрдерди рдореЗрдВ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд░реВрдк рд╕реЗ рдЧрд╣рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдмреЗрд╣рддрд░ рд╣реИ)

Pytorch1.0, Pillow5.0.0 numpy1.16.1 python3.6 . рдореЗрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐

рдореБрдЭреЗ рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рдореИрдВрдиреЗ pin_memory=True рдФрд░ num_workers=0 ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдПрдХ рдмрд╛рдд рдЬреЛ рдореИрдВрдиреЗ рджреЗрдЦреА рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдБ, рддреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдХреЗрд╡рд▓ рд╕рдВрдкреВрд░реНрдг рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреБрдирд░рд╛рд░рдВрдн рдиреЗ рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рддрдп рдХрд┐рдпрд╛ред

рдореБрдЭреЗ рднреА рдРрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдерд╛ред рдХреБрдЫ рдХреЛрдб рдореЗрдВ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди (рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛) d_iter.next() рдкрд░ рд▓рдЯрдХрд╛ рд░рд╣реЗрдЧрд╛:

def get_next_batch(d_iter, loader):
    try:
        data, label = d_iter.next()
    except StopIteration:
        d_iter = iter(loader)
        data, label = d_iter.next()
    return data, label

рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИрдХ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдЫреЛрдЯреА рд╕реА рджреЗрд░реА рдЬреЛрдбрд╝рдирд╛ рдерд╛

trn_X, trn_y = get_next_batch(train_data_iter, train_loader)
time.sleep(0.003)
val_X, val_y = get_next_batch(valid_data_iter, valid_loader)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЗрд░реА рдиреЗ рдХреБрдЫ рдЧрддрд┐рд░реЛрдз рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХреА?

рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорд┐рд▓ рд░рд╣рд╛ рд╣реВрдВред рдкрд╛рдЗрдЯреЛрд░рдЪ 1.0 рдФрд░ рдкрд╛рдпрдерди 3.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЬрдм рдореИрдВ рдПрдХрд╛рдзрд┐рдХ рдбреЗрдЯрд╛_рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдпрд╣ рдмрдЧ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдпрджрд┐ рдореИрдВ 3 рд╕реЗ рдХрдо рдбреЗрдЯрд╛_рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдпрд╛ рдПрдХрд▓ GPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдмрдЧ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдХреЛрд╢рд┐рд╢ рдХреА:

  1. рд╕рдордп рд╕реЛ рдЬрд╛рдУ (0.003)
  2. pin_memory=рд╕рд╣реА/рдЧрд▓рдд
  3. num_workers=0/1
  4. рдорд╢рд╛рд▓ рд╕реЗ.utils.data.dataloader рдЖрдпрд╛рдд DataLoader
  5. 8192 рдХреЛ /proc/sys/kernel/shmmni . рдкрд░ рд▓рд┐рдЦрдирд╛
    рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпрд╛ рдХреЛрдИ рдЙрдкрд╛рдп рд╣реИ?

рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ cv2.setNumThreads(0) рдЬреЛрдбрд╝реЗрдВ
рдореЗрд░реЗ рдкрд╛рд╕ 2 рдбреЗрдЯрд╛рд▓реЛрдбрд░ рд╣реИрдВ, рдЬреЛ рдЯреНрд░реЗрди рдФрд░ рд╡реИрд▓ рдХреЗ рд▓рд┐рдП рд╣реИрдВ
рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдореВрд▓реНрдпрд╛рдВрдХрдирдХрд░реНрддрд╛ рдЪрд▓рд╛ рд╕рдХрддрд╛ рдерд╛ред

рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕ рдмрдЧ рдХрд╛ рд╕рд╛рдордирд╛ pytorch 1.1 рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рд╣реИред рдПрдХ рд╣реА рдЬрдЧрд╣ рдкрд░ рджреЛ рдмрд╛рд░ рдЕрдЯрдХ рдЧрдпрд╛: 99рд╡реЗрдВ рдпреБрдЧ рдХрд╛ рдЕрдВрддред pin_memory рдХреЛ False рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛> 0, рдкрд┐рди рдореЗрдореЛрд░реА рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ cv2.setNumThreads(0) рдЬреЛрдбрд╝реЗрдВ
рдореЗрд░реЗ рдкрд╛рд╕ 2 рдбреЗрдЯрд╛рд▓реЛрдбрд░ рд╣реИрдВ, рдЬреЛ рдЯреНрд░реЗрди рдФрд░ рд╡реИрд▓ рдХреЗ рд▓рд┐рдП рд╣реИрдВ
рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдореВрд▓реНрдпрд╛рдВрдХрдирдХрд░реНрддрд╛ рдЪрд▓рд╛ рд╕рдХрддрд╛ рдерд╛ред

рдпрд╣ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж

рдЬрдм рдореИрдВ рдПрдХ рдпреБрдЧ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рдпреБрдЧ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред

рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорд┐рд▓реЛред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдорд╕реНрдпрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдореИрдВ opencv-python рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ (рдореИрдВрдиреЗ рдкрд╣рд▓реЗ opencv3 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ)ред opencv-python рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдпрд╣ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ

2019/06/20 10:51:02 рдкрд░, "hongzhenwang" [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:

рдЬрдм рдореИрдВ рдПрдХ рдпреБрдЧ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рдпреБрдЧ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред

рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорд┐рд▓реЛред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдорд╕реНрдпрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдореИрдВ opencv-python рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ (рдореИрдВрдиреЗ рдкрд╣рд▓реЗ opencv3 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ)ред opencv-python рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред

рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорд┐рд▓ рд░рд╣рд╛ рд╣реВрдВред рдкрд╛рдЗрдЯреЛрд░рдЪ 1.0 рдФрд░ рдкрд╛рдпрдерди 3.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЬрдм рдореИрдВ рдПрдХрд╛рдзрд┐рдХ рдбреЗрдЯрд╛_рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдпрд╣ рдмрдЧ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдпрджрд┐ рдореИрдВ 3 рд╕реЗ рдХрдо рдбреЗрдЯрд╛_рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдпрд╛ рдПрдХрд▓ GPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдмрдЧ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдХреЛрд╢рд┐рд╢ рдХреА:

1. time.sleep(0.003)

2. pin_memory=True/False

3. num_workers=0/1

4. from torch.utils.data.dataloader import DataLoader

5. writing 8192 to /proc/sys/kernel/shmmni
   None of them works. Don't know whether there is any solutions?

рдЕрднреА рднреА рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдореИрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ GPU рдкрд░ 2 рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реВрдВред рдПрдХ рдЪрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛ рд░реБрдХрддрд╛ рд╣реИред

рдЬрдм рдореИрдВ num_workers=4 рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣рд░ 4 рдмреИрдЪ рдореЗрдВ рдХреБрдЫ рд╕реЗрдХрдВрдб (рдпрд╛ рдорд┐рдирдЯ) рдХреЗ рд▓рд┐рдП рдЕрдЯрдХ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ рдЗрд╕ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рдЭрдВрдбреЗ рдЬреЛрдбрд╝рдирд╛: рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдореЗрдВ pin_memory=True рдФрд░ num_workers=0 рд╕рдорд╛рдзрд╛рди рд╣реИ!

рдЭрдВрдбреЗ рдЬреЛрдбрд╝рдирд╛: рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдореЗрдВ pin_memory=True рдФрд░ num_workers=0 рд╕рдорд╛рдзрд╛рди рд╣реИ!
@ArturoDeza
рдпрд╣ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, num_workers = 0 рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕реАрдкреАрдпреВ рдХреЗ рд╕рдВрдкреВрд░реНрдг рдбреЗрдЯрд╛ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ GPU рдЙрдкрдпреЛрдЧ рджрд░ рдмрд╣реБрдд рдХрдо рд╣реЛрдЧреАред

рдореЗрд░реЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рдерд╛ рдХрд┐ рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд CPU рдирд╣реАрдВ рдереЗ рдпрд╛ рдкрд░реНрдпрд╛рдкреНрдд num_workers Dataloader рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдереЗред рдЕрдЧрд░ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдореЗрдВ __get_item__ рд╡рд┐рдзрд┐ numpy , librosa рдпрд╛ opencv рдЬреИрд╕реА рдереНрд░реЗрдбреЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рддреЛ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рд╢реНрд░рдорд┐рдХреЛрдВ рдореЗрдВ рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 python train.py рд╕рд╛рде рдЪрд▓рд╛рдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдбрд╛рдЯрд╛рд▓реЛрдбрд░ рдмреИрдЪ рдХреЛ рдПрдХ рд╣реА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдПрдХ рдмреИрдЪ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП batch_size рдирдореВрдиреЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рдирдП рдмреИрдЪ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдорд╢реАрди рдореЗрдВ рд╕реАрдкреАрдпреВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдХрдо num_workers рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрд╛ рдпрджрд┐ рдЖрдк рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдкреЙрдб), рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рдЕрдзрд┐рдХ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рд╣рдореЗрд╢рд╛ рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдпрджрд┐ GPU рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ t рд╕реЗрдХрдВрдб рдореЗрдВ рдЪрд▓рд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ dataloader рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдПрдХ рдмреИрдЪ рдХреЛ рд▓реЛрдб/рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП N*t рд╕реЗрдХрдВрдб рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ num_workers рдХреЛ рдХрдо рд╕реЗ рдХрдо N рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред N CPU рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрджрд┐ Dataloader рдХрд┐рд╕реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ K рдзрд╛рдЧреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрддреНрдкрдиреНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ num_workers*K = N*K ред рдпрд╣ рдорд╢реАрди рдореЗрдВ рд╕реАрдкреАрдпреВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкреЙрдб рдХреЛ рдереНрд░реЙрдЯрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ Dataloader рдХреЛ рд╣рд░ t рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдмреИрдЪ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ GPU рд╕реНрдЯрд╛рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

K рдереНрд░реЗрдб рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдореБрдЦреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 python train.py рджреНрд╡рд╛рд░рд╛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдбрд╛рдЯрд╛рд▓реЛрдбрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╣реА рдзрд╛рдЧреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдорд╢реАрди рдХреЛ рднрд╛рд░реА рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИред GPU рдХреЛ рдЪрд╛рд▓реВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдкрд░реНрдпрд╛рдкреНрдд num_workers рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдХреЛрдб __get_item__ рдореЗрдВ рднреА рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрдо рд╕рдордп рдореЗрдВ рдЕрдкрдирд╛ рдмреИрдЪ рдкреВрд░рд╛ рдХрд░ рд╕рдХреЗред рдХреГрдкрдпрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдмреИрдЪ рдкреВрд░реНрд╡-рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдбрд┐рд╕реНрдХ рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рд╕рдордп рдореЗрдВ рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдпрджрд┐ рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ), рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдмреИрдВрдбрд╡рд┐рдбреНрде (рдпрджрд┐ рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ) рдбрд┐рд╕реНрдХ)ред рдпрджрд┐ рдЖрдкрдХрд╛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд RAM рд╣реИ, рддреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ RAM (рдпрд╛ /tmpfs ) рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░ рддреНрд╡рд░рд┐рдд рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рд╕реЗ рдкрдврд╝реЗрдВред рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд░реИрдо рдбрд┐рд╕реНрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ emptyDir рдЦреЛрдЬреЗрдВ)ред

рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдирд╛ __get_item__ рдХреЛрдб рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдХ рдПрдХреНрд╕реЗрд╕/рдиреЗрдЯрд╡рд░реНрдХ рдПрдХреНрд╕реЗрд╕ рдЕрдкрд░рд╛рдзреА рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╕реНрдЯреЙрд▓ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ CPU (рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкреЙрдб рдХреЗ рд▓рд┐рдП) рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдЕрдкрдиреЗ GPU рдХреЛ рдПрдХ рдЕрдзрд┐рдХ CPU рдХреЗ рд╕рд╛рде рдорд╢реАрдиред

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк batch_size рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ worker рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдХрд╛рдо рд╣реЛ, рдФрд░ рдкреВрд░реНрд╡-рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЬрд▓реНрджреА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдмрд╛рдж рд╡рд╛рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд╛рдВрдЫрдиреАрдп рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╖реНрдХреНрд░рд┐рдп GPU рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред

рдЖрдк рдХреБрдЫ рдкреВрд░реНрд╡-рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдСрдлрд╝рд▓рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд╛ рд╡рдЬрди рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдПрдХ wav рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрдврд╝ рд░рд╣рд╛ рд╣реИ рдФрд░ рдСрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрдкреЗрдХреНрдЯреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдЧрдгрдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рд╕реНрдкреЗрдХреНрдЯреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдСрдлрд╝рд▓рд╛рдЗрди рдкреВрд░реНрд╡-рдЧрдгрдирд╛ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдореЗрдВ рдбрд┐рд╕реНрдХ рд╕реЗ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рд╕реНрдкреЗрдХреНрдЯреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧреАред

рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ

рдорд┐рд▓рддреЗ-рдЬреБрд▓рддреЗ рдореБрджреНрджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ... рдмрд╕ рдПрдХ рдпреБрдЧ рдХреА рд╕рдорд╛рдкреНрддрд┐ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдирд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп рдЧрддрд┐рд░реЛрдз...

@jinhou @jackroos рд╡рд╣реА рдмрд╛рдд, рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЕрдЯрдХ рдЧрдИред рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреЛ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд░рдирд╛ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдЫреЛрдбрд╝рдирд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ?

@jinhou @jackroos рд╡рд╣реА рдмрд╛рдд, рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЕрдЯрдХ рдЧрдИред рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреЛ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд░рдирд╛ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдЫреЛрдбрд╝рдирд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ?

рдирд╣реАрдВ, рдореИрдВ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реВрдВред

рдореИрдВ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджреЗ рд╕реЗ рдорд┐рд▓рд╛: рдЬрдм рдореИрдВ рдПрдХ рдпреБрдЧ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рдпреБрдЧ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред

рдЗрддрдирд╛ рдЬрд╝рд╛рди рдХреНрдпреЛрдВ?

рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорд┐рд▓ рд░рд╣рд╛ рд╣реВрдВред рдкрд╛рдЗрдЯреЛрд░рдЪ 1.0 рдФрд░ рдкрд╛рдпрдерди 3.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЬрдм рдореИрдВ рдПрдХрд╛рдзрд┐рдХ рдбреЗрдЯрд╛_рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдпрд╣ рдмрдЧ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдпрджрд┐ рдореИрдВ 3 рд╕реЗ рдХрдо рдбреЗрдЯрд╛_рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдпрд╛ рдПрдХрд▓ GPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдмрдЧ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдХреЛрд╢рд┐рд╢ рдХреА:

  1. рд╕рдордп рд╕реЛ рдЬрд╛рдУ (0.003)
  2. pin_memory=рд╕рд╣реА/рдЧрд▓рдд
  3. num_workers=0/1
  4. рдорд╢рд╛рд▓ рд╕реЗ.utils.data.dataloader рдЖрдпрд╛рдд DataLoader
  5. 8192 рдХреЛ /proc/sys/kernel/shmmni . рдкрд░ рд▓рд┐рдЦрдирд╛
    рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпрд╛ рдХреЛрдИ рдЙрдкрд╛рдп рд╣реИ?

num_workers 0 рдкрд░ рд╕реЗрдЯ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣рд░ рдЬрдЧрд╣ 0 рдкрд░ рд╣реИрдВред

рдХреБрдЫ рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди:

  1. рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЖрдпрд╛рдд рд╕реЗ set_start_method
    set_start_method ('рд╕реНрдкреЙрди')
  2. cv2.setNumThreads(0)

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 3 рдпрд╛ 7 рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ pytorch 1.3, ubuntu16 рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реВрдВ, рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕реБрдЭрд╛рд╡ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рд╕рд┐рд╡рд╛рдп рд╢реНрд░рдорд┐рдХреЛрдВ = 0 рдХреЗ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реЛ, рдЬреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдХреЗ рднреАрддрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╢реНрд░рдорд┐рдХреЛрдВ = 32 рдХреЗ рд╕рд╛рде рднреАред

рдорд╕рд▓рд╛ рд╕реБрд▓рдЭрддрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛, рдХреНрдпрд╛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП? рдореИрдВ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рднреА рдЗрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрддрд╛ рд╣реВрдВ...

рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорд┐рд▓ рд░рд╣рд╛ рд╣реВрдВред рдкрд╛рдЗрдЯреЛрд░рдЪ 1.0 рдФрд░ рдкрд╛рдпрдерди 3.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЬрдм рдореИрдВ рдПрдХрд╛рдзрд┐рдХ рдбреЗрдЯрд╛_рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдпрд╣ рдмрдЧ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдпрджрд┐ рдореИрдВ 3 рд╕реЗ рдХрдо рдбреЗрдЯрд╛_рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдпрд╛ рдПрдХрд▓ GPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдмрдЧ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдХреЛрд╢рд┐рд╢ рдХреА:

  1. рд╕рдордп рд╕реЛ рдЬрд╛рдУ (0.003)
  2. pin_memory=рд╕рд╣реА/рдЧрд▓рдд
  3. num_workers=0/1
  4. рдорд╢рд╛рд▓ рд╕реЗ.utils.data.dataloader рдЖрдпрд╛рдд DataLoader
  5. 8192 рдХреЛ /proc/sys/kernel/shmmni . рдкрд░ рд▓рд┐рдЦрдирд╛
    рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпрд╛ рдХреЛрдИ рдЙрдкрд╛рдп рд╣реИ?

num_workers 0 рдкрд░ рд╕реЗрдЯ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣рд░ рдЬрдЧрд╣ 0 рдкрд░ рд╣реИрдВред

рдХреБрдЫ рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди:

  1. рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЖрдпрд╛рдд рд╕реЗ set_start_method
    set_start_method ('рд╕реНрдкреЙрди')
  2. cv2.setNumThreads(0)

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 3 рдпрд╛ 7 рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред

рдореИрдВрдиреЗ train.py рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛:

from __future__ import division

import cv2
cv2.setNumThreads(0)

import argparse

...

рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╣реЗ рджреЛрд╕реНрддреЛрдВ рдЕрдЧрд░ рдореИрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ,
рдореБрдЭреЗ рднреА рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдереА, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рд░ 100 рдпрд╛ рдЗрддрдиреЗ рдпреБрдЧреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ред

рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ CUDA рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рд╣реА рд╣реБрдЖ рд╣реИ, рдЬрдм рднреА рдпрд╣ рдХреНрд░реИрд╢ рд╣реЛрддрд╛ рд╣реИ рддреЛ dmesg рдореЗрдВ рдпрд╣ рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реЛрддреА рд╣реИред

python[11240]: segfault at 10 ip 00007fabdd6c37d8 sp 00007ffddcd64fd0 error 4 in libcudart.so.10.1.243[7fabdd699000+77000]

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдиреЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рд╕реАрдпреВрдбреАрдП рдФрд░ рдкрд╛рдпрдерди рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдЦреЗрд▓ рд░рд╣реЗ рдереЗред

рдореЗрд░рд╛ рдлрд┐рдХреНрд╕ рдбреЗрдЯрд╛рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдХреНрдпреВрдбрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдерд╛, рдпрд╣рд╛рдВ рдореЗрд░реА рдкрд╛рдпрдерди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИред

from multiprocessing import set_start_method
import os

if __name__ == "__main__":
  set_start_method('spawn')
else:
  os.environ["CUDA_VISIBLE_DEVICES"] = ""

import torch
import application

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рднреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рд╕рдордп рдХреА рддрд░рд╣ рдореБрдЭреЗ рдпрд╣рд╛рдВ рд▓реИрдВрдб рдХрд░рддрд╛ рд╣реИред

@jinhou @jackroos рд╡рд╣реА рдмрд╛рдд, рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╣реЛрд░реЛрд╡реЛрдб рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЕрдЯрдХ рдЧрдИред рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреЛ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд░рдирд╛ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдЫреЛрдбрд╝рдирд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ?

рдирд╣реАрдВ, рдореИрдВ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реВрдВред

рдореИрдВ PyTorch 1.4 рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж OpenCV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реВрдВред
рдЕрдм рдореБрдЭреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рд╕рддреНрдпрд╛рдкрди рд▓реВрдк рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдмрд╛рд░ рд╕рддреНрдпрд╛рдкрди рдЪрд▓рд╛рдирд╛ рд╣реИред

рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рд╣реБрдИ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдЗрдЯреЛрд░рдЪ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ, рдЕрдЬрдЧрд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рднреМрддрд┐рдХ рдорд╢реАрдиреЛрдВ (рдЬреЛ рд╕рдВрднрд╡рддрдГ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рд╣реЛрдВрдЧреЗ) рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдмрдиреА рд░рд╣рддреА рд╣реИред

рд╣рд░ рдмрд╛рд░ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ:

File "/home/<me>/miniconda2/envs/<my-module>/lib/python3.8/site-packages/bicep/loops.py", line 73, in __call__
    for data, target in self.dataloader:
File "/home/<me>/miniconda2/envs/<my-module>/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 345, in __next__
    data = self._next_data()
File "/home/<me>/miniconda2/envs/<my-module>/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 830, in _next_data
    self._shutdown_workers()
File "/home/<me>/miniconda2/envs/<my-module>/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 942, in _shutdown_workers
    w.join()
File "/home/<me>/miniconda2/envs/<my-module>/lib/python3.8/multiprocessing/process.py", line 149, in join
    res = self._popen.wait(timeout)
File "/home/<me>/miniconda2/envs/<my-module>/lib/python3.8/multiprocessing/popen_fork.py", line 47, in wait
    return self.poll(os.WNOHANG if timeout == 0.0 else 0)
File "/home/<me>/miniconda2/envs/<my-module>/lib/python3.8/multiprocessing/popen_fork.py", line 27, in poll
    pid, sts = os.waitpid(self.pid, flag)

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд░рд╣реА рдорд╢реАрди рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рд╣реИред num_workers=0 рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рддрд╣ рддрдХ рдЬрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рдХреИрд╕реЗ рдкреВрдЫрддрд╛рдЫ рдХреА рдЬрд╛рдП?

рдореИрдВ рднреА рдпрд╣рд╛рдБред

ERROR: Unexpected segmentation fault encountered in worker.
Traceback (most recent call last):
  File "/home/miniconda/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 480, in _try_get_batch
    data = self.data_queue.get(timeout=timeout)
  File "/home/miniconda/lib/python3.6/multiprocessing/queues.py", line 104, in get
    if not self._poll(timeout):
  File "/home/miniconda/lib/python3.6/multiprocessing/connection.py", line 257, in poll
    return self._poll(timeout)
  File "/home/miniconda/lib/python3.6/multiprocessing/connection.py", line 414, in _poll
    r = wait([self], timeout)
  File "/home/miniconda/lib/python3.6/multiprocessing/connection.py", line 911, in wait
    ready = selector.select(timeout)
  File "/home/miniconda/lib/python3.6/selectors.py", line 376, in select
    fd_event_list = self._poll.poll(timeout)
  File "/home/miniconda/lib/python3.6/site-packages/torch/utils/data/_utils/signal_handling.py", line 65, in handler
    _error_if_any_worker_fails()
RuntimeError: DataLoader worker (pid 95106) is killed by signal: Segmentation fault.

рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рд╣реИ

рдЬрдм рдореИрдВ рдбреЗрдЯрд╛ рд▓рд╛рдЗрди рдХреЛ рд▓рд╛рдЗрди рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ:

        with open(current_file, mode='rb') as f:
            text = f.read().decode('utf-8')
            all_data.extend(text.split('\n'))

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рд▓рд╛рдЗрди рд╕реЗ рд▓рд╛рдЗрди рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж JSON рдкрд╛рд░реНрд╕ рд▓реЙрдЬрд┐рдХ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛

with open(current_file, mode='rb') as f:
            text = f.read().decode('utf-8')
            all_data.extend(text.split('\n'))

        json_data = []
        for line in all_data:
            try:
                json_data.append(json.loads(line))
            except:
                break
return json_data

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХреБрдЫ JSON рдореЗрдореЛрд░реА рдУрд╡рд░рд╣реЗрдб рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдореИрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ 2 рдореЗрдВ рдШрдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ, рдФрд░ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ, рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╢рдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдХреЛрдИ рд╕реБрд░рд╛рдЧ?

рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВрдЧреЗ?

рдореЗрд░рд╛ рдЦреНрдпрд╛рд▓ рд╣реИ рд╣рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреАрдЯреАрдбрдмреНрд▓реВ, рдореИрдВрдиреЗ рдХреБрдЫ рдЬреАрдбреАрдмреА рдбреАрдмрдЧ рдХрд┐рдпрд╛ рдФрд░ рд╡рд╣рд╛рдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕рдЪ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ,

(gdb) run

Starting program: /home/miniconda/bin/python performance.py

[Thread debugging using libthread_db enabled]

Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

[New Thread 0x7fffa60a6700 (LWP 61963)]

[New Thread 0x7fffa58a5700 (LWP 61964)]

[New Thread 0x7fffa10a4700 (LWP 61965)]

[New Thread 0x7fff9e8a3700 (LWP 61966)]

[New Thread 0x7fff9c0a2700 (LWP 61967)]

[New Thread 0x7fff998a1700 (LWP 61968)]

[New Thread 0x7fff970a0700 (LWP 61969)]

[New Thread 0x7fff9489f700 (LWP 61970)]

[New Thread 0x7fff9409e700 (LWP 61971)]

[New Thread 0x7fff8f89d700 (LWP 61972)]

[New Thread 0x7fff8d09c700 (LWP 61973)]

[New Thread 0x7fff8a89b700 (LWP 61974)]

[New Thread 0x7fff8809a700 (LWP 61975)]

[New Thread 0x7fff85899700 (LWP 61976)]

[New Thread 0x7fff83098700 (LWP 61977)]

[New Thread 0x7fff80897700 (LWP 61978)]

[New Thread 0x7fff7e096700 (LWP 61979)]

[New Thread 0x7fff7d895700 (LWP 61980)]

[New Thread 0x7fff7b094700 (LWP 61981)]

[New Thread 0x7fff78893700 (LWP 61982)]

[New Thread 0x7fff74092700 (LWP 61983)]

[New Thread 0x7fff71891700 (LWP 61984)]

[New Thread 0x7fff6f090700 (LWP 61985)]

[Thread 0x7fff7e096700 (LWP 61979) exited]

[Thread 0x7fff6f090700 (LWP 61985) exited]

[Thread 0x7fff74092700 (LWP 61983) exited]

[Thread 0x7fff7b094700 (LWP 61981) exited]

[Thread 0x7fff80897700 (LWP 61978) exited]

[Thread 0x7fff83098700 (LWP 61977) exited]

[Thread 0x7fff85899700 (LWP 61976) exited]

[Thread 0x7fff8809a700 (LWP 61975) exited]

[Thread 0x7fff8a89b700 (LWP 61974) exited]

[Thread 0x7fff8d09c700 (LWP 61973) exited]

[Thread 0x7fff8f89d700 (LWP 61972) exited]

[Thread 0x7fff9409e700 (LWP 61971) exited]

[Thread 0x7fff9489f700 (LWP 61970) exited]

[Thread 0x7fff970a0700 (LWP 61969) exited]

[Thread 0x7fff998a1700 (LWP 61968) exited]

[Thread 0x7fff9c0a2700 (LWP 61967) exited]

[Thread 0x7fff9e8a3700 (LWP 61966) exited]

[Thread 0x7fffa10a4700 (LWP 61965) exited]

[Thread 0x7fffa58a5700 (LWP 61964) exited]

[Thread 0x7fffa60a6700 (LWP 61963) exited]

[Thread 0x7fff71891700 (LWP 61984) exited]

[Thread 0x7fff78893700 (LWP 61982) exited]

[Thread 0x7fff7d895700 (LWP 61980) exited]

total_files = 5040.  //customer comments

[New Thread 0x7fff6f090700 (LWP 62006)]

[New Thread 0x7fff71891700 (LWP 62007)]

[New Thread 0x7fff74092700 (LWP 62008)]

[New Thread 0x7fff78893700 (LWP 62009)]

ERROR: Unexpected segmentation fault encountered in worker.

ERROR: Unexpected segmentation fault encountered in worker.

Traceback (most recent call last):

File "/home/zhrui/.local/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 761, in _try_get_data

data = self._data_queue.get(timeout=timeout)

File "/home/miniconda/lib/python3.6/multiprocessing/queues.py", line 104, in get

if not self._poll(timeout):

File "/home/miniconda/lib/python3.6/multiprocessing/connection.py", line 257, in poll

return self._poll(timeout)

File "/home/miniconda/lib/python3.6/multiprocessing/connection.py", line 414, in _poll

r = wait([self], timeout)

File "/home/miniconda/lib/python3.6/multiprocessing/connection.py", line 911, in wait

ready = selector.select(timeout)

File "/home/miniconda/lib/python3.6/selectors.py", line 376, in select

fd_event_list = self._poll.poll(timeout)

File "/home/zhrui/.local/lib/python3.6/site-packages/torch/utils/data/_utils/signal_handling.py", line 66, in handler

_error_if_any_worker_fails()

RuntimeError: DataLoader worker (pid 62005) is killed by signal: Segmentation fault.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "performance.py", line 62, in <module>

main()

File "performance.py", line 48, in main

for i,batch in enumerate(rl_data_loader):

File "/home/zhrui/.local/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 345, in __next__

data = self._next_data()

File "/home/zhrui/.local/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 841, in _next_data

idx, data = self._get_data()

File "/home/zhrui/.local/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 808, in _get_data

success, data = self._try_get_data()

File "/home/zhrui/.local/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 774, in _try_get_data

raise RuntimeError('DataLoader worker (pid(s) {}) exited unexpectedly'.format(pids_str))

RuntimeError: DataLoader worker (pid(s) 62005) exited unexpectedly

[Thread 0x7fff78893700 (LWP 62009) exited]

[Thread 0x7fff74092700 (LWP 62008) exited]

[Thread 0x7fff71891700 (LWP 62007) exited]

[Thread 0x7fff6f090700 (LWP 62006) exited]

[Inferior 1 (process 61952) exited with code 01]

(gdb) backtrace

No stack.

рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдХрд╛рдлреА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реЗрдЧрдлреЙрд▓реНрдЯ рддрдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдиреМрдХрд░реА рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╕реЗрдЧрдореЗрдВрдЯ рдЧрд▓рддреА рд╣реЛрддреА рд╣реИ

------ Messages Limits --------

max queues system wide = 32000

max size of message (bytes) = 8192

default max size of queue (bytes) = 16384

------ Shared Memory Limits --------

max number of segments = 4096

max seg size (kbytes) = 18014398509465599

max total shared memory (kbytes) = 18014398509481980

min seg size (bytes) = 1

------ Semaphore Limits --------

max number of arrays = 32000

max semaphores per array = 32000

max semaphores system wide = 1024000000

max ops per semop call = 500

semaphore max value = 32767

рд╣рд╛рдп @soumith @apaszke , рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рд╢рдо рдЖрдХрд╛рд░ рдФрд░ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдЬреИрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рднреА рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛, рдореИрдВ рдУрдкрдирд╕реАрд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдмрд╕ рд╕рд╛рдзрд╛рд░рдг JSON рдкрд╛рд░реНрд╕рд┐рдВрдЧред рд▓реЗрдХрд┐рди рдореБрджреНрджрд╛ рдЕрднреА рднреА рд╡рд╣реАрдВ рд╣реИред рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЪреЗрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╢рдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдореИрдВ рд╕рднреА рдореЗрдореЛрд░реА рдХреЛ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЦреЛрд▓рддрд╛ рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рднреА рд╡рд╣рд╛рдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

@apaszke , рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ

"рд╣рд╛рдВ, рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рдореБрджреНрджреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХрд╛рдВрдЯреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реИрдВред рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рд╕реНрдкреЙрди рд╕реНрдЯрд╛рд░реНрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред"

рдореИрдВ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдорд▓реНрдЯреА рд╡рд░реНрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рд╡рд┐рдзрд┐ рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ? рдореИрдВ рдЕрдкрдиреЗ main.py рдореЗрдВ set_start_method('spawn') рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЦреБрд░рд╛рдХ рдорджрджрдЧрд╛рд░ рдирд╣реАрдВ рд╣реИ

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░рд╛ рдпрд╣рд╛рдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди рд╣реИ, рдпрджрд┐ рдореИрдВ рдорд▓реНрдЯреА рд╡рд░реНрдХрд░ (рдорд▓реНрдЯреА рдкреНрд░реЛрд╕реЗрд╕) рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЦреНрдп рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореЗрдВ рдореИрдВ https://pytorch.org/docs/stable/notes/multiprocessing.html рдореЗрдВ рд╕реБрдЭрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ рдорд▓реНрдЯреА рдкреНрд░реЛрд╕реЗрд╕ рднреА рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВред

pytorch рдХреИрд╕реЗ dataloader рдФрд░ рдореБрдЦреНрдп рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдмрд╣реБ-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЛрдиреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ? рдХреНрдпрд╛ рд╡реЗ рдорд▓реНрдЯреА рдХреЛрд░ рдЬреАрдкреАрдпреВ рдкрд░ рд╣рд░ рд╕рдВрднрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛/рдереНрд░реЗрдбрд┐рдВрдЧ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗ? рдорд▓реНрдЯреА рдкреНрд░реЛрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдФрд░ рдореБрдЦреНрдп рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ "рд╕рд╛рдЭрд╛" рдХреА рдЬрд╛рддреА рд╣реИ? рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЬреЗрдПрд╕рдУрдПрди рдкрд╛рд░реНрд╕рд┐рдВрдЧ, рд╕реАрдПрд╕рд╡реА рдкрд╛рд░реНрд╕рд┐рдВрдЧ, рдкрд╛рдВрдбрд╛ рдлреАрдЪрд░ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдЬреИрд╕реЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдХреБрдХ рдЬреЙрдм рднреА рд╣реИрдВред рдЖрджрд┐, рдбрд╛рд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХрд╣рд╛рдВ рд╣реИ? рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдореЗрдВ рддреИрдпрд╛рд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ __get_item__ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗ

@zhangruiskyline рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрддрд┐рд░реЛрдз рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реЗрдЧрдлреЙрд▓реНрдЯ рджреНрд╡рд╛рд░рд╛ рдорд╛рд░реЗ рдЬрд╛ рд░рд╣реЗ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рд╕рд┐рдЧрдмрд╕ рд╡рд╣ рд╣реИ рдЬреЛ рд╢рдо рдореБрджреНрджреЛрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛрдб рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд╣рд╛рдВ рдбреАрдмрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдкрдХреЗ рдЕрдиреНрдп рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП,

  1. рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдореЗрдВ kwarg multiproessing_context='spawn' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рд╕реНрдкреЙрди рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ред set_start_method рднреА рдпрд╣реА рдХрд░рддрд╛ рд╣реИред
  2. рдЖрдорддреМрд░ рдкрд░ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдкрдирд╛ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ред рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреБрдЫ рднреА рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @SsnL , рдореИрдВрдиреЗ multiproessing_context='spawn' рдЬреЛрдбрд╝рд╛ рд▓реЗрдХрд┐рди рд╡рд╣реА рд╡рд┐рдлрд▓рддрд╛ред

рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╕реВрддреНрд░ рдореЗрдВ рдмрддрд╛рдпрд╛, рдореЗрд░рд╛ рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ,

  • рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
        with open(current_file, mode='rb') as f:
            text = f.read().decode('utf-8')
            all_data.extend(text.split('\n'))
  • рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рд▓рд╛рдЗрди рд╕реЗ рд▓рд╛рдЗрди рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж JSON рдкрд╛рд░реНрд╕ рд▓реЙрдЬрд┐рдХ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛
with open(current_file, mode='rb') as f:
            text = f.read().decode('utf-8')
            all_data.extend(text.split('\n'))

        json_data = []
        for line in all_data:
            try:
                json_data.append(json.loads(line))
            except:
                break
return json_data

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рдореБрджреНрджрд╛ рд╣реИ, рдореИрдВ рднреА JSON рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕реАрдзреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдкреНрд▓рд┐рдЯ, рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рддрдХ рдореЗрд░реЗ рдкрд╛рд╕ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рддрд░реНрдХ рд╣реИ, рддрдм рддрдХ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИ

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА

рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕ рдкреНрд░рд╢рд┐рдХреНрд╖рдг, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдкрдирд╛ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреБрдЫ рднреА рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рддреЛ рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП 4 рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 8 рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрд▓ 32 рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдиреАрдЪреЗ рд╣реИ?

@zhangruiskyline рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдирд┐рд╣рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд┐рдирд╛, рд╣рдо рдЖрдкрдХреА рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рдБ 32 рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рд╣реЛрдВрдЧреА

рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рднреА рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдореБрджреНрджрд╛ рджреЗрдЦрд╛
https://github.com/pytorch/pytorch/issues/4969
https://github.com/pytorch/pytorch/issues/5040

рджреЛрдиреЛрдВ рдмрдВрдж рд╣реИрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдпрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╡реНрдпрд╛рдкрдХ рдореМрдЬреВрджрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рд╕реНрд╡рдпрдВ рдирд┐рд╣рд┐рдд рдкреБрдирд░реБрддреНрдкрд╛рджрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рдордВрдЪ рдФрд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдзрд┐рдХ рдПрдХреАрдХреГрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ

@zhangruiskyline рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд┐рд╕реА рднреА рдЬреБрдбрд╝реЗ рд╣реБрдП рдореБрджреНрджреЗ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ, рдЕрдЧрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рддреЗ рд╣реИрдВред рд╡реЗ рдмрдВрдж рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрди рдереНрд░реЗрдбреНрд╕ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ рдореВрд▓/рд╕рдмрд╕реЗ рдЖрдо рд╕рдорд╕реНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдмреЛрдзрд┐рдд рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @ рдПрд╕рдПрд╕рдПрдирдПрд▓ , рдореИрдВ

  • рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдШрдЯрд╛рдХрд░ 0 рдХрд░ рджреЗрдВ, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИ,

  • рд╢рдо рдЖрдХрд╛рд░ рдмрдврд╝рд╛рдПрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╢рдо рд╣реИ, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ, рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рдмрд╛рдж рд╣реБрдИ, рдФрд░ рдореИрдВрдиреЗ рдмрд╣реБрдд рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛

  • рдУрдкрдирд╕реАрд╡реА рдЦреБрд░рд╛рдХ рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛рдо рдмрд╣реБ-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╕рд┐рд░реНрдл JSON/CSV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлреИрдВрд╕реА рд╕рд╛рдорд╛рди рдирд╣реАрдВ рд╣реИ

рд╣рдорд╛рд░рд╛ рдХреЛрдб рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рд╕реЗрдЯ рдореЗрдВ 10000+ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ JSON рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рдХрдИ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВред рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдореЗрдВ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ 10K+ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП __get_item__ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВред

рд╕рдорд╛рдзрд╛рди 1 рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ JSON рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╣рдо рддреБрд░рдВрдд рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рджрд░реНрд╢рди рдЕрдЪреНрдЫрд╛ рд╣реИ

        with open(current_file, mode='rb') as f:
            text = f.read().decode('utf-8')
            all_data.extend(text.split('\n'))
            return all_data

рдЕрдм рдЪреВрдВрдХрд┐ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдЕрднреА рднреА JSON рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рд╣рдо рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд▓реНрдЯреА рдкреНрд░реЛрд╕реЗрд╕ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП JSON рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдпрд╣рд╛рдВ рд░рдЦреЗрдВ рдФрд░ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

with open(current_file, mode='rb') as f:
            text = f.read().decode('utf-8')
            all_data.extend(text.split('\n'))

        json_data = []
        for line in all_data:
            try:
                json_data.append(json.loads(line))
            except:
                break
return json_data

рд╣рдордиреЗ рдмрд╛рдж рдореЗрдВ рд╕реЛрдЪрд╛ рдХрд┐ JSON рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдмрд╣реБрдд рднрд╛рд░реА рд╣реИ рдФрд░ JSON рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдлрд╝реБрдЯрдкреНрд░рд┐рдВрдЯ рднреА рд╣реИ, рддреЛ рд╣рдо JSON рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЪреБрдирддреЗ рд╣реИрдВ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдлреАрдЪрд░ рд╕реВрдЪреА рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣реА рд╡рд┐рдлрд▓рддрд╛ред рдХреБрдЫ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рд╡рд╣рд╛рдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛

BTW, рд╣рдо рдЕрдкрдирд╛ рдХреЛрдб Linux Docker Env, 24 рдХреЛрд░ CPU рдФрд░ 1 V100 рдореЗрдВ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рддреБрдореНрд╣рд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ?

рдирдорд╕реНрддреЗ,

рдореБрдЭреЗ https://github.com/open-mmlab/mmcv рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЯрд┐рдкреНрдкрдгреА рдорд┐рд▓реА, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ https://github.com/open-mmlab/mmdetection рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреНрд░реЗрди рдпреБрдЧ рдФрд░ рд╡реИрд▓ рдпреБрдЧ рджреЛрдиреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
time.sleep(2) # рдпреБрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рджреМрд░рд╛рди рд╕рдВрднрд╛рд╡рд┐рдд рдЧрддрд┐рд░реЛрдз рдХреЛ рд░реЛрдХреЗрдВ

https://github.com/open-mmlab/mmcv/blob/1cb3e36a1ea33caf272d2365c7d406123122b8d0/mmcv/runner/epoch_based_runner.py#L26

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЖрдк рдЗрд╕реЗ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдмреАрдЯреАрдбрдмреНрд▓реВ, рдЕрдЧрд░ рдореИрдВ рдмрд╣реБ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдмрд╣реБ тАЛтАЛрдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ рдХрд┐ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдХреЗ рд╕рдорд╛рди рдбреЗрдЯрд╛ рдирд╣реАрдВ рдкрдврд╝реЗрдВрдЧреЗ? рдХреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА pytorch dataloader __get_item__ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

рд╣рд╛рдп @ рдПрд╕рдПрд╕рдПрдирдПрд▓ , рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдмрд╕ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВ рд╕реАрдкреАрдпреВ рдкрдХреНрд╖ рдореЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдЯреЛрд░рдЪ рдорд▓реНрдЯреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЛрдб рдХреЛ рджреЛрдмрд╛рд░рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реВрдВ (рдЬреАрдкреАрдпреВ рдХреЛ рддреЗрдЬреА рд╕реЗ рдЦрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП), https://pytorch.org/docs/stable /notes/multiprocessing.html#multiprocessing -best-practices

рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдлрдВрдХ рдореЗрдВ, рдореИрдВ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕рдордп рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд▓реНрдЯреА-рд╡рд░реНрдХрд░ рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред https://pytorch.org/docs/stable/data.html

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╣реАрд╡рд┐рдВрдЧ рд╕реАрдкреАрдпреВ JSON рдХреЛ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдореБрдЦреНрдп рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд░рдЦрд╛ рд╣реИ, рдФрд░ рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛ рдЧрдИ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпреЛрдВ рд▓реЗрдХрд┐рди рд╡реИрд╕реЗ рднреА рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдЕрдиреБрд╡рд░реНрддреА рдкреНрд░рд╢реНрди рд╣реИ: рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ N рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ M рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд╣рд╛рдВ рдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдиреАрдЪреЗ рдХреБрд▓ NxM рд╣реИред

рдЕрдЧрд░ рдореЗрд░реЗ рдбреЗрдЯрд╛рд▓реЛрдбрд░ рдореЗрдВ, рдореИрдВ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдо рдбреЗрдЯрд╛ рд▓реЛрдбрд░ рдореЗрдВ __get_item__(self, idx) рдПрди рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдХреБрдЫ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╛рдж рдЖрддреА рд╣реИ?

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ рдЬрд╣рд╛рдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛рд▓реЛрдбрд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдирдП рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдпрд╛ рд╕рддреНрдпрд╛рдкрди рдпреБрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рдереЗ (i) рдореЗрд░рд╛ /dev/shm 32GB рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрднреА рднреА 2.5GB рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ (ii) pin_memory=False рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓рд╛ред

рдпрд╣ рд╢рд╛рдпрдж рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╣реИ? рдореЗрд░рд╛ рдХреЛрдб рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдореБрдЭреЗ рдПрдХ рдЕрдирдВрдд рдЗрдЯрд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдиреАрдЪреЗ next() рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ :-)

def train():
    train_iter = train_loader.__iter__()
    for i in xrange(max_batches):
        try:
            x, y = next(train_iter)
        except StopIteration:
            train_iter = train_loader.__iter__()
        ...
    del train_iter

train_loader рдПрдХ DataLoader рд╡рд╕реНрддреБ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрдкрд╖реНрдЯ del train_iter рд▓рд╛рдЗрди рдХреЗ рдмрд┐рдирд╛, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рдореЗрд╢рд╛ 2-3 рдпреБрдЧреЛрдВ рдХреЗ рдмрд╛рдж рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддреА рд╣реИ ( /dev/shm рдЕрднреА рднреА 2.5 рдЬреАрдмреА рджрд┐рдЦрд╛рддрд╛ рд╣реИ)ред рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛!

рдореИрдВ 4 рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рд╕рдВрд╕реНрдХрд░рдг 0.1.12_2 Ubuntu 16.04 рдкрд░ CUDA 8.0 рдХреЗ рд╕рд╛рде)ред

рд╣рдлреНрддреЛрдВ рдХреЗ рд╕рдВрдШрд░реНрд╖ рдХреЗ рдмрд╛рдж рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреАред рдореБрдЭреЗ рд▓реЛрдбрд░ рдХреЛ рд╕реАрдзреЗ рд▓реВрдк рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд▓реЛрдбрд░ рдЗрдЯрд░реЗрдЯрд░ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдпреБрдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ del loader_iterator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдВрдд рдореЗрдВ рдЧрддрд┐рд░реЛрдз рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред 8 рдбреЗрдЯрд╛ рд▓реЛрдбрд░ (MNIST, MNISTM, SVHN, USPS, рдЯреНрд░реЗрди рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред 6 (рдХреЛрдИ рднреА 6) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред 6рд╡рд╛рдВ рдПрдордПрдирдЖрдИрдПрд╕рдЯреА-рдПрдо рдкрд░реАрдХреНрд╖рдг рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп 8 рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрд╢рд╛ рдмреНрд▓реЙрдХ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЫрд╡рд┐ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдЕрд╕рдлрд▓ рд╣реЛрдиреЗ, рдереЛрдбрд╝рд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рдЕрдВрддрд╣реАрди рдкрд╛рд╢ рдореЗрдВ рдлрдВрд╕ рдЧрдпрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рдХрд┐рд╕реА рднреА рдмреИрдЪ_рд╕рд╛рдЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдмрдиреА рд░рд╣рддреА рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реА рдЦрд╛рд▓реА рдореЗрдореЛрд░реА рдмрдЪреА рд╣реИ, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдЪрд▓реА рдЬрд╛рддреА рд╣реИ рдЬрдм рдореИрдВ num_workers рдХреЛ 0 рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдХреЛрдИ рдЕрдиреНрдп рд░рд╛рд╢рд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИ

рдореБрдЭреЗ https://stackoverflow.com/questions/54013846/pytorch-dataloader-stucked-if-using-opencv-resize-method рд╕реЗ рдХреБрдЫ рд╕рдВрдХреЗрдд рдорд┐рд▓реЗ
рдЬрдм рдореИрдВ cv2.setNumThreads(0) рдбрд╛рд▓рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдореЗрд░реЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╣реИрд▓реЛ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдФрд░ рдЗрд╕реЗ ulimit -n рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдерд╛, рдмрд╕ рдЗрд╕реЗ рдмрдврд╝рд╛рдПрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ, рдореИрдВрдиреЗ ulimit -n 500000 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛

@SebastienEske ulimit -n рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдЗрд╕реЗ Ubuntu 20.04 рдкрд░ рддрдп рдХрд┐рдпрд╛ рд╣реИ

рд╢рд╛рдпрдж рд╕реЗрдЯ ulimit -n рдПрдХ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ, рдореЙрдбрд▓ рдХреА рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдЧрддрд┐рд░реЛрдз рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░-рдмрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ cv2.setNumThreads(0) , рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, cv2.setNumThreads(0) рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

keskarnitish picture keskarnitish  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

eliabruni picture eliabruni  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rajarshd picture rajarshd  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

a1363901216 picture a1363901216  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mishraswapnil picture mishraswapnil  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ