Salama daholo! Mpanamboatra CV ao amin'ny CROC aho. Efa 3 taona izao no nanatanteraka tetikasa eo amin’ny sehatry ny CV. Betsaka ny zavatra nataonay nandritra izany, ohatra: nanara-maso ny mpamily izahay mba tsy hisotrosotro, tsy nifoka sigara, tsy niresaka an-telefaonina, nijery ny lalana, fa tsy tamin’ny nofy na ny rahona. ; Noraisinay an-tsoratra ireo olona mitondra fiara amin'ny lalana voatokana ary maka toerana fiantsonan'ny fiara maromaro; niantoka fa nanao fiarovan-doha, fonon-tanana, sns ny mpiasa; nanondro mpiasa iray te hiditra ao amin'ilay trano; Noisainay izay rehetra azonay natao.
Inona no ataoko izany rehetra izany?
Eo am-panatanterahana ny tetikasa, dia midona amin'ny banga, be dia be, ny sasany amin'ireo olana efa mahazatra anao na ho fantatrao amin'ny ho avy.
Andao atao tahaka ny zava-misy
Alao sary an-tsaina fa nahazo asa tao amin'ny orinasa tanora "N", izay mifandray amin'ny ML ny asany. Miasa amin'ny tetikasa ML (DL, CV) izahay, avy eo noho ny antony sasany dia mifindra amin'ny asa hafa, amin'ny ankapobeny, maka aina, ary miverina amin'ny neuron-nay na olon-kafa.
Tonga ny fotoanan'ny fahamarinana, mila tadidinao hoe taiza ianao no nijanona, inona ny hyperparameter nandramanao ary, ny tena zava-dehibe, inona no vokatr'izy ireo. Mety misy safidy maro ho an'izay mitahiry vaovao momba ny fandefasana rehetra: ao amin'ny loha, configs, notepad, amin'ny tontolo miasa ao amin'ny rahona. Sendra nahita safidy aho rehefa voatahiry ho andalana fanehoan-kevitra ao amin'ny kaody ny hyperparameters, amin'ny ankapobeny, sidina mahafinaritra. Eritrereto izao fa tsy niverina tamin'ny tetikasanao ianao, fa tamin'ny tetikasan'olona nandao ny orinasa ary nandova code sy modely antsoina hoe model_1.pb ianao. Mba hamenoana ny sary sy hampita ny fanaintainana rehetra, andeha hojerentsika fa ianao koa dia manam-pahaizana manokana.
Ataovy tsy am-pihambahambana. Mba hampandehanana ny kaody dia mila mamorona tontolo iainana isika sy izay rehetra hiara-miasa aminy. Matetika izy ireo no tsy nandao azy ho lovantsika noho ny antony sasany. Mety ho lasa asa tsy misy dikany koa izany. Tsy te handany fotoana amin'ity dingana ity ianao, sa tsy izany?
Manofana modely izahay (ohatra, mpitsikilo fiara). Tonga amin'ny teboka izay lasa tena tsara isika - tonga ny fotoana hamonjena ny vokatra. Aleo atao hoe car_detection_v1.pb. Avy eo dia manofana iray hafa - car_detection_v2.pb. Fotoana vitsy taty aoriana, ny mpiara-miasa na ny tenanay dia mampianatra bebe kokoa hatrany, mampiasa rafitra samihafa. Vokatr'izany dia misy andian-javakanto miforona, ny fampahalalana momba izay tsy maintsy angonina amim-pitandremana (saingy hataontsika izany any aoriana, satria amin'izao fotoana izao dia manana laharam-pahamehana bebe kokoa isika).
OK dia tapitra izao! Manana modely izahay! Afaka manomboka manofana ny modely manaraka ve isika, mamolavola rafitra hamahana olana vaovao, sa afaka misotro dite? Ary iza no hametraka?
Famantarana olana
Ny asa amin'ny tetikasa na vokatra dia asan'ny olona maro. Ary rehefa mandeha ny fotoana, miala sy tonga ny olona, misy tetikasa bebe kokoa, ary ny tetikasa mihitsy no lasa sarotra kokoa. Amin'ny fomba iray na hafa, ny toe-javatra avy amin'ny tsingerina voalaza etsy ambony (ary tsy izany ihany) amin'ny fitambarana sasany dia hitranga avy amin'ny famerimberenana. Izany rehetra izany dia miteraka fotoana lany, fisafotofotoana, fahatafintohinana, mety ho tsy fahafaham-po amin'ny mpanjifa, ary farany, very vola. Na dia mazàna aza isika rehetra dia manaraka rake taloha iray ihany, mino aho fa tsy misy olona te hamerina indray ireo fotoana ireo.
Noho izany, efa nandalo tsingerina fampandrosoana iray isika ary hita fa misy ny olana mila vahana. Mba hanaovana izany dia mila:
mitahiry tsara ny vokatry ny asa;
ataovy tsotra ny dingana fampidirana mpiasa vaovao;
hanamora ny fizotran'ny fametrahana tontolo iainana fampandrosoana;
Toa ilaina ve ny mamorona workflow izay ahafahanao mitantana mora foana ity tsingerin'ny fiainana ity? Ity fanao ity dia antsoina hoe MLOps
MLOps, na DevOps ho an'ny fianarana milina, dia ahafahan'ny ekipan'ny siansa angon-drakitra sy ny IT hiara-hiasa sy hampitombo ny hafainganam-pandehan'ny famolavolana sy fametrahana modely amin'ny alàlan'ny fanaraha-maso, ny fanamarinana ary ny fitantanana ny maodely fianarana milina.
Azonao atao voninahitraInona no hevitr'ireo Google momba izany rehetra izany? Avy amin'ny lahatsoratra dia mazava fa ny MLOps dia zavatra be dia be.
Ao amin'ny lahatsoratro ihany no hamaritako ampahany amin'ny dingana. Ho fampiharana dia hampiasa ny fitaovana MLflow aho, satria ... Tetik'asa open-source ity, kaody kely no ilaina mba hifandraisana ary misy ny fampidirana ireo rafitra ml malaza. Azonao atao ny mikaroka fitaovana hafa ao amin'ny Internet, toy ny Kubeflow, SageMaker, Trains, sns., ary mety hahita fitaovana mifanaraka amin'ny filanao.
MLOps "Manorina" mampiasa ny ohatra amin'ny fampiasana ny fitaovana MLFlow
MLFlow dia sehatra loharano misokatra ho an'ny fitantanana ny fiainan'ny modely ml (https://mlflow.org/).
Ny MLflow dia misy singa efatra:
Fanaraha-maso ny MLflow - mirakitra ny olana momba ny valin'ny firaketana sy ny mari-pamantarana nahatonga an'io vokatra io;
MLflow Registry - ahafahanao mitahiry modely sy mitantana ny fanjakany ao anaty tahiry afovoany.
MLflow dia miasa amin'ny sampana roa:
Ny fanombohana dia fihodinana feno amin'ny fiofanana, masontsivana ary metrika izay tiantsika hisoratra anarana;
Ny andrana dia "lohahevitra" izay mandeha miaraka.
Ny dingana rehetra amin'ny ohatra dia ampiharina amin'ny rafitra fiasa Ubuntu 18.04.
1. Ampidiro ny mpizara
Mba hahafahantsika mitantana mora foana ny tetikasantsika sy mahazo ny fampahalalana ilaina rehetra, dia hametraka mpizara izahay. Ny mpizara mpanaraka ny MLflow dia manana singa roa lehibe:
Match Group sftpg
ChrootDirectory /data/%u
ForceCommand internal-sftp
avereno indray ny serivisy
$ sudo systemctl restart sshd
Toy ny fivarotana backend Andao haka 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
Mba hanombohana ny mpizara dia mila mametraka ireto fonosana python manaraka ireto ianao (manoro hevitra aho hamorona tontolo virtoaly misaraka):
Mba tsy ho very ny vokatry ny fanofanana, ny taranaka ho avy developer hahatakatra ny zava-nitranga, ary ho an'ny zokiolona mpiara-miasa sy ianao ho afaka mamakafaka am-pitoniana ny fizotry ny fianarana, dia mila manampy ny fanaraha-maso. Ny fanaraha-maso dia midika fa mitahiry masontsivana, metrika, artifacts ary fampahalalana fanampiny momba ny fanombohan'ny fiofanana, amin'ny tranga misy antsika, ao amin'ny server.
Ohatra, namorona kely aho tetikasa amin'ny github ao amin'ny Keras amin'ny fizarana izay rehetra ao anatiny Takelaka data COCO. Mba hanampiana ny fanaraha-maso dia namorona rakitra mlflow_training.py aho.
Ireto ny tsipika misy ny zavatra mahaliana indrindra:
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)
Eto ny self.remote_server dia fonosana kely amin'ny fomba mlflow.tracking. MlflowClient (natao ho an'ny fanamorana izany), miaraka amin'ny fanampiany dia mamorona fanandramana aho ary mihazakazaka izany amin'ny mpizara. Manaraka, asehoko hoe aiza no tokony hanambatra ny valin'ny fandefasana (mlflow.set_tracking_uri(self.tracking_uri)). Alefako ny logging mandeha ho azy mlflow.keras.autolog(). Amin'izao fotoana izao, ny MLflow Tracking dia manohana ny fidirana mandeha ho azy ho an'ny TensorFlow, Keras, Gluon XGBoost, LightGBM, Spark. Raha tsy nahita ny framework na tranombokinao ianao dia afaka miditra an-tsoratra mazava foana. Manomboka fiofanana izahay. Soraty ny marika sy ny mari-pamantarana fampidirana amin'ny mpizara lavitra.
Andalana roa ary ianao, tahaka ny olon-drehetra, dia afaka mahazo vaovao momba ny fandefasana rehetra. Mangatsiaka?
3. Manamboatra ny tetikasa izahay
Andao izao hanamora ny fanombohana ny tetikasa. Mba hanaovana izany, ampio ny rakitra MLproject sy conda.yaml amin'ny fotony tetikasa.
MLproject
Azonao atao ny mampiasa docker ho toy ny tontolo iainanao, raha mila fanazavana fanampiny azafady jereo tahirin-kevitra.
4. Andeha isika hanomboka fiofanana
Mamoaka ny tetikasa izahay ary mankamin'ny lahatahiry tetikasa:
git clone https://github.com/simbakot/mlflow_example.git
cd mlflow_example/
Mba hampandehanana dia mila mametraka tranomboky ianao
pip install mlflow
pip install pysftp
SATRIA Ao amin'ny ohatra ampiasaiko conda_env, Anaconda dia tsy maintsy apetraka amin'ny solosainao (fa azonao atao ny miala amin'izany amin'ny alàlan'ny fametrahana ny fonosana ilaina rehetra ary milalao miaraka amin'ny paramètre fanombohana).
Vita avokoa ny dingana fanomanana rehetra ary afaka manomboka ny fiofanana isika. Avy amin'ny fototry ny tetikasa:
$ mlflow run -P epochs=10 -P categories=cat,dog -P tracking_uri=http://server_host:server_port .
Aorian'ny fidirana amin'ny baiko dia hatsangana ho azy ny tontolo conda ary hanomboka ny fiofanana.
Ao amin'ny ohatra etsy ambony dia nandalo ny isan'ny vanim-potoana fanofanana aho, ireo sokajy izay tiantsika hozaraina (azonao jerena ny lisitra feno eto) ary ny adiresin'ny mpizara lavitra anay.
Ny lisitra feno amin'ny masontsivana azo atao dia hita ao amin'ny rakitra MLproject.
5. Tombanana ny vokatry ny fianarana
Rehefa vita ny fiofanana dia afaka miditra amin'ny navigateur mankany amin'ny adiresin'ny mpizara http://server_host:server_port
Hitantsika eto ny lisitry ny andrana rehetra (ambony havia), ary koa ny fampahalalana momba ny hazakazaka (afovoany). Afaka mijery fampahalalana amin'ny antsipiriany bebe kokoa izahay (parameter, metrika, artifacts ary fampahalalana fanampiny) isaky ny fandefasana.
Ho an'ny metrika tsirairay dia afaka mandinika ny tantaran'ny fiovana isika
Ireo. Amin'izao fotoana izao, afaka mamakafaka ny valiny amin'ny fomba "manual" izahay, ary azonao atao koa ny manangana fanamarinana mandeha ho azy amin'ny alàlan'ny MLflow API.
6. Soraty ny modely
Rehefa avy nandinika ny maodely izahay ary nanapa-kevitra fa vonona amin'ny ady, dia miroso amin'ny fisoratana anarana izahay, noho izany dia misafidy ny fandefasana izay ilaintsika (araka ny aseho amin'ny andalana teo aloha) ary midina.
Rehefa nomena anarana ny modely misy antsika dia manana dikan-teny izy io. Raha mitahiry modely hafa mitovy anarana ianao, dia havaozina ho azy ny dikan-teny.
Ho an'ny maodely tsirairay dia afaka manampy famaritana isika ary misafidy iray amin'ireo fanjakana telo (Staging, Production, Archived); avy eo, amin'ny fampiasana ny API, dia afaka miditra amin'ireo fanjakana ireo isika, izay, miaraka amin'ny versioning, dia manome fahafaha-manao fanampiny.
Afaka miditra mora amin'ny modely rehetra ihany koa izahay
sy ny dikan-dry zareo
Toy ny tamin'ny andalana teo aloha, ny asa rehetra dia azo atao amin'ny alàlan'ny API.
Eto indray ny self.registry dia fonosina kely eo ambonin'ny mlflow.tracking.MlflowClient, ho fanamorana. Ny teboka dia ny fidirana amin'ny mpizara lavitra aho ary mitady modely misy ny anarana voatondro, ary ny dikan-teny famokarana farany. Avy eo, alaiko ao amin'ny lahatahiry ./modely ny artifact ary amboary avy amin'ity lahatahiry mlflow.keras.load_model(local_path) ity ny modely. Afaka mampiasa ny modelintsika isika izao. Ny mpamorona CV (ML) dia afaka manatsara mora foana ny modely ary mamoaka dikan-teny vaovao.
Ho famaranana
Nanolotra rafitra aho izay mamela:
mitahiry vaovao momba ny maodely ML, ny fivoaran'ny fiofanana ary ny vokatra;
manara-maso sy mandinika ny fivoaran'ny asa amin'ny modely;
mety ny dikan-teny sy ny fitantanana ny toetry ny modely;
Mora ny mametraka ireo modely vokarina.
Ity ohatra ity dia kilalao ary miasa ho toy ny teboka fanombohana amin'ny fananganana ny rafitrao manokana, izay mety ahitana automatique ny fanombanana ny vokatra sy ny fisoratana anarana modely (teboka 5 sy 6, tsirairay avy) na ianao dia hanampy versioning ny datasets, na mety zavatra hafa ? Ny teboka niezahako natao dia ny hoe mila MLOps ianao amin'ny ankapobeny, ny MLflow dia fomba iray hamaranana fotsiny.
Soraty izay olana sedrainao izay tsy nasehoko?
Inona no hanampy anao amin'ny rafitra mba hahafeno ny filanao?
Inona no fitaovana sy fomba fiasa ampiasainao hamahana ny olana rehetra na ampahany?
Ny orinasanay dia mampiantrano hetsika isan-karazany ho an'ny manam-pahaizana momba ny IT, ohatra: amin'ny 8 Jolay amin'ny 19:00 ora ao Moskoa dia hisy ny fihaonana CV amin'ny endrika an-tserasera, raha liana ianao dia afaka mandray anjara, fisoratana anarana. eto .