MLOps - Cook book, tshooj 1

MLOps - Cook book, tshooj 1

Nyob zoo sawv daws! Kuv yog tus tsim CV ntawm CROC. Peb tau ua tiav cov haujlwm hauv CV rau 3 xyoos tam sim no. Lub sijhawm no, peb tau ua ntau yam, piv txwv li: peb tau saib xyuas cov neeg tsav tsheb kom thaum tsav tsheb tsis haus dej haus, tsis haus luam yeeb, tsis tham hauv xov tooj, saib ntawm txoj kev, tsis txhob npau suav lossis ntawm huab. ; Peb tau sau cov neeg uas tsav tsheb hauv txoj kab siab thiab nqa ntau qhov chaw nres tsheb; xyuas kom cov neeg ua haujlwm hnav kaus mom hlau, hnab looj tes, thiab lwm yam.; txheeb xyuas tus neeg ua haujlwm uas xav nkag mus rau qhov chaw; Peb suav txhua yam peb ua tau.

Π― всС это ΠΊ Ρ‡Π΅ΠΌΡƒ?

Π’ процСссС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΡ‹ Π½Π°Π±ΠΈΠ»ΠΈ шишки, ΠΌΠ½ΠΎΠ³ΠΎ шишСк, с Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²Ρ‹ ΠΈΠ»ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ‹, ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅ΠΌ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ

Cia peb xav txog tias peb tau txais txoj haujlwm ntawm lub tuam txhab hluas "N", uas nws cov dej num cuam tshuam nrog ML. Peb ua haujlwm ntawm ML (DL, CV) qhov project, tom qab ntawd rau qee qhov laj thawj peb hloov mus rau lwm txoj haujlwm, feem ntau so, thiab rov qab mus rau peb tus kheej lossis lwm tus neuron.

  1. Lub sijhawm ntawm qhov tseeb los, koj yuav tsum nco ntsoov qee qhov chaw koj nres, dab tsi hyperparameters koj sim thiab, qhov tseem ceeb tshaj, cov txiaj ntsig tau coj mus rau. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мноТСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², ΠΊΡ‚ΠΎ ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ» ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ всСм запускам: Π² Π³ΠΎΠ»ΠΎΠ²Π΅, ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°Ρ…, Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅, Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ срСдС Π² ΠΎΠ±Π»Π°ΠΊΠ΅. МнС довСлось Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π³ΠΈΠΏΠ΅Ρ€ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ Π² Π²ΠΈΠ΄Π΅ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… строк Π² ΠΊΠΎΠ΄Π΅, Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΏΠΎΠ»Π΅Ρ‚ Ρ„Π°Π½Ρ‚Π°Π·ΠΈΠΈ. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ Π½Π΅ ΠΊ своСму ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Π° ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠΈΠ½ΡƒΠ» компанию ΠΈ Π² наслСдство Π²Π°ΠΌ достался ΠΊΠΎΠ΄ ΠΈ модСль ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ model_1.pb. Для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ всСй Π±ΠΎΠ»ΠΈ, прСдставим, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΅Ρ‰Π΅ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ спСциалист.
  2. ИдСм дальшС. Для запуска ΠΊΠΎΠ΄Π° Π½Π°ΠΌ ΠΈ всСм ΠΊΡ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. Часто Π±Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ Π΅Π³ΠΎ Π½Π°ΠΌ Π² наслСдство Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π½Π΅ оставили. Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ. На этот шаг Π½Π΅ хочСтся Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ?
  3. Peb cob qhia tus qauv (piv txwv li, lub tsheb ntes). Peb mus rau qhov chaw uas nws ua tau zoo heev - nws yog lub sij hawm los cawm qhov tshwm sim. Wb hu nws car_detection_v1.pb. Tom qab ntawd peb cob qhia lwm tus - car_detection_v2.pb. Qee lub sij hawm tom qab, peb cov npoj yaig lossis peb tus kheej qhia ntau dua, siv cov qauv sib txawv. Yog li ntawd, ib pawg ntawm artifacts yog tsim, cov ntaub ntawv uas yuav tsum tau mob siab rau sau (tab sis peb yuav ua qhov no tom qab, vim hais tias rau tam sim no peb muaj ntau yam tseem ceeb).
  4. OK nws tag nrho tam sim no! Peb muaj qauv! Peb puas tuaj yeem pib cob qhia tus qauv tom ntej, tsim cov qauv tsim los daws qhov teeb meem tshiab, lossis peb puas tuaj yeem mus muaj tshuaj yej? Thiab leej twg yuav xa mus?

Kev txheeb xyuas cov teeb meem

Kev ua haujlwm ntawm ib qhov project lossis cov khoom lag luam yog kev ua haujlwm ntawm ntau tus neeg. Thiab dhau sij hawm, tib neeg tawm mus thiab tuaj, muaj ntau txoj haujlwm, thiab cov haujlwm lawv tus kheej ua ntau dua. Ib txoj hauv kev los yog lwm qhov, cov xwm txheej ntawm lub voj voog uas tau piav qhia saum toj no (thiab tsis yog xwb) hauv qee qhov kev sib txuas yuav tshwm sim los ntawm iteration mus rau iteration. Tag nrho cov no ua rau nkim sijhawm, tsis meej pem, ntxhov siab, tej zaum cov neeg siv khoom tsis txaus siab, thiab thaum kawg, poob nyiaj. Txawm hais tias peb txhua tus feem ntau ua raws li cov qub qub qub, kuv ntseeg tias tsis muaj leej twg xav rov ua lub sijhawm no ntau dua.

MLOps - Cook book, tshooj 1

Yog li, peb tau dhau los ntawm ib lub voj voog kev loj hlob thiab peb pom tias muaj teeb meem uas yuav tsum tau daws. Txhawm rau ua qhov no koj xav tau:

  • yooj yim khaws cov txiaj ntsig ua haujlwm;
  • ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ простым процСсс вовлСчСния Π½ΠΎΠ²Ρ‹Ρ… сотрудников;
  • ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс развСртывания срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ;
  • configure tus qauv versioning txheej txheem;
  • muaj ib txoj hauv kev yooj yim rau validate cov qauv;
  • nrhiav tus qauv hauv lub xeev tswj cov cuab yeej;
  • Π½Π°ΠΉΡ‚ΠΈ способ доставки ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² production.

Π’ΠΈΠ΄ΠΈΠΌΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ workflow, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹ позволял Π»Π΅Π³ΠΊΠΎ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ этим ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ? Π£ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π΅ΡΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ MLOps

MLOps, los yog DevOps rau kev kawm tshuab, tso cai rau cov ntaub ntawv tshawb fawb thiab IT pab pawg los koom tes thiab nce qib ntawm cov qauv kev txhim kho thiab kev xa mus los ntawm kev saib xyuas, siv tau, thiab kev tswj hwm rau cov qauv kev kawm tshuab.

Koj tuaj yeem ua tau nyeemCov neeg Google xav li cas txog txhua qhov no? Los ntawm tsab xov xwm nws yog tseeb hais tias MLOps yog heev voluminous yam.

MLOps - Cook book, tshooj 1

Ntxiv rau hauv kuv tsab xov xwm kuv yuav piav qhia tsuas yog ib feem ntawm cov txheej txheem. Rau kev siv, Kuv yuav siv cov cuab yeej MLflow, vim tias ... Qhov no yog qhov qhib qhov project, ib qho me me ntawm cov cai yuav tsum tau txuas thiab muaj kev koom ua ke nrog cov qauv ml nrov. Koj tuaj yeem tshawb hauv Is Taws Nem rau lwm yam cuab yeej, xws li Kubeflow, SageMaker, Tsheb ciav hlau, thiab lwm yam, thiab tej zaum nrhiav ib qho uas zoo dua rau koj cov kev xav tau.

"Lub Tsev" MLOps siv cov piv txwv ntawm kev siv cov cuab yeej MLFlow

MLFlow yog lub platform qhib rau kev tswj xyuas lub neej ntawm ml qauv (https://mlflow.org/).

MLflow muaj plaub yam:

  • MLflow Tracking β€” Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ вопросы фиксации Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊ этому Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ;
  • MLflow Project - tso cai rau koj los ntim cov lej thiab rov ua dua ntawm txhua lub platform;
  • MLflow Models β€” ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΠΏΡ€ΠΎΠ΄;
  • MLflow Registry - tso cai rau koj khaws cov qauv thiab tswj lawv lub xeev hauv qhov chaw khaws cia hauv nruab nrab.

MLflow ua haujlwm ntawm ob qhov chaw:

  • tso tawm yog tag nrho lub voj voog ntawm kev cob qhia, tsis muaj thiab kev ntsuas uas peb xav sau npe;
  • Ib qho kev sim yog "lub ntsiab lus" uas khiav ua ke.

Tag nrho cov kauj ruam ntawm qhov piv txwv yog siv rau ntawm Ubuntu 18.04 operating system.

1. Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ сСрвСр

Txhawm rau kom peb yooj yim tswj peb qhov project thiab tau txais tag nrho cov ntaub ntawv tsim nyog, peb yuav xa ib lub server. MLflow tracking server muaj ob lub ntsiab lus tseem ceeb:

  • backend store β€” ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ зарСгистрированных модСлях (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ 4 Π‘Π£Π‘Π”: mysql, mssql, sqlite, and postgresql);
  • artifact store - lub luag hauj lwm rau khaws cov artifacts (txhawb 7 kev xaiv cia: Amazon S3, Azure Blob Storage, Google Huab Cia, FTP server, SFTP Server, NFS, HDFS).

Raws li a artifact store для простоты возьмСм sftp сСрвСр.

  • tsim ib pab pawg
    $ sudo groupadd sftpg
  • ntxiv tus neeg siv thiab teeb tus password rau nws
    $ sudo useradd -g sftpg mlflowsftp
    $ sudo passwd mlflowsftp 
  • kho ob peb qhov chaw nkag
    $ sudo mkdir -p /data/mlflowsftp/upload
    $ sudo chown -R root.sftpg /data/mlflowsftp
    $ sudo chown -R mlflowsftp.sftpg /data/mlflowsftp/upload
  • ntxiv ob peb kab rau /etc/ssh/sshd_config
    Match Group sftpg
     ChrootDirectory /data/%u
     ForceCommand internal-sftp
  • rov pib qhov kev pabcuam
    $ sudo systemctl restart sshd

Raws li a khw muag khoom backend Wb coj 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

Txhawm rau pib lub server, koj yuav tsum teeb tsa cov pob python hauv qab no (Kuv pom zoo kom tsim ib qho chaw virtual cais):

pip install mlflow
pip install pysftp

Cia peb pib peb lub server

$ 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. ДобавляСм Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³

Txhawm rau kom cov txiaj ntsig ntawm peb qhov kev cob qhia kom tsis txhob ploj mus, cov neeg tsim tawm yav tom ntej kom nkag siab txog qhov tshwm sim, thiab rau cov phooj ywg laus thiab koj tuaj yeem ua kom muaj kev sib haum xeeb ntawm kev kawm, peb yuav tsum tau ntxiv kev taug qab. Kev taug qab txhais tau tias txuag cov ntsuas, ntsuas, cov khoom qub thiab cov ntaub ntawv ntxiv txog kev pib kev cob qhia, hauv peb rooj plaub, ntawm lub server.

Piv txwv li, kuv tsim ib qho me me project ntawm github ntawm Keras rau segmenting txhua yam uas nyob hauv Cov ntaub ntawv pov thawj 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)

Ntawm no self.remote_server yog ib qho me me wrapper hla cov txheej txheem mlflow.tracking. MlflowClient (Kuv ua kom yooj yim), nrog kev pab los ntawm qhov kuv tsim ib qho kev sim thiab khiav nws ntawm lub server. Tom ntej no, kuv qhia qhov chaw tso tawm cov txiaj ntsig yuav tsum tau sib koom ua ke (mlflow.set_tracking_uri(self.tracking_uri)). Kuv pab kom tsis siv neeg kaw mlflow.keras.autolog(). Tam sim no MLflow Tracking txhawb kev nkag tsis siv neeg rau TensorFlow, Keras, Gluon XGBoost, LightGBM, Spark. Yog tias koj tsis pom koj lub moj khaum lossis lub tsev qiv ntawv, ces koj tuaj yeem sau npe ncaj qha. Peb tab tom pib kev cob qhia. Sau npe cim npe thiab input parameters ntawm cov chaw taws teeb server.

Ob peb kab thiab koj, zoo li txhua tus neeg, muaj kev nkag mus rau cov ntaub ntawv hais txog txhua qhov kev tshaj tawm. Txias?

3. Peb kos qhov project

Tam sim no cia peb ua kom yooj yim rau kev tso qhov project. Txhawm rau ua qhov no, ntxiv MLproject thiab conda.yaml cov ntaub ntawv mus rau qhov project hauv paus.
MLproject

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 muaj ntau yam khoom:

  • Lub npe - lub npe ntawm koj qhov project;
  • Environment β€” Π² ΠΌΠΎΠ΅ΠΌ случаС conda_env ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ для запуска ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Anaconda ΠΈ описаниС зависимостСй находится Π² Ρ„Π°ΠΉΠ»Π΅ conda.yaml;
  • Cov ntsiab lus nkag - qhia tias cov ntaub ntawv twg thiab cov kev txwv twg peb tuaj yeem khiav tau (txhua qhov ntsuas tau raug kaw thaum pib kev cob qhia)

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

Koj tuaj yeem siv docker raws li koj qhov chaw khiav haujlwm, kom paub meej ntxiv thov mus saib cov ntaub ntawv.

4. Cia peb pib kev cob qhia

Peb clone qhov project thiab mus rau qhov project directory:

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

Txhawm rau khiav koj yuav tsum nruab cov tsev qiv ntawv

pip install mlflow
pip install pysftp

Π’.ΠΊ. Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ conda_env Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ установлСна Anaconda (Π½ΠΎ ΠΈ это ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ установив всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΏΠΎΠΈΠ³Ρ€Π°Π²ΡˆΠΈΡΡŒ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ запуска).

Tag nrho cov kauj ruam npaj tau ua tiav thiab peb tuaj yeem pib pib qhov kev cob qhia. Los ntawm qhov project root:

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

Tom qab nkag mus rau cov lus txib, ib puag ncig conda yuav raug tsim thiab kev cob qhia yuav pib.
Hauv qhov piv txwv saum toj no, kuv dhau ntawm cov sijhawm rau kev cob qhia, cov pawg uas peb xav tau ntu (koj tuaj yeem pom tag nrho cov npe no) thiab qhov chaw nyob ntawm peb cov chaw taws teeb server.
Ib daim ntawv teev tag nrho ntawm qhov muaj peev xwm tuaj yeem pom hauv MLproject cov ntaub ntawv.

5. ΠžΡ†Π΅Π½ΠΈΠ²Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ обучСния

ПослС окончания обучСния ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΠΎ адрСсу нашСго сСрвСра http://server_host:server_port

MLOps - Cook book, tshooj 1

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ список всСх экспСримСнтов (слСва Π²Π²Π΅Ρ€Ρ…Ρƒ), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ запускам (посСрСдинС). ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ ΠΈ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Π΄ΠΎΠΏ. ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ) ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ запуску.

MLOps - Cook book, tshooj 1

Rau txhua qhov ntsuas peb tuaj yeem soj ntsuam keeb kwm ntawm kev hloov pauv

MLOps - Cook book, tshooj 1

Cov. Tam sim no, peb tuaj yeem txheeb xyuas cov txiaj ntsig hauv hom "phau ntawv", thiab koj tuaj yeem teeb tsa kev siv tsis siv neeg siv MLflow API.

6. Sau npe tus qauv

Tom qab peb tau txheeb xyuas peb tus qauv thiab txiav txim siab tias nws npaj txhij rau kev sib ntaus sib tua, peb mus rau npe rau nws, rau qhov no peb xaiv lub community launch peb xav tau (raws li qhia hauv kab lus dhau los) thiab nqes mus.

MLOps - Cook book, tshooj 1

Tom qab peb muab peb tus qauv lub npe, nws muaj ib tug version. Yog tias koj txuag lwm tus qauv nrog tib lub npe, lub version yuav cia li hloov kho dua tshiab.

MLOps - Cook book, tshooj 1

Rau txhua tus qauv, peb tuaj yeem ntxiv cov lus piav qhia thiab xaiv ib qho ntawm peb lub xeev (Staging, Production, Archived); tom qab ntawd, siv API, peb tuaj yeem nkag mus rau cov xeev no, uas, nrog rau kev hloov pauv, muab kev hloov pauv ntxiv.

MLOps - Cook book, tshooj 1

Peb kuj muaj kev nkag tau yooj yim rau txhua tus qauv

MLOps - Cook book, tshooj 1

thiab lawv versions

MLOps - Cook book, tshooj 1

Ib yam li hauv kab lus dhau los, txhua qhov haujlwm tuaj yeem ua tiav siv API.

7. Tso tus qauv

Nyob rau theem no, peb twb muaj kev cob qhia (keras) qauv. Ib qho piv txwv ntawm qhov koj tuaj yeem siv nws:

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

Ntawm no self.registry yog dua ib lub me me wrapper tshaj mlflow.tracking.MlflowClient, kom yooj yim. Lub ntsiab lus yog tias kuv nkag mus rau cov chaw taws teeb tswj chaw taws teeb thiab nrhiav tus qauv nyob ntawd nrog lub npe teev, thiab cov khoom tsim tawm tshiab kawg. Tom ntej no, kuv rub tawm cov khoom cuav hauv zos mus rau ./model folder thiab tsim cov qauv los ntawm phau ntawv no mlflow.keras.load_model(local_path). Tam sim no peb tuaj yeem siv peb tus qauv. CV (ML) cov neeg tsim khoom tuaj yeem txhim kho tus qauv yooj yim thiab tshaj tawm cov qauv tshiab.

Nyob rau hauv xaus

Π― прСдставил систСму которая позволяСт:

  • centrally khaws cov ntaub ntawv hais txog ML qauv, kev kawm nce qib thiab cov txiaj ntsig;
  • sai sai xa ib puag ncig kev txhim kho;
  • saib xyuas thiab txheeb xyuas qhov kev nce qib ntawm kev ua haujlwm ntawm cov qauv;
  • nws yooj yim rau version thiab tswj lub xeev ntawm cov qauv;
  • Nws yog ib qho yooj yim rau deploy lub resulting qauv.

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

Sau cov teeb meem uas koj ntsib uas kuv tsis tau tso tawm?
Koj yuav ntxiv dab tsi rau qhov system kom ua tau raws li koj xav tau?
Koj siv cov cuab yeej thiab cov txheej txheem dab tsi los daws tag nrho lossis ib feem ntawm cov teeb meem?

PS Kuv yuav tso ob peb qhov txuas:
github project - https://github.com/simbakot/mlflow_example
MLflow - https://mlflow.org/
Моя рабочая ΠΏΠΎΡ‡Ρ‚Π°, для вопросов β€” [email tiv thaiv]

Peb lub tuam txhab ib ntus tuav ntau yam xwm txheej rau cov kws tshaj lij IT, piv txwv li: Lub Xya Hli 8 ntawm 19: 00 Moscow lub sijhawm yuav muaj kev sib ntsib CV hauv online, yog tias koj txaus siab, koj tuaj yeem koom, sau npe no .

Tau qhov twg los: www.hab.com

Ntxiv ib saib