NVIDIA ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° Π² ΠΎΡΠΊΡΡΡΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ cuOpt. ΠΡΠΎ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ GPU Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ
Π·Π°Π΄Π°Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π»ΠΎΠ³ΠΈΡΡΠΈΠΊΠΈ.
cuOpt ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, Π³Π΄Π΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅ΡΠΏΡΡ ΠΊΡΠ°Ρ
., ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Ρ Β«Π½Π΅ΡΠ΅ΡΠ°Π΅ΠΌΡΠ΅Β» Π·Π°Π΄Π°ΡΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π±Π΅Π· ΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΎΠΌ ΠΈΠ»ΠΈ ΡΠΊΠΎΡΠΎΡΡΡΡ. ΠΡΠΎ, ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π°, Β«ΡΡΡΠ±ΠΎΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΎΡΠ΅Β» Π΄Π»Ρ Π·Π°Π΄Π°Ρ, Π³Π΄Π΅ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠΎΡΠ½ΠΎΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½Ρ, ΠΎΡ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΡΠΎΠ²Π°ΡΠΎΠ² Π΄ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π°.
cuOpt ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· C++-Π΄Π²ΠΈΠΆΠΊΠ° ΠΈ API (Python, C ΠΈ Π΄ΡΡΠ³ΠΈΠ΅), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±Π΅ΡΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π³ΠΈΠ±ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π² ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ.
ΠΠ»Ρ Π·Π°Π΄Π°Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΉ (TSP, VRP, PDP) cuOpt Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΡΠ°Π΅Ρ ΠΈΡ
ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ. ΠΡΠΎ Π½Π΅ Β«Π»ΠΎΠ±ΠΎΠ²ΠΎΠ΅Β» Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², Π° ΡΠΌΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΠ΅ΡΡΡΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ.
ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (LP) ΠΈ ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠΌΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ (MILP) ΡΠΎΠΆΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Ρ. ΠΠ»Ρ LP ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ PDLP β Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΡΠΉ ΡΠΏΡΡΠΊ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° GPU, Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡ Π½Π° CPU Ρ ΡΠΈΠΌΠΏΠ»Π΅ΠΊΡ-ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ.
Π‘ΠΌΠ΅ΡΠ°Π½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ - ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠ΅ΡΠ°ΡΡ Π·Π°Π΄Π°ΡΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΌΠ΅ΡΠΈ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΠΊΠ»ΡΡΠ°Ρ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠ΅ ΠΈ Π΄ΡΠΎΠ±Π½ΡΠ΅), Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
Π MILP Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅: Π½Π° GPU Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ²ΡΠΈΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ, Β«feasibility pumpΒ»), Π° CPU Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΈ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ, ΡΠ»ΡΡΡΠ°Ρ ΠΎΡΠ΅Π½ΠΊΡ. Π Π΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ GPU ΠΈ CPU ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ (Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ΠΎΠΌ) ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ AMPL ΠΈ PuLP, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ cuOpt Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΈΡΡΡΡΡΡ.
Π ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ±ΡΠ°Π»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈ Jupyter-Π½ΠΎΡΡΠ±ΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΠΈΠ»ΠΈ Π² ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ : Google Colab (Ρ Π²ΡΠ±ΠΎΡΠΎΠΌ GPU-ΡΡΠ΅Π΄Ρ) ΠΈΠ»ΠΈ NVIDIA Launchable.
@ai_machinelearning_big_data
#AI #ML #DS #NVIDIA #CuOPT