Umhlahlandlela wesosayensi wedatha ezitsheni ze-docker

I-ML ukuze ibe wusizo kudinga ukugijima kwenye indawo. Lokhu kwenye indawo kungenzeka hhayi ngomshini wakho wendawo. Imodeli engathandeki kangako esebenza endaweni yokukhiqiza ingcono kunemodeli ephelele engalokothi ishiye umshini wangakini.
Kodwa-ke, umshini wokukhiqiza uvame ukwehluka kulokhu uthuthukise imodeli kuyo. Ngakho-ke, uthumela imodeli emshinini wokukhiqiza, kepha ngandlela thile imodeli ayisasebenzi. Lokho kuyamangaza, kunjalo? Uhlole konke emshinini wangakini futhi wasebenza kahle. Uveze ngisho nokuhlolwa kweyunithi.
Kwenzenjani? Cishe umshini wokukhiqiza uhlukile emshinini wangakini. Mhlawumbe ayinakho konke ukuncika okudingekayo okufakwe ukuze kuqhutshwe imodeli yakho. Mhlawumbe afakwe kuncike kuhlobo oluhlukile. Kungaba nezizathu eziningi zalokhu.
Ungayixazulula kanjani le nkinga? Indlela eyodwa kungenzeka ukuthi iphindaphinde umshini wokukhiqiza. Kepha lokho akunakwethenjwa kakhulu ngomshini ngamunye omusha wokukhiqiza uzodinga ukwakha isithombe sendawo.
Indlela eningi kakhulu ukusebenzisa iziqukathi ze-docker.
I-Docker iyithuluzi elisisiza ukudala, ukuphatha, kanye nekhodi yokusebenzisa kanye nezicelo ezitsheni. Isitsha siyimvelo encane yekhompiyutha esodwa lapho singakwazi khona ukufaka isicelo ngakho konke ukuncika kwaso. Endabeni yethu imodeli yethu ye-ML nayo yonke imitapo yolwazi edinga ukuyenza. Ngalesi, asidingi ukuncika kulokho okufakwe emshinini womgcini. Isitsha se-docker sisenza sikwazi ukuhlukanisa izinhlelo zokusebenza kwingqalasizinda engaphansi.
Isibonelo, sifaka imodeli yethu ye-ML endaweni yakini bese siyicindezela efwini. Ngalesi, i-docker isisiza ukuthi siqinisekise ukuthi imodeli yethu ingasebenza noma kuphi nanoma nini. Usebenzisa i-Docker inezinzuzo eziningana ngathi. Kuyasisiza ukuletha amamodeli amasha ngokushesha, ngcono ukuvela kabusha, futhi kubembisana kube lula. Konke ngoba sinakho ngqo ukuncika okufanayo noma ngabe sisebenza kuphi esitsheni.
Njengoba i-docker isetshenziswa kabanzi ku-Idatha Yezemininingwane Yezimboni kudingeka ikwazi ukwakha futhi iqhube iziqukathi zisebenzisa i-docker. Ngakho-ke, kule ndatshana, ngizohamba ngomqondo oyisisekelo weziqukathi. Ngizokukhombisa konke okudingeka ukwazi ngeDocker ukuze uqalise. Ngemuva kokuthi simboze lo mbono, ngizokukhombisa ukuthi ungakha kanjani futhi ugijime esitsheni sakho se-docker.
Isiphi isitsha?
Isitsha yindawo encane, esodwa lapho yonke into iyazithola khona. Imvelo ifaka yonke ikhodi kanye nokuxhomekeka.
Isitsha sinezici ezinhlanu eziyinhloko.
- okuqukethwe: Isitsha esihlukanisa uhlelo lokusebenza / isoftware, kusuka kwimvelo yayo / ingqalasizinda yayo. Ngenxa yalokhu ukwehlukaniswa, asidingi ukuncika kunoma yikuphi ukuncika kwangaphambi kokufakwa emshinini womgcini. Konke esikudingayo kuyingxenye yesitsha. Lokhu kuqinisekisa ukuthi uhlelo lokusebenza lungahlala lugijima kungakhathalekile ukuthi lube nengqalasizinda.
- -odwa: Isitsha sinethonya elincane kumgcini nakwezinye iziqukathi nokuphikisana nalokho.
- -zibusayo: Singakwazi ukuphatha iziqukathi ngokuzimela. Ukususa isitsha akuphazamisi ezinye iziqukathi.
- -thuthekayo: Njengoba isitsha sihlukanisa isoftware evela ku-hardware, singayiqhuba ngaphandle komthungo kunoma yimuphi umshini. Ngalesi, singayihambisa phakathi kwemishini ngaphandle kwenkinga.
- -lulaphele: Iziqukathi zingasindi njengoba zihlanganyela os womshini womshini. Njengoba zingadingi owabo i-OS, asidingi ukwahlukanisa insiza yehadiwe yomshini wokubamba.
Lokhu kungazwakala kufana nemishini ebonakalayo. Kepha kunomehluko omkhulu. Umehluko ukuthi basebenzisa kanjani izinsiza zabo zekhompyutha zabo. Imishini ebonakalayo ingukukhishwa kwehardware ngokomzimba. Bahlukanisa iseva eyodwa. Ngakho-ke, i-VM ifaka ikhophi ephelele ye-OS ethatha isikhala esithe xaxa.
Ngokuphambene nalokho, iziqukathi zingukuthi abstruction engxenyeni yesicelo. Zonke iziqukathi zabelana nge-OS ye-Host's kodwa zigijime ngezinqubo ezidwayo. Ngoba iziqukathi aziqukethe i-OS, zisebenza kahle ngokusebenzisa uhlelo olungaphansi nezinsizakusebenza ngokunciphisa ngaphezulu.
Manje sesikwazi ukuthi yiziphi iziqukathi. Ake sithole ukuqonda okuphezulu kwezinga lemisebenzi yeDocker. Ngizokwethula kafushane amagama obuchwepheshe asetshenziswa kaningi.
Yini i-docker?
Ukuze uqonde ukuthi umDocker usebenza kanjani, ake sibheke kafushane ukwakhiwa kwalo.
I-Docker isebenzisa ukwakhiwa kwamakhasimende-iseva yeseva equkethe izingxenye ezintathu eziphambili: iklayenti le-docker, i-daemon ye-docken (iseva), nerejista ye-docker.
Iklayenti le-Docker yindlela eyinhloko yokusebenzisana ne-docker ngemiyalo. Sisebenzisa iklayenti ukuthi lixhumane nge-API yokuphumula nge-DOCKER Daemons amaningi njengoba sifuna. Imiyalo esetshenziswa kaningi iyi-Docker Run, Yakha iDocker, dockler donsa, kanye ne-docker push. Ngizochaza ngokuhamba kwesikhathi abakwenzayo.
I-Docker daemon ilawula izinto ze-docker, njengezithombe neziqukathi. I-daemon ilalela izicelo zeDocker API. Ngokuya ngesicelo i-daemon eyakha, iyagijima, futhi isabalalisa iziqukathi zedokodo. I-Docker daemon kanye neklayenti ingagijima ezinhlelweni ezifanayo noma ezihlukile.
I-Docker Registry iyindawo ephakathi nendawo egcina futhi ilawula izithombe ze-docker. Singazisebenzisa ukuhlanganyela izithombe futhi zizenze zifinyeleleke kwabanye.
Kuzwakala ku-Abstract kancane? Akunazinkathazo, uma nje sesiqale ukuthi zinembile ngokwengeziwe. Kepha ngaphambi kwalokhu, ake sigijime ngezinyathelo ezidingekayo zokwakha isitsha se-docker.

Yini esikudingayo ukudala isitsha se-docker?
Kulula. Sidinga kuphela ukwenza izinyathelo ezintathu:
- Dala i-Dockerfile
- Yakha isithombe se-docker kusuka ku-dockfile
- Gijimani isithombe se-docker ukudala isitsha se-docker
Asihambe isinyathelo ngesinyathelo.
I-DockerFile yifayela lombhalo eliqukethe imiyalo yokuthi ungawakha kanjani isithombe sedokodo. E-DockerFile sichaza ukuthi uhlelo lokusebenza lubukeka kanjani futhi ukuncika kwalo. Siphinde sisho ukuthi iyiphi inqubo okufanele isebenze lapho sethula isitsha se-docker. I-DocperFile yakhiwa izingqimba, ezimele ingxenye yohlelo lwefayela lesithombe. Ungqimba ngalunye lungeza, lususa, noma lushintshe ungqimba olungezansi.
Ngokusekelwe kwi-DockerFile sakha isithombe se-docker. Lesi sithombe siyisifanekiso esifundwayo kuphela ngemiyalo yokusebenzisa isitsha se-docker. Izithombe azilawuleki. Lapho sesidale isithombe se-docker ngeke sikwazi ukuwuguqula. Uma sifuna ukwenza ushintsho, singangezela kuphela izinguquko ngaphezulu kwezithombe ezikhona noma sakha isithombe esisha. Lapho sakha kabusha isithombe, i-docker ihlakaniphile ngokwanele ukwakha kabusha izingqimba eziguqukile, zinciphisa isikhathi sokwakha.
Isitsha se-docker yisibonelo esingenakufinyeleleka sesithombe se-docker. Isitsha sichazwa ngesithombe kanye nanoma yiziphi izinketho zokucushwa esikunikeza lapho zidala noma ziqala isitsha. Lapho sisusa isitsha lonke ushintsho ezifundeni zalo zangaphakathi nazo zisuswa uma zingagcinwanga kwisitoreji esiphikelelayo.
Usebenzisa iDocker: Isibonelo
Ngawo wonke umbono, ake sihlanze izandla zethu zingcolise konke ndawonye.
Njengesibonelo, sizofaka imodeli elula ye-ML nge-flask esitsheni se-docker. Singase sigijime izicelo ngokumelene nesitsha bese sithola izibikezelo ngokubuya. Sizoqeqesha imodeli yasendaweni futhi silayishe kuphela ubuciko bemodeli eqeqeshiwe esitsheni se-docker.
Ngizodlula ekuhambeni komsebenzi okujwayelekile okudingekayo ukudala futhi ngigijime isitsha se-docker ngemodeli yakho ye-ML. Ngizokuqondisa ngezinyathelo ezilandelayo:
- Yakha imodeli
- dala
requirements.txt
Ifayela eliqukethe konke ukuncika - dala
Dockerfile
- Yakha isithombe se-Dockor
- run isitsha
Ngaphambi kokuthi siqale, kudingeka sifake iDocker Desktop. Sizoyisebenzisa ukubuka nokuqhuba iziqukathi zethu ze-docker ngokuhamba kwesikhathi.
1. Yakha imodeli
Okokuqala, sizoqeqesha i-radomentforccissier elula engahleliwe scikit-learn
I-Dataset ye-IRIS bese igcina imodeli eqeqeshiwe.
Okwesibili, sakha iskripthi esenza imodeli yethu itholakale nge-api yokuphumula, isebenzisa i-flask. Iskripthi silula futhi siqukethe izinyathelo ezintathu eziphambili:
- khipha futhi uguqule imininingwane esifuna ukuyidlulisela kwimodeli kusuka ku-payload json
- Layisha ubuciko bemodeli bese udala iseshini ye-ONNX bese usebenzisa imodeli
- Buyisela ukubikezela kwemodeli njengoJson
Ngathatha iningi lekhodi ukusuka lapha nalapha futhi ngizenzile kuphela izinguquko ezincane.
2. Dala izidingo
Uma sesidale ifayela lePython Sifuna ukukwenza lapho isitsha sedokhethi sisebenza, kufanele sakhe a requirements.txt
Ifayela eliqukethe konke ukuncika. Endabeni yethu, kubukeka kanjena:
3. Dala i-Dockerfile
Into yokugcina esiyidingayo ukuze silungiselele ngaphambi kokukwazi ukwakha isithombe se-docker futhi sigijime isitsha se-docker ukubhala i-dockfile.
I-DockFile iqukethe yonke imiyalo edingekayo yokwakha isithombe se-docker. Imiyalo ejwayelekile kakhulu
FROM
– Lokhu kucacisa isithombe sesisekelo sokuthi ukwakhiwa kuzokwelula.WORKDIR
– Lo myalo ucacisa “umkhombandlela osebenzayo” noma indlela esithombeni lapho amafayela ayokopishwa khona futhi imiyalo izokwenziwa.COPY
– Lo myalo utshela umakhi ukukopisha amafayela kusuka kumgcini bese uwafaka esithombeni sesitsha.RUN
– Lo myalo utshela umakhi ukuthi aqhube umyalo obekiwe.ENV
– Lo myalo ubeka ukuguquguquka kwemvelo okuzosetshenziswa isitsha esisebenzayo.EXPOSE
– Lo myalo ubeka ukucushwa esithombeni esibonisa imbobo isithombe esingathanda ukudalula.USER
– Lo myalo ubeka umsebenzisi ozenzakalelayo kuyo yonke imiyalo elandelayo.CMD ["
– Lo myalo usetha umyalo ozenzakalelayo isitsha esisetshenziswa lesi sithombe sizosebenza.", " "]
Ngalaba, singakha i-DockerFile ngesibonelo sethu. Sidinga ukulandela lezi zinyathelo ezilandelayo:
- Nquma isithombe sesisekelo
- Faka ukuncika kwesicelo
- Kopisha kunoma iyiphi ikhodi yomthombo efanele kanye / noma ama-binaries
- Lungiselela isithombe sokugcina
Ake sidlule kubo ngesinyathelo ngesinyathelo. Ngayinye yalezi zinyathelo ziphumela engxenyeni esithombeni se-docker.
Okokuqala, sicacisa isithombe esiyisisekelo lapho sakha khona. Njengoba sibhale esibonelweni ePython, sizosebenzisa isithombe sePython Base.
Okwesibili, sibeka umkhombandlela osebenzayo lapho sizokopisha khona wonke amafayela esikudingayo ukuze akwazi ukusebenzisa imodeli yethu ye-ML.
Okwesithathu, sivuselela amafayela we-Package Index ukuqinisekisa ukuthi sinolwazi lwakamuva olutholakalayo mayelana namaphakeji nezinhlobo zawo.
Okwesine, sikopisha futhi sifaka uhlelo lokusebenza kuncishisiwe.
Okwesihlanu, sikopisha ikhodi yomthombo nakuwo wonke amanye amafayela esiwadingayo. Lapha, siphinde sidalule iPort 8080, esizoyisebenzisa sokusebenzisana nemodeli ye-ML.
Okwesithupha, sibeka umsebenzisi, ukuze isitsha singasebenzi njengomsebenzisi wezimpande
Okwesikhombisa, sichaza lokho example.py
Ifayela lizobulawa lapho sigijimisa isitsha sedokodo. Ngalesi, sakha iseva ye-flask ukuqhuba izicelo zethu ngokumelene.
Ngaphandle kokudala i-dockfile, singakha futhi .dockerignore
Ifayela lokuthuthukisa ijubane lokwakha. Ifana ne-a .gitignore
Ifayela, asikwazi ukukhipha izinkomba ezivela kumongo wokwakha.
Uma ufuna ukwazi okuningi, sicela uye ku-Docker.com.
4. Dala isithombe se-Docker
Ngemuva kokuthi sidale wonke amafayela esakudinga ukwakha isithombe se-docker.
Ukwakha isithombe esidinga kuqala ukuvula ideskithophu ye-docker. Ungabheka ukuthi ngabe iDocker Desktop isebenza ngokusebenza docker ps
kulayini womyalo. Lo myalo ukukhombisa zonke iziqukathi ezisebenzayo.
Ukwakha isithombe se-docker, kudingeka sibe sezingeni elifanayo ne-Dockerfile yethu futhi requirements.txt
Ifayela. Singabe sesigijima docker build -t our_first_image .
Le khasi -t
Ifulegi libonisa igama lesithombe, ie, our_first_image
no .
isitshela ukuthi sakhiwe kulesi sikhombisi samanje.
Lapho sesike sakha isithombe esingenza izinto eziningana. Singakwazi
- Bheka isithombe ngokusebenza
docker image ls
- Bheka umlando noma isithombe esakhiwe kanjani ngokusebenza
docker image history
- Cindezela isithombe kwirejista ngokusebenza
docker push
I-5. Run Docker Isitsha
Lapho sesizakhela isithombe sedokodo, singalisebenzisa imodeli yethu ye-ML esitsheni.
Kulokhu, sidinga kuphela ukwenza docker run -p 8080:8080
kulayini womyalo. Ne- -p 8080:8080
Sixhuma imbobo yendawo (8080) ngechweba esitsheni (8080).
Uma isithombe se-docker singadaluli echwebeni, simane sigijime docker run
. Esikhundleni sokusebenzisa i- image_name
singasebenzisa futhi image_id
.
Kulungile, uma isitsha sisebenza, ake siqhube isicelo ngokumelene naso. Kulokhu, sizothumela ukulayishwa ku-Endpoint ngokusebenza curl
X POST -H "Content-Type:application/json" -d @.path/to/sample_payload.json
Ukugcina
Kulesi sihloko, ngikutshengise izisekelo zeziqukathi ze-docker, ukuthi ziyini, nokuthi ungazakhela kanjani wena. Yize ngishaye indawo kuphela engaphezulu kufanele ngabe yanele ukukuqalisa futhi ukwazi ukupakisha imodeli yakho elandelayo. Ngalolu lwazi, kufanele ukwazi ukugwema izinkinga “zisebenza kwizinkinga zomshini wami”.
Ngiyethemba ukuthi uthola le ndatshana ilusizo nokuthi izokusiza ukuba ube usosayensi wedatha ongcono.
Sizokubona esihlokweni sami esilandelayo futhi / noma ushiye amazwana.