Koyon Injin Masana'antu: Ka'idodin Zane 10

Koyon Injin Masana'antu: Ka'idodin Zane 10

A halin yanzu, ana ƙirƙira sabbin ayyuka, aikace-aikace da sauran muhimman shirye-shirye a kowace rana waɗanda ke ba da damar ƙirƙirar abubuwa masu ban sha'awa: daga software don sarrafa roka na SpaceX zuwa hulɗa tare da kettle a cikin ɗaki na gaba ta hanyar wayar hannu.

Kuma, a wasu lokuta, duk wani novice programmer, ko da yake shi ne mai kishin farawa ko wani talakawa Full Stack ko Data Scientist, ba dade ko ba dade ya zo da cewa akwai wasu dokoki na shirye-shirye da kuma samar da software masu sauqi qwarai rayuwa.

A cikin wannan labarin, zan taƙaita ƙa'idodi 10 na yadda ake tsara aikin koyon injin masana'antu ta yadda za'a iya haɗa shi cikin sauƙi cikin aikace-aikace/sabis, bisa tsarin App-factor 12. Kungiyar Heroku ta ba da shawarar. Manufara ita ce ƙara wayar da kan jama'a game da wannan fasaha, wanda zai iya taimakawa yawancin masu haɓakawa da masu ilimin kimiyyar bayanai.

Wannan labarin gabatarwa ne ga jerin labarai game da Koyan Injin masana'antu. A cikin su zan ƙara yin magana game da yadda ake yin samfuri da ƙaddamar da shi zuwa samarwa, ƙirƙirar API don shi, da kuma misalai daga wurare daban-daban da kamfanoni waɗanda suka gina ML a cikin tsarin su.

Ka'ida ta 1: Tushen lamba ɗaya

Wasu masu shirye-shirye a matakin farko, saboda kasala don gano shi (ko don wani dalili na nasu), sun manta da Git. Ko dai sun manta da kalmar gaba ɗaya, wato, suna jefa fayiloli ga junansu a cikin tuƙi / kawai jefa rubutu / aika ta tantabara, ko kuma ba su yi tunani ta hanyar aikin su ba, kuma su ƙaddamar da kowanne ga reshe, sannan ga malam.

Wannan ka'ida ta ce: suna da codebase guda ɗaya da turawa da yawa.

Ana iya amfani da Git duka a cikin samarwa da kuma a cikin bincike da haɓakawa (R&D), wanda ba a amfani da shi sau da yawa.

Misali, a cikin lokacin R&D zaku iya barin aikatawa tare da hanyoyin sarrafa bayanai daban-daban da samfura, don zaɓar mafi kyawun kuma cikin sauƙin ci gaba da aiki tare da shi.

Abu na biyu, a cikin samarwa wannan abu ne wanda ba za a iya maye gurbinsa ba - kuna buƙatar koyaushe duba yadda lambar ku ta canza kuma ku san wane samfurin ya samar da mafi kyawun sakamako, wanne code yayi aiki a ƙarshe da abin da ya faru wanda ya sa ya daina aiki ko fara haifar da sakamako mara kyau. . Abin da aka yi ke nan!

Hakanan zaka iya ƙirƙirar kunshin aikin ku, sanya shi, alal misali, akan Gemfury, sannan kawai shigo da ayyuka daga gare ta don wasu ayyukan, don kada ku sake rubuta su sau 1000, amma ƙari akan hakan daga baya.

Ƙa'ida ta 2: Bayyana a sarari da keɓe masu dogaro

Kowane aikin yana da ɗakunan karatu daban-daban waɗanda kuke shigo da su daga waje don amfani da su a wani wuri. Ko dakunan karatu na Python ne, ko dakunan karatu na wasu harsuna don dalilai daban-daban, ko kayan aikin tsarin - aikinku shine:

  • A bayyane yake bayyana abin dogaro, wato, fayil ɗin da zai ƙunshi duk ɗakunan karatu, kayan aiki, da nau'ikan su waɗanda ake amfani da su a cikin aikin ku kuma dole ne a shigar da su (misali, a cikin Python ana iya yin wannan ta amfani da Pipfile ko bukatun.txt. A. hanyar haɗin da ke ba da damar mai kyau fahimta: realpython.com/pipenv-guide)
  • Ware abubuwan dogaro musamman don shirin ku yayin haɓakawa. Ba kwa so ku canza sigogi akai-akai kuma ku sake sakawa, misali, Tensorflow?

Ta wannan hanyar, masu haɓakawa waɗanda za su shiga ƙungiyar ku a nan gaba za su iya saurin sanin dakunan karatu da nau'ikan su da ake amfani da su a cikin aikin ku, kuma za ku sami damar sarrafa nau'ikan da ɗakunan karatu da kansu waɗanda aka girka don takamaiman. aikin, wanda zai taimake ka ka guje wa rashin jituwa na ɗakunan karatu ko nau'ikan su.

Har ila yau, aikace-aikacenku bai kamata ya dogara ga kayan aikin tsarin da za'a iya sanyawa akan takamaiman OS ba. Hakanan dole ne a bayyana waɗannan kayan aikin a cikin bayanan abin dogaro. Wannan wajibi ne don kauce wa yanayi inda sigar kayan aikin (kazalika da samuwarsu) bai dace da kayan aikin tsarin wani OS ba.

Don haka, ko da za a iya amfani da curl akan kusan dukkanin kwamfutoci, ya kamata ku bayyana shi cikin dogaro, tunda lokacin ƙaura zuwa wani dandamali yana iya zama baya nan ko kuma sigar ba zata zama wacce kuke buƙata ta asali ba.

Misali, bukatunku.txt na iya zama kamar haka:

# Model Building Requirements
numpy>=1.18.1,<1.19.0
pandas>=0.25.3,<0.26.0
scikit-learn>=0.22.1,<0.23.0
joblib>=0.14.1,<0.15.0

# testing requirements
pytest>=5.3.2,<6.0.0

# packaging
setuptools>=41.4.0,<42.0.0
wheel>=0.33.6,<0.34.0

# fetching datasets
kaggle>=1.5.6,<1.6.0

Ka'ida ta 3: Tsare-tsare

Mutane da yawa sun ji labarin wasu masu haɓakawa da gangan suna loda lambar zuwa GitHub a cikin ma'ajiyar jama'a tare da kalmomin shiga da sauran maɓallai daga AWS, suna tashi washegari tare da bashin $6000, ko ma $50000.

Koyon Injin Masana'antu: Ka'idodin Zane 10

Tabbas, waɗannan lamuran sun wuce gona da iri, amma suna da mahimmanci. Idan kun adana bayanan shaidarku ko wasu bayanan da ake buƙata don daidaitawa a cikin lambar, kuna yin kuskure, kuma ina tsammanin babu buƙatar bayyana dalilin.

Madadin wannan shine adana saiti a cikin masu canjin yanayi. Kuna iya karanta ƙarin game da masu canjin yanayi a nan.

Misalan bayanan da aka saba adanawa a cikin masu canjin yanayi:

  • Sunayen yanki
  • API URLs/URI's
  • Maɓallan jama'a da na sirri
  • Lambobin sadarwa (wasiku, wayoyi, da sauransu)

Ta wannan hanyar ba lallai ne ku canza lambar ba koyaushe idan masu canjin tsarin ku sun canza. Wannan zai taimaka ceton ku lokaci, ƙoƙari da kuɗi.

Misali, idan kuna amfani da Kaggle API don gudanar da gwaje-gwaje (misali, zazzage software ɗin kuma gudanar da samfurin ta cikinta don gwada lokacin da tsarin ke aiki da kyau), to, maɓallan sirri na Kaggle, kamar KAGGLE_USERNAME da KAGGLE_KEY, yakamata su kasance. adana a cikin masu canjin yanayi.

Ƙa'ida ta 4: Sabis na ɓangare na uku

Manufar a nan ita ce ƙirƙirar shirin ta hanyar da babu bambanci tsakanin albarkatun gida da na ɓangare na uku dangane da lambar. Misali, zaku iya haɗa duka MySQL na gida da na ɓangare na uku. Haka yake ga APIs daban-daban kamar Google Maps ko Twitter API.

Domin musaki sabis na ɓangare na uku ko haɗa wani, kawai kuna buƙatar canza maɓallan cikin daidaitawa a cikin masu canjin yanayi, waɗanda na yi magana game da su a cikin sakin layi na sama.

Don haka, alal misali, maimakon ƙididdige hanyar zuwa fayiloli tare da bayanan bayanai a cikin lambar kowane lokaci, yana da kyau a yi amfani da ɗakin karatu na pathlib kuma ku bayyana hanyar zuwa bayanan bayanan a cikin config.py, ta yadda komai sabis ɗin da kuke amfani dashi (don misali, CircleCI), shirin ya sami damar gano hanyar zuwa bayanan bayanan la'akari da tsarin sabon tsarin fayil a cikin sabon sabis.

Ka'ida 5. Gina, saki, lokacin aiki

Mutane da yawa a cikin Kimiyyar Bayanai suna ganin yana da amfani don haɓaka ƙwarewar rubutun software. Idan muna son shirin mu ya fadi da wuya kuma ya yi aiki ba tare da kasawa ba har tsawon lokacin da zai yiwu, muna buƙatar raba tsarin sakin sabon sigar zuwa matakai 3:

  1. Stage majalisu. Kuna canza lambar da ba ta da tushe tare da albarkatun mutum ɗaya zuwa abin da ake kira fakiti wanda ya ƙunshi duk mahimman lambobi da bayanai. Ana kiran wannan fakitin taro.
  2. Stage sakin - a nan mun haɗa tsarin mu zuwa taro, wanda ba tare da wanda ba za mu iya fitar da shirinmu ba. Yanzu wannan sigar gaba ɗaya ce don ƙaddamarwa.
  3. Na gaba ya zo mataki cikawa. Anan mun saki aikace-aikacen ta hanyar aiwatar da matakan da suka dace daga sakin mu.

Irin wannan tsarin don sakin sabbin nau'ikan samfuri ko duka bututun yana ba ku damar raba ayyuka tsakanin masu gudanarwa da masu haɓakawa, yana ba ku damar bin juzu'i kuma yana hana dakatarwar da ba a so na shirin.

Don aikin sakin, an ƙirƙiri ayyuka daban-daban da yawa waɗanda za ku iya rubuta matakai don gudanar da kanku a cikin fayil ɗin .yml (misali, a CircleCI wannan shine config.yml don tallafawa tsarin kanta). Wheely yana da kyau a ƙirƙirar fakiti don ayyukan.

Kuna iya ƙirƙirar fakiti tare da nau'ikan nau'ikan samfurin koyon injin ku, sannan ku haɗa su kuma koma zuwa fakitin da ake buƙata da nau'ikan su don amfani da ayyukan da kuka rubuta daga can. Wannan zai taimaka muku ƙirƙirar API don ƙirar ku, kuma ana iya ɗaukar nauyin kunshin ku akan Gemfury, misali.

Ƙa'ida ta 6. Gudanar da samfurin ku azaman tsari ɗaya ko fiye

Bugu da ƙari, tafiyar matakai bai kamata su kasance da raba bayanai ba. Wato, dole ne matakai su kasance daban, kuma kowane nau'in bayanai dole ne su kasance daban, misali, akan sabis na ɓangare na uku kamar MySQL ko wasu, ya danganta da abin da kuke buƙata.

Wato, ba shakka ba shi da daraja adana bayanai a cikin tsarin fayil ɗin tsari, in ba haka ba wannan na iya haifar da share wannan bayanan yayin sakin gaba / canji na saiti ko canja wurin tsarin da shirin ke gudana.

Amma akwai bangaranci: don ayyukan koyon injin, zaku iya adana ɗakunan ɗakunan karatu don kada ku sake shigar da su duk lokacin da kuka ƙaddamar da sabon sigar, idan ba a sami ƙarin ɗakunan karatu ko wasu canje-canje ga nau'ikan su ba. Ta wannan hanyar, za ku rage lokacin da ake ɗauka don ƙaddamar da samfurin ku a cikin masana'antu.

Don gudanar da samfurin azaman matakai da yawa, zaku iya ƙirƙirar fayil ɗin .yml wanda a ciki zaku ƙididdige matakan da suka dace da jerin su.

Mataki na 7: Maimaituwa

Hanyoyin da ke gudana a cikin aikace-aikacen samfurin ku ya kamata su kasance masu sauƙi don farawa da dakatarwa. Don haka, wannan zai ba ku damar aiwatar da canje-canje na lamba da sauri, sauye-sauyen tsari, da sauri da sassauƙan ma'auni, da hana yuwuwar rugujewar sigar aiki.

Wato, tsarin ku tare da samfurin ya kamata:

  • Rage lokacin farawa. Da kyau, lokacin farawa (daga lokacin da aka ba da umarnin farawa zuwa lokacin da tsarin ya fara aiki) bai kamata ya wuce ƴan daƙiƙa guda ba. Caching na ɗakin karatu, wanda aka kwatanta a sama, wata dabara ce don rage lokacin farawa.
  • Ƙarshe daidai. Wato, an dakatar da sauraron tashar sabis ɗin, kuma ba za a aiwatar da sabbin buƙatun da aka gabatar zuwa wannan tashar ba. Anan ko dai kuna buƙatar saita kyakkyawar sadarwa tare da injiniyoyin DevOps, ko fahimtar yadda yake aiki da kanku (zai fi dacewa, ba shakka, na ƙarshe, amma ya kamata a kiyaye sadarwa koyaushe, a cikin kowane aiki!)

Ka'ida ta 8: Ci gaba da Aikawa/Haɗin kai

Kamfanoni da yawa suna amfani da rarrabuwa tsakanin haɓaka aikace-aikacen da ƙungiyoyin turawa (samar da aikace-aikacen zuwa ga masu amfani). Wannan na iya rage saurin haɓaka software da ci gaba wajen inganta ta. Hakanan yana lalata al'adun DevOps, inda haɓakawa da haɗin kai suke, kusan magana, hade.

Don haka, wannan ka'ida ta ce ya kamata yanayin ci gaban ku ya kasance kusa da yanayin samar da ku.

Wannan zai ba da izini:

  1. Rage lokacin saki da sau goma
  2. Rage yawan kurakurai saboda rashin jituwar lambar.
  3. Wannan kuma yana rage nauyin aiki akan ma'aikata, tunda masu haɓakawa da mutanen da ke tura aikace-aikacen yanzu ƙungiya ɗaya ce.

Kayan aikin da ke ba ku damar yin aiki tare da wannan sune CircleCI, Travis CI, GitLab CI da sauransu.

Kuna iya yin ƙari da sauri ga samfurin, sabunta shi, kuma kaddamar da shi nan da nan, yayin da zai zama mai sauƙi, idan akwai rashin nasara, don dawowa da sauri zuwa sigar aiki, ta yadda mai amfani ba zai ma lura da shi ba. Ana iya yin wannan musamman sauƙi da sauri idan kuna da gwaje-gwaje masu kyau.

Rage bambance-bambance!!!

Ƙa'ida ta 9. Gilashin ku

Logs (ko "Logs") aukuwa ne, yawanci ana yin rikodin su a cikin tsarin rubutu, waɗanda ke faruwa a cikin aikace-aikacen (rafi na taron). Misali mai sauƙi: "2020-02-02 - matakin tsarin - sunan tsari." An tsara su ta yadda mai haɓakawa zai iya ganin ainihin abin da ke faruwa lokacin da shirin ke gudana. Yana ganin ci gaban tafiyar matakai kuma ya fahimci ko kamar yadda mai haɓakawa da kansa ya yi niyya.

Wannan ka'ida ta ce kada ku adana rajistan ayyukanku a cikin tsarin fayil ɗinku - yakamata ku “fitar da su” a kan allo, alal misali, yi wannan akan daidaitaccen fitarwa na tsarin. Kuma ta wannan hanyar za ta yiwu a saka idanu a cikin tashar tashar yayin ci gaba.

Shin hakan yana nufin cewa babu buƙatar ajiye rajistan ayyukan kwata-kwata? Tabbas ba haka bane. Aikace-aikacenku bai kamata ya yi wannan ba-bar shi zuwa sabis na ɓangare na uku. Aikace-aikacenku kawai zai iya tura rajistan ayyukan zuwa takamaiman fayil ko tasha don dubawa na ainihi, ko tura shi zuwa tsarin ma'ajin bayanai na gaba ɗaya (kamar Hadoop). Aikace-aikacenku da kansa bai kamata ya adana ko yin hulɗa tare da rajistan ayyukan ba.

Ka'ida ta 10. Gwaji!

Don koyon injin masana'antu, wannan lokaci yana da mahimmanci, tunda kuna buƙatar fahimtar cewa samfurin yana aiki daidai kuma yana samar da abin da kuke so.

Za a iya ƙirƙira gwaje-gwaje ta amfani da pytest, kuma a gwada ta amfani da ƙaramin adadin bayanai idan kuna da aikin ja da baya/rarrabuwa.

Kar ka manta da saita iri ɗaya don ƙirar ilmantarwa mai zurfi don kada su haifar da sakamako daban-daban.

Wannan shi ne taƙaitaccen bayanin ka'idodin 10, kuma, ba shakka, yana da wuya a yi amfani da su ba tare da gwadawa da ganin yadda suke aiki ba, don haka wannan labarin shine kawai gabatarwa ga jerin labarai masu ban sha'awa waɗanda zan bayyana yadda ake ƙirƙirar. Samfuran koyon injin injin masana'antu, yadda ake haɗa su cikin tsarin, da kuma yadda waɗannan ƙa'idodin za su iya sauƙaƙe rayuwar mu duka.

Zan kuma yi ƙoƙarin yin amfani da ƙa'idodi masu kyau waɗanda kowa zai iya barin a cikin sharhi idan ya ga dama.

source: www.habr.com

Add a comment