MLOps - Pukapuka Kuki, upoko 1

MLOps - Pukapuka Kuki, upoko 1

Kia ora katoa! He kaiwhakawhanake CV ahau i CROC. Kua 3 tau matou e whakatinana ana i nga kaupapa mo te CV. I tenei wa, he maha nga mea i mahia e matou, hei tauira: i tirotirohia e matou nga kaitaraiwa kia kore ai i te wa e taraiwa ana ratou i te inu, i te kai paipa, i te korero waea, i te titiro ki te huarahi, i nga moemoea, i nga kapua. ; I tuhi matou i nga tangata ka peia i nga huarahi motuhake me te eke ki etahi waahi waka waka; te whakarite kia mau potae, karapu, aha atu nga kaimahi; i tautuhia he kaimahi e hiahia ana ki te uru ki te whare; I tatauhia e matou nga mea katoa ka taea e matou.

He aha ahau i mahi ai i enei mea katoa?

I te wa o te whakatinana kaupapa, ka pa ki a matou nga puku, he maha nga raru, etahi o nga raru e mohio ana koe, e mohio ana ranei a muri ake nei.

Kia whakatairite tatou i te ahuatanga

Whakaarohia kua whiwhi mahi matou i tetahi kamupene taitamariki "N", ko ana mahi e pa ana ki te ML. Ka mahi matou i tetahi kaupapa ML (DL, CV), katahi ka huri matou ki tetahi atu mahi, ka okioki, ka hoki ki to matou ake, ki te neuron o tetahi atu ranei.

  1. Ka tae mai te wa o te pono, me mahara koe ki hea koe i mutu ai, he aha nga hyperparameter i whakamatauhia e koe, me te mea nui, he aha nga hua i puta mai. He maha nga whiringa mo te hunga i penapena korero mo nga whakarewatanga katoa: i roto i te upoko, whirihora, notepad, i roto i te taiao mahi i roto i te kapua. I tupono noa ahau ki te kite i tetahi whiringa i te wa e penapenahia ana nga tohutoro rite nga rarangi korero i roto i te waehere, i te nuinga o te waa, he rere rerehua. Whakaarohia inaianei kaore koe i hoki ki to kaupapa, engari ki te kaupapa o te tangata i wehe atu i te kamupene ka riro mai i a koe tetahi tohu me tetahi tauira e kiia nei ko model_1.pb. Hei whakaoti i te pikitia me te whakaatu i nga mamae katoa, me whakaaro koe he tohunga mohio koe.
  2. Haere i mua. Hei whakahaere i te waehere, me hanga e matou me nga tangata katoa ka mahi tahi me te hanga i tetahi taiao. I te nuinga o nga wa kare ratou i whakarere ia ia hei kainga tupu mo tatou. Ka taea hoki tenei hei mahi kore-iti. Kaore koe e hiahia ki te whakapau i te wa mo tenei taahiraa, kaore koe?
  3. Ka whakangungua e matou he tauira (hei tauira, he kairapu waka). Ka tae ki te waahi ka tino pai - kua tae ki te wa ki te whakaora i te hua. Karangatia he car_detection_v1.pb. Katahi ka whakangungua tetahi atu - car_detection_v2.pb. I etahi wa i muri mai, ka kaha ake te ako a o matou hoa mahi, o matou ake ranei, ma te whakamahi i nga hoahoanga rereke. Ko te mutunga mai, he maha nga taonga toi ka hangaia, ko nga korero me whakapau kaha (engari ka mahia e matou a muri ake nei, na te mea he nui ake a matou kaupapa matua).
  4. OK kua mutu katoa Inaianei! He tauira ta matou! Ka taea e tatou te timata ki te whakangungu i te tauira e whai ake nei, te hanga hoahoanga hei whakaoti rapanga hou, ka taea ranei te haere ki te tii? A ko wai ka toha?

Te tautuhi raruraru

Ko te mahi i runga i tetahi kaupapa, hua ranei he mahi na te tini o nga tangata. A, ka roa te wa, ka wehe nga tangata, ka tae mai, ka nui ake nga kaupapa, ko nga kaupapa ano ka tino uaua. I tetahi ara, i tetahi atu ranei, ko nga ahuatanga mai i te huringa kua whakaahuahia i runga ake nei (a ehara i te mea anake) i etahi huinga ka puta mai i te whitiwhiti ki te whitiwhiti. Ko enei mea katoa ka pau te wa, te whakama, te uaua, te kore e pai ki te kaihoko, me te mutunga, ka ngaro te moni. Ahakoa te nuinga o nga wa ka whai tatou katoa i te rake tawhito kotahi, e whakapono ana ahau kaore tetahi e hiahia ki te whakahoki ano i enei waa.

MLOps - Pukapuka Kuki, upoko 1

No reira, kotahi te huringa o te whanaketanga ka kite tatou he raruraru hei whakatika. Ki te mahi i tenei ka hiahia koe:

  • te rokiroki pai i nga hua mahi;
  • kia ngawari te tukanga whakauru kaimahi hou;
  • whakangawari i te tukanga o te whakatakoto i tetahi taiao whanaketanga;
  • whirihora i te tukanga whakaputa tauira;
  • he huarahi watea ki te whakamana i nga tauira;
  • kimihia he taputapu whakahaere kawanatanga tauira;
  • kimihia he huarahi ki te tuku tauira ki te whakaputa.

Te ahua nei he mea tika kia puta mai he rerenga mahi e taea ai e koe te whakahaere ngawari me te ngawari o tenei huringa ora? Ko tenei mahi ka kiia ko MLOps

MLOps, DevOps ranei mo te ako miihini, ka taea e nga roopu pūtaiao raraunga me nga roopu IT ki te mahi tahi me te whakanui ake i te tere o te whakawhanaketanga tauira me te horahanga ma te aroturuki, te whakamana, me te whakahaere mo nga tauira ako miihini.

Ka taea e koe panuiHe aha nga whakaaro o nga taangata Google mo enei mea katoa? Mai i te tuhinga e marama ana ko MLOps he mea tino nui.

MLOps - Pukapuka Kuki, upoko 1

I tua atu i roto i taku tuhinga ka whakaahua noa ahau i tetahi waahanga o te tukanga. Mo te whakatinanatanga, ka whakamahia e ahau te taputapu MLflow, no te mea ... He kaupapa tuwhera tenei, he iti noa te waehere e hiahiatia ana hei hono me te whakauru ki nga anga ml rongonui. Ka taea e koe te rapu i te Ipurangi mo etahi atu taputapu, penei i a Kubeflow, SageMaker, Trains, me etahi atu, ka kitea pea tetahi e pai ake ana ki o hiahia.

"Hanga" MLOps e whakamahi ana i te tauira o te whakamahi i te taputapu MLFlow

Ko te MLFlow he papaa tuwhera mo te whakahaere huringa ora o nga tauira ml (https://mlflow.org/).

E wha nga waahanga kei roto i te MLflow:

  • Aroturuki MLflow - ka kapi i nga take o te tuhi i nga hua me nga tawhā i puta ai tenei hua;
  • Kaupapa MLflow - ka taea e koe te kiki i te waehere me te whakaputa ano i runga i tetahi papanga;
  • Nga Tauira MLflow - te kawenga mo te tuku tauira ki te hanga;
  • MLflow Registry - ka taea e koe te penapena tauira me te whakahaere i o raatau ahuatanga i roto i te putunga putunga.

E rua nga hinonga e mahi ana a MLflow:

  • Ko te whakarewatanga he huringa katoa o nga whakangungu, tawhā me nga inenga e hiahia ana matou ki te rehita;
  • Ko te whakamatautau he "kaupapa" e haere tahi ana.

Ko nga waahanga katoa o te tauira ka whakatinanahia ki te punaha whakahaere Ubuntu 18.04.

1. Tukuna te tūmau

Kia ngawari ai te whakahaere i ta maatau kaupapa me te whiwhi i nga korero katoa e tika ana, ka tukuna e matou he tūmau. E rua nga waahanga matua o te tūmau aroturuki MLflow:

  • toa backend - te kawenga mo te penapena korero mo nga tauira kua rehitatia (tautoko 4 DBMS: mysql, mssql, sqlite, me te postgresql);
  • toa taonga - te kawenga mo te penapena taonga (tautoko i nga whiringa rokiroki e 7: Amazon S3, Azure Blob Storage, Google Cloud Storage, FTP server, SFTP Server, NFS, HDFS).

rite toa taonga Mo te ngawari, me tango he tūmau sftp.

  • hanga he roopu
    $ sudo groupadd sftpg
  • tāpirihia he kaiwhakamahi me te tautuhi i tetahi kupuhipa mo ia
    $ sudo useradd -g sftpg mlflowsftp
    $ sudo passwd mlflowsftp 
  • te whakatika i nga tautuhinga uru e rua
    $ sudo mkdir -p /data/mlflowsftp/upload
    $ sudo chown -R root.sftpg /data/mlflowsftp
    $ sudo chown -R mlflowsftp.sftpg /data/mlflowsftp/upload
  • taapirihia etahi rarangi ki /etc/ssh/sshd_config
    Match Group sftpg
     ChrootDirectory /data/%u
     ForceCommand internal-sftp
  • tīmata anō te ratonga
    $ sudo systemctl restart sshd

rite toa tuara Me tango i te 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

Hei timata i te tūmau, me whakauru koe i nga kohinga python e whai ake nei (Ka tūtohu ahau ki te hanga i tetahi taiao mariko motuhake):

pip install mlflow
pip install pysftp

Kia timata ta tatou tūmau

$ 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. Tāpirihia te aroturuki

Kia kore ai e ngaro nga hua o a matou whakangungu, kia mohio nga uri kaiwhakawhanake a muri ake nei ki nga mea kei te tupu, kia taea hoki e nga hoa pakeke me koe te wetewete marie i nga mahi ako, me tapiri atu he aroturuki. Ko te whainga ko te tiaki i nga tawhā, inenga, i nga mahi toi me etahi atu korero mo te timatanga o te whakangungu, i roto i ta maatau, i runga i te tūmau.

Hei tauira, i hanga e ahau he iti kaupapa i runga i te github i runga i Keras mo te wehewehe i nga mea katoa kei roto Ko nga raraunga COCO. Hei taapiri i te aroturuki, i hanga e ahau he konae mlflow_training.py.

Anei nga rarangi ka puta nga mea tino whakamere:

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)

I konei ko self.remote_server he takai iti i runga i nga tikanga mlflow.tracking. MlflowClient (I mahia e au mo te waatea), me te awhina i a au ka hangaia he whakamatautau me te whakahaere i runga i te tūmau. I muri mai, ka tohu ahau ki hea e tika ai kia hanumi nga hua whakarewatanga (mlflow.set_tracking_uri(self.tracking_uri)). Ka taea e au te takiuru aunoa mlflow.keras.autolog(). I tenei wa ka tautokohia e MLflow Tracking te takiuru aunoa mo TensorFlow, Keras, Gluon XGBoost, LightGBM, Spark. Mena kare ano koe i kite i to anga, whare pukapuka ranei, katahi ka taea e koe te takiuru marama. Kei te timata matou ki te whakangungu. Rēhitahia nga tohu me nga tawhā whakauru ki te tūmau mamao.

E rua nga raina me koe, pera i era atu, ka whai waahi ki nga korero mo nga whakarewatanga katoa. Matahau?

3. Ka tuhia e matou te kaupapa

Inaianei kia ngawari ki te whakarewa i te kaupapa. Ki te mahi i tenei, taapirihia te MLproject me te konae conda.yaml ki te pakiaka kaupapa.
ML kaupapa

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}"

He maha nga ahuatanga o te Kaupapa MLflow:

  • Ingoa - te ingoa o to kaupapa;
  • Taiao - i roto i taku keehi, ko te conda_env e tohu ana ka whakamahia a Anaconda ki te whakahaere me te whakaahuatanga whakawhirinaki kei roto i te konae conda.yaml;
  • Nga Tohu Whakauru - he tohu he aha nga konae me nga tawhā ka taea e tatou te whakahaere (ka takiuru aunoa nga tawhā katoa ina timata te whakangungu)

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

Ka taea e koe te whakamahi i te docker hei taiao wa mahi, mo etahi atu taipitopito tirohia koa tuhinga.

4. Me timata taatau ki te whakangungu

Ka kati matou i te kaupapa ka haere ki te raarangi kaupapa:

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

Hei whakahaere me whakauru koe i nga whare pukapuka

pip install mlflow
pip install pysftp

No te mea i roto i te tauira ka whakamahi ahau i te conda_env, me whakauru a Anaconda ki to rorohiko (engari ka taea e koe te huri i tenei ma te whakauru i nga kohinga e tika ana ma koe ake me te takaro me nga tawhā whakarewatanga).

Kua oti katoa nga mahi whakarite ka taea e tatou te timata ki te whakarewa i te whakangungu. Mai i te putake kaupapa:

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

Whai muri i te whakaurunga ki te whakahau, ka hanga aunoa he taiao conda ka timata te whakangungu.
I roto i te tauira i runga ake nei, i paahitia e ahau te maha o nga wa mo te whakangungu, nga waahanga e hiahia ana matou ki te wehe (ka taea e koe te kite i te rarangi katoa konei) me te wāhi noho o tā mātou tūmau mamao.
Ka kitea he rarangi katoa o nga tawhā ka taea ki te konae MLproject.

5. Aromātai i ngā hua ako

I muri i te whakaoti i te whakangungu, ka taea e tatou te haere i roto i te kaitirotiro ki te wahitau o to tatou tūmau http://server_host:server_port

MLOps - Pukapuka Kuki, upoko 1

I konei ka kite matou i te rarangi o nga whakamatautau katoa (mauī runga), me nga korero mo nga oma (waenganui). Ka taea e tatou te tiro i nga korero taipitopito (tawhā, inenga, toi me etahi atu korero) mo ia whakarewatanga.

MLOps - Pukapuka Kuki, upoko 1

Mo ia ineine ka taea e tatou te tirotiro i te hitori o nga huringa

MLOps - Pukapuka Kuki, upoko 1

Ko era. I tenei wa ka taea e matou te tarai i nga hua i roto i te aratau "a-ringa", ka taea hoki e koe te whakarite i te whakamana aunoa ma te whakamahi i te API MLflow.

6. Rehitatia te tauira

I muri i te tātari i to maatau tauira me te whakatau kua rite mo te whawhai, ka haere tonu taatau ki te rehita, mo tenei ka tohua e matou te whakarewatanga e hiahiatia ana (penei i te waahanga o mua) ka heke iho.

MLOps - Pukapuka Kuki, upoko 1

Whai muri i to maatau ingoa tauira, he putanga. Mena ka tiakina e koe tetahi atu tauira me te ingoa rite, ka whakahou aunoa te putanga.

MLOps - Pukapuka Kuki, upoko 1

Mo ia tauira, ka taea e taatau te taapiri i tetahi whakaahuatanga me te kowhiri i tetahi o nga whenua e toru (Whakaahuatanga, Whakaputa, Whakapuranga); muri iho, ma te whakamahi i te API, ka taea e taatau te uru atu ki enei whenua, me te whakaputanga, he ngawari ake.

MLOps - Pukapuka Kuki, upoko 1

He ngawari hoki taatau ki nga tauira katoa

MLOps - Pukapuka Kuki, upoko 1

me o ratou putanga

MLOps - Pukapuka Kuki, upoko 1

Ka rite ki te waahanga o mua, ka taea nga mahi katoa ma te whakamahi i te API.

7. Hoatuhia te tauira

I tenei wahanga, he tauira (keras) kua whakangungua. He tauira me pehea e taea ai e koe te whakamahi:

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

I konei ko self.registry ano he takai iti i runga i te mlflow.tracking.MlflowClient, mo te pai. Ko te kaupapa ko te uru atu ahau ki tetahi tūmau mamao me te rapu tauira ki reira me te ingoa kua tohua, me te putanga whakaputa hou. I muri mai, ka tango ahau i te taonga toi i te rohe ki te kōpaki ./model ka hanga i te tauira mai i tenei raarangi mlflow.keras.load_model(local_path). Inaianei ka taea e taatau te whakamahi i ta maatau tauira. Ka taea e nga kaihanga CV (ML) te whakapai ake i te tauira me te whakaputa i nga putanga hou.

I te mutunga

I tukuna e ahau he punaha e taea ai:

  • rokiroki i nga korero mo nga tauira ML, te ahunga whakamua whakangungu me nga hua;
  • hohoro te hora i te taiao whanaketanga;
  • te aro turuki me te tātari i te ahunga whakamua o nga mahi mo nga tauira;
  • he pai ki te whakaputa me te whakahaere i te ahua o nga tauira;
  • He ngawari te whakatakoto i nga tauira ka puta.

Ko tenei tauira he taonga takaro, ka noho hei timatanga mo te hanga i a koe ake punaha, ka uru pea ki te aunoatanga o te arotakenga o nga hua me te rehitatanga o nga tauira (nga tohu 5 me te 6, ia) ka taapirihia ranei e koe te whakaputanga o nga huingararaunga, me etahi atu mea ? Ko te kaupapa i ngana ahau ki te kii ko te hiahia koe ki nga MLOps katoa, ko te MLflow he huarahi noa ki te mutunga.

Tuhia he aha nga raru i pa ki a koe kaore au i whakaatu?
He aha te mea ka tapiritia e koe ki te punaha kia tutuki ai o hiahia?
He aha nga taputapu me nga huarahi ka whakamahia e koe ki te whakaoti i te katoa, i tetahi waahanga ranei o nga rapanga?

PS Ka waiho e ahau etahi hononga e rua:
kaupapa github - https://github.com/simbakot/mlflow_example
MLRere - https://mlflow.org/
Taku imeera mahi mo nga patai - [email tiakina]

Ka whakahaerehia e ta maatau kamupene nga huihuinga rereke mo nga tohunga IT, hei tauira: hei te 8 o Hurae i te 19:00 i te wa o Moscow ka tu he huihuinga CV i roto i te whakatakotoranga ipurangi, mena kei te pirangi koe, ka taea e koe te whakauru, te rehitatanga. konei .

Source: will.com

Tāpiri i te kōrero