Google Colaboratory рдорд╢реАрди рд╕реАрдЦрдиреЗ рдФрд░ рдЧрд╣рди рд╕реАрдЦрдиреЗ рдореЗрдВ рдЕрдиреБрд╕рдВрдзрд╛рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рд╣реИред рдХреЙрд▓реЗрдЬрдмреЛрд░реЗрдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдПрдХ рдХрдиреЗрдХреНрдЯреЗрдб рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдорд╢реАрди рддрдХ рд░рд┐рдореЛрдЯ рдПрдХреНрд╕реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореБрдлрд╝реНрдд рд╣реИ, рдЬреЛ рдХрд┐ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдЧрд╣рд░реЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЬреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдХреЗ рд▓рд┐рдП Google рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХрд╛ рдХреБрдЫ рдПрдирд╛рд▓реЙрдЧ рд╣реИред
рдХреЛрд▓реИрдмреЛрд░реЗрдЯрд░реА рдореЗрдВ рдЯреЗрдВрд╕реЛрд░рдлреНрд▓реЛ рдкрд╣рд▓реЗ рд╕реЗ
рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдФрд░ рд▓рдЧрднрдЧ рд╕рднреА рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдкреИрдХреЗрдЬ рдЧрд╛рдпрдм рд╣реИ, рддреЛ рдЗрд╕реЗ
pip
рдпрд╛
apt-get
pip
рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рд╕реЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдФрд░ GPU рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ
рдПрд╕рдПрд╕рдбреА-рдХреИрдл рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдкрддрд╛ рдЪрд▓рд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рдореИрдВ рдХреЛрд▓реИрдмреЛрд░реЗрдЯрд░реА рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджреВрдВрдЧрд╛, рдЬреЛ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЧреБрд░ рднреА рдмрддрд╛рдПрдВрдЧреЗред
рд╕рднреА рдХреЛрдб рдореЗрд░реЗ
рд╕рд╣рдпреЛрдЧреА рдиреЛрдЯрдмреБрдХ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рд╣рдпреЛрдЧрд╛рддреНрдордХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдХреЛрд▓реИрдмреЛрд░реЗрдЯрд░реА рдЖрдкрдХреЛ рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░ рдЬреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд╣рдпреЛрдЧреА рдлрд╛рдЗрд▓реЗрдВ рд╕рд╛рдзрд╛рд░рдг .ipynb "рд▓реИрдкрдЯреЙрдк" рд╣реИрдВ рдФрд░ Google рдбрд┐рд╕реНрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рд╕реЗрдЯ рднреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рджреВрд░рд╕реНрде рдорд╢реАрди рд╕реЗ Google рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдЖрдк рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рднреА рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЙрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ Google рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВред
Colaboratory рдореЗрдВ, рдЖрдк GPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдЯреЗрд╕реНрд▓рд╛ K80ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ: рд░рдирдЯрд╛рдЗрдо
рд░рдирдЯрд╛рдЗрдо рдкреНрд░рдХрд╛рд░ рдмрджрд▓реЗрдВ
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рддреНрд╡рд░рдХред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЬреАрдкреАрдпреВ рд╣рдореЗрд╢рд╛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреЛрд▓реИрдмреЛрд░реЗрдЯрд░реА рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдорд╢реАрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдЧрд╛ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреБрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЯрд░реНрдорд┐рдирд▓ рддрдХ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдкрд╣реБрдВрдЪ рд╣реИ: рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЯрд░реНрдорд┐рдирд▓ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ рдЪрд┐рд╣реНрди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
!mkdir images
ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдХ рдЖрджрд░реНрд╢ рд╕рд╛рдзрд╛рд░рдг рдорд╢реАрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ Ubuntu 17.10 рд╕реНрдерд╛рдкрд┐рдд рд╣реИ (рд▓реЗрдЦрди рдХреЗ рд╕рдордп), рд▓реЗрдХрд┐рди рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╕рдм рдХреБрдЫ (рдЕрдВрддрдГрдХреНрд░рд┐рдпрд╛рддреНрдордХ рдирд╣реАрдВ) рдЙрд╕ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдХреНрд▓реЛрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
git clone
, wget
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░реЗрдВ (рд╡реИрд╕реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ Google рдбрд┐рд╕реНрдХ рд╕реЗ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ),make
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ cmake
)apt-get
рдФрд░ pip
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреВрд▓ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдХреЙрд▓реЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:
- рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЕрд╕реАрдорд┐рдд рдкрд╣реБрдВрдЪ рд╣реИ (рдХрд┐рд╕реА рднреА рдХрдорд╛рдВрдб рдХреЛ
sudo
рдмрд┐рдирд╛ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ); - рдЯрд░реНрдорд┐рдирд▓ рд░рд╛рдЬреНрдп рдХреЛ рдЯреАрдореЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡реЗ рдПрдХ рд╣реА рд╕реЗрд▓ рдореЗрдВ рд╣реЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
cd dir
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛); - рдпрджрд┐ рдЖрдк рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХреЛрд▓реИрдмреЛрд░реЗрдЯрд░реА рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдорд┐рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рдЬреНрдпреВрдкрд┐рдЯрд░ рдиреЛрдЯрдмреБрдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП;
- 12 рдШрдВрдЯреЗ рдХреЗ рдирд┐рд░рдВрддрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж, рдорд╢реАрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, GPU рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред
рдПрд╕рдПрд╕рдбреА-рдХреИрдл рдмрд┐рд▓реНрдб
рдореИрдВ
рд╕рд┐рдВрдЧрд▓ рд╢реЙрдЯ рдбрд┐рдЯреЗрдХреНрдЯрд░ (SSD) рдХреЛ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЕрд░реНрдерд╛рддреН Google Colaboratory рдореЗрдВ рдЗрд╕рдХрд╛
рдХреИрдл рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди , рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕реНрд░реЛрдд рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рд╡реИрд╕реЗ, рдпрджрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП
Caffe рдХрд╛ рдХреЛрдИ рднреА рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрдпреБрдХреНрдд рд╣реИ, рддреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ (рдпрд╣ рдХрд╛рдо рднреА рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рднреА рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ):
!apt install caffe-cuda
рдПрд╕рдПрд╕рдбреА-рдХреИрдл рдХреЛ рд╕реНрд░реЛрдд рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдХрдИ рдЪрд░рдгреЛрдВ рд╕реЗ рдХрд╛рдлреА рд▓рдВрдмреА рдЦреЛрдЬ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдмреИрд╕рд╛рдЦреА рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪрд░рдг 1: рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛рдпрд╣рд╛рдБ рд╣рдореЗрдВ
apt
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Caffe рдХреЗ рд▓рд┐рдП рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреА рд╣реЛрдВрдЧреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ
apt
рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред
рдХреИрдл рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЧрд╛рдЗрдб рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП source.list рдлрд╝рд╛рдЗрд▓ рдореЗрдВ "deb-src рд▓рд╛рдЗрди" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╣рд╛рдБ рдХреЛрдИ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрднреА
/etc/apt/sources.list
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рднреА
/etc/apt/sources.list
deb-src
рд▓рд╛рдЗрдиреЛрдВ рдХреЛ
/etc/apt/sources.list
рд╣реИ:
with open('/etc/apt/sources.list') as f: txt = f.read() with open('/etc/apt/sources.list', 'w') as f: f.write(txt.replace('# deb-src','deb-src'))
рдФрд░ рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рдирд┐рд░реНрднрд░рддрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ:
!apt update !apt build-dep caffe-cuda
рдЪрд░рдг 2: рдПрдХ рдФрд░ рд╕рдВрдХрд▓рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИрдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ:
g++-7
, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ
nvcc
CUDA рд╕рдВрдХрд▓рдХ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ
g++-5
рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдмрдирд╛рдпрд╛:
!apt install g++-5 !update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 20 !update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 20
рдЪрд░рдг 3: рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдирд╛ рд╣реЛрдЧрд╛рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдХреИрдл рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдорд╕реНрдпрд╛рдПрдБ рддрдм рдЙрдареЗрдВрдЧреА рдЬрдм рдЖрдк рдмреВрд╕реНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрдиреНрдп рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░
g++-5
(
рдмреВрд╕реНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЕрдзрд┐рдХ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
!wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.bz2 !tar --bzip2 -xf boost_1_67_0.tar.bz2 !cd boost_1_67_0 && ./bootstrap.sh --exec-prefix=/usr/local --with-libraries=system,filesystem,regex,thread,python --with-python-version=2.7 --with-python-root=/usr !cd boost_1_67_0 && ./b2 install
рдЪрд░рдг 4: рдореЗрдХрдлрд╛рдЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВGitHub рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрди рдХреИрдл:
!git clone https://github.com/weiliu89/caffe.git && cd caffe && git checkout ssd
рдФрд░ рд╣рдо Makefile.config рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдмрджрд▓рддреЗ рд╣реИрдВ - рдореИрдВрдиреЗ CUDA рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, BLAS рд╡рд┐рдХрд▓реНрдк рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, OpenCV рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рддреАрд╕рд░реЗ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛, рдПрдХ рдкрд╛рдпрдерди рдкрд░рдд рдЬреЛрдбрд╝ рджреА, рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкрде рднреА рдЬреЛрдбрд╝ рджрд┐рдП, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓рд╛ (рдпрд╣ рд╕рдм рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ) рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП):
with open('caffe/Makefile.config.example') as f: config = f.read() comment = ['CUDA_DIR := /usr/local/cuda', 'BLAS := open'] uncomment = ['# CUDA_DIR := /usr', '# BLAS := atlas', '# OPENCV_VERSION := 3', '# WITH_PYTHON_LAYER := 1']
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Makefile рдореЗрдВ, рдореБрдЭреЗ
-isystem
рд╕рднреА рдЯреИрдЧреНрд╕ рдХреЛ
-I
рд╕рд╛рде рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛: рджреЛрдиреЛрдВ рд╣реЗрдбрд░ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдЬрдм stdlib рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдерд╛ (рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
рдпрд╣рд╛рдБ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг ):
with open('caffe/Makefile') as f: mfile = f.read() with open('caffe/Makefile', 'w') as f: f.write(mfile.replace('-isystem','-I'))
рдЪрд░рдг 5: рдмрдирд╛рдПрдБрдПрдХ рдЕрдВрддрд┐рдо рдмреИрд╕рд╛рдЦреА рдмрдЪреА рдереА -
c++config.h
рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреНрдпрдерд╛ рдиреИрди рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ (
рдЕрдзрд┐рдХ ):
with open('/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h') as f: txt = f.read() with open('/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h', 'w') as f: f.write(txt.replace('/* #undef _GLIBCXX_USE_C99_MATH */', '/* #undef _GLIBCXX_USE_C99_MATH */\n#define _GLIBCXX_USE_C99_MATH 1'))
рдЕрдм, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдХреИрдл рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
!cd caffe && make -j8 && make pycaffe && make test -j8 && make distribute !echo /usr/local/lib >> /etc/ld.so.conf && ldconfig !echo /content/caffe/distribute/lib >> /etc/ld.so.conf && ldconfig
рдЕрдВрддрд┐рдо рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрде рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдмрдврд╝рд╛рд╡рд╛ рдФрд░ рдХреИрдлред
рдЕрдм Caffe рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЖрдкрдХреЛ рдмрд╕ PYTHONPATH рдореЗрдВ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)
import sys caffe_path = !cd caffe/python && pwd sys.path.insert(0, caffe_path[0]) import caffe
рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
рдореЛрдмрд┐рд▓рдиреЗрдЯ-рдПрд╕рдПрд╕рдбреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛: рдХреЛрдб рдореЗрд░реЗ
рд╕рд╣рдпреЛрдЧреА рдиреЛрдЯрдмреБрдХ рдореЗрдВ рднреА рд╣реИред
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд╛ рд╕рдордп рдорд╛рдкрд╛, рдФрд░ GPU рдкрд░ рддреНрд╡рд░рдг рд▓рдЧрднрдЧ 3.8 рдерд╛ред
рдмреЛрдирд╕: рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЯреНрд░рд┐рдХреНрд╕
Google Colaboratory рдкрд░ рдордзреНрдпрдо рдкрд░ рдПрдХ
рдорд╣рд╛рди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ ред рдХреЛрд▓реИрдмреЛрд░реЗрдЯрд░реА рдореЗрдВ рднреА рд▓рдЧрднрдЧ рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬрд┐рдирдХреА рдЬрд░реВрд░рдд рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ Google рдбрд┐рд╕реНрдХ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ:
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools !add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null !apt-get update -qq 2>&1 > /dev/null !apt-get -y install -qq google-drive-ocamlfuse fuse from google.colab import auth auth.authenticate_user() from oauth2client.client import GoogleCredentials creds = GoogleCredentials.get_application_default() import getpass !google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL vcode = getpass.getpass() !echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
рдпрд╣ рдХреЛрдб рд▓рд┐рдВрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рдЗрдирдкреБрдЯ рд╡рд┐рдВрдбреЛ рджреЗрдЧрд╛ред рдЖрдкрдХреЛ рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╡рд┐рдВрдбреЛ рдореЗрдВ рджрд░реНрдЬ рдХрд░реЗрдВред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореБрдЭреЗ рдРрд╕рд╛ рджреЛ рдмрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЕрдЧрд▓реЗ:
!mkdir -p drive !google-drive-ocamlfuse drive
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдЕрдкрдиреА Google рдбрд┐рд╕реНрдХ рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди Google-рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдХрд░реИрд╕ рд╕рдВрд╕реНрдерд╛рдкрди:
!pip install -q keras import keras
PyTorch рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
from os import path from wheel.pep425tags import get_abbr_impl, get_impl_ver, get_abi_tag platform = '{}{}-{}'.format(get_abbr_impl(), get_impl_ver(), get_abi_tag()) accelerator = 'cu80' if path.exists('/opt/bin/nvidia-smi') else 'cpu' !pip install -q http://download.pytorch.org/whl/{accelerator}/torch-0.3.0.post4-{platform}-linux_x86_64.whl torchvision import torch
рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрджрд▓реЗрдВ:
import os os.chdir("/path/to/wdir")
рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдорд┐рдЯрд╛ рджреЗрдВ рдФрд░ рдорд╢реАрди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ:
!kill -9 -1
рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ:
from google.colab import files files.download('file.ext')
Google рдбрд┐рд╕реНрдХ рдкрд░ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд╢рдмреНрджрдХреЛрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
from google.colab import files uploaded = files.upload()
рдореВрдХ рдЯрд░реНрдорд┐рдирд▓ рдХрдорд╛рдВрдб рдЖрдЙрдЯрдкреБрдЯ (рдЪрд░ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд):
lines_list = !pwd
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, Google рд╕рд╣рдпреЛрдЧреА рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рдЪ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝реЗ рдЧреНрд░рд┐рдб рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдФрд░ рдкреНрд▓рд╕ рд╕реНрдерд╛рдиреАрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рдЬреЛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ) рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдПрдХ рд╕рд╛рде рдХрд╛рдо рднреА рдХрд░рддрд╛ рд╣реИред рдПрдХ рдкрдХрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ, GPU рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред