ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ on-premises ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±Π»Π°ΠΊΠ°) ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ MLOps. ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ: Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ API S3, Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ Apache Spark, ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ·ΡΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ML β Python.
Π Π°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΠΊΡΡΠ°, ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ΅ Π·ΡΠ΅Π½ΠΈΠ΅, ΡΠ°Π±Π»ΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Ρ.Π΄.), ΠΈ ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Ρ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ MLOps, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅ΡΡ ΡΡΠΈ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ ΠΈ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ:
-
Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½ (deployment): Π½Π°Π΄ΡΠΆΠ½ΠΎ Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΡΠ°Π±ΠΎΡΡΡ ΡΡΠ΅Π΄Ρ, ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
-
ΠΠ΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ Π΄Π°Π½Π½ΡΡ : ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΉ Π΄Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡΠΌ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
-
ΠΠΎΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (retraining): Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π° Π½ΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΈ Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π΄ΡΠ΅ΠΉΡΠ΅ Π΄Π°Π½Π½ΡΡ ).
-
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ML-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ²: Π²ΡΡΡΡΠΎΠΈΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ (pipelines) Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΡΠ°ΠΏΠΎΠ² ML β ΠΎΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π΄ΠΎ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
-
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ: ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅, Π²ΡΡΠ²Π»ΡΡΡ Π΄ΡΠ΅ΠΉΡ Π΄Π°Π½Π½ΡΡ /ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π²Π°Π»ΠΈΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ.
-
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ CI/CD: ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ CI/CD, ΡΡΠΎΠ±Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΡΡ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ.
ΠΠ°Π»Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΎΠ±Π·ΠΎΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² MLOps Π΄Π»Ρ on-prem ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² (open-source ΠΈ enterprise), ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ² Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΠΌΠΈ, ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ ΡΠ²ΠΎΠ΄Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ MLOps Π΄Π»Ρ on-prem
ΠΡΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΠ΅ MLOps Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΠΌΠΈ: ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ (SageMaker, Azure ML ΠΈ ΠΏΡ.), Π½ΠΎ Π΅ΡΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΡΡΠ΅Π΄ΠΎΠΉ. ΠΠΈΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ on-prem MLOps:
-
ΠΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ-ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ : Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π³ΡΠ°Π΄Π°ΡΠΈΡ ΡΡΠΎΠ²Π½Π΅ΠΉ Π·ΡΠ΅Π»ΠΎΡΡΠΈ MLOps:
-
Level 0 β ΡΡΡΠ½ΠΎΠΉ, Π½Π΅ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Π³Π΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π°Π½Π½ΡΡ Π²ΡΡΡΠ½ΡΡ Π³ΠΎΡΠΎΠ²ΠΈΡ Π΄Π°Π½Π½ΡΠ΅, ΠΎΠ±ΡΡΠ°Π΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π΅Ρ Π΅Ρ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈβ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌ ΡΠ°Π·Π²Π΅ ΡΡΠΎ Π΄Π»Ρ ΡΠ΅Π΄ΠΊΠΈΡ ΡΠ°Π·ΠΎΠ²ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π½ΠΎ ΠΏΠ»ΠΎΡ ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ, ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±ΡΡΡΡΠΎ Β«ΡΡΠ°ΡΠ΅ΡΡΒ» ΠΈ ΡΡΠ΅Π±ΡΡΡ ΡΠ°ΡΡΠΎΠ³ΠΎ ΡΡΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡβ.
-
Level 1 β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ML-ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ: Π²ΠΌΠ΅ΡΡΠΎ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅Π»ΡΠΉ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈβ.
-
Level 2 β CI/CD Π΄Π»Ρ ML: ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΈΠΊΠ» ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ (continuous training) ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈβ.
-
-
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° vs. ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Β«ΠΏΠΎΠ΄ ΠΊΠ»ΡΡΒ»: Π on-prem ΡΡΠ΅Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π΄Π²Π° ΠΏΡΡΠΈ β ΡΠΎΠ±ΡΠ°ΡΡ ΡΠ²ΠΎΡ MLOps-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈΠ· ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (open-source ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²) ΠΈΠ»ΠΈ Π²Π½Π΅Π΄ΡΠΈΡΡ Π³ΠΎΡΠΎΠ²ΠΎΠ΅ enterprise-ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ±ΠΎΡΠΊΠ° Π΄Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ Π²Π΅Π½Π΄ΠΎΡΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ Π»ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠ°ΠΏ ML-ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΡ ΡΠΊΡΠΏΠ΅ΡΡΠΈΠ·Ρ ΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
ΠΠΎΡΠΎΠ²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° (Β«black boxΒ») ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΡΡΡΠ΄ΠΎΠ·Π°ΡΡΠ°ΡΡ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ β ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠΈΠΏΠ° DataRobot, Domino Data Lab etc., ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ on-premβ. ΠΠ΄Π½Π°ΠΊΠΎ Π·Π°ΠΊΡΡΡΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΌΠΎΠ³ΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΡΡ Π΄ΠΎΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π²ΠΎΠΊΡΡΠ³ Π½ΠΈΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈβ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ: Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΏΠΎΡ Π΄Π΅Π»Π°Π΅ΡΡΡ Π½Π° open-source (Π΄Π»Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ), Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ enterprise-ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
-
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π΄Π»Ρ ML: ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² β Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ML-ΡΠΈΡΡΠ΅ΠΌΡ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΌΠΈ ML-ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ stateless-ΡΠ΅ΡΠ²ΠΈΡΡ (ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ β Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎβ. ΠΠ°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ/Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ: Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΊΠ°ΠΊ Π½ΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°Π½Π°ΡΠ΅ΠΉΠΊΡ ΠΈΠ»ΠΈ A/B ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π° pipeline ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΡΠΎΠΈΡΡ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π½ΠΈΠΆΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ (FastAPI + Uvicorn + Nginx) ΠΈ ΠΌΠΎΠ³ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ Π½Π°Π³ΡΡΠ·ΠΊΡ.
-
ΠΠ΄ΠΈΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π°Π½Π½ΡΡ (Data Lake/Lakehouse): ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠΈΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π° on-prem Π²Π°ΠΆΠ½ΠΎ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ . Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ S3-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ β ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΡΠΎ Data Lake. ΠΠ°ΡΡΠ΅ΡΠ½ Lakehouse ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ²Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΎΡΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ Data Lake. Open-source ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ β Delta Lake β Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π° S3/HDFS Ρ ACID-Π³Π°ΡΠ°Π½ΡΠΈΡΠΌΠΈ ΠΈ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ ΡΠΈΠΏΠ° Time Travel. ΠΠ½Π°Π»ΠΎΠ³ΠΈ β Apache Hudi, Apache Iceberg. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°ΡΠ°ΡΠ΅ΡΡ Ρ ΠΌΠ΅ΡΠΊΠ°ΠΌΠΈ Π²Π΅ΡΡΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π°ΡΠ°ΡΠ΅Ρ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ±ΡΡΠ΅Π½Π° Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ v1.2, ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ). ΠΡΠΎ ΡΠ΅ΡΠ°Π΅Ρ Π·Π°Π΄Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ, Π½Π° ΠΊΠ°ΠΊΠΈΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π° ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ.
-
Feature Store: ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ (features) ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡδΈΠ΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² Π² ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ ΠΈ ΠΏΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ΅, ΡΡΠΎΠΈΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ Feature Store. ΠΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΡ ΡΠ°ΡΡΡΠΈΡΠ°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΡΠ»Π°ΠΉΠ½-Π°Π½Π°Π»ΠΈΠ·Π°, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° Ρ Π½ΠΈΠ·ΠΊΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΎΠΉ. Π on-prem ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ open-source Feast ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠ΅ Hopsworks. Feature Store Π²ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² MLOps-ΠΏΡΠΎΡΠ΅ΡΡ: Π½ΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡΡΡ Π² ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ, ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ Π±Π΅ΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ ΠΈΠ· ΠΎΡΠ»Π°ΠΉΠ½ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, Π° ΠΏΡΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠΈ β ΠΈΠ· ΠΎΠ½Π»Π°ΠΉΠ½ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ½Π°. ΠΡΠΎΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ΅Π½ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ real-time ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ (ΡΠ΅ΠΊΠΎΠΌΠΌΠ΅Π½Π΄Π΅ΡΡ, Π°Π½ΡΠΈΡΡΠΎΠ΄ ΠΈ Ρ.ΠΏ.), Π½ΠΎ ΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ (ΠΈΡΠΊΠ»ΡΡΠ°Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΡΠ°ΡΡΡΡ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²).
-
ΠΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ML-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²: ΠΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½ MLOps β ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡ pipeline ML. ΠΠΌΠ΅ΡΡΠΎ ΡΡΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΊΡΠΈΠΏΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΈ ΡΠΎΠ±ΡΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ°Π³ΠΈ: ΡΠ±ΠΎΡ/ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½ΡΡ , ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎ Π½Π° Spark), ΠΎΡΠ΅Π½ΠΊΠ° ΠΊΠ°ΡΠ΅ΡΡΠ²Π°, ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ Ρ.Π΄. Π on-prem ΡΡΠ΅Π΄Π΅ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ: ΠΎΡ Unix cron ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ² Bash Π΄ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ workflow-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ². Π‘ΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π΅-ΡΠ°ΠΊΡΠΎ ΡΡΠ°Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠΈΠΏΠ° Apache Airflow (ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΠ΅ Prefect, Dagster) Π΄Π»Ρ Π·Π°Π΄Π°Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ batch-Π·Π°Π΄Π°Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ Kubernetes-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Kubeflow Pipelines ΠΈΠ»ΠΈ Apache Argo Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ML-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΠ°ΡΡΠ΅ΡΠ½ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡ pipeline ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π· Π² Π½Π΅Π΄Π΅Π»Ρ ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΌΠ° Π΄Π°Π½Π½ΡΡ .
-
CI/CD Π΄Π»Ρ ML (Continuous Integration/Continuous Delivery): ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ DevOps-ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ β Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΡΠ΅ΡΠ½. ΠΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ² Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ (Git); ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΌΠΎΠ³ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠ΅ΡΡΡ (Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΎΠ±ΡΠ°Π·ΡΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΌΠ΅ΡΡΠΈΠΊ). Π‘ΠΈΡΡΠ΅ΠΌΠ° CI (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Jenkins, GitLab CI) ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ β ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² CD ΡΠΈΡΡΠ΅ΠΌΡ. Continuous Delivery Π΄Π»Ρ ML ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠ°. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, CI/CD Π΄Π»Ρ ML ΡΠ°ΡΡΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΠ΅ΡΡΡ Ρ pipeline-ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠ΅ΠΉ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ML-ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΡΠΈΠ³Π³Π΅ΡΠΈΡ Jenkins-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ workflow Π² Airflow/Kubeflow Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΡΠ΅ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΡΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΠΏΠΎΡΡΠ°Π²ΠΊΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½.
ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³, Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ on-prem MLOps Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΡΡΠΈΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ². ΠΠ΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠ²ΡΠ·Ρ β Π²ΡΠ΅ ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π·Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ.
ΠΠ±Π·ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² MLOps (open-source ΠΈ enterprise)
Π‘ ΡΡΡΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ², ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² on-prem ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅. ΠΡΠ΄ΡΡ ΠΎΡ Π²Π°ΡΠ΅Π½Ρ open-source ΡΠ΅ΡΠ΅Π½ΠΈΡ (ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ½ΡΠ΅) ΠΈ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ enterprise-Π°Π½Π°Π»ΠΎΠ³ΠΈ ΡΠ°ΠΌ, Π³Π΄Π΅ ΡΡΠΎ ΡΠΌΠ΅ΡΡΠ½ΠΎ. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ Π±Π»ΠΎΠΊΠ°ΠΌ MLOps.
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
MLflow β ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ open-source ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ ΠΎΡ Databricks. MLflow ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ², ΠΌΠ΅ΡΡΠΈΠΊΠΈ, Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΉΠ»Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ) ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Model Registry β ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅Π΅ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΡΡΠ°ΡΡΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, βStagingβ, βProductionβ) ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈβ. MLflow Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ β ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π· Python API ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π»ΡΠ±ΡΡ ΡΡΠ΅Π΄Π°Ρ (Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΠΈ Ρ.Π΄.)β. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π΄Π»Ρ Π΄Π°ΡΠ°-ΡΠ°ΠΉΠ΅Π½ΡΠΈΡΡΠΎΠ²: Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ Π² ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°. Π Π½Π°ΡΠ΅ΠΌ on-prem ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ MLflow Ρ ΠΎΡΠΎΡΠΎ Π²ΠΏΠΈΡΠ΅ΡΡΡ: Π΅Π³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ² ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ΅Π»ΠΈΡΡ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ S3-Π±Π°ΠΊΠ΅Ρ (ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ S3) Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π° ΡΠ°ΠΌ ΡΡΠ΅ΠΊΠΈΠ½Π³-ΡΠ΅ΡΠ²Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PostgreSQL) Π΄Π»Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ . ΠΠ»ΡΡΡ MLflow: ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ, ΡΠΈΡΠΎΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΡΠΎ Spark (Π΅ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π΄Π»Ρ Π°Π²ΡΠΎΠ»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· Spark MLlib) ΠΈ Π»ΡΠ±ΡΠΌΠΈ ML-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈβ. ΠΠΈΠ½ΡΡΡ: MLflow ΡΠΎΠΊΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠΈ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ΅; ΠΎΠ½ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° β ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ-ΡΡΠ΅ΠΊΠΈΠ½Π³Π°: Apache Atlas (Π΄Π»Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ , Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ΅Π½), Neptune.ai, Comet ML, Weights & Biases. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π΄Π²Π° β ΠΎΠ±Π»Π°ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, Π½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΈ on-prem edition (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, W&B ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ). ΠΠ΄Π½Π°ΠΊΠΎ, Ρ Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ. ΠΠ· ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ open-source Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ DVC Studio (ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π°Π΄ DVC) ΠΈΠ»ΠΈ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠ΅ Aim, Sacred. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, MLflow Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄Π΅-ΡΠ°ΠΊΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠΈΠ½Π³Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ MLflow ΠΊΠ°ΠΊ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈ Feature Store
ΠΠ΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΡΡΠΎΠ»Ρ ΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠΎΡΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ β Ρ ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠΏΠΈΠΈ Π΄Π°ΡΠ°ΡΠ΅ΡΠΎΠ² ΠΈΠ»ΠΈ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ Π² Data Lake. ΠΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²:
DVC (Data Version Control) β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ°ΡΡΠΈΡΡΡΡΠΈΠΉ Git Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. DVC ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ Π²ΡΠ±ΠΎΡΠΊΠΈ, Π²Π΅ΡΠ° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ) Π±Π΅Π· Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² Git. Π€Π°ΠΉΠ»Ρ Ρ ΡΠ°Π½ΡΡΡΡ Π²ΠΎ Π²Π½Π΅ΡΠ½Π΅ΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ β ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ, S3-Π±Π°ΠΊΠ΅ΡΡ, HDFS ΠΈ Ρ.Π΄. β Π° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π΅Ρ ΠΈ ΡΡΡΠ»ΠΊΠ°. DVC ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»Π΅Π½ ΡΠ΅ΠΌ, ΡΡΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ S3 (ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ remote-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ S3 ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ) ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠ»ΡΡΡ DVC: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΉ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ Git, Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² (ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°Π½Π½ΡΡ β ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ), Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ML-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° ΡΠ΅ΡΠ΅Π· DVC.yaml (Ρ ΡΠ°Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΡΠ°ΠΏΠΎΠ²) ΠΈ Π΄Π°ΠΆΠ΅ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² Π½Π° CI. ΠΠΈΠ½ΡΡΡ: ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π° Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π΄Π»Ρ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅Π½Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ (Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡ Π²ΡΠ±ΠΎΡΠΊΠ°ΠΌΠΈ), ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ workflow-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°ΠΌΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, DVC ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΏΡΠΎΡΡΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΠΏΠ° β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π΅ΡΡΠΈΠΈ Π΄Π°ΡΠ°ΡΠ΅ΡΠ° Ρ ΡΠ°Π½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ DVC, Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² MLflow.
Delta Lake β ΠΊΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, ΡΡΠΎ Π΄Π²ΠΈΠΆΠΎΠΊ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅ΡΡ Parquet-ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π° S3/HDFS, Π΄Π°ΡΡΠΈΠΉ ACID-ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Time Travel). Delta Lake ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ Spark: ΠΎΠ½ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ Spark SQL. Π on-prem ΡΡΠ΅Π½Π°ΡΠΈΠΈ, Π³Π΄Π΅ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ Spark, ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ Π΄Π°ΡΠ°ΡΠ΅ΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ Delta-ΡΠ°Π±Π»ΠΈΡΡ Π² S3. ΠΡΠΎ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ AWS, Delta Lake β ΠΎΡΠΊΡΡΡΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ data-lake Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ Π½Π° S3 ΠΈΠ»ΠΈ HDFSβ. ΠΠ»ΡΡΡ: Π²ΡΡΠΎΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ , ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΎΡΡΡ (Π²Π°ΠΆΠ½Π° Π΅ΡΠ»ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΈΠ΄ΡΡ Π·Π°ΠΏΠΈΡΡ), ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ. ΠΠΈΠ½ΡΡΡ: ΡΡΠ΅Π±ΡΡΡΡΡ Π½Π°Π²ΡΠΊΠΈ Spark, Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·Π±ΡΡΠΎΡΠ΅Π½, ΠΈ ΠΎΠ½ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° batch-Π΄Π°Π½Π½ΡΠ΅ (Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π²ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ΅Π· Delta ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅).
ΠΡΠ±ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ DVC ΠΈ Delta Lake ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ»ΠΎΠΆΠΈΠ²ΡΠΈΡ ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ: Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΆΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Spark Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ , ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ lakehouse-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ (Delta/Hudi), Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΡΠΌΠΎ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²Π½Π΅ Spark, DVC + Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π½Π° S3 ΡΠΎΠΆΠ΅ ΡΠ΅ΡΠΈΡ Π·Π°Π΄Π°ΡΡ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΈ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅: DVC Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΈ ΡΡΡΠΎΠ³ΠΎ Π΄Π°ΡΠ°ΡΠ΅ΡΠ° ΠΈ ΡΠΈΠ½Π°Π»ΡΠ½ΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ², Delta Π²Π½ΡΡΡΠΈ Spark Π΄Π»Ρ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΉ.
Feature Store: ΠΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ, ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ ΡΡΠ΅Π΄ΠΈ open-source ΡΠ²Π»ΡΠ΅ΡΡΡ Feast. Feast ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅Π΅ΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ², API Π΄Π»Ρ ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ Π² ΠΎΡΠ»Π°ΠΉΠ½ (Batch), ΡΠ°ΠΊ ΠΈ Π² ΠΎΠ½Π»Π°ΠΉΠ½ (Stream/ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Spark ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡ Π°Π³ΡΠ΅Π³Π°ΡΡ ΠΈ Π·Π°Π»ΠΈΠ²Π°ΡΡ ΠΈΡ Π² Feast (Π² ΠΎΡΠ»Π°ΠΉΠ½-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° S3 ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Redis, Π΄Π»Ρ ΠΎΠ½Π»Π°ΠΉΠ½-Π΄ΠΎΡΡΡΠΏΠ°). ΠΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ ΡΠ΅ΡΠ΅Π· API Feast, Π° ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅ β Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²ΠΎ Π»ΠΎΠ³ΠΈΠΊΠΈ. Π ΠΎΠ±Π·ΠΎΡΠ½ΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ Qwak ΠΎΡΠΌΠ΅ΡΠ΅Π½ΠΎ, ΡΡΠΎ Feast ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° feature management (ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ) Π² ΡΠΎΡΡΠ°Π²Π΅ ΡΡΠ΅ΠΊΠΎΠ² MLOps. ΠΠ»ΡΡΡ Feast: Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ML, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ (S3, BigQuery, Redshift Π΄Π»Ρ ΠΎΡΠ»Π°ΠΉΠ½; Redis, Cassandra Π΄Π»Ρ ΠΎΠ½Π»Π°ΠΉΠ½), ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Python. ΠΠΈΠ½ΡΡΡ: ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ Feast β ΡΡΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ (ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ DB), Π΅Π³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΎ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΈΠ½Π°ΡΠ΅ ΠΎΠ²Π΅ΡΡ Π΅Π΄. Enterprise-Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ: Hopsworks Feature Store (Π±ΠΎΠ³Π°ΡΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», Π½ΠΎ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠΉ), Tecton (ΠΎΠ±Π»Π°ΠΊΠΎ). ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° MLOps, ΠΊΠΎΠ³Π΄Π° ΡΠΈΡΠ»ΠΎ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π΅Π²Π΅Π»ΠΈΠΊΠΎ, Feature Store ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ»ΠΎΠΆΠΈΡΡ; ΠΎΠ΄Π½Π°ΠΊΠΎ, Π·Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΅Π³ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
ΠΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ ML-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ² ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
Apache Airflow β ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ DAG (Directed Acyclic Graph) β ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π·Π°Π΄Π°Ρ β Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python-ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎ ΡΡΠΈΠ³Π³Π΅ΡΡ. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ MLOps Airflow ΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, DAG, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΡΠ°Π³ΠΈ Β«Π²ΡΠ³ΡΡΠ·ΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· S3 β Π·Π°ΠΏΡΡΡΠΈΡΡ Spark-Π·Π°Π΄Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΠΈΡΠ΅ΠΉ β Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠ±ΡΡΠ°ΡΡΠΈΠΉ ΡΠΊΡΠΈΠΏΡ (Python) β Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ β Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΎΠΊ, Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π² MLflow β ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΡ ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ Β». Airflow Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ ΠΎΠ±Π»Π°ΠΊΡ ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ on-prem; ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ S3 (ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ boto3 ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ S3Hook), Π²ΡΠ·ΡΠ²Π°ΡΡ Spark (ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ SparkSubmitOperator Π΄Π»Ρ Yarn-ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π»ΠΈΠ±ΠΎ DataprocHook Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΠΎ Spark-ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ). ΠΠ»ΡΡΡ Airflow: ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΠ°, Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π³ΠΎΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ (S3, HDFS, Spark, SQL ΠΈ ΠΏΡ.), Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ, ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅. ΠΠΈΠ½ΡΡΡ: Airflow ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° batch-ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ; Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Airflow ΡΠΎΠΆΠ΅ ΡΡΠ΅Π±ΡΡΡ ΡΡΠΈΠ»ΠΈΠΉ; Π΄Π»Ρ ΡΠΈΡΡΠΎ ML-Π·Π°Π΄Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π±ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠΈΠ½Π³Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² β Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Ρ MLflow). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΄Π»Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π· Π² N Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Airflow β ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ.
Kubeflow Pipelines β ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ ML, ΡΠ°ΡΡΡΠΈΡΠ°Π½Π½ΠΎΠ΅ Π½Π° Kubernetes-ΠΊΠ»Π°ΡΡΠ΅ΡΡ. Kubeflow β ΡΡΠΎ ΡΠ΅Π»ΡΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ ML Π½Π° K8s: ΠΎΡ Π·Π°ΠΏΡΡΠΊΠ° Jupyter Notebook Π΄ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π΄Π»Ρ TFjobs/PyTorch jobs. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Pipelines ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ML-ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ (Pipeline DSL Π½Π° Python) ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π³ΠΈ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π² Kubernetes. Kubeflow Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Kubernetes Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β ΡΠΎΠ³Π΄Π° pipeline ΡΠ°Π³ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½ΡΡ , ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅) Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ , ΠΌΠΎΠ³ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΡΡΡΡ, ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Kubeflow Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Katib (Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π³ΠΈΠΏΠ΅ΡΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°) ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ S3 (ΡΠ°ΡΡΠΎ ΡΠ΅ΡΠ΅Π· MinIO β open-source Π°Π½Π°Π»ΠΎΠ³ S3 β Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°). ΠΠ»ΡΡΡ Kubeflow: ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠΉ ML-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ β ΠΎΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎ Π΄Π΅ΠΏΠ»ΠΎΡ β Π² ΡΠ°ΠΌΠΊΠ°Ρ K8s. ΠΠ½ ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (ΡΠ΅ΡΠ΅Π· Metadata), ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ KFServing/KServe)β. ΠΠΈΠ½ΡΡΡ: ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ β ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Kubernetes, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²; ΠΊΡΡΡΠΎΠΉ ΠΏΠΎΡΠΎΠ³ Π²Ρ ΠΎΠ΄Π° Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡΡ Ρ K8s; ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½Π°Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡ Π²Π½Π΅ K8s. ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°ΡΡ ΠΎΠ±Π·ΠΎΡΡ, Kubeflow ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±Π½ΡΡ ML-ΡΠΈΡΡΠ΅ΠΌ Π½Π° Kubernetes, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ MLflow ΡΠ΅ΡΠ°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ·ΠΊΡΡ Π·Π°Π΄Π°ΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ²β. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Kubernetes on-prem Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· k8s-ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈΠ»ΠΈ OpenShift), Kubeflow ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΡΠ΄ΡΠΎΠΌ MLOps-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΠΎ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ.
Prefect β ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ, ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΡΡΠΈΠΉΡΡ ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ ΠΈ Π΄ΡΡΠΆΠ΅Π»ΡΠ±Π½ΡΠΉ, ΡΠ΅ΠΌ Airflow. Prefect Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠ°ΠΊ Π·Π°ΠΏΡΡΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ (Prefect Orion, open-source)β, ΡΠ°ΠΊ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ Cloud (Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ). Prefect DAG (Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Flow) ΡΠΎΠΆΠ΅ ΠΏΠΈΡΠ΅ΡΡΡ Π½Π° Python, Π½ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ βΠ½Π°ΡΡΡΠΎΠ΅Π½β Π½Π° data pipelines. ΠΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Prefect ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· open-source ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² on-prem MLOps (ΡΠΌ. ΠΏΡΠΈΠΌΠ΅Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π½ΠΈΠΆΠ΅) Π΄Π»Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΠΈ Π·Π°Π΄Π°Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡβ. ΠΠ»ΡΡΡ Prefect: ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ (ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π½ΡΡΡ Prefect server + agent Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π² Docker), Ρ ΠΎΡΠΎΡΠΈΠΉ UI, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠΈΠ½ΡΡΡ: ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Ρ Airflow, ΠΌΠ΅Π½ΡΡΠ΅ Π³ΠΎΡΠΎΠ²ΡΡ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΠΎΠ² (Π½ΠΎ ΡΠ΅ΡΠ΅Π· Python ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π²ΡΡ ΡΠΎ ΠΆΠ΅). Prefect ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ Python-ΡΡΠ΅ΠΊ, ΡΡΠΎΠ±Ρ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡΡ ΡΡΠΆΠ΅Π»ΠΎΠ²Π΅ΡΠ½ΡΠΉ Airflow.
ΠΡΡΠ³ΠΈΠ΅: Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ open-source ΡΡΠ΅Π΄ΡΡΠ²Π° β Luigi (ΠΎΡ Spotify, ΡΡ ΠΎΠΆ Ρ Airflow, Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΠ΅ΠΉΡΠ°Ρ), Dagster (Π½ΠΎΠ²ΡΠΉ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ, Π΅ΡΡΡ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠΈ Π² data engineering). Π ΠΌΠΈΡΠ΅ Big Data ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Apache Oozie ΠΈΠ»ΠΈ Azkaban Π΄Π»Ρ workflow, Π½ΠΎ ΠΎΠ½ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π·Π°ΡΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄ Hadoop ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠ΄ΠΎΠ±Π½Ρ Π΄Π»Ρ Python.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡΡ: ΠΡΠ»ΠΈ Π½Π΅Ρ Kubernetes β Π½Π°ΡΠ°ΡΡ Ρ Airflow ΠΈΠ»ΠΈ Prefect Π΄Π»Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Kubernetes ΡΠΆΠ΅ Π²Π½Π΅Π΄ΡΡΠ½ ΠΈΠ»ΠΈ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ β ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² Kubeflow Pipelines, ΠΏΠΎΠ»ΡΡΠΈΠ² ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π» ΠΊ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ ML. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ Π²ΡΡΠ΅: Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ (ΠΊΠΎΡΠΎΡΡΠΉ Π²Π½ΡΡΡΠΈ Π»ΠΎΠ³ΠΈΡΡΠ΅Ρ Π² MLflow), ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π½Π° S3, ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅.
Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅ (Model Deployment)
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΠ±ΡΡΠ΅Π½Π° ΠΈ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π°, Π΅Ρ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π΄ΠΎ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½-ΡΡΠ΅Π΄Ρ, Π³Π΄Π΅ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ (ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ batch-ΠΏΡΠΎΠ³Π½ΠΎΠ·Ρ). ΠΠ»Ρ on-prem ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°: ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²ΠΈΡ (API) Π΄Π»Ρ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ (batch scoring).
Π‘Π΅ΡΠ²ΠΈΡΠ½ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ (online): ΠΠ΄Π΅ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠ° (ΠΎΠ±ΡΡΠ½ΠΎ REST API) Π»ΠΈΠ±ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ:
-
Seldon Core β open-source ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΏΠΎΠ²Π΅ΡΡ Kubernetes, Π΄Π»Ρ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΊΠ°ΠΊ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ². Seldon ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΡΠ΅ΡΠ΅Π· CRD (Custom Resource) Π² Kubernetes: Π²Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΠ΅, Π³Π΄Π΅ Π²Π·ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ (ΠΎΠ±ΡΠ°Π· Docker ΠΈΠ»ΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅), ΠΈ Seldon ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΠΏΡΠΎΠΊΡΠΈΡΡΠ΅Ρ ΡΠ΅ΡΠ΅Π· ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ API-Π³ateway, ΡΠΌΠ΅Π΅Ρ Π΄Π΅Π»Π°ΡΡ canary-ΡΠ΅Π»ΠΈΠ·Ρ, A/B ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ»ΠΎΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΡΠΎΠΈΡΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ drift ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Alibi Detect). ΠΠ»ΡΡΡ: ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ML-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ (ΡΠ΅ΡΠ΅Π· ΠΏΡΠ΅Π΄ΠΈΠΊΡΠΎΡΡ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, SKLearnServer, XGBoostServer ΠΈ Ρ.ΠΏ.), ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ Π½Π° K8s. ΠΠΈΠ½ΡΡΡ: ΡΡΠ΅Π±ΡΠ΅Ρ Kubernetes; ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· Kubernetes-ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ; Π±Π΅Π· Kubernetes Π½Π΅ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ. ΠΠ»Ρ Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Seldon Core ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π΅Π½ Π΅ΡΠ»ΠΈ Kubernetes-ΠΊΠ»Π°ΡΡΠ΅Ρ Π΅ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ β ΠΎΠ½ Π·Π°ΠΊΡΠΎΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ deployment/monitoring Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°, ΡΡ ΠΎΠΆΠ°Ρ ΠΏΠΎ ΠΈΠ΄Π΅Π΅ β KServe (KFServing), ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½Π°Ρ Kubeflow, ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° K8s ΠΈ ΡΠΎΠΊΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
-
BentoML β Π±ΠΎΠ»Π΅Π΅ βΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉβ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ BentoML ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²Π·ΡΡΡ ΠΎΠ±ΡΡΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ (ΠΈΠ· PyTorch, TensorFlow, sklearn ΠΈ Ρ.Π΄.) ΠΈ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ REST/gRPC ΡΠ΅ΡΠ²ΠΈΡ, ΠΏΡΠΈΡΡΠΌ BentoML Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Docker Image Ρ ΡΡΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌβ. BentoML ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π΅ΡΡΡ ΠΈ ΡΠΌΠ΅Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Yatai β ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΎΡ BentoML, ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Kubernetes). ΠΠ»ΡΡΡ: ΠΏΡΠΎΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ (Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² Π² ΠΊΠΎΠ΄Π΅ β ΠΈ Ρ Π²Π°Ρ Π³ΠΎΡΠΎΠ² API Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ), ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠ°Π·Ρ K8s β ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΠΈΠ»ΠΈ Π² Docker Compose. ΠΠΈΠ½ΡΡΡ: BentoML β ΡΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°, Π½ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΎΡΡΠ°ΡΡΡΡ Π½Π° Π²Π°Ρ (Ρ.Π΅. Π΄Π»Ρ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΡΡ Π½Π°Π³ΡΡΠ·ΠΎΠΊ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Ρ Kubernetes ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²). Π ΡΠ°Π±Π»ΠΈΡΠ΅ open-source ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² BentoML ΠΎΡΠΌΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½Ρ-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ², Π°Π²ΡΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ API ΠΈ Docker-ΠΎΠ±ΡΠ°Π·ΠΎΠ², ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡΠ΅Π΅ ΡΡΠ°ΠΏΡ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΠΎ Π΄Π΅ΠΏΠ»ΠΎΡβ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, BentoML ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ ΠΈ Π±Π΅Π· Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ DevOps-ΠΎΠ²Π΅ΡΡ Π΅Π΄Π° ΠΏΠΎΠ΄Π½ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ Π½Π° on-prem ΡΠ΅ΡΠ²Π΅ΡΠ΅.
-
TorchServe / TensorFlow Serving / ONNX Runtime β ΡΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, TorchServe (ΠΎΡ PyTorch) ΠΈ TF Serving (ΠΎΡ TensorFlow) β Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ C++ ΡΠ΅ΡΠ²Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΎΡΡΠΈΡΡ on-prem ΠΈ ΠΏΠΎΠ΄Π°Π²Π°ΡΡ ΠΈΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ. ΠΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π±ΡΡΡΡΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Π½Ρ, Π½ΠΎ Π½Π΅ ΡΠ΅ΡΠ°ΡΡ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ (ΠΈΡ Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π½Π°Π΄ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠ°ΠΊ ΡΠ»ΡΠΆΠ±Ρ). ONNX Runtime Server β Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ONNX. ΠΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ·ΠΊΠΈΠ΅; ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (Π²ΡΠ΅ Π½Π° PyTorch, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ) ΠΈ Π²Π°ΠΆΠ½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠΎ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ (Seldon, Bento) ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅.
-
Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ βΠ²ΡΡΡΠ½ΡΡβ (FastAPI/Flask) β ΡΠ°ΠΌΡΠΉ ΠΏΡΡΠΌΠΎΠΉ ΠΏΡΡΡ: ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° FastAPI ΠΈΠ»ΠΈ Flask, Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Gunicorn + Nginx). ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ½ΡΡΠ΅Π½, Π½ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ΄ΡΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΌΠΈΠΌ (ΡΠ΅ΡΠ΅Π· docker/k8s). ΠΠΎ ΡΡΡΠΈ, BentoML Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ (Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΈΠΏΠΎΠ²ΠΎΠΉ FastAPI ΡΠ΅ΡΠ²Π΅Ρ Π·Π° Π²Π°Ρ). ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ, Π² open-source ΠΏΡΠΎΠ΅ΠΊΡΠ΅ (ΡΠΌ. Π½ΠΈΠΆΠ΅) Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ FastAPI + Uvicorn + Gunicorn + Nginx Π² Dockerβ. ΠΠ»ΡΡΡ: ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ, ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π½ΠΎΠ²ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ β ΠΏΡΠΎΡΡΠΎ Python ΡΠ΅ΡΠ²ΠΈΡ. ΠΠΈΠ½ΡΡΡ: Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ βΠ·ΠΎΠΎΠΏΠ°ΡΠΊβ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π½Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π΄Π»Ρ AB-ΡΠ΅ΡΡΠΎΠ² ΠΈΠ»ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° β Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ.
Batch-ΠΈΠ½ΡΠ΅ΡΠ΅Π½Ρ: ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΡΠ»Π°ΠΉΠ½, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π· Π² Π΄Π΅Π½Ρ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΏΡΠΎΠ³Π½ΠΎΠ·Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ Π΄Π°ΡΠ°ΡΠ΅ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π·Π°ΡΠ°ΡΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡ ΠΆΠ΅ Spark ΠΈΠ»ΠΈ Python ΡΠΊΡΠΈΠΏΡΡ, ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ ΠΈ SQL-Π±Π°Π·Ρ/ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ batch-scoring ΠΌΠ΅Π½ΡΡΠ΅, Ρ.ΠΊ. ΠΌΠΎΠΆΠ½ΠΎ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ (Airflow job ΠΈΠ»ΠΈ Spark job). ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ Apache Spark MLlib β Π΅ΡΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±ΡΡΠ΅Π½Ρ Π² Spark, ΡΠΎ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎ Π½Π° Spark, ΡΠΎΡ ΡΠ°Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π½Π° S3. ΠΠΈΠ±ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠΎΡΠΌΠ°ΡΠ΅ PMML, ONNX ΠΈΠ»ΠΈ Sparkβs PipelineModel) ΠΏΡΡΠΌΠΎ Π²Π½ΡΡΡΠΈ Spark job. ΠΡΠ΅Π½ΠΊΠ°: batch-ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΎΠ½Π½ΠΎΡΡΠΈ β Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ ΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ ΠΏΡΠΎΠ³Π½ΠΎΠ·Ρ (ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΠΈΡΡ ID Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ).
Enterprise-ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ deployment: ΠΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠ΅, ΡΠΎ: IBM Watson Machine Learning / OpenScale β ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠΌ (ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΠ΅Π· Cloud Pak for Data on-prem). Cloudera CML β Π΅ΡΠ»ΠΈ Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Cloudera, ΡΠ°ΠΌ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠ°ΠΊ REST API ΠΏΡΡΠΌΠΎ ΠΈΠ· ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΡΡΠ΅Π΄Ρ. DataRobot MLOps β Π΄Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠΌ (ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ on-prem). Π ΠΎΠ±Π·ΠΎΡΠ°Ρ ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° DataRobot ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π²ΡΡΠ½ΡΡΠ° on-prem ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ turnkey ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ MLOps (Π½ΠΎ Π½Π°Π΄ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ Π΅Π΅ Π·Π°ΠΊΡΡΡΠΎΡΡΡ)β. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, ΡΡΠΎ ΡΡΠ°Π²ΠΊΠ° Π½Π° open-source, ΠΏΠΎΡΡΠΎΠΌΡ enterprise ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΡΠΊΠΎΡΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠ°ΡΡΠΎΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π·ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΡΠΊΠΎΡΠΈΡΠ΅Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° Π½Π° GPU).
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ deployment: ΠΠ»Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π½Π° on-prem ΡΡΠΎΠΈΡ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ±ΡΡΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² MLflow Registry), Π·Π°ΡΠ΅ΠΌ pipeline Π΄Π΅ΠΏΠ»ΠΎΡ Π±Π΅ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ Π΅Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΠΈΠ±ΠΎ BentoML, Π»ΠΈΠ±ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Dockerfile) ΠΈ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ. ΠΡΠ»ΠΈ Π΅ΡΡΡ Kubernetes β ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Seldon Core ΠΈΠ»ΠΈ KServe Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠΈΡ ΠΆΠΈΠ·Π½Ρ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΈ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΡΠ»ΠΈ Kubernetes Π½Π΅Ρ β ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ°ΡΡ Ρ Docker Compose ΠΈΠ»ΠΈ Nomad Π΄Π»Ρ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π΄Π΅ΡΠΆΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΡΠ΅ΡΠ²ΠΈΡΠ° Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠΌ (ΡΠΎΡ ΠΆΠ΅ Nginx). ΠΠ°ΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ blue-green ΠΈΠ»ΠΈ canary Π΄Π΅ΠΏΠ»ΠΎΠΉ: Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΡΡ ΡΡΠ°Π·Ρ ΡΡΠ°ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ, Π° ΠΏΠΎΠ΄Π½ΡΡΡ Π½ΠΎΠ²ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, ΠΏΡΠΎΠ³Π½Π°ΡΡ ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π½Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ.
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ Π·Π° Π½Π΅ΠΉ β ΡΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ: ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊ (Π°ΠΏΡΠ°ΠΉΠΌ, Π»Π°ΡΠ΅Π½ΡΠΈ, ΠΎΡΠΈΠ±ΠΊΠΈ), ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° (ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , Π²ΡΠ²ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΊΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π²Π°Π»ΠΈΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π° ΡΠ²Π΅ΠΆΠΈΡ Π΄Π°Π½Π½ΡΡ , Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Unit/Integration ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΠ).
ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ (APM): ΠΠ»Ρ on-prem ΡΡΠ΅ΠΊ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ: Prometheus + Grafana Π΄Π»Ρ ΠΌΠ΅ΡΡΠΈΠΊ, ELK/EFK (ElasticSearch + Kibana + Fluentd) Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°Π·Π²ΡΡΠ½ΡΡΠ° ΡΠ΅ΡΠ΅Π· Seldon Core, ΠΎΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠ΅Ρ ΠΌΠ΅ΡΡΠΈΠΊΠΈ (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π»Π°ΡΠ΅Π½ΡΠΈ, ΠΎΡΠΈΠ±ΠΊΠΈ) Π² Prometheus ΡΠΎΡΠΌΠ°Ρ; Grafana Π΄Π°ΡΠ±ΠΎΡΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ ΠΈ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠ±ΠΎΠΈ. ΠΠ»ΡΡΡ: ΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠΆΠ΅ ΠΎΡΠ»Π°ΠΆΠ΅Π½Ρ, ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΎΠ±Π»Π°ΠΊΠ°. ΠΠΈΠ½ΡΡΡ: ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΎΠ½ΠΈ βΠ½Π΅ Π·Π½Π°ΡΡβ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ML, ΡΠΎ Π΅ΡΡΡ Grafana ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΡΠΎΡΠ»Π°, Π½ΠΎ Π½Π΅ ΡΠΊΠ°ΠΆΠ΅Ρ, ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π° Π² Π΄ΡΠ΅ΠΉΡΠ΅ Π΄Π°Π½Π½ΡΡ β Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ.
ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ: ΠΠ΄Π΅ΡΡ Π²ΡΡΡΠΏΠ°ΡΡ Π² ΠΈΠ³ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ. Open-source Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Evidently AI ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»ΡΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΡΠΌΠΎ Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π΅ ΠΈΠ»ΠΈ Π² jupyter, Π³Π΅Π½Π΅ΡΠΈΡΡΡ ΠΎΡΡΡΡΡ ΠΎ Π΄ΡΠ΅ΠΉΡΠ΅ Π΄Π°Π½Π½ΡΡ (Data Drift), Π΄ΡΠ΅ΠΉΡΠ΅ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠ΅ ΠΈ Π΄Ρ. Evidently ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ»Π°ΠΉΠ½ (ΡΠ°Π· Π² ΡΡΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ vs ΠΎΠ±ΡΡΠ°ΡΡΡΡ Π²ΡΠ±ΠΎΡΠΊΡ) ΠΈΠ»ΠΈ Π² ΠΏΠΎΠ»Ρ-ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ΅ΠΆΠΈΠΌΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π² Streamlit/dashboard). Π ΡΡΠ°ΡΡΠ΅ Qwak Evidently ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ monitoring (ΡΠ΅altime) ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉβ. ΠΡΡΠ³ΠΎΠΉ Π½Π°Π±ΠΎΡ β Seldon Alibi (ΠΏΡΠΎΠ΅ΠΊΡ ΠΎΡ Seldon): Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ Π²ΡΠ±ΡΠΎΡΠΎΠ², Π΄ΡΠ΅ΠΉΡΠ°, ΠΎΠ±ΡΡΡΠ½ΠΈΠΌΠΎΡΡΠΈ. ΠΠ½ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ Seldon Core: ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ, ΡΡΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡΠ° Π΄ΡΠ΅ΠΉΡΠ°, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ². Prometheus custom metrics: ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΏΠΈΡΡ ΠΈ ΠΏΡΠΎΡΠ΅ β Π²ΡΡΡΠΎΠΈΡΡ Π² ΠΊΠΎΠ΄ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊ (ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°, Π΄ΠΎΠ»Ρ ΠΏΡΡΡΡΡ ΠΈ Ρ.Π΄.) ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΈΡ Π² Prometheus. ΠΡΠΎ Π΄Π°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅, Π½ΠΎ Π±ΡΡΡΡΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π½Π΅ ΡΡΠ»ΠΈ Π»ΠΈ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π°Π»Π΅ΠΊΠΎ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΠΎΠ±ΡΡΠ°ΡΡΠΈΡ .
ΠΠ½Π°Π»ΠΈΠ· ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΈ Π°Π»Π΅ΡΡΡ: ΠΡΠ°ΠΊΡΠΈΠΊΠ° β ΡΠΎΠ±ΡΠ°ΡΡ feedback loop: ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΠ°ΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ (Ρ ΠΎΠ±Π΅Π·Π»ΠΈΡΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ) Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π° ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΈΡΡΠΈΠ½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ (ground truth), Π²ΡΡΠΈΡΠ»ΡΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ (accuracy, RMSE ΠΈ Ρ.ΠΏ.). ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Airflow-Π΄ΠΆΠΎΠ±ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π±Π΅ΡΠ΅Ρ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΡΠΈΡΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Ρ ΠΏΠΎΡΠΎΠ³ΠΎΠΌ. ΠΡΠ»ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠ° ΠΏΡΠΎΡΠ΅Π»Π° β ΠΏΠΎΡΠ»Π°ΡΡ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ Π²Π½Π΅ΠΏΠ»Π°Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅. ΠΠ»Ρ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ DeepChecks (open-source Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π½Π°Π±ΠΎΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ). Π ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠΌ open-source ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ²ΡΠ·ΠΊΠ°: ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π»ΠΎΠ³ΠΈΡΡΠ΅Ρ ΠΎΡΠ²Π΅ΡΡ Π² Postgres, Π° Evidently ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΡΡΠΈΠΌ Π»ΠΎΠ³Π°ΠΌ ΠΈ ΡΡΡΠΎΠΈΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π΄ΡΠ΅ΠΉΡΠ°, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π² Grafanaβ.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄ Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ: ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²ΡΠΊΠ°ΡΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ, Π΅Ρ ΡΡΠΎΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. ΠΡΠΎΠΌΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ unit-ΡΠ΅ΡΡΠΎΠ² Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ test-driven data science ΠΌΠ΅ΡΠΎΠ΄Ρ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π° Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Π½Π°Π±ΠΎΡΠ΅, ΡΡΠΎ Π½ΠΎΠ²Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π΅ Ρ ΡΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΏΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΠΌΠ΅ΡΡΠΈΠΊΠ°ΠΌ. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΊΠ°ΠΊ PyTest ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π² CI. Π’Π°ΠΊΠΆΠ΅, Great Expectations β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ β ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ : ΠΎΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ Π±ΠΎΠ»Π΅Π΅ X% ΠΏΡΠΎΠΏΡΡΠΊΠΎΠ², ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° Π½Π΅ ΡΠΌΠ΅ΡΡΠΈΠ»ΠΎΡΡ). ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°ΡΠΌΠ»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π΅ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ . Great Expectations Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ Π΄Π°Π½Π½ΡΠΌ Π½Π° S3 ΠΈΠ»ΠΈ ΠΊ Spark DataFrame ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π½Π°Π±ΠΎΡ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠ΅ΡΡΠΎΠ² (Π½Π°Π±ΠΎΡ ΡΠΊΡΠΏΠ΅ΠΊΡΠ°ΡΠΈΠΉ).
Enterprise Π² ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π΅: ΠΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ SaaS/enterprise ΡΠ΅ΡΠ΅Π½ΠΈΡ: Evidently ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ, Fiddler AI, WhyLabs β ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ML, IBM OpenScale β ΠΌΠΎΠ΄ΡΠ»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ bias, Π΄ΡΠ΅ΠΉΡ). ΠΠΎ open-source ΠΏΡΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΏΠΎΠΊΡΡΡΡ ΡΡΠΈ Π½ΡΠΆΠ΄Ρ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ°ΠΏΠ°Ρ .
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Ρ: ΠΠ°ΡΡΡΠΎΠΈΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΡΠ΅ΡΠ΅Π· Prometheus (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΡΠ»ΠΎ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΎΠ², ΡΡΠ΅Π΄Π½ΠΈΠΉ ΡΠΊΠΎΡΠΈΠ½Π³-Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΎΡΠ΅Π½Ρ ΠΎΡΠΈΠ±ΠΎΠΊ). Π‘ΠΎΠ±ΡΠ°ΡΡ pipeline ΡΠ±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ : Π²ΡΠ΅ Π²Ρ ΠΎΠ΄Ρ/ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π»ΠΎΠ³ΠΈΡΡΡΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ Π±Π°Π·Ρ), ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Evidently ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ Π½Π° Python. Π ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π½ΠΈΠΆΠ΅ Evidently ΡΠΏΠΎΠΌΡΠ½ΡΡ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ Π΄ΡΠ΅ΠΉΡΠ°, ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΠΌΡΠΉ Π² on-prem ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅β. ΠΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ β ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π² ΡΠΈΠΊΠ»Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ retraining. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ, ΠΏΡΠΈ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠΈ ΠΎΠΏΡΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ (Continuous Training) ΠΏΡΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² (Π½ΠΎ ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·ΡΠ΅Π»ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ MLOps).
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ CI/CD
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² CI/CD ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°Π³ΠΈ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ on-prem ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ:
-
ΠΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ ΠΊΠΎΠ΄Π°: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Git (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, GitLab ΠΈΠ»ΠΈ GitHub Enterprise ΡΠ΅ΡΠ²Π΅Ρ on-prem). Π ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π½ΠΎ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, pipeline-ΡΠΊΡΠΈΠΏΡΡ, ΡΠ΅ΡΡΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ β ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Π½Π° ΠΌΠΎΠ΄Π΅Π»Ρ.
-
CI β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ±ΠΎΡΠΊΠ°: Π½Π°ΡΡΡΠΎΠΈΡΡ CI-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ (Jenkins, TeamCity, GitLab CI) Π΄Π»Ρ ML-ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π¨Π°Π³ΠΈ CI ΠΌΠΎΠ³ΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ: Π·Π°ΠΏΡΡΠΊ unit-ΡΠ΅ΡΡΠΎΠ² (ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΈΠ½Π³Π°, ΠΌΠ΅Π»ΠΊΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ), Π·Π°ΠΏΡΡΠΊ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ Π½Π° ΡΠ΅ΡΡΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΌΠ΅ΡΡΠΈΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΡΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π° 1% Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½Π° Π²ΠΎΠΎΠ±ΡΠ΅ ΡΡΠΈΡΡΡ ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠ° > ΠΏΠΎΡΠΎΠ³Π°), ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· (ΠΊΠΎΠ΄-ΡΡΠ°ΠΉΠ», ΡΠΈΠΏΡ). Π’Π°ΠΊΠΆΠ΅ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ CI ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Docker-ΠΎΠ±ΡΠ°Π· Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ°.
-
CD β Π΄ΠΎΡΡΠ°Π²ΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ: ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ², ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°ΠΏ β Π΄ΠΎΡΡΠ°Π²ΠΊΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΠΈΠ±ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄Π΅ΠΏΠ»ΠΎΠΉ (Π΅ΡΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ Π΄ΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ), Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΡΠ°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ (CI Π²ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π² ΡΠ΅Π³ΠΈΡΡΡ ΠΈ ΠΎΠΏΠΎΠ²Π΅ΡΠ°Π΅Ρ, Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π²ΡΠ²ΠΎΠ΄Π΅ Π² ΠΏΡΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ML-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ). Π on-prem ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ CD ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· Jenkins Pipeline, Ansible ΡΠΊΡΠΈΠΏΡΡ ΠΈΠ»ΠΈ Argo CD (Π΅ΡΠ»ΠΈ Kubernetes). Π¦Π΅Π»Ρ β ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ½ΡΠ΅ ΡΠ°Π³ΠΈ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΠΎΠ²ΡΠΉ ΡΠ΅Π³ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² MLflow Registry ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ Π΄ΠΆΠΎΠ± Π΄Π΅ΠΏΠ»ΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±Π΅ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π· ΠΈ ΡΠ°ΡΠΊΠ°ΡΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ.
-
Π‘Π²ΡΠ·Ρ Ρ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡΠΎΠΌ: Π‘ΡΠΎΠΈΡ ΡΡΠΈΡΡΠ²Π°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ CI/CD ΡΠΈΡΡΠ΅ΠΌ Ρ ML-ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΌΠ΅ΡΠΆΠ΅ Π²
main
ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΠ³Π³Π΅ΡΠΈΡΡ Π·Π°ΠΏΡΡΠΊ Airflow DAG, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠΌ ΠΎΠ±ΡΡΠΌΠ΅ Π΄Π°Π½Π½ΡΡ . Π Π΅Π·ΡΠ»ΡΡΠ°Ρ (ΠΌΠΎΠ΄Π΅Π»Ρ + ΠΌΠ΅ΡΡΠΈΠΊΠΈ) ΠΏΠΎΡΠΎΠΌ Π»ΠΈΠ±ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡΡ, Π»ΠΈΠ±ΠΎ Ρ ΠΎΡΡ Π±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ CI/CD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ (Π·Π°ΡΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ ΠΊΠΎΠ΄) ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΏΠ°ΡΠ΅ Ρ ML-ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΌΠΈ (ΡΡΠ΅ΠΊΠ΅Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ², ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ). -
ΠΠ΅ΡΡΠΈΠΎΠ½Π½ΠΎΡΡΡ ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ΅ΡΠ΅Π· CI: CI ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π·Π°ΡΠΈΠΊΡ
-
ΠΠ΅ΡΡΠΈΠΎΠ½Π½ΠΎΡΡΡ ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ: CI/CD ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄, Π½ΠΎ ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Docker-ΠΎΠ±ΡΠ°Π· ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π· Conda Π΄Π»Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ), ΡΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΡΠ΅Π΄Π°Ρ . ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° on-prem ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Registry Π΄Π»Ρ Docker-ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ². ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ», Π½ΠΎ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΠ΅Π΄Ρ Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ CI/CD Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠ°Π·ΡΡΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΠΉ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠ΅ΠΉ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ: ΠΎΡ ΠΊΠΎΠΌΠΌΠΈΡΠ° Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ β Π΄ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠΌ.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ² ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ
Open-source vs Enterprise: Π Π°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠ΅ open-source ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΎΠ½Π½ΡΡ Π·Π°ΡΡΠ°Ρ, ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π² on-prem ΡΡΠ΅Π΄Π΅ (Π³Π΄Π΅ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ). ΠΡΠ°ΠΊΡΠΈΠΊΠ° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ open-source ΠΏΠΎΠ΄Ρ ΠΎΠ΄, Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠΊΡΠΏΠΊΠΎΠΉ ΡΠΎΡΠ΅ΡΠ½ΡΡ enterprise-ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. Open-source ΡΡΠ΅ΠΊ ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΠΉ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ, Π·Π°ΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ. Enterprise-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Β«ΠΏΠΎΠ΄ ΠΊΠ»ΡΡΒ» (Domino, DataRobot, Cloudera CML, Hopsworks ΠΈ Π΄Ρ.) ΡΡΠΊΠΎΡΡΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΡΡ β ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ Π΄Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ , ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° β ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ Π² ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π²Π΅Π΄ΡΡ ΠΊ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ΅ ΠΊ Π²Π΅Π½Π΄ΠΎΡΡ. Π ΡΠΎΠΌΡ ΠΆΠ΅, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΠΎΠ±Π»Π°ΠΊΠΎ ΠΈΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ Π²ΡΠ±ΠΎΡΡ: ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ β ΡΠΎΠ±ΡΠ°ΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ MLOps ΡΡΠ΅ΠΊ ΠΈΠ· ΠΎΡΠΊΡΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² (ΡΠΌ. ΡΠ°Π±Π»ΠΈΡΡ Π½ΠΈΠΆΠ΅), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² (MLflow), Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ (ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Airflow/Prefect), Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ (DVC/Delta Lake), ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (Docker +, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, BentoML ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ REST ΡΠ΅ΡΠ²ΠΈΡ) ΠΈ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ (Prometheus + Evidently). Π’Π°ΠΊΠΎΠΉ ΡΡΠ΅ΠΊ, Π±ΡΠ΄ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½, ΡΠΆΠ΅ ΡΠ΅ΡΠΈΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅. ΠΠΎ ΠΌΠ΅ΡΠ΅ Π²Π·ΡΠΎΡΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌ: ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π½Π° Kubernetes (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Kubeflow + KServe + Seldon Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΠ»Π° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ), Π²Π½Π΅Π΄ΡΠΈΡΡ Feature Store (Feast) Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ, ΡΠ³Π»ΡΠ±ΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ CI/CD (Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ ).
Π‘ΡΠΎΠΈΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ: ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ·ΡΠΊ Python ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ S3-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΠΌΠΈ ΠΈ Spark. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, MLflow Π»Π΅Π³ΠΊΠΎ Ρ ΡΠ°Π½ΠΈΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π° S3 ΠΈ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌΠΈ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Spark ML ΠΌΠΎΠ΄Π΅Π»Π΅βΠΉ; Kubeflow ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ Π΄Π»Ρ Kubernetes, Π½ΠΎ Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΎΠ±Π»Π°ΠΊΡ β Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ on-prem, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ² ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ S3 ΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΡΡΡΠ°β. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Spark ΠΎΡΠ»ΠΈΡΠ½ΠΎ Π²ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π²Π½ΡΡΡΠΈ pipelineβΠΎΠ²: Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ (ΡΠ΅ΡΠ΅Π· Airflow), Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ ΡΠ°Π³ Kubeflow Pipeline (ΡΠ΅ΡΠ΅Π· Spark Operator), ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ .
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π½Π°Π±ΠΎΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π½Π°Ρ Π²ΡΠ±ΠΎΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΡΠ»Π΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ MLOps. ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΎΠ±Π·ΠΎΡΠ°Ρ , Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ end-to-end ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΡΡΡΡ: ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ (Feature Store) Π²ΡΠΎΠ΄Π΅ Feast, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΡΠ΅ΠΊΠΈΠ½Π³Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ²/ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (MLflow), ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (Seldon Core ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³), ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ (Evidently), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ² (Kubeflow ΠΈΠ»ΠΈ Airflowβ. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠΎΠΊΡΡΡΡ Π²ΡΠ΅ ΡΠ΅Π»ΠΈ MLOps, Π·Π°ΡΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ, Π² on-prem ΡΡΠ΅Π΄Π΅. ΠΡΠ»ΠΈ ΠΆΠ΅ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Π³ΠΈΠ±ΡΠΈΠ΄Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΠ±Π»Π°ΠΊΠΎΠΌ, Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΡΡΠ΅ΠΊ Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΠ΅ΠΌ: Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ open-source ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π² ΠΎΠ±Π»Π°ΡΠ½ΡΡ Kubernetes, ΠΈ Ρ ΠΎΠ±Π»Π°ΡΠ½ΡΠΌΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΠΌΠΈ.
Enterprise-Π²Π°ΡΠΈΠ°Π½ΡΡ: Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΎΡ enterprise-ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΡΡΠΎΠΈΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° DataRobot ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π²ΡΡΠ½ΡΡΠ° on-prem ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ: Π·Π°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ , Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Π»ΡΡΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π΅Ρ ΡΠ°Π±ΠΎΡΡ β Π²ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π’Π°ΠΊΠΎΠΉ Β«ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠΈΠΊΠ»Β» MLOps ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»Π΅Π½ ΡΠΊΠΎΡΠΎΡΡΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈβΡ. ΠΠΎ Π½Π°Π΄ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ΅Π½Ρ ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ (DataRobot β Π·Π°ΠΊΡΡΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, Π½Π΅ Π²ΡΠ΅ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ). ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β Hopsworks, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Feature Store, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ Π΄Π°ΠΆΠ΅ GUI Π΄Π»Ρ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ; ΠΎΠ½Π° Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎ Spark ΠΈ Kubernetes, Π½ΠΎ ΠΏΠΎΠ»Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ΅Π±ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠΉ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΌΠ°ΡΡΡΠ°Π± Π·Π°Π΄Π°Ρ: Π΅ΡΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π΄Π΅ΡΡΡΠΊΠΈ ΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΊΡΠΈΡΠΈΡΠ½Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ enterprise-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, open-source ΡΡΠ΅ΠΊ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ Π·Π°ΠΊΡΠΎΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ Π±Π΅Π· ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ Π·Π°ΡΡΠ°Ρ.
ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ: Π½Π°ΡΠ°ΡΡ Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° open-source ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Python/S3/Spark (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, MLflow + Airflow + DVC + Docker, ΡΠΌ. ΠΏΡΠΈΠΌΠ΅Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π½ΠΈΠΆΠ΅), ΠΎΡΠ»Π°Π΄ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, Π΄Π΅ΠΏΠ»ΠΎΡ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°. ΠΠ°ΡΠ΅ΠΌ β ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΡΠ°ΡΡΠΈΡΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ (Kubernetes, Kubeflow, Seldon, Feast). Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΡΡΠ°ΠΏΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΎΡΠ²ΠΎΠΈΡΡ MLOps-ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π½Π°Π΄ΡΠΆΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅, Π½Π΅ Π·Π°Π²ΠΈΡΡ ΠΎΡ ΠΎΠ±Π»Π°ΠΊΠ° ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ MLOps: Π·Π°Π΄Π°ΡΠΈ, ΠΏΠ»ΡΡΡ/ΠΌΠΈΠ½ΡΡΡ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (Π·Π°Π΄Π°ΡΠΈ) | ΠΠ»ΡΡΡ | ΠΠΈΠ½ΡΡΡ | Python | S3 | Spark |
---|---|---|---|---|---|---|
MLflow (open-source) | Π’ΡΠ΅ΠΊΠ΅Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ²; ΡΠ΅Π΅ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (Lifecycle mgmt). | ΠΡΠΎΡΡ Π² ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ; ΡΠ·ΡΠΊ-Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½ΡΠΉ (REST API); ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎβΠ² Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ Π²Π΅ΡΡΠΈΡΠΌβΠΈ | ΠΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠΌ; Π½Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°; ΡΡΠ΅Π±ΡΡΡΡΡ Π΄ΠΎΠΏ. ΡΠ΅ΡΠ²ΠΈΡΡ (DB, storage). | ΠΠ° (ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π° Python) | ΠΠ° (Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ Π² S3βdzone.comγ | ΠΠ° (Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Sparkβvalohai.comγ |
Kubeflow (open-source) | ΠΠ»Π°ΡΡΠΎΡΠΌΠ° ML Π½Π° Kubernetes: ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΡΡΠ±ΡΠΊΠ°ΠΌΠΈ, Π·Π°ΠΏΡΡΠΊ ΡΡΠ΅Π½ΠΈΠ½Π³-Π·Π°Π΄Π°Ρ, ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ ML-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ², Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. | End-to-end ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ°Ρ Π½Π° K8s; ΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ (on-prem ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°ΠΊΠΎ); Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Pipelines, Katib (AutoML), KFServinβ | ΠΡΡΠΎΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ; ΡΡΠ΅Π±ΡΡΡΡΡ Π½Π°Π²ΡΠΊΠΈ Kubernetes; ΡΠ°ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π° Π½Π° TensorFloβw | ΠΠ° (pipeline DSL Π½Π° Python; ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° TF/PyTorch jobs) | ΠΠ° (ΡΠ΅ΡΠ΅Π· MinIO gateway ΠΈΠ»ΠΈ ΠΏΡΡΠΌΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅) | ΠΠ° (ΡΠ΅ΡΠ΅Π· Spark Operator ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠΎ Spark) |
Apache Airflow (open-source) | ΠΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡ workflows (DAG) Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ML: Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ETL, ΡΡΠ΅Π½ΠΈΠ½Π³Π°, ΡΠΊoring. | ΠΡΠ΅Π»ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ, Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ; ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π³ΠΎΡΠΎΠ²ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ (S3, Hadoop, Spark, SQL ΠΈ Π΄Ρ.β; Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π·Π°Π΄Π°Ρ. | ΠΡiented Π½Π° batch-ΠΏΡΠΎΡΠ΅ΡΡΡ (Π½Π΅ realtime); ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ/ΠΊΠ»Π°ΡΡΠ΅Ρ; Π½Π΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ ML-ΡΠΈΡ (Π½ΡΠΆΠ½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΡΠ΅ΠΊΠΈΠ½Π³-ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ). | ΠΠ° (DAG Π·Π°Π΄Π°ΡΡΡΡ Π½Π° Python) | ΠΠ° (ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ/Hooks Π΄Π»Ρ S3) | ΠΠ° (Π΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Spark Submit, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΠΎ Spark-ΠΊΠ»Π°ΡΡΠ΅ΡΠ°ΠΌΠΈ) |
DVC (open-source) | ΠΠ΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ; ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°ΡΠ°ΡΠ΅ΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ΠΎΠΌ (ΡΠ΅ΡΠ΅Π· Git). | ΠΡΠΎΠ·ΡΠ°ΡΠ½Π°Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ/ΠΌΠΎΠ΄Π΅Π»ΠΈ; ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΄Π°Π»ΡΠ½Π½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ (S3, SSH ΠΈ Π΄Ρ.); ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ². | Π‘ΡΠ΅ΠΏΠ΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° (CLI-ΡΡΠΈΠ»ΠΈΡΠ°, Π½Π΅Ρ Π²Π΅Π± UI ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ); Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π½ΡΠΆΠ½Π° Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π° (pull/push Π΄Π°Π½Π½ΡΡ Π²ΡΡΡΠ½ΡΡ). | ΠΠ° (CLI ΡΡΠΈΠ»ΠΈΡΠ° + Python API) | ΠΠ° (S3 remote Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ) | ΠΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ (Ρ ΡΠ°Π½ΠΈΡ ΡΠ°ΠΉΠ»Ρ Π»ΡΠ±ΡΡ ΡΠΈΠΏΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π²Ρ ΠΎΠ΄Ρ/Π²ΡΡ ΠΎΠ΄Ρ Spark Π·Π°Π΄Π°Ρ). |
Feast (open-source) | Feature Store: Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ΄Π°ΡΠ° ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ML-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ; ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠ»Π°ΠΉΠ½/ΠΎΠ½Π»Π°ΠΉΠ½ Π΄Π°Π½Π½ΡΡ . | Π¦Π΅Π½ΡΡΠ°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠ°ΡΡΠ΅Ρ ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°ΠΌ; ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½ΠΎΠΌ; ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ (Redis, PostgreSQL, file/S3 ΠΈ ΠΏΡ.). | ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ; ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ (ΠΠ Π΄Π»Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ , Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ ΠΎΡΠ»Π°ΠΉΠ½ Π΄Π°Π½Π½ΡΡ ); ΠΊΡΠΈΠ²Π°Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. | ΠΠ° (Python SDK/API) | ΠΠ° (ΠΎΡΠ»Π°ΠΉΠ½-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π° S3, file) | ΠΠ° (ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎ Spark Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠ° ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²). |
Seldon Core (open-source) | ΠΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π° Kubernetes (microservices): Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², AB-ΡΠ΅ΡΡΡ, canary-ΡΠ΅Π»ΠΈΠ·Ρ. | ΠΠ°ΡΠΈΠ²Π½ΠΎ Π΄Π»Ρ K8s: ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π°Π²ΡΠΎΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ; ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ML-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² (ΡΠ΅ΡΠ΅Π· ΠΏΡΠ΅Π΄ΠΈΠΊΡΠΎΡ ΠΎΠ±ΡΡΡΠΊΠΈ); ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠΌ (Prometheus) ΠΈ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡΠ°ΠΌΠΈ Π΄ΡΠ΅ΠΉΡΠ° (Alibi). | Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ Kubernetes-ΠΊΠ»Π°ΡΡΠ΅Ρ; ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· CRD (yaml-ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ) β ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ; Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π½ΡΠΆΠ½Ρ Π΄ΠΎΠΏ. ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ (Istio ingress, Prometheus). | ΠΠ° (ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π° Python) | ΠΠ° (ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈΠ· S3 ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°) | ΠΠ΅Ρ (Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ Spark, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ). |
BentoML (open-source) | Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ML-ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΡΠ΅ΡΠ²ΠΈΡ (REST/gRPC API) ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ; ΡΠΏΡΠΎΡΠ°Π΅Ρ deployment. | ΠΡΠΎΡΡΠ°Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°: auto-Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Docker ΠΎΠ±ΡΠ°Π·Π° Ρ APβI ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² (Sklearn, PyTorch, TF, XGBoost ΠΈ Π΄Ρ.); Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π² Kubernetes. | ΠΠ΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (ΡΠΎΠ»ΡΠΊΠΎ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°); ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° (Yatai) ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏ. ΡΡΠΈΠ»ΠΈΠΉ, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. | ΠΠ° (Bentofile ΠΈ API Π½Π° Python) | ΠΠ° (ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² S3, Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅) | ΠΠ΅Ρ (ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΡ Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ; Spark-ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΊΡΠΏΠΎΡΡΠ°). |
Great Expectations (open-source) | ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π΄Π°Π½Π½ΡΡ : Β«expectationΒ» β Π½Π°Π±ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»/ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ . | ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ Π² ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π΅ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ (Π²Π°Π»ΠΈΠ΄ΠΈΡΡΠ΅Ρ ΡΡ Π΅ΠΌΡ, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ); Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΠΎΡΡΡΡΡ; ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°ΠΌΠΈ (Airflow, Prefect). | Π’ΡΠ΅Π±ΡΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΡ ΠΏΡΠ°Π²ΠΈΠ»; ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π°Π½Π½ΡΠ΅, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ; ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ. | ΠΠ° (ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° Python/YAML) | ΠΠ° (ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ S3 ΠΊΠ°ΠΊ Datasource ΠΈ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ²) | ΠΠ° (ΡΠΌΠ΅Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Spark DataFrame ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ). |
Evidently (open-source) | ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ: Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΠΈΠΊ Π΄ΡΠ΅ΠΉΡΠ°, ΠΊΠ°ΡΠ΅ΡΡΠ²Π°, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΎΡΡΡΡΠΎΠ² (HTML ΠΈΠ»ΠΈ JSON). | Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ML: Π΄Π΅ΡΡΡΠΊΠΈ Π³ΠΎΡΠΎΠ²ΡΡ ΠΌΠ΅ΡΡΠΈΠΊ (drift, performance, fairness); Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ (pip-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°); ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΡΠ΅Ρ ΠΏΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈβΡ | ΠΠ΅ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Π°Π½Π°Π»ΠΈΠ· batch-Π΄Π°Π½Π½ΡΡ ΠΏΠΎΡΡΡΠ°ΠΊΡΡΠΌ); Π΄Π»Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π½ΡΠΆΠ½ΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ·ΠΎΠ²; ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½Π°Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π΅Π· Π΄ΠΎΠΏ. ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ². | ΠΠ° (Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Python) | ΠΠ° (ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ°ΡΡ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠ· S3 ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΎΡΡΠ΅ΡΡ) | ΠΠΏΠΎΡΡΠ΅Π΄ΠΎΠ²Π°Π½Π½ΠΎ (Π°Π½Π°Π»ΠΈΡΠΈΠΊΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ Π½Π° pandas DataFrames, Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Spark Π½Π°Π΄ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ). |
DataRobot MLOps (enterprise) | ΠΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΄Π»Ρ Π°Π²ΡΠΎML ΠΈ MLOps: Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ (ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ on-prem). | ΠΡΡΡΡΠΎΠ΅ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ ML-ΠΏΡΠΎΡΠ΅ΡΡΠ° βΠΏΠΎΠ΄ ΠΊΠ»ΡΡβ; ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ; ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, Π°Π»Π΅ΡΡΠΈΠ½Π³, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΡΠΌΠΈ β ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ. | ΠΡΡΠΎΠΊΠ°Ρ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ; vendor lock-in (Π·Π°ΠΊΡΡΡΡΠΉ ΠΊΠΎΠ΄); ΠΌΠ΅Π½Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ Π΄Π»Ρ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ /ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. | Π§Π°ΡΡΠΈΡΠ½ΠΎ (Π΅ΡΡΡ Python API ΠΈ SDK, Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ β UI) | ΠΠ° (ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· S3 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ) | ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎ (ΡΠΎΠΊΡΡ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°Ρ , Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· Spark connectors, Π½ΠΎ Π½Π΅Ρ ΡΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Spark jobβΠΎΠ²). |