Π‘ΡΠ°Π½ΠΎΠΊ Π΄Π»Ρ ΡΠ°ΡΠΏΠΈΠ»ΠΎΠ²ΠΊΠΈ Π±ΡΡΡΠ° MJF142G-0624
- ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ·Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ°Π½Π΅ΡΡ
- ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ·Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΏΠΎΠ½Π°
- ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΏΠΈΠ»ΠΎΠΊ
- Π‘ΡΡΠΈΠ»ΠΊΠΈ ΡΠΏΠΎΠ½Π°
- ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ·Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΠ‘Π ΠΈ ΠΠ‘Π
- ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ·Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄ΠΎΠ½ΠΎΠ²
- Π¨Π»ΠΈΡΠΎΠ²Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ°Π½ΠΊΠΈ Π΄Π»Ρ ΡΠ°Π½Π΅ΡΡ
- ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ·Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΠΠ€
- ΠΠΈΠ½ΠΈΠΈ ΠΏΠΎ ΡΠ°ΡΠΊΡΡΠΆΡΠ²ΠΊΠΈ ΠΈ ΡΠ°ΡΠΏΠΈΠ»ΠΎΠ²ΠΊΠΈ Π±ΡΠ΅Π²Π½Π°
- ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π΄ΡΠΎΠ±Π»Π΅Π½ΠΈΡ ΠΎΡΡ ΠΎΠ΄ΠΎΠ² Π΄Π΅ΡΠ΅Π²ΠΎΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
- ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΅ΠΌΠΎΠ½ΡΠ° ΡΠΏΠΎΠ½Π°
- ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ·Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ Π»Π°ΡΠΎΡΠ»Π΅ΠΊΡΠ°
- ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ²ΡΠ΅Π΅ Π²ΠΎ Π²Π»Π°Π΄Π΅Π½ΠΈΠΈ
- Π€ΠΎΡΠΌΠ°ΡΠ½ΠΎ-ΡΠ°ΡΠΊΡΠΎΠ΅ΡΠ½ΡΠ΅ ΡΡΠ°Π½ΠΊΠΈ
- Π¨ΠΈΠΏΠΎΡΠ΅Π·Π½ΡΠ΅ Π΄Π²ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΡΡΠ΅Π·Π΅ΡΠ½ΡΠ΅ ΡΡΠ°Π½ΠΊΠΈ
- ΠΡΡΠ³ΠΎΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΠ»Π°Π²Π½Π°Ρ
- Π‘ΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ
- ΠΠΈΠ½ΠΈΠΈ ΠΏΠΎ ΡΠ°ΡΠΊΡΡΠΆΡΠ²ΠΊΠΈ ΠΈ ΡΠ°ΡΠΏΠΈΠ»ΠΎΠ²ΠΊΠΈ Π±ΡΠ΅Π²Π½Π°
- Π‘ΡΠ°Π½ΠΎΠΊ Π΄Π»Ρ ΡΠ°ΡΠΏΠΈΠ»ΠΎΠ²ΠΊΠΈ Π±ΡΡΡΠ° MJF142G-0624
ΠΡΠΎΡ ΡΡΠ°Π½ΠΎΠΊ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π΄Π»Ρ ΡΡΡ ΠΎΠΉ Π΄ΡΠ΅Π²Π΅ΡΠΈΠ½Ρ Π±ΡΡΡΠ° ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ 60 ΠΌΠΌ ΠΈ ΠΎΡΠ½Π°ΡΠ΅Π½ Π½Π° Π²Ρ ΠΎΠ΄Π΅ ΠΏΡΠ»Π΅ΡΠ»Π°Π²Π»ΠΈΠ²Π°ΡΡΠΈΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠΎΠΌ ΡΠΊΠΎΡΠΎΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΌΡΠ³ΠΊΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Β Π΄ΡΠ΅Π²Π΅ΡΠΈΠ½Ρ Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ 1.4 ΠΌΠΌ ΠΏΡΠΎΠΏΠΈΠ»Π° ΠΈ Π±ΡΡΡΡΠΎΠΉ ΠΏΠΎΠ΄Π°ΡΠΈ.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ
ΠΠΎΠ΄Π΅Π»Ρ |
MJF142G-0624 |
MJF142G-0824 |
ΠΠΎΡΠ½ΠΎΡΡΡ (ΠΊΠΡ) |
35.1 |
35 |
ΠΠ»ΠΈΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (ΠΌΠΌ) |
β€350 |
β€350 |
Π‘ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄Π°ΡΠΈ (ΠΌ/ΠΌΠΈΠ½) |
0-12 |
0-12 |
Π’ΠΎΠ»ΡΠΈΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (ΠΌΠΌ) |
20-60 |
20-80 |
Π¨ΠΈΡΠΈΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (ΠΌΠΌ) |
240 |
240 |
ΠΠ°Π±Π°ΡΠΈΡΠ½ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ (ΠΌΠΌ) |
1850Ρ 1180Ρ 1420 |
1850Ρ 1180Ρ 1420 |
ΠΠ΅Ρ (ΠΊΠ³) |
1350 |
1350 |
ΠΠ΅ΡΡ Π½ΠΈΠ΅ ΠΈ Π½ΠΈΠΆΠ½ΠΈΠ΅ Π²Π°Π»Ρ ΠΈ ΡΠ»ΡΡΡΠ°ΡΠΎΠ½ΠΊΠΈΠ΅ Π»Π΅Π·Π²ΠΈΡ Ρ ΡΡΡ ΠΈΠΌ ΠΈ Π²Π»Π°ΠΆΠ½ΡΠΌ ΠΏΡΠ»Π΅ΡΠΎΡΠΎΠΌ
ΠΠ½ΡΡΠ°ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΊ Π΄Π»Ρ ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Ρ ΠΎΠ±ΡΠ΅Π·Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ
ΠΠΎΠ΄ΡΠ½ΠΎΠ΅ ΠΎΡ Π»Π°ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΠ½Π΄Π΅Π»Ρ,Β ΠΏΡΠΎΡΡΠΎΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π»Π΅Π·Π²ΠΈΡ, ΠΏΡΠΎΡΠ½ΡΠΉ ΠΏΠΎΠ΄ΡΠΈΠΏΠ½ΠΈΠΊ
Π Π΅Π³ΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΡΠΎΡΡ ΡΠΊΠ°Π»Ρ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠ΅ΠΌΠ°
Π Π΅Π³ΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° ΡΠ°ΡΡΠΎΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅ΠΌΡΠΌ ΡΠ³Π»ΠΎΠΌ
AMTEK APC 1200 ΠΠΠ¨ΠΠΠ ΠΠΠ― ΠΠΠΠ’Π ΠΠΠ― ΠΠΠΠΠ
AMTEK APC 1200 ΠΠΠΠΠ§ΠΠΠ― ΠΠΠ¨ΠΠΠΠΠ»ΠΈΠ·Π°Π±Π΅Ρ Π Π°ΠΉΠ°Π½2022-12-28T16:08:42-06:00ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Mac-Tech Ρ Π³ΠΎΡΠ΄ΠΎΡΡΡΡ ΠΏΡΠΎΠ΄Π°Π΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π»ΡΠ½ΠΎ-ΡΡΠ΅Π·Π΅ΡΠ½ΡΠΉ ΡΡΠ°Π½ΠΎΠΊ Amtek ACP 1200 Π΄Π»Ρ Π²ΡΠ΅Ρ Π²Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ Π² ΠΌΠ΅ΡΠ°Π»Π»ΠΎΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅.
- AMTEK ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡ ΠΎΠ΄ΠΎΠ²ΠΎΠΉ 48-Π΄ΡΠΉΠΌΠΎΠ²ΡΠΉ Π³ΠΈΠ΄ΡΠ°Π²Π»ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π·Π°ΠΆΠΈΠΌ VS OCEAN LIBERATOR IS MANUAL
- ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ AMTEK ΡΠ½ΠΈΠ·ΠΈΠ»Π° Π·Π°ΡΡΠ°ΡΡ Π½Π° ΡΠ°ΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Π·Π° ΡΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΡΠΎΡΠΊΠΈΡ ΠΊΠΈΡΠ»ΠΎΡΠΎΠ΄Π½ΡΡ Π½Π°ΠΊΠΎΠ½Π΅ΡΠ½ΠΈΠΊΠΎΠ², ΡΡΠΎ ΠΏΡΠΎΠ΄Π»ΠΈΡ ΡΡΠΎΠΊ ΡΠ»ΡΠΆΠ±Ρ Π½Π°ΠΊΠΎΠ½Π΅ΡΠ½ΠΈΠΊΠ° ΠΈ ΡΠΎΠΊΡΠ°ΡΠΈΡ Π²Π°ΡΠΈ ΡΠ°ΡΡ ΠΎΠ΄Ρ (ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π·Π°ΠΌΠ΅Π½Ρ 20 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π). VS OCEAN LIBERATOR ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»ΠΈΠ½Π½ΡΠ΅ Π½Π°ΠΊΠΎΠ½Π΅ΡΠ½ΠΈΠΊΠΈ HARRIS, ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 140 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π Π·Π° ΡΡΡΠΊΡ.
- Π‘ΠΈΡΡΠ΅ΠΌΠ° AMTEK ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Π·ΠΎΠ½Π΄ΠΎΠΌ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π ΠΠ’ΠΠΠ¨ΠΠΠΠ OCEAN LIBERATOR ΠΠΠ’
- ΠΠΎΠ½Π΄ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π΄Π΅Π½ΡΠ³ΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎΠ± ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ Π΄Π΅ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΠΏΡΠΈ ΡΠ½ΡΡΠΈΠΈ ΡΠ°ΡΠΊΠΈ
- AMTEK ΠΠ ΠΠΠΠΠΠΠΠ’ POWERMAX 125 Π΄Π»Ρ ΠΏΠ»Π°Π·ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ΅Π·ΠΊΠΈ ΡΡΠ°Π»ΠΈ ΡΠΎΠ»ΡΠΈΠ½ΠΎΠΉ Π΄ΠΎ 1,25 Π΄ΡΠΉΠΌΠ°. VS OCEAN ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ OxyFuel
- ΠΠ»Π°Π·ΠΌΠ΅Π½Π½Π°Ρ ΡΠ΅Π·ΠΊΠ° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ, Π½ΠΈΠ·ΠΊΠΈΠ΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ, ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π·ΠΊΠΈ Ρ Π΄Π²ΡΠΌΡ Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ (ΠΊΠΈΡΠ»ΠΎΡΠΎΠ΄Π½Π°Ρ ΠΏΠ»Π°Π·ΠΌΠ°)
- AMTEK ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π·Π°ΠΏΠ°ΡΠ΅Π½ΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°ΡΡΠΈΠΊΠΈ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π³ΠΎΡΠ΅Π»ΠΊΠΈ VS OCEAN Π½Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ
- ΠΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π½ΡΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΠ»Π΅ Π°Π²Π°ΡΠΈΠΈ ΡΠ΅Π·Π°ΠΊΠ°, ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΠ°ΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ
- ΠΠ°Π·Π΅ΡΠ½Π°Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° AMTEK ΡΠ²Π΅ΡΡ Π±ΡΡΡΡΠ°Ρ ΠΈ ΡΠ²Π΅ΡΡ ΡΠΎΡΠ½Π°Ρ
- ΠΠ·ΠΌΠ΅ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° AMTEK ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π² ΠΎΡΡΠ°ΡΠ»ΠΈ ΠΈ Π‘ΠΠΠΠ ΡΠΎΡΠ½ΠΎΠΉ Ρ Π‘ΠΠΠ«Π ΠΠΠΠΠΠ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ
- AMTEK ΡΠΎΠΊΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΈ Mac-Tech ΠΠ»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°
- ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ AMTEK ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ 15 ΠΌΠΈΠ½ΡΡ
- AMTEK Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 4 ΡΠ°ΡΠ° Π΄Π»Ρ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈ 1 Π½Π΅Π΄Π΅Π»Ρ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ° ΠΏΠΎΠ³ΡΡΠ·ΠΎΡΠ½ΠΎ-ΡΠ°Π·Π³ΡΡΠ·ΠΎΡΠ½ΡΡ ΡΠ°Π±ΠΎΡ
- AMTEK ΠΠ‘Π’Π¬ 6 APC1200, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΠ Π‘ΠΠΠΠΠ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 2 Π½Π΅Π΄Π΅Π»Ρ, Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 4 Π½Π΅Π΄Π΅Π»Ρ
- AMTEK Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²Π°ΡΠΈ ΡΠ°ΠΉΠ»Ρ NC1 ΠΈΠ· TEKLA ΠΈΠ»ΠΈ SDS2
- ΠΠ±ΡΠΈΠΉ
- ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
ΠΠ±ΡΠΈΠ΅
ΠΠ±ΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
Π’ΠΈΠΏΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ²ΠΎΠΈΡΡ:
- I-Beams
- ΠΊΠ°Π½Π°Π»ΠΎΠ²
- Π’ΡΠΎΠΉΠ½ΠΈΠΊΠΈ
- Π£Π³ΠΎΠ»ΠΊΠΈ
- Π’ΡΡΠ±ΠΊΠΈ
- Π’Π°ΡΠ΅Π»ΠΊΠΈ
ΠΠΈΠ΄ΡΠ°Π²Π»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°ΠΆΠΈΠΌΡ:
- ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π³Π»ΡΠ±ΠΈΠ½Π° = 47 Π΄ΡΠΉΠΌΠΎΠ² / 1066 ΠΌΠΌ
- ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠΈΠ»ΠΈΠ΅ = 1000 ΡΡΠ½ΡΠΎΠ² Π½Π° ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠΉ Π΄ΡΠΉΠΌ
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ = ΡΡΡΠ½ΠΎΠ΅/Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅
ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ:
- ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° = Windows 10
- ΠΠΌΠΏΠΎΡΡ DSTV = ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ
- Π ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ = Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ
- Π‘Π΅ΡΡ = Wi-Fi + RJ45
Π Π°Π±ΠΎΡΠ°Ρ Π·ΠΎΠ½Π° ΠΌΠ°ΡΠΈΠ½Ρ:
- ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π³Π»ΡΠ±ΠΈΠ½Π° = 42 Π΄ΡΠΉΠΌΠ° / 1066 ΠΌΠΌ
- ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π²ΡΡΠΎΡΠ° = 22 Π΄ΡΠΉΠΌΠ° / 558 ΠΌΠΌ
- ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠΎΠ»ΡΠΈΠ½Π° = 6 Π΄ΡΠΉΠΌΠΎΠ² / 150 ΠΌΠΌ Ρ Π³Π°Π·ΠΎΠΊΠΈΡΠ»ΠΎΡΠΎΠ΄Π½ΠΎΠΉ
0,75 Π΄ΡΠΉΠΌΠ° / 20 ΠΌΠΌ Ρ ΠΏΠ»Π°Π·ΠΌΠ΅Π½Π½ΠΎΠΉ- 5 ΠΠ‘ΠΠ
X β 38β
Y β 72β
Z β 24 Π΄ΡΠΉΠΌΠ°
Π¨ β 360 Π³ΡΠ°Π΄ΡΡΠΎΠ²
Π β ΠΎΡ -90 Π΄ΠΎ +60
- 5 ΠΠ‘ΠΠ
ΠΡΠΎΠ²ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠ»ΡΡ Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ:
- Π Π΅Π³ΡΠ»ΡΡΠΎΡ ΡΠΊΠΎΡΠΎΡΡΠΈ
- Π‘ΡΠ°ΡΡ/Π‘ΡΠΎΠΏ
- ΠΠ°ΡΠ·Π°/Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅/Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅
- Π‘Π²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π½ΡΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ
- ΠΠ½ΠΎΠΏΠΊΠ° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΊΠ° ΡΠ»ΡΠΆΠ±Ρ Π±Π°ΡΠ°ΡΠ΅ΠΈ
Π Π΅Π·Π°ΠΊ:
- Π Π΅Π·Π°ΠΊ Koike = 8 Π΄ΡΠΉΠΌΠΎΠ² / 200 ΠΌΠΌ
- Π’ΠΎΠΏΠ»ΠΈΠ²ΠΎ/Π³Π°Π· = ΠΏΡΠΎΠΏΠ°Π½/ΠΏΡΠΎΠΏΠΈΠ»Π΅Π½/Π°ΡΠ΅ΡΠΈΠ»Π΅Π½
- ΠΠΈΡΠ»ΠΎΡΠΎΠ΄ Π΄Π»Ρ ΡΠ΅Π·ΠΊΠΈ = Π³Π°Π·ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΉ ΠΊΠΈΡΠ»ΠΎΡΠΎΠ΄ / ΠΆΠΈΠ΄ΠΊΠΈΠΉ ΠΊΠΈΡΠ»ΠΎΡΠΎΠ΄
- Π¨Π»Π°Π½Π³ΠΈ ΠΈΠ»ΠΈ ΠΊΠ°Π±Π΅Π»ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°ΡΡΡΡ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠ»Π°ΠΌΠ΅Π½ΠΈ
Π‘Π΄Π΅Π»Π°Π½ΠΎ Π² Π‘Π¨Π
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
ΠΠ‘ΠΠΠΠΠΠΠ‘Π’Π
Π‘Π²ΡΠΆΠΈΡΠ΅ΡΡ Ρ Π½Π°ΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ!
- ΠΠΠ’ΠΠ ΠΠ Π‘1200
- Π’ΠΠΠ¬ΠΠ OXYFUEL: Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β $69 500,00
- ΠΠΠΠΠΠ + OXYFUEL : Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β $ 139,500. 00
- ΠΠΠΠΠΠΠ ΠΠΠ― ΠΠΠΠΠΠΠΠΠΠ ΠΠΠ ΠΠΠ ΠΠΠΠ Π ΠΠΠΠΠΠΠ: Β Β Β Β Β Β Β Β Β $ 154 500,00
- ΠΠ·ΠΌΠ΅ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° MD-60
- 27 500 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π
- Π ΠΠΠΠΠΠΠ«Π ΠΠΠΠΠΠΠΠ Π«:
- 100-Π΄ΡΠΉΠΌΠΎΠ²ΡΠ΅ – 6-ΡΠΎΠ»ΠΈΠΊΠΎΠ²ΡΠ΅, 44-Π΄ΡΠΉΠΌΠΎΠ²ΡΠ΅ ΡΠΎΠ»ΠΈΠΊΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ Π΄Π»Ρ ΡΡΠΆΠ΅Π»ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ:
- 2500 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π Π·Π° ΡΡΡΠΊΡ. (10 = 25 000)
- Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ 10 ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠ² = 60 ΡΡΡΠΎΠ² Π²Π½ΡΡΡΡ ΠΈ 40 ΡΡΡΠΎΠ² Π½Π°ΡΡΠΆΡ Ρ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ
- ΠΠΠΠΠ ΠΠ§ΠΠ«Π ΠΠΠ ΠΠΠΠ§Π:
- 6 000,00 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π (7 = 42 000 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π)
- Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ 7 ΠΏΠΎΠΏΠ΅ΡΠ΅ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ² (4 Π²Ρ ΠΎΠ΄Π°/3 Π²ΡΡ ΠΎΠ΄Π°) Π΄Π»Ρ 10 ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠ².
- Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ 20-ΡΡΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠΏΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π»Π΅Π³ΠΊΠΎ Π²ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ 8000 ΡΡΠ½ΡΠΎΠ²:
- ΠΠ΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠΊΠ°ΡΠΎΠΌ Π΄Π»Ρ ΠΏΠΎΠ³ΡΡΠ·ΠΎΡΠ½ΠΎ-ΡΠ°Π·Π³ΡΡΠ·ΠΎΡΠ½ΡΡ
ΡΠ°Π±ΠΎΡ
- 2400 $
- ΠΠΈΠ΄ΡΠ°Π²Π»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠ»ΠΎΠ²ΠΎΠΉ Π°Π³ΡΠ΅Π³Π°Ρ ΠΌΠΎΡΠ½ΠΎΡΡΡΡ 15 Π». Ρ. Ρ ΡΠ΅Π·Π΅ΡΠ²ΡΠ°ΡΠΎΠΌ Π½Π° 60 Π³Π°Π»Π»ΠΎΠ½ΠΎΠ²
- $ 5900,00
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° + ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅
- 10% ΠΎΡ ΠΎΠ±ΡΠ΅ΠΉ ΡΡΠΌΠΌΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΠΉ
- ΠΠΎΠΌΠ°Π½Π΄ΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ
ΠΠΌΡ *
ΠΠ΅ΡΠ²ΡΠΉ
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ
ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ *
Π’Π΅Π»Π΅ΡΠΎΠ½ *
ΠΠ».
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
Apache Beam Python Machine Learning
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Apache Beam Ρ API RunInference Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ (ML) Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Ρ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΌΠΈ ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°ΠΌΠΈ. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Apache Beam 2.40.0, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ PyTorch ΠΈ Scikit-learn. ΠΠΎΠ΄Π΅Π»ΠΈ Tensorflow ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· tfx-bsl.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ API RunInference ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ: API ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ· ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π° ΡΠΈΠΏ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΠ°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ API RunInference?
RunInference ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ Apache Beam, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ BatchElements
ΠΈ ΠΊΠ»Π°ΡΡ Shared
, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΡΠ²ΠΎΠΈΡ
ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°Ρ
Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠ² ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π³ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠΎΠΈΡΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ.
BatchElements PTransform
Π§ΡΠΎΠ±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΌΠΎΠ΄Π΅Π»ΡΡ
, ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ BatchElements
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π³Π° ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ³Π½ΠΎΠ·Π° Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²ΠΌΠ΅ΡΡΠ΅. ΠΠ°ΠΊΠ΅ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ RunInference. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ numpy ndarrays
ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ numpy.stack()
, Π° Π΄Π»Ρ torch Tensor
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ torch.stack()
.
Π§ΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ beam.BatchElements
, Π² ModelHandler
ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ batch_elements_kwargs
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ min_batch_size
, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅, ΠΈΠ»ΠΈ max_batch_size
, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ BatchElements
.
ΠΠ±ΡΠΈΠΉ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°
Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ RunInference ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ DoFn, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΡΡΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΌ. ΠΠ±ΡΠ°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°
.
ΠΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ
API RunInference ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ. ΠΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π΄Π»Ρ A/B-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΡΠΎΡΡΠΎΡΡΠΈΡ ΠΈΠ· ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΡ, ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠ΅ΠΉ ΡΠ΅ΡΠΈ, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ°, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ RunInference, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
from apache_beam.ml.inference.base import RunInference Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠΌ ΠΊΠ°ΠΊ p: ΠΏΡΠΎΠ³Π½ΠΎΠ·Ρ = ( p | 'Π§ΡΠ΅Π½ΠΈΠ΅' >> beam.ReadFromSource('a_source') | 'RunInference' >> RunInference()
ΠΠ΄Π΅ model_handler
β ΠΊΠΎΠ΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΠ»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ModelHandler
ΠΠ±ΡΠ΅ΠΊΡ, ΠΎΠ±Π΅ΡΡΡΠ²Π°ΡΡΠΈΠΉ Π±Π°Π·ΠΎΠ²ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ. ΠΠ°ΠΊΠΎΠΉ ModelHandler
Π²Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΡΠΈΠΏΠ° ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ModelHandlers, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ.
ΠΈΠ· ΠΈΠΌΠΏΠΎΡΡΠ° apache_beam.ml.inference.sklearn_inference SklearnModelHandlerNumpy ΠΈΠ· apache_beam.ml.inference.sklearn_inference ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ SklearnModelHandlerPandas ΠΈΠ· apache_beam.ml.inference.pytorch_inference ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ PytorchModelHandlerTensor ΠΈΠ· apache_beam.ml.inference.pytorch_inference ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ PytorchModelHandlerKeyedTensor ΠΈΠ· tfx_bsl.public.beam.run_inference ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ CreateModelHandler
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ PyTorch ΠΈ Scikit-learn
PyTorch
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΌΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΡΠΎΡ ΠΏΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ API RunInference ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ PyTorch, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
- ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΠ΅ Π²Π΅ΡΠ° ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΈΡ Π² ΠΌΠ΅ΡΡΠ΅, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ Π΄Π»Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°.
- ΠΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ ΠΏΡΡΡ Π²Π΅ΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² PyTorch
ModelHandler
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:state_dict_path=
.
Π‘ΠΌ. ΡΡΠΎΡ Π±Π»ΠΎΠΊΠ½ΠΎΡ ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ PyTorch Ρ Apache Beam.
Scikit-learn
ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΌΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Scikit-learn. ΠΡΠΎΡ ΠΏΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ API RunInference ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Scikit-learn, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΊΠ»Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΠΌΠ΅ΡΡΠ΅, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ Π΄Π»Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°.
- ΠΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ ΠΏΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Sklearn
ModelHandler
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:model_uri=
ΠΈmodel_file_type:
, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡModelFileType. PICKLE
ΠΈΠ»ΠΈModelFileType.JOBLIB
Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ»Π° ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΌΠΎΠ΄Π΅Π»Ρ.
Π‘ΠΌ. ΡΡΠΎΡ Π±Π»ΠΎΠΊΠ½ΠΎΡ ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Scikit-learn Ρ Apache Beam.
TensorFlow
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ TensorFlow Ρ API RunInference, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
tfx_bsl
Π²Π΅ΡΡΠΈΠΈ 1.10.0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ. - Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
tfx_bsl.public.beam.run_inference.CreateModelHandler()
. - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
apache_beam.ml.inference.base.RunInference
.
Π‘ΠΌ. ΡΡΠΎΡ Π±Π»ΠΎΠΊΠ½ΠΎΡ ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ TensorFlow Ρ Apache Beam ΠΈ tfx-bsl.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΡΠΊΠ°Π·Π°Π½Π° Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ
ΠΏΠ»Π°ΡΡΠΎΡΠΌ, API RunInference Π³ΠΈΠ±ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ModelHandler
ΠΈΠ»ΠΈ KeyedModelHandler
Ρ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π²Π°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΅Π΅ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²ΡΠ²ΠΎΠ΄Π°.
ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΡΠΎΠΉ Π·Π°ΠΏΠΈΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠΆΠΊΠ΅.
ΠΠ΅ΡΠΎΠ΄ load_model
ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΠ°ΠΊΠ΅Ρ spaCy
, Π° run_inference
ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ RunInference Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°.
Π¨Π°Π±Π»ΠΎΠ½ A/B
Ρ ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΎΠΌ ΠΊΠ°ΠΊ p: Π΄Π°Π½Π½ΡΠ΅ = Ρ | 'Π§ΡΠ΅Π½ΠΈΠ΅' >> beam.ReadFromSource('a_source') model_a_predictions = Π΄Π°Π½Π½ΡΠ΅ | RunInference() model_b_predictions = Π΄Π°Π½Π½ΡΠ΅ | RunInference( )
ΠΠ΄Π΅ model_handler_A
ΠΈ model_handler_B
β ΠΊΠΎΠ΄ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΠ°ΡΠΊΠ°Π΄Π½Π°Ρ ΡΡ Π΅ΠΌΠ°
Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠΌ ΠΊΠ°ΠΊ p: Π΄Π°Π½Π½ΡΠ΅ = Ρ | 'Π§ΡΠ΅Π½ΠΈΠ΅' >> beam. ReadFromSource('a_source') model_a_predictions = Π΄Π°Π½Π½ΡΠ΅ | RunInference() model_b_predictions = model_a_predictions | beam.Map(some_post_processing) | RunInference( )
ΠΠ΄Π΅ model_handler_A
ΠΈ model_handler_B
β ΡΡΠΎ ΠΊΠΎΠ΄ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΡΠΌ
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ΅ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠΈΠΌ SKU. ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΡ ΠΊ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°Π³Π° Π² Π²Π°ΡΠ΅ΠΌ ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΊΠ°ΡΠΊΠ°Π΄Π½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°ΠΌΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° RunInference. ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΌΡ ΡΡΠΊΠΎΡΠΈΡΠ΅Π»Ρ:
Ρ ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΎΠΌ ΠΊΠ°ΠΊ p: Π΄Π°Π½Π½ΡΠ΅ = Ρ | 'Π§ΡΠ΅Π½ΠΈΠ΅' >> beam.ReadFromSource('a_source') model_a_predictions = Π΄Π°Π½Π½ΡΠ΅ | RunInference(). with_resource_hints(min_ram="20GB") model_b_predictions = model_a_predictions | Π»ΡΡ.ΠΠ°ΡΡΠ°(some_post_processing) | RunInference( ).with_resource_hints( ΠΌΠΈΠ½_ΡΠ°ΠΌ = "4 ΠΠ", ΡΡΠΊΠΎΡΠΈΡΠ΅Π»Ρ = "ΡΠΈΠΏ: nvidia-tesla-k80; ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ: 1; ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ-nvidia-Π΄ΡΠ°ΠΉΠ²Π΅Ρ")
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°Ρ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ².
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ModelHandler Ρ ΠΊΠ»ΡΡΠΎΠΌ
ΠΡΠ»ΠΈ ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ ΠΊΠ»ΡΡ, ΠΎΠ±Π΅ΡΠ½ΠΈΡΠ΅ KeyedModelHandler
Π²ΠΎΠΊΡΡΠ³ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ModelHandler
:
from apache_beam.ml.inference.base import KeyedModelHandler keyed_model_handler = KeyedModelHandler (PytorchModelHandlerTensor (...)) Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠΌ ΠΊΠ°ΠΊ p: Π΄Π°Π½Π½ΡΠ΅ = Ρ | Π»ΡΡ.Π‘ΠΎΠ·Π΄Π°ΡΡ([ ('img1', torch.tensor([[1,2,3],[4,5,6],...])), ('img2', torch.tensor([[1,2,3],[4,5,6],...])), ('img3', torch.tensor([[1,2,3],[4,5,6],...])), ]) ΠΏΡΠΎΠ³Π½ΠΎΠ·Ρ = Π΄Π°Π½Π½ΡΠ΅ | RunInference (keyed_model_handler)
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΠ²Π»ΡΡΡΡΡ Π»ΠΈ Π²Π°ΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ MaybeKeyedModelHandler
.
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΌ. KeyedModelHander
.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° PredictionResults
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³Π½ΠΎΠ·Π° Π² Apache Beam Π²ΡΡ
ΠΎΠ΄Π½Π°Ρ PCollection
Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΠΊΠ»ΡΡΠΈ Π²Ρ
ΠΎΠ΄Π½ΡΡ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΡΠ°ΠΊ ΠΈ Π²ΡΠ²ΠΎΠ΄Ρ. ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠΈΡ
ΡΡΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΉΡΠΈ Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³Π½ΠΎΠ·Ρ.
PredictionResult
β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ NamedTuple
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠ°ΠΊ Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΠ°ΠΊ ΠΈ Π²ΡΠ²ΠΎΠ΄Ρ, Π½Π°Π·Π²Π°Π½Π½ΡΠ΅ example
ΠΈ inference
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠΎΠ³Π΄Π° ΠΊΠ»ΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Ρ Π²Ρ
ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ RunInference, Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ PCollection
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Tuple[str, PredictionResult]
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠΎΠΌ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ PredictionResult
. ΠΠ°Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ PredictionResult
ΠΏΠΎ ΡΠ°Π³Π°ΠΌ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ RunInference.
ΠΊΠ»Π°ΡΡ PostProcessor(beam.DoFn): def ΠΏΡΠΎΡΠ΅ΡΡ (Ρ, ΡΠ»Π΅ΠΌΠ΅Π½Ρ: Tuple [str, PredictionResult]): ΠΊΠ»ΡΡ, ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅_ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ = ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²Ρ ΠΎΠ΄Ρ = ΠΏΡΠΎΠ³Π½ΠΎΠ·_ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ = ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅_ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.Π²ΡΠ²ΠΎΠ΄ # ΠΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ = ... Π²ΡΡ ΠΎΠ΄ (ΠΊΠ»ΡΡ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ) Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠΌ ΠΊΠ°ΠΊ p: Π²ΡΠ²ΠΎΠ΄ = ( Ρ | 'Π§ΡΠ΅Π½ΠΈΠ΅' >> beam.ReadFromSource('a_source') | 'PyTorchRunInference' >> RunInference() | 'ProcessOutput' >> beam.ParDo(PostProcessor()))
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
from apache_beam.ml.inference.base import PredictionResult
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ PredictionResult
.
ΠΠ°ΠΏΡΡΠΊ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
ΠΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ Π·Π°ΠΏΡΡΠΊΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΡΠΌ. ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠ² API RunInference Π½Π° GitHub.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Beam Java SDK
API RunInference Π΄ΠΎΡΡΡΠΏΠ΅Π½ Ρ Beam Java SDK Π²Π΅ΡΡΠΈΠΈ 2.41.0 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠ² Apache Beam. Π‘Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Java ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ RunInference.java. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΡΠΎ, ΡΠΌ. ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Java Sklearn Mnist.
Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠΌ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ, Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ, ΠΈ Π΄Π°Π½Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΈΡ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ.
ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅Π½Π·ΠΎΡΠ°
RunInference ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ. ΠΠ΄Π½Π°ΠΊΠΎ API RunInference Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅Π½Π·ΠΎΡΠ° ΡΠ°Π·Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ±ΠΎΡΠΊΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ RunInferene, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Ρ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈΠ»ΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ ΡΠ»ΠΎΠ² ΡΠ°Π·Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°:
Π€Π°ΠΉΠ» "/beam/sdks/python/apache_beam/ml/inference/pytorch_inference.py", ΡΡΡΠΎΠΊΠ° 232, Π² run_inference batched_tensors = torch.stack(key_to_tensor_list[key]) RuntimeError: ΡΡΠ΅ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅Π½Π·ΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ» [12] Π² Π·Π°ΠΏΠΈΡΠΈ 0 ΠΈ [10] Π² Π·Π°ΠΏΠΈΡΠΈ 1 [Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ PyTorchRunInference/ParDo(_RunInferenceDoFn)']
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ.
ΠΠ°ΡΠΈΠ°Π½Ρ 1. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅Π»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ. ΠΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° (NLP), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ΠΊΡΡ ΡΠ°Π·Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ»ΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ ΡΠ»ΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ ΡΠ°Π·Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ. Π ΡΡΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ (ΡΠΌ. Π²Π°ΡΠΈΠ°Π½Ρ 2).
ΠΠ°ΡΠΈΠ°Π½Ρ 2: ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ
ΠΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ, ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² ΡΡΠ½ΠΊΡΠΈΡ batch_elements_kwargs
Π² Π²Π°ΡΠ΅ΠΌ ModelHandler ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° ( max_batch_size
) ΡΠ°Π²Π½ΡΠΌ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅: max_batch2size=1 9000. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΌ.
ΠΠ°ΠΊΠ΅ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ PTransforms. ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠΌ. Π½Π°Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.