MLOps - Готварска ΠΊΠ½ΠΈΠ³Π°, Π³Π»Π°Π²Π° 1

MLOps - Готварска ΠΊΠ½ΠΈΠ³Π°, Π³Π»Π°Π²Π° 1

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅ всички! Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ съм Π½Π° CV Π² КРОК. Π’Π΅Ρ‡Π΅ 3 Π³ΠΎΠ΄ΠΈΠ½ΠΈ изпълнявамС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π² областта Π½Π° CV. ΠŸΡ€Π΅Π· Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Ρ‰Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ…ΠΌΠ΅ ΡˆΠΎΡ„ΡŒΠΎΡ€ΠΈΡ‚Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΡˆΠΎΡ„ΠΈΡ€Π°Ρ‚ Π΄Π° Π½Π΅ пият, Π΄Π° Π½Π΅ ΠΏΡƒΡˆΠ°Ρ‚, Π΄Π° Π½Π΅ говорят ΠΏΠΎ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Π΄Π° Π³Π»Π΅Π΄Π°Ρ‚ ΠΏΡŠΡ‚Ρ, Π° Π½Π΅ ΡΡŠΠ½ΠΈΡ‰Π°Ρ‚Π° ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°Ρ†ΠΈΡ‚Π΅ ; ЗаписахмС Ρ„Π΅Π½ΠΎΠ²Π΅, ΠΊΠ°Ρ€Π°Ρ‰ΠΈ Π² спСциални Π»Π΅Π½Ρ‚ΠΈ ΠΈ Π·Π°Π΅ΠΌΠ°Ρ‰ΠΈ няколко паркомСста; Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ†ΠΈΡ‚Π΅ носят каски, Ρ€ΡŠΠΊΠ°Π²ΠΈΡ†ΠΈ ΠΈ Ρ‚.Π½.; ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° слуТитСл, ΠΊΠΎΠΉΡ‚ΠΎ иска Π΄Π° Π²Π»Π΅Π·Π΅ Π² ΠΎΠ±Π΅ΠΊΡ‚Π°; ΠŸΡ€Π΅Π±Ρ€ΠΎΠΈΡ…ΠΌΠ΅ всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ°Ρ…ΠΌΠ΅.

Π—Π° ΠΊΠ°ΠΊΠ²ΠΎ правя всичко Ρ‚ΠΎΠ²Π°?

Π’ процСса Π½Π° изпълнСниС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ срСщамС нСравности, ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡƒΡ€Π΅Π΄ΠΈΡ†ΠΈ, някои ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ ΠΈΠ»ΠΈ са Π²ΠΈ ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ ΠΈΠ»ΠΈ Ρ‰Π΅ сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Ρ‚Π΅ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅.

НСка симулирамС ситуацията

НСка си прСдставим, Ρ‡Π΅ смС Π½Π°ΠΌΠ΅Ρ€ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π² ΠΌΠ»Π°Π΄Π° компания β€žNβ€œ, чиято дСйност Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½Π° с ML. Π Π°Π±ΠΎΡ‚ΠΈΠΌ ΠΏΠΎ ML (DL, CV) ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎ някаква ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ към Π΄Ρ€ΡƒΠ³Π° Ρ€Π°Π±ΠΎΡ‚Π°, ΠΊΠ°Ρ‚ΠΎ цяло си Π²Π·Π΅ΠΌΠ°ΠΌΠ΅ ΠΏΠΎΡ‡ΠΈΠ²ΠΊΠ° ΠΈ сС Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ към нашия собствСн ΠΈΠ»ΠΈ Π½Π΅Ρ‡ΠΈΠΉ Π΄Ρ€ΡƒΠ³ Π½Π΅Π²Ρ€ΠΎΠ½.

  1. Идва ΠΌΠΎΠΌΠ΅Π½Ρ‚ΡŠΡ‚ Π½Π° истината, трябва ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ Π΄Π° си спомнитС къдС стС спрСли, ΠΊΠ°ΠΊΠ²ΠΈ Ρ…ΠΈΠΏΠ΅Ρ€ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ стС ΠΎΠΏΠΈΡ‚Π°Π»ΠΈ ΠΈ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ Π΄ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ са Π΄ΠΎΠ²Π΅Π»ΠΈ. МоТС Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠΎΠΉ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° информация Π·Π° всички стартирания: Π² Π³Π»Π°Π²Π°Ρ‚Π°, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π±Π΅Π»Π΅ΠΆΠ½ΠΈΠΊ, Π² Ρ€Π°Π±ΠΎΡ‚Π½Π° срСда Π² ΠΎΠ±Π»Π°ΠΊΠ°. Π‘Π»ΡƒΡ‡Π°ΠΉΠ½ΠΎ видях опция, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ…ΠΈΠΏΠ΅Ρ€ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π² ΠΊΠΎΠ΄Π°, ΠΊΠ°Ρ‚ΠΎ цяло, ΠΏΠΎΠ»Π΅Ρ‚ Π½Π° фантазия. Π‘Π΅Π³Π° си прСдставСтС, Ρ‡Π΅ стС сС Π²ΡŠΡ€Π½Π°Π»ΠΈ Π½Π΅ към вашия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π° към ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Ρ‡ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ напуснал компанията ΠΈ стС наслСдили ΠΊΠΎΠ΄ ΠΈ ΠΌΠΎΠ΄Π΅Π», Π½Π°Ρ€Π΅Ρ‡Π΅Π½ model_1.pb. Π—Π° Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°Ρ‚Π° ΠΈ Π΄Π° ΠΏΡ€Π΅Π΄Π°Π΄Π΅ΠΌ цялата Π±ΠΎΠ»ΠΊΠ°, Π½Π΅ΠΊΠ° си прСдставим, Ρ‡Π΅ ΠΈ Π²ΠΈΠ΅ стС Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‰ спСциалист.
  2. ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΉ. Π—Π° Π΄Π° стартирамС ΠΊΠΎΠ΄Π°, Π½ΠΈΠ΅ ΠΈ всички, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ работят с Π½Π΅Π³ΠΎ, трябва Π΄Π° създадСм срСда. ЧСсто сС случва ΠΏΠΎ някаква ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π΄Π° Π½Π΅ са Π½ΠΈ Π³ΠΎ оставили ΠΊΠ°Ρ‚ΠΎ наслСдство. Π’ΠΎΠ²Π° ΡΡŠΡ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π΅ Π² Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½Π° Π·Π°Π΄Π°Ρ‡Π°. НС искатС Π΄Π° Π³ΡƒΠ±ΠΈΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π² Ρ‚Π°Π·ΠΈ ΡΡ‚ΡŠΠΏΠΊΠ°, Π½Π°Π»ΠΈ?
  3. ΠžΠ±ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΌΠΎΠ΄Π΅Π» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅Π½ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€). Π‘Ρ‚ΠΈΠ³Π°ΠΌΠ΅ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, Π² ΠΊΠΎΠΉΡ‚ΠΎ става ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ – Π²Ρ€Π΅ΠΌΠ΅ Π΅ Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°. НСка Π³ΠΎ Π½Π°Ρ€Π΅Ρ‡Π΅ΠΌ car_detection_v1.pb. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΎΠ±ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ - car_detection_v2.pb. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΏΠΎ-късно Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ»Π΅Π³ΠΈ ΠΈΠ»ΠΈ Π½ΠΈΠ΅ самитС ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°ΠΌΠ΅ всС ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° сС ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚ ΠΊΡƒΠΏ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ, информацията Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° бъдС старатСлно ΡΡŠΠ±Ρ€Π°Π½Π° (Π½ΠΎ Ρ‰Π΅ Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΏΠΎ-късно, Π·Π°Ρ‰ΠΎΡ‚ΠΎ засСга ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎ-ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ).
  4. Π”ΠΎΠ±Ρ€Π΅, всичко ΡΠ²ΡŠΡ€ΡˆΠΈ! ИмамС ΠΌΠΎΠ΄Π΅Π»! МоТСм Π»ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Π΄Π° ΠΎΠ±ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ слСдващия ΠΌΠΎΠ΄Π΅Π», Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°ΠΌΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ Π΄Π° ΠΏΠΈΠ΅ΠΌ Ρ‡Π°ΠΉ? И ΠΊΠΎΠΉ Ρ‰Π΅ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈ?

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ

Π Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π΅ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΠΎΡ€Π°. И с Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° си Ρ‚Ρ€ΡŠΠ³Π²Π°Ρ‚ ΠΈ ΠΈΠ΄Π²Π°Ρ‚, ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, Π° самитС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ стават ΠΏΠΎ-слоТни. По Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½, ситуации ΠΎΡ‚ Ρ†ΠΈΠΊΡŠΠ»Π°, описан ΠΏΠΎ-Π³ΠΎΡ€Π΅ (ΠΈ Π½Π΅ само) Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Ρ‰Π΅ сС появят ΠΎΡ‚ итСрация Π½Π° итСрация. Всичко Ρ‚ΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π°Π³ΡƒΠ±Π° Π½Π° Π²Ρ€Π΅ΠΌΠ΅, ΠΎΠ±ΡŠΡ€ΠΊΠ²Π°Π½Π΅, Π½Π΅Ρ€Π²ΠΈ, Π΅Π²Π΅Π½Ρ‚ΡƒΠ°Π»Π½ΠΎ нСдоволство Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка Π·Π°Π³ΡƒΠ±Π΅Π½ΠΈ ΠΏΠ°Ρ€ΠΈ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ всички Π½ΠΈΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ слСдвамС Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ стар Ρ€Π΅ΠΉΠΊ, вярвам, Ρ‡Π΅ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ иска Π΄Π° изТивява Ρ‚Π΅Π·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΈ ΠΎΡ‚Π½ΠΎΠ²ΠΎ.

MLOps - Готварска ΠΊΠ½ΠΈΠ³Π°, Π³Π»Π°Π²Π° 1

И Ρ‚Π°ΠΊΠ°, Π½ΠΈΠ΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ…ΠΌΠ΅ ΠΏΡ€Π΅Π· Π΅Π΄ΠΈΠ½ Ρ†ΠΈΠΊΡŠΠ» Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ ΠΈΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈ. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° Π²ΠΈ трябва:

  • ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π°;
  • опростСтС процСса Π½Π° ΠΏΡ€ΠΈΠ²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ слуТитСли;
  • опростСтС процСса Π½Π° внСдряванС Π½Π° срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°;
  • ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° процСса Π½Π° вСрсия Π½Π° ΠΌΠΎΠ΄Π΅Π»Π°;
  • ΠΈΠΌΠ°Ρ‚ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π·Π° Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ;
  • Π½Π°ΠΌΠ΅Ρ€Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ инструмСнт Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ;
  • Π½Π°ΠΌΠ΅Ρ€Π΅Ρ‚Π΅ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° доставитС ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎ производство.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС измисли Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π° Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ лСсно ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° управляватС Ρ‚ΠΎΠ·ΠΈ ΠΆΠΈΠ·Π½Π΅Π½ Ρ†ΠΈΠΊΡŠΠ»? Π’Π°Π·ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° сС Π½Π°Ρ€ΠΈΡ‡Π° MLOps

MLOps, ΠΈΠ»ΠΈ DevOps Π·Π° машинно ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, позволява Π½Π° Π΅ΠΊΠΈΠΏΠΈΡ‚Π΅ Π·Π° Π½Π°ΡƒΠΊΠ° Π·Π° Π΄Π°Π½Π½ΠΈ ΠΈ ИВ Π΄Π° си ΡΡŠΡ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‡Π°Ρ‚ ΠΈ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Ρ‚ Ρ‚Π΅ΠΌΠΏΠΎΡ‚ΠΎ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ ΠΈ внСдряванС Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‡Ρ€Π΅Π· наблюдСниС, Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½Π΅ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π° машинно ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠŸΡ€ΠΎΡ‡Π΅Ρ‚ΠΈΠšΠ°ΠΊΠ²ΠΎ мислят ΠΌΠΎΠΌΡ‡Π΅Ρ‚Π°Ρ‚Π° ΠΎΡ‚ Google Π·Π° всичко Ρ‚ΠΎΠ²Π°? ΠžΡ‚ статията става ясно, Ρ‡Π΅ MLOps Π΅ доста ΠΎΠ±Π΅ΠΌΠ½ΠΎ Π½Π΅Ρ‰ΠΎ.

MLOps - Готварска ΠΊΠ½ΠΈΠ³Π°, Π³Π»Π°Π²Π° 1

По-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ Π² моята статия Ρ‰Π΅ опиша само част ΠΎΡ‚ процСса. Π—Π° рСализация Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ инструмСнта MLflow, Π·Π°Ρ‰ΠΎΡ‚ΠΎ... Π’ΠΎΠ²Π° Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄, изисква сС ΠΌΠ°Π»ΠΊΠΎ количСство ΠΊΠΎΠ΄ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ ΠΈ ΠΈΠΌΠ° интСграция с популярни ΠΌΠ» Ρ€Π°ΠΌΠΊΠΈ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΡ‚ΡŠΡ€ΡΠΈΡ‚Π΅ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈ инструмСнти, ΠΊΠ°Ρ‚ΠΎ Kubeflow, SageMaker, Trains ΠΈ Π΄Ρ€., ΠΈ ΠΌΠΎΠΆΠ΅ Π±ΠΈ Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΡŠΠ², ΠΊΠΎΠΉΡ‚ΠΎ отговаря ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π½ΡƒΠΆΠ΄ΠΈ.

β€žΠ˜Π·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅β€œ Π½Π° MLO с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° инструмСнта MLFlow

MLFlow Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ТизнСния Ρ†ΠΈΠΊΡŠΠ» Π½Π° ml ΠΌΠΎΠ΄Π΅Π»ΠΈ (https://mlflow.org/).

MLflow Π²ΠΊΠ»ΡŽΡ‡Π²Π° Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

  • MLflow Tracking – ΠΎΠ±Ρ…Π²Π°Ρ‰Π° Π²ΡŠΠΏΡ€ΠΎΡΠΈΡ‚Π΅ Π·Π° записванС Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅, Π΄ΠΎΠ²Π΅Π»ΠΈ Π΄ΠΎ Ρ‚ΠΎΠ·ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚;
  • MLflow Project - позволява Π²ΠΈ Π΄Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ΄ ΠΈ Π΄Π° Π³ΠΎ Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ‚Π΅ Π½Π° всяка ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°;
  • MLflow Models - ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° внСдряванСто Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² производство;
  • MLflow Registry - позволява Π²ΠΈ Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ Π΄Π° управляватС тяхното ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

MLflow Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΡŠΡ€Ρ…Ρƒ Π΄Π²Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†ΠΈ:

  • стартиранСто Π΅ пълСн Ρ†ΠΈΠΊΡŠΠ» Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, ΠΏΠΎ ΠΊΠΎΠΈΡ‚ΠΎ искамС Π΄Π° сС рСгистрирамС;
  • Π•ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΡŠΡ‚ Π΅ β€žΡ‚Π΅ΠΌΠ°β€œ, която Ρ€Π°Π±ΠΎΡ‚ΠΈ Π·Π°Π΅Π΄Π½ΠΎ.

Всички ΡΡ‚ΡŠΠΏΠΊΠΈ ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° са изпълнСни Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма Ubuntu 18.04.

1. Π Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π°

Π—Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ лСсно Π΄Π° управлявамС нашия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ цялата Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° информация, Π½ΠΈΠ΅ Ρ‰Π΅ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΡΡŠΡ€Π²ΡŠΡ€. Π‘ΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π·Π° прослСдяванС Π½Π° MLflow ΠΈΠΌΠ° Π΄Π²Π° основни ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

  • backend store - отговаря Π·Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° информация Π·Π° рСгистрирани ΠΌΠΎΠ΄Π΅Π»ΠΈ (ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° 4 Π‘Π£Π‘Π”: mysql, mssql, sqlite ΠΈ postgresql);
  • ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π·Π° Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ - отговаря Π·Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ (ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° 7 ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅: Amazon S3, Azure Blob Storage, Google Cloud Storage, FTP ΡΡŠΡ€Π²ΡŠΡ€, SFTP ΡΡŠΡ€Π²ΡŠΡ€, NFS, HDFS).

Въй ΠΊΠ°Ρ‚ΠΎ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π·Π° Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ Π—Π° ΠΏΠΎ-лСсно Π½Π΅ΠΊΠ° Π²Π·Π΅ΠΌΠ΅ΠΌ sftp ΡΡŠΡ€Π²ΡŠΡ€.

  • ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Π³Ρ€ΡƒΠΏΠ°
    $ sudo groupadd sftpg
  • Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈ Π·Π°Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»Π° Π·Π° Π½Π΅Π³ΠΎ
    $ sudo useradd -g sftpg mlflowsftp
    $ sudo passwd mlflowsftp 
  • ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° няколко настройки Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ
    $ sudo mkdir -p /data/mlflowsftp/upload
    $ sudo chown -R root.sftpg /data/mlflowsftp
    $ sudo chown -R mlflowsftp.sftpg /data/mlflowsftp/upload
  • Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ няколко Ρ€Π΅Π΄Π° към /etc/ssh/sshd_config
    Match Group sftpg
     ChrootDirectory /data/%u
     ForceCommand internal-sftp
  • рСстартирайтС услугата
    $ sudo systemctl restart sshd

Въй ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π·Π΅Ρ€Π²Π΅Π½ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π”Π° Π²Π·Π΅ΠΌΠ΅ΠΌ postgresql.

$ sudo apt update
$ sudo apt-get install -y postgresql postgresql-contrib postgresql-server-dev-all
$ sudo apt install gcc
$ pip install psycopg2
$ sudo -u postgres -i
# Create new user: mlflow_user
[postgres@user_name~]$ createuser --interactive -P
Enter name of role to add: mlflow_user
Enter password for new role: mlflow
Enter it again: mlflow
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
# Create database mlflow_bd owned by mlflow_user
$ createdb -O mlflow_user mlflow_db

Π—Π° Π΄Π° стартиратС ΡΡŠΡ€Π²ΡŠΡ€Π°, трябва Π΄Π° инсталиратС слСднитС python ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ (ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΎΡ‚Π΄Π΅Π»Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° срСда):

pip install mlflow
pip install pysftp

Π”Π° стартирамС нашия ΡΡŠΡ€Π²ΡŠΡ€

$ mlflow server  
                 --backend-store-uri postgresql://mlflow_user:mlflow@localhost/mlflow_db 
                 --default-artifact-root sftp://mlflowsftp:mlflow@sftp_host/upload  
                --host server_host 
                --port server_port

2. Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ прослСдяванС

Π—Π° Π΄Π° Π½Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Π³ΡƒΠ±Π΅Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, Π±ΡŠΠ΄Π΅Ρ‰ΠΈΡ‚Π΅ поколСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π°Ρ‚ ΠΊΠ°ΠΊΠ²ΠΎ сС случва, Π° ΠΏΠΎ-Π²ΡŠΠ·Ρ€Π°ΡΡ‚Π½ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³Π°Ρ€ΠΈ ΠΈ Π²ΠΈΠ΅ Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ спокойно Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ учСбния процСс, трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ прослСдяванС. ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ ΠΈ всякаква Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° информация Π·Π° Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π² нашия случай, Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°.

НапримСр ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ… малък ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² github Π½Π° Keras Π·Π° сСгмСнтиранС Π½Π° всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π²ΡŠΡ‚Ρ€Π΅ COCO Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ. Π—Π° Π΄Π° добавя прослСдяванС, ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ… Ρ„Π°ΠΉΠ» mlflow_training.py.

Π•Ρ‚ΠΎ Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅, Π² ΠΊΠΎΠΈΡ‚ΠΎ сС случват Π½Π°ΠΉ-интСрСснитС Π½Π΅Ρ‰Π°:

def run(self, epochs, lr, experiment_name):
        # getting the id of the experiment, creating an experiment in its absence
        remote_experiment_id = self.remote_server.get_experiment_id(name=experiment_name)
        # creating a "run" and getting its id
        remote_run_id = self.remote_server.get_run_id(remote_experiment_id)

        # indicate that we want to save the results on a remote server
        mlflow.set_tracking_uri(self.tracking_uri)
        mlflow.set_experiment(experiment_name)

        with mlflow.start_run(run_id=remote_run_id, nested=False):
            mlflow.keras.autolog()
            self.train_pipeline.train(lr=lr, epochs=epochs)

        try:
            self.log_tags_and_params(remote_run_id)
        except mlflow.exceptions.RestException as e:
            print(e)

Π’ΡƒΠΊ self.remote_server Π΅ ΠΌΠ°Π»ΠΊΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ mlflow.tracking. MlflowClient (Π½Π°ΠΏΡ€Π°Π²ΠΈΡ… Π³ΠΎ Π·Π° удобство), с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ правя СкспСримСнт ΠΈ Π³ΠΎ пускам Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° посочвам къдС трябва Π΄Π° сС обСдинят Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ стартиранСто (mlflow.set_tracking_uri(self.tracking_uri)). Активирам Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ рСгистриранС mlflow.keras.autolog(). Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° MLflow Tracking ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ рСгистриранС Π·Π° TensorFlow, Keras, Gluon XGBoost, LightGBM, Spark. Ако Π½Π΅ стС Π½Π°ΠΌΠ΅Ρ€ΠΈΠ»ΠΈ своята Ρ€Π°ΠΌΠΊΠ° ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²Π»Π΅Π·Π΅Ρ‚Π΅ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ. Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅. РСгистрирайтС Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ ΠΈ Π²Ρ…ΠΎΠ΄Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° отдалСчСния ΡΡŠΡ€Π²ΡŠΡ€.

Няколко Ρ€Π΅Π΄Π° ΠΈ Π²ΠΈΠ΅, ΠΊΠ°Ρ‚ΠΎ всички останали, ΠΈΠΌΠ°Ρ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ информация Π·Π° всички стартирания. Π“ΠΎΡ‚ΠΈΠ½ΠΎ?

3. Π˜Π·Π³ΠΎΡ‚Π²ΡΠΌΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° улСсним стартиранСто Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° MLproject ΠΈ conda.yaml към ΠΊΠΎΡ€Π΅Π½Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
MLΠΏΡ€ΠΎΠ΅ΠΊΡ‚

name: flow_segmentation
conda_env: conda.yaml

entry_points:
  main:
    parameters:
        categories: {help: 'list of categories from coco dataset'}
        epochs: {type: int, help: 'number of epochs in training'}

        lr: {type: float, default: 0.001, help: 'learning rate'}
        batch_size: {type: int, default: 8}
        model_name: {type: str, default: 'Unet', help: 'Unet, PSPNet, Linknet, FPN'}
        backbone_name: {type: str, default: 'resnet18', help: 'exampe resnet18, resnet50, mobilenetv2 ...'}

        tracking_uri: {type: str, help: 'the server address'}
        experiment_name: {type: str, default: 'My_experiment', help: 'remote and local experiment name'}
    command: "python mlflow_training.py 
            --epochs={epochs}
            --categories={categories}
            --lr={lr}
            --tracking_uri={tracking_uri}
            --model_name={model_name}
            --backbone_name={backbone_name}
            --batch_size={batch_size}
            --experiment_name={experiment_name}"

MLflow Project ΠΈΠΌΠ° няколко свойства:

  • ИмС - ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° вашия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚;
  • Околна срСда - Π² моя случай conda_env ΠΏΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Anaconda сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° изпълнСниС ΠΈ описаниСто Π½Π° зависимостта Π΅ във Ρ„Π°ΠΉΠ»Π° conda.yaml;
  • Π’Ρ…ΠΎΠ΄Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ - ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠΎΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ с ΠΊΠΎΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° стартирамС (всички ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ сС рСгистрират Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈ стартиранС Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ)

conda.yaml

name: flow_segmentation
channels:
  - defaults
  - anaconda
dependencies:
  - python==3.7
  - pip:
    - mlflow==1.8.0
    - pysftp==0.2.9
    - Cython==0.29.19
    - numpy==1.18.4
    - pycocotools==2.0.0
    - requests==2.23.0
    - matplotlib==3.2.1
    - segmentation-models==1.0.1
    - Keras==2.3.1
    - imgaug==0.4.0
    - tqdm==4.46.0
    - tensorflow-gpu==1.14.0

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ docker ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° изпълнСниС, Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ подробности, моля, Π²ΠΈΠΆΡ‚Π΅ докумСнтация.

4. Π”Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈΡ‚Π΅

НиС ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΎΡ‚ΠΈΠ²Π°ΠΌΠ΅ Π² дирСкторията Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

git clone https://github.com/simbakot/mlflow_example.git
cd mlflow_example/

Π—Π° Π΄Π° стартиратС, трябва Π΄Π° инсталиратС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

pip install mlflow
pip install pysftp

Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ conda_env, Anaconda трябва Π΄Π° бъдС инсталирана Π½Π° вашия ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ (Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, ΠΊΠ°Ρ‚ΠΎ сами инсталиратС всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈ си ΠΏΠΎΠΈΠ³Ρ€Π°Π΅Ρ‚Π΅ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π·Π° стартиранС).

Всички ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΡ‚Π΅Π»Π½ΠΈ ΡΡ‚ΡŠΠΏΠΊΠΈ са Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. ΠžΡ‚ ΠΊΠΎΡ€Π΅Π½Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

$ mlflow run -P epochs=10 -P categories=cat,dog -P tracking_uri=http://server_host:server_port .

Π‘Π»Π΅Π΄ въвСТданС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‰Π΅ сС създадС conda срСда ΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅.
Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅ ΠΏΡ€Π΅Π΄Π°Π΄ΠΎΡ… броя Π½Π° Π΅ΠΏΠΎΡ…ΠΈΡ‚Π΅ Π·Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈΡ‚Π΅, Π² ΠΊΠΎΠΈΡ‚ΠΎ искамС Π΄Π° сСгмСнтирамС (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ пълния списък Ρ‚ΡƒΠΊ) ΠΈ адрСса Π½Π° нашия ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€.
ПълСн списък с възмоТни ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π½Π°ΠΌΠ΅Ρ€Π΅Π½ във Ρ„Π°ΠΉΠ»Π° MLproject.

5. ΠžΡ†Π΅Π½Π΅Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ

Π‘Π»Π΅Π΄ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° Π½Π° адрСса Π½Π° нашия ΡΡŠΡ€Π²ΡŠΡ€ http://server_host:server_port

MLOps - Готварска ΠΊΠ½ΠΈΠ³Π°, Π³Π»Π°Π²Π° 1

Π’ΡƒΠΊ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ списък с всички СкспСримСнти (Π³ΠΎΡ€Π΅ вляво), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ информация Π·Π° сСриитС (Π² срСдата). МоТСм Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π° информация (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ ΠΈ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° информация) Π·Π° всяко стартиранС.

MLOps - Готварска ΠΊΠ½ΠΈΠ³Π°, Π³Π»Π°Π²Π° 1

Π—Π° всСки ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π» ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° наблюдавамС историята Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅

MLOps - Готварска ΠΊΠ½ΠΈΠ³Π°, Π³Π»Π°Π²Π° 1

Π’Π΅Π·ΠΈ. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ Π² β€žΡ€ΡŠΡ‡Π΅Π½β€œ Ρ€Π΅ΠΆΠΈΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° настроитС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° MLflow API.

6. РСгистрирайтС ΠΌΠΎΠ΄Π΅Π»Π°

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ нашия ΠΌΠΎΠ΄Π΅Π» ΠΈ Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅, Ρ‡Π΅ Π΅ Π³ΠΎΡ‚ΠΎΠ² Π·Π° Π±ΠΈΡ‚ΠΊΠ°, Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π΄Π° Π³ΠΎ рСгистрирамС, Π·Π° Ρ‚ΠΎΠ²Π° ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ старта, ΠΎΡ‚ ΠΊΠΎΠΉΡ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ (ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„) ΠΈ слизамС.

MLOps - Готварска ΠΊΠ½ΠΈΠ³Π°, Π³Π»Π°Π²Π° 1

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Π΄Π°Π΄Π΅ΠΌ ΠΈΠΌΠ΅ Π½Π° нашия ΠΌΠΎΠ΄Π΅Π», Ρ‚ΠΎΠΉ ΠΈΠΌΠ° вСрсия. Ако Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ ΠΌΠΎΠ΄Π΅Π» със ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅, вСрсията Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‰Π΅ бъдС надстроСна.

MLOps - Готварска ΠΊΠ½ΠΈΠ³Π°, Π³Π»Π°Π²Π° 1

Π—Π° всСки ΠΌΠΎΠ΄Π΅Π» ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ описаниС ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ Π΅Π΄Π½ΠΎ ΠΎΡ‚ Ρ‚Ρ€ΠΈΡ‚Π΅ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ (Staging, Production, Archived); впослСдствиС, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ API, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ‚Π΅Π·ΠΈ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π°Π΅Π΄Π½ΠΎ с вСрсиитС осигурява Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚.

MLOps - Готварска ΠΊΠ½ΠΈΠ³Π°, Π³Π»Π°Π²Π° 1

ОсвСн Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ лСсСн Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ всички ΠΌΠΎΠ΄Π΅Π»ΠΈ

MLOps - Готварска ΠΊΠ½ΠΈΠ³Π°, Π³Π»Π°Π²Π° 1

ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ вСрсии

MLOps - Готварска ΠΊΠ½ΠΈΠ³Π°, Π³Π»Π°Π²Π° 1

ΠšΠ°ΠΊΡ‚ΠΎ Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„, всички ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° API.

7. Π Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄Π΅Π»Π°

На Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΎΠ±ΡƒΡ‡Π΅Π½ (keras) ΠΌΠΎΠ΄Π΅Π». ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅:

class SegmentationModel:
    def __init__(self, tracking_uri, model_name):

        self.registry = RemoteRegistry(tracking_uri=tracking_uri)
        self.model_name = model_name
        self.model = self.build_model(model_name)

    def get_latest_model(self, model_name):
        registered_models = self.registry.get_registered_model(model_name)
        last_model = self.registry.get_last_model(registered_models)
        local_path = self.registry.download_artifact(last_model.run_id, 'model', './')
        return local_path

    def build_model(self, model_name):
        local_path = self.get_latest_model(model_name)

        return mlflow.keras.load_model(local_path)

    def predict(self, image):
        image = self.preprocess(image)
        result = self.model.predict(image)
        return self.postprocess(result)

    def preprocess(self, image):
        image = cv2.resize(image, (256, 256))
        image = image / 255.
        image = np.expand_dims(image, 0)
        return image

    def postprocess(self, result):
        return result

Π’ΡƒΠΊ self.registry ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π΅ ΠΌΠ°Π»ΠΊΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π²ΡŠΡ€Ρ…Ρƒ mlflow.tracking.MlflowClient, Π·Π° удобство. Π’ΡŠΠΏΡ€ΠΎΡΡŠΡ‚ Π΅, Ρ‡Π΅ Π²Π»ΠΈΠ·Π°ΠΌ Π² ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ Ρ‚ΡŠΡ€ΡΡ Ρ‚Π°ΠΌ ΠΌΠΎΠ΄Π΅Π» с посочСното ΠΈΠΌΠ΅ ΠΈ послСдната производствСна вСрсия. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° изтСглям Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° ./model ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°ΠΌ ΠΌΠΎΠ΄Π΅Π»Π° ΠΎΡ‚ Ρ‚Π°Π·ΠΈ дирСктория mlflow.keras.load_model(local_path). Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ нашия ΠΌΠΎΠ΄Π΅Π». CV (ML) Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ лСсно Π΄Π° подобрят ΠΌΠΎΠ΄Π΅Π»Π° ΠΈ Π΄Π° ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ‚ Π½ΠΎΠ²ΠΈ вСрсии.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ… систСма, която позволява:

  • Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π½ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° информация Π·Π° ML ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅, Π½Π°ΠΏΡ€Π΅Π΄ΡŠΠΊΠ° ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ;
  • Π±ΡŠΡ€Π·ΠΎ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°;
  • наблюдава ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° Ρ…ΠΎΠ΄Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΏΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅;
  • ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΅ Π΄Π° сС ΠΏΡ€Π°Π²ΠΈ вСрсия ΠΈ Π΄Π° сС управлява ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅;
  • Π Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΅ лСсно.

Π’ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ ΠΈΠ³Ρ€Π°Ρ‡ΠΊΠ° ΠΈ слуТи ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ваша собствСна систСма, която ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΡ†Π΅Π½ΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΈ рСгистриранС Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ (Ρ‚ΠΎΡ‡ΠΊΠΈ 5 ΠΈ 6, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ) ΠΈΠ»ΠΈ Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ вСрсии Π½Π° Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π½Π΅Ρ‰ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ? Π’ΡŠΠΏΡ€ΠΎΡΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ… Π΄Π° направя, Π΅, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ MLOps ΠΊΠ°Ρ‚ΠΎ цяло, MLflow Π΅ просто срСдство Π·Π° постиганС Π½Π° Ρ†Π΅Π».

ΠΠ°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ стС срСщнали, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ съм ΠΏΠΎΠΊΠ°Π·Π°Π»?
Какво Π±ΠΈΡ…Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ към систСмата, Π·Π° Π΄Π° отговаря Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π½ΡƒΠΆΠ΄ΠΈ?
Какви инструмСнти ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° всички ΠΈΠ»ΠΈ част ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅?

PS Π©Π΅ оставя няколко Π²Ρ€ΡŠΠ·ΠΊΠΈ:
github ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ - https://github.com/simbakot/mlflow_example
MLflow - https://mlflow.org/
ΠœΠΎΡΡ‚ слуТСбСн ΠΈΠΌΠ΅ΠΉΠ» Π·Π° Π²ΡŠΠΏΡ€ΠΎΡΠΈ - [ΠΈΠΌΠ΅ΠΉΠ» Π·Π°Ρ‰ΠΈΡ‚Π΅Π½]

ΠΠ°ΡˆΠ°Ρ‚Π° компания ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ Π΅ Π΄ΠΎΠΌΠ°ΠΊΠΈΠ½ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π·Π° ИВ спСциалисти, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π½Π° 8 юли ΠΎΡ‚ 19:00 московско Π²Ρ€Π΅ΠΌΠ΅ Ρ‰Π΅ сС ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ CV срСща Π² ΠΎΠ½Π»Π°ΠΉΠ½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π°ΠΊΠΎ сС интСрСсуватС, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° участватС, рСгистрация Ρ‚ΡƒΠΊ .

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€