Salaamu calaykum! Waxaan ahay horumariye CV ka ah CROC. Muddo hadda laga joogo 3 sano ayaanu mashaariic ka fulinaynay dhinaca CV-ga. Muddadaas waxaan sameynay waxyaabo badan, tusaale ahaan: waxaan la soconay darawalada si aysan u cabbin, sigaar cabin, aysan ku hadlin taleefanka, eegin wadada, oo aysan u eegin riyo ama daruuraha. ; Waxaan duubnay dadka ku kaxeeya waddooyin gaar ah oo qaada dhawr meelood oo baabuurta la dhigto; la hubiyay in shaqaaluhu ay xidhaan koofiyadaha, galoofyada, iwm. aqoonsaday shaqaale raba inuu galo xarunta; Waxaan tirinay wax kasta oo aan kari karnay.
Maxaan waxan oo dhan u samaynayaa?
Geedi socodka fulinta mashaariicda, waxaan ku dhuftey kuuskuus, kuuskuus badan, qaar ka mid ah dhibaatooyinka aad ama aad taqaanid ama aad baran doonto mustaqbalka.
Aan ku dayano xaalada
Aynu qiyaasno inaan shaqo ka helnay shirkad dhallinyaro ah "N", kuwaas oo hawlahooda ay la xiriiraan ML. Waxaan ka shaqeynaa mashruuca ML (DL, CV), ka dib sabab qaar ka mid ah waxaan u wareegnaa shaqo kale, guud ahaan nasasho, oo ku soo laabano annaga ama qof kale neuron.
Waqtiga runta ayaa imanaya, waxaad u baahan tahay inaad si uun u xasuusato meesha aad joogsatay, waxa hyperparameters aad isku dayday iyo, ugu muhiimsan, maxay natiijooyinka ay keeneen. Waxaa jiri kara xulashooyin badan oo loogu talagalay cidda ku kaydisay macluumaadka dhammaan bilaabista: madaxa, qaabeynta, qoraalka qoraalka, jawiga shaqada ee daruuraha. Waxaan ku dhacay inaan arko ikhtiyaar markii hyperparameters lagu kaydiyay sida khadadka faallooyinka ee koodhka, guud ahaan, duulimaad qurux badan. Hadda ka soo qaad inaadan ku soo noqon mashruucaagii, balse u soo noqotay mashruucii qof shirkadda ka tagay oo aad ka dhaxashay kood iyo model la yidhaahdo model_1.pb. Si aad u dhammaystirto sawirka oo aad u gudbiso dhammaan xanuunka, aynu ka fikirno inaad sidoo kale tahay khabiir bilow ah.
Horey u soco Si loo socodsiiyo koodhka, annaga iyo qof kasta oo la shaqayn doona waxaanu u baahanahay inaanu abuurno deegaan. Inta badan waxay dhacdaa in sabab qaar ka mid ah ayan ka tegin isaga oo ah dhaxalkeenna. Tani waxay sidoo kale noqon kartaa hawl aan fududayn. Ma rabto inaad wakhti ku lumiso tallaabadan, miyaad tahay?
Waxaan tababarnaa nooc (tusaale ahaan, qalabka baabuurka). Waxaan gaadhnay meesha ay aad u wanaagsan tahay - waa waqtigii lagu badbaadin lahaa natiijada. Aynu u yeedhno gaadhi_helid_v1.pb. Kadibna waxaan tababarnaa mid kale - car_detection_v2.pb. Muddo ka dib, asxaabteena ama anaga lafteena ayaa aad iyo aad u baraya, anagoo adeegsanayna naqshado kala duwan. Natiijo ahaan, farabadan oo farshaxan ah ayaa la sameeyay, macluumaadka ku saabsan kuwaas oo u baahan in si taxadar leh loo ururiyo (laakiin tan dambe ayaan sameyn doonaa, sababtoo ah hadda waxaan haynaa arrimo badan oo mudnaanta leh).
OK way dhammaatay Hadda! Waxaan leenahay model ah! Ma bilaabi karnaa tababbarka qaabka xiga, samaynta qaab-dhismeedka si loo xalliyo dhib cusub, mise ma aadi karnaa shaah? yaase hawl gelin doona?
Aqoonsiga dhibaatooyinka
Ka shaqaynta mashruuc ama badeecad waa shaqada dad badan. Muddo ka dib, dadku way iska tagaan oo way yimaadaan, waxaa batay mashruucyo, mashaariicda laftooduna way sii adkaanayaan. Hal hab ama si kale, xaaladaha ka imanaya wareegga kor lagu sharraxay (oo kaliya maaha) ee isku-dhafka qaarkood waxay ka dhici doonaan soo noqnoqoshada ilaa soo noqnoqoshada. Dhammaan tani waxay keenaysaa waqti lumis, jahawareer, neerfayaasha, suurtogalnimada qanacsanaanta macaamiisha, iyo ugu dambeyntii, luminta lacag. In kasta oo aan dhammaanteen raacno isla ragii duugga ahaa, waxaan aaminsanahay in qofna uusan rabin in uu soo noolaado daqiiqadahan marar badan.
Haddaba, waxa aynu soo marnay hal wareeg oo horumarineed oo aynu aragno in ay jiraan dhibaatooyin u baahan in la xalliyo. Si aad tan u samayso waxaad u baahan tahay:
si habboon u kaydi natiijooyinka shaqada;
ka dhig habka ka qayb galka shaqaalaha cusub mid fudud;
fududaynta habka geynta deegaan horumarineed;
habayn habka versioning model;
leeyihiin hab ku habboon oo lagu ansixiyo moodooyinka;
Soo hel nooc ah qalab maamulka gobolka;
hel hab aad ku gaadhsiiso moodooyinka wax soo saarka.
Sida muuqata waa lagama maarmaan in la yimaado hab-socodka shaqada kaas oo kuu ogolaanaya inaad si fudud oo habboon u maareyso wareegga nolosha? Dhaqankan waxaa loo yaqaan MLOps
MLOps, ama DevOps ee barashada mashiinka, waxay u ogolaataa sayniska xogta iyo kooxaha IT-ga inay iska kaashadaan oo ay kordhiyaan xawliga horumarinta moodeelka iyo geynta iyada oo loo marayo la socodka, ansixinta, iyo maamulka moodooyinka barashada mashiinka.
Waxaad awoodi kartaa akhriMaxay ragga Google ka qabaan waxaas oo dhan? Maqaalka waxaa iska cad in MLOps ay tahay wax aad u weyn.
Dheeraad ah maqaalkayga waxaan ku tilmaami doonaa qayb ka mid ah habka. Hirgelinta, waxaan isticmaali doonaa qalabka MLflow, sababtoo ah... Kani waa mashruuc il furan, qadar yar oo kood ah ayaa loo baahan yahay in lagu xidho waxaana jira is dhexgalka qaabab ml oo caan ah. Waxaad ka raadin kartaa internetka qalabyada kale, sida Kubeflow, SageMaker, Trains, iwm, oo laga yaabo inaad hesho mid ku habboon baahiyahaaga.
"Dhismaha" MLOps iyadoo la isticmaalayo tusaale ahaan isticmaalka qalabka MLFlow
MLFlow waa il furan oo loogu talagalay maaraynta meertada nolosha ee moodooyinka ml (https://mlflow.org/).
Mashruuca MLflow - wuxuu kuu ogolaanayaa inaad xirto koodka oo aad ku daabacdo goob kasta;
Moodooyinka MLflow - mas'uul ka ah geynta moodooyinka wax soo saarka;
Diiwaanka MLflow - wuxuu kuu ogolaanayaa inaad kaydiso moodooyinka oo aad ku maamusho gobolkooda meel dhexe.
MLflow waxay ku shaqaysaa laba qaybood:
Daah-furku waa wareeg buuxa oo tababar ah, cabbirro iyo cabbirro kuwaas oo aan rabno in aan isku diiwaan-gelinno;
Tijaabadu waa "mowduuc" oo wada socda.
Dhammaan tillaabooyinka tusaalaha waxaa lagu hirgeliyay nidaamka hawlgalka Ubuntu 18.04.
1. Geli serverka
Si aan si fudud ugu maamulno mashruucayaga oo aan u helno dhammaan macluumaadka lagama maarmaanka ah, waxaan geyn doonaa server. Adeegga raadraaca MLflow wuxuu leeyahay laba qaybood oo waaweyn:
dukaanka dhabarka - mas'uul ka ah kaydinta macluumaadka ku saabsan moodooyinka diiwaangashan (taageera 4 DBMSs: mysql, mssql, sqlite, iyo postgresql);
dukaanka artifact - mas'uul ka ah kaydinta artifacts ( taageertaa 7 fursadaha kaydinta: Amazon S3, Azure Blob Kaydinta, Google Cloud Kaydinta, server FTP, SFTP Server, NFS, HDFS).
Sida dukaanka artifact Si ay u fududaato, aynu soo qaadano server-ka sftp.
Match Group sftpg
ChrootDirectory /data/%u
ForceCommand internal-sftp
dib u bilow adeegga
$ sudo systemctl restart sshd
Sida dukaanka dhabarka Aynu qaadano 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
Si aad u bilowdo server-ka, waxaad u baahan tahay inaad ku rakibto xirmooyinka Python ee soo socda (Waxaan ku talinayaa in la abuuro jawi macmal ah oo gooni ah):
Si aan natiijada tababarkeena u lumin, jiilalka mustaqbalka ee horumariyayaashu si ay u fahmaan waxa dhacaya, iyo saaxiibada da'da weyn iyo adiga oo awood u leh in aad si degan u falanqeeyaan habka waxbarashada, waxaan u baahanahay inaan ku darno raadraaca. Dabagalku macnihiisu waa kaydinta cabbirada, cabbirada, farshaxanada iyo macluumaad kasta oo dheeraad ah oo ku saabsan bilowga tababarka, xaaladeena, ee serverka.
Tusaale ahaan, waxaan sameeyay mid yar mashruuca github on Keras si loo kala saaro wax kasta oo ku jira Xogta COCO. Si aan ugu daro raadraaca, waxaan sameeyay fayl mlflow_training.py.
Waa kuwan khadadka ay ka dhacaan waxyaabaha ugu xiisaha badan:
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)
Halkan self.remote_server waa duub yar oo ka sarreeya hababka mlflow.tracking. MlflowClient (Waxaan u sameeyay si ku habboon), iyadoo la kaashanayo taas oo aan abuuro tijaabo oo aan ku socodsiiyo server-ka. Marka xigta, waxaan tilmaamayaa halka natiijooyinka bilaabista la isku darayo (mlflow.set_tracking_uri(self.tracking_uri)). Waxaan awood u geliyaa si toos ah mlflow.keras.autolog(). Hadda MLflow Tracking waxay taageertaa galitaanka tooska ah ee TensorFlow, Keras, Gluon XGBoost, LightGBM, Spark. Haddii aadan helin qaab-dhismeedkaaga ama maktabaddaada, markaa had iyo jeer si cad ayaad u gali kartaa. Waxaan bilaabaynaa tababar. Diiwaangeli calaamadaha iyo cabbiraadaha gelinta serverka fog.
Dhowr sadar oo adiga, sida dadka kale, ayaa heli kara macluumaadka ku saabsan dhammaan bilaabista. Qabow?
3. Waxaan diyaarineynaa mashruuca
Hadda aynu fududeyno bilaabida mashruuca. Si tan loo sameeyo, ku dar faylka MLproject iyo conda.yaml xididka mashruuca.
Mashruuca ML
Deegaanka - xaaladdeyda, conda_env waxay muujineysaa in Anaconda loo isticmaalo in lagu shaqeeyo oo sharaxaadda ku tiirsanaanta ay ku jirto faylka conda.yaml;
Dhibcaha Gelitaanka - waxay muujisaa faylalka iyo cabbiraadaha aan ku socon karno (dhammaan xuduudaha si toos ah ayaa loo diiwaangeliyaa marka tababarka la bilaabayo)
git clone https://github.com/simbakot/mlflow_example.git
cd mlflow_example/
Si aad u shaqeyso waxaad u baahan tahay inaad ku rakibto maktabado
pip install mlflow
pip install pysftp
Sababtoo ah Tusaalaha aan isticmaalo conda_env, Anaconda waa in lagu rakibaa kombuyuutarkaaga (laakiin waxaad ka heli kartaa tan adigoo ku rakibaya dhammaan baakadaha lagama maarmaanka ah naftaada oo aad la ciyaareyso xuduudaha bilowga).
Dhammaan tillaabooyinka diyaarinta waa la dhammaystiray waxaanan bilaabi karnaa inaan bilowno tababarka. Laga soo bilaabo xididka mashruuca:
$ mlflow run -P epochs=10 -P categories=cat,dog -P tracking_uri=http://server_host:server_port .
Kadib gelitaanka taliska, jawiga konda ayaa si toos ah loo abuuri doonaa tababarkuna wuu bilaaban doonaa.
Tusaalaha kore, waxaan ka gudbay tirada xilliyada tababarka, qaybaha aan rabno inaan u kala saarno (waxaad arki kartaa liiska buuxa halkan) iyo ciwaanka seerfarkeena fog.
Liis dhammaystiran oo cabbirro macquul ah ayaa laga heli karaa faylka MLproject.
Ka dib markii aan falanqeynay qaabkayaga oo aan go'aansanay in ay diyaar u tahay dagaalka, waxaan sii wadnaa inaan diiwaan geliyo, tan waxaan dooraneynaa bilawga aan u baahanahay (sida ku cad cutubka hore) oo hoos u dhig.
Ka dib markii aan siin model our magac, waxa ay leedahay version. Haddii aad kaydsato nooc kale oo isla magac ah, nooca si toos ah ayaa loo cusboonaysiin doonaa.
Nooc kasta, waxaan ku dari karnaa sharaxaad oo waxaan dooran karnaa mid ka mid ah saddexda gobol (Staging, Production, Archived); ka dibna, adoo isticmaalaya API-ga, waxaan geli karnaa goboladan, kaas oo, oo ay weheliso nuqul ka mid ah, waxay bixisaa dabacsanaan dheeraad ah.
Waxaan sidoo kale si fudud u heli karnaa dhammaan moodooyinka
iyo noocyadooda
Sida cutubkii hore, dhammaan hawlgallada waxaa lagu samayn karaa API-ga.
7. Geli qaabka
Marxaladdan, waxaan horay u haysanay moodal tababbaran (kera). Tusaale ahaan sida aad u isticmaali karto:
Halkan self.registry waa mar kale duub yar oo dulmarsan mlflow.tracking.MlflowClient, si ay ugu sahlanaato. Ujeedadu waa in aan galo server fog oo aan ka raadiyo moodal leh magaca la cayimay, iyo nooca ugu dambeeyay ee wax soo saarka. Marka xigta, waxaan u soo dejiyaa artifact gudaha galka ./model oo waxaan ka dhisay qaabka buuggan mlflow.keras.load_model(local_path). Hadda waxaan isticmaali karnaa qaabkayaga. Horumarinta CV (ML) waxay si fudud u wanaajin karaan moodalka oo daabici karaan noocyo cusub.
Gabagabada
Waxaan soo bandhigay nidaam ogolaanaya:
meel dhexe u kaydi macluumaadka ku saabsan moodooyinka ML, horumarka tababarka iyo natiijooyinka;
si deg deg ah loo geeyo deegaan horumarineed;
la socdo oo lafo-gureeyo horumarka shaqada ee moodooyinka;
way ku habboon tahay in la daabaco oo la maareeyo xaaladda moodooyinka;
Way fududahay in la geeyo moodooyinka soo baxay.
Tusaalahani waa toy wuxuuna u adeegaa sidii barta bilowga ah ee lagu dhisayo nidaamkaaga, kaas oo laga yaabo inay ku jiraan otomaatig ah qiimeynta natiijooyinka iyo diiwaangelinta moodooyinka (dhibcaha 5 iyo 6, siday u kala horreeyaan) ama waxaad ku dari doontaa nuqulka xogta, ama laga yaabee wax kale? Qodobka aan isku dayay inaan sameeyo ayaa ah inaad u baahan tahay MLOps guud ahaan, MLflow waa uun hab lagu dhammeeyo.
Qor dhibaatooyinka aad la kulantay ee aanan soo bandhigin?
Maxaad ku dari lahayd nidaamka si uu u daboolo baahiyahaaga?
Qalabkee iyo dariiqooyinkee ayaad isticmaashaa si aad u xalliso dhammaan ama qayb ka mid ah dhibaatooyinka?