Ke aʻo ʻana i ka mīkini ʻenehana: 10 mau kumu hoʻolālā

Ke aʻo ʻana i ka mīkini ʻenehana: 10 mau kumu hoʻolālā

I kēia mau lā, hana ʻia nā lawelawe hou, nā noi a me nā papahana koʻikoʻi ʻē aʻe i kēlā me kēia lā e hiki ai ke hana i nā mea kupaianaha: mai ka polokalamu no ka hoʻomalu ʻana i kahi rocket SpaceX a hiki i ke kamaʻilio ʻana me kahi ipu i loko o ka lumi aʻe ma o ke kelepona.

A, i kekahi manawa, ʻo kēlā me kēia polokalamu polokalamu hou, inā paha he mea hoʻomaka makemake a he Full Stack maʻamau a i ʻole ʻepekema ʻIkepili, hiki koke a ma hope paha i ka ʻike aia kekahi mau lula no ka hoʻonohonoho ʻana a me ka hoʻokumu ʻana i nā polokalamu e hoʻomaʻamaʻa nui i ke ola.

Ma kēia ʻatikala, e wehewehe pōkole wau i nā loina 10 o ka hoʻolālā ʻana i ke aʻo ʻana i ka mīkini ʻenehana i hiki ke hoʻohui maʻalahi i loko o kahi noi/lawelawe, e pili ana i ka 12-factor App methodology. manaʻo ʻia e ka hui Heroku. ʻO kaʻu hana e hoʻonui i ka ʻike o kēia ʻenehana, hiki ke kōkua i nā mea hoʻomohala a me nā poʻe ʻepekema data.

He prologue kēia ʻatikala i nā ʻatikala e pili ana i ke aʻo ʻana i ka mīkini ʻenehana. I loko o lākou e kamaʻilio hou wau e pili ana i ka hana maoli ʻana i kahi kumu hoʻohālike a hoʻomaka i ka hana, hana i kahi API no ia, a me nā hiʻohiʻona mai nā wahi like ʻole a me nā ʻoihana i kūkulu ʻia i ka ML i kā lākou ʻōnaehana.

Kumu 1: Hoʻokahi kumu code

ʻO kekahi poʻe papahana ma nā pae mua, no ka palaualelo e noʻonoʻo (a i ʻole no kekahi kumu o lākou), poina iā Git. Hoʻopoina loa lākou i ka huaʻōlelo, ʻo ia hoʻi, hoʻolei lākou i nā faila i kekahi i kekahi i ka hoʻokele / hoʻolei wale i nā kikokikona / hoʻouna ʻia e nā nūnū, a ʻaʻole lākou e noʻonoʻo i kā lākou workflow, a hāʻawi i kēlā me kēia i kā lākou lālā ponoʻī, a laila i ka haku.

'Ōlelo kēia kumumanaʻo: loaʻa hoʻokahi codebase a me nā hoʻolālā he nui.

Hiki ke hoʻohana ʻia ʻo Git i ka hana a me ka noiʻi a me ka hoʻomohala ʻana (R&D), kahi i hoʻohana pinepine ʻole ʻia ai.

No ka laʻana, ma ka pae R&D hiki iā ʻoe ke haʻalele i nā hana me nā ʻano hana a me nā hiʻohiʻona ʻikepili like ʻole, i mea e koho ai i ka mea maikaʻi loa a hoʻomau maʻalahi i ka hana ʻana me ia.

ʻO ka lua, i ka hana ʻana he mea hiki ʻole ke hoʻololi ʻia - pono ʻoe e nānā mau i ke ʻano o ka loli ʻana o kāu code a ʻike i ke ʻano hoʻohālike i hoʻopuka i nā hopena maikaʻi loa, ʻo ia ka code i hana i ka hopena a me ka mea i hana ʻia i pau ai ka hana ʻana a hoʻomaka e hana i nā hopena hewa. . ʻO ia ka mea e hana ai!

Hiki iā ʻoe ke hana i kahi pūʻolo o kāu papahana, kau iā ia, no ka laʻana, ma Gemfury, a laila lawe wale i nā hana mai ia mea no nā papahana ʻē aʻe, i ʻole e kākau hou iā lākou i nā manawa 1000, akā ʻoi aku ma hope.

Kumu 2: Hōʻike maopopo a hoʻokaʻawale i nā hilinaʻi

Loaʻa i kēlā me kēia papahana nā hale waihona puke ʻokoʻa āu e lawe mai ai mai waho mai i mea e hoʻohana ai iā lākou ma kahi. ʻO nā hale waihona puke ʻo Python, a i ʻole nā ​​hale waihona puke o nā ʻōlelo ʻē aʻe no nā kumu like ʻole, a i ʻole nā ​​​​mea hana ʻōnaehana - ʻo kāu hana:

  • E haʻi maopopo i nā hilinaʻi, ʻo ia hoʻi, kahi faila e loaʻa i nā hale waihona puke āpau, nā mea hana, a me kā lākou mau mana i hoʻohana ʻia i kāu papahana a pono e hoʻokomo ʻia (no ka laʻana, ma Python hiki ke hana ʻia me ka hoʻohana ʻana iā Pipfile a i ʻole requirements.txt. A loulou e hiki ai i ka maikaʻi ke hoʻomaopopo: realpython.com/pipenv-guide)
  • E hoʻokaʻawale i nā mea hilinaʻi kūikawā no kāu papahana i ka wā o ka hoʻomohala ʻana. ʻAʻole ʻoe makemake e hoʻololi mau i nā mana a hoʻokomo hou, no ka laʻana, Tensorflow?

Ma kēia ala, hiki i nā mea hoʻomohala e hui pū me kāu hui i ka wā e hiki mai ana ke kamaʻāina koke i nā hale waihona puke a me kā lākou mau mana i hoʻohana ʻia i kāu papahana, a e loaʻa iā ʻoe ka manawa e hoʻokele i nā mana a me nā hale waihona puke i hoʻokomo ʻia no kahi kikoʻī. papahana, e kōkua iā ʻoe e pale aku i ka like ʻole o nā hale waihona puke a i ʻole kā lākou mau mana.

ʻAʻole pono kāu noi e hilinaʻi i nā mea hana ʻōnaehana i hoʻokomo ʻia ma kahi OS kikoʻī. Pono e hoʻolaha ʻia kēia mau mea hana ma ka hōʻike hilinaʻi. Pono kēia i mea e pale aku ai i nā kūlana kahi o ka mana o nā mea hana (a me ko lākou loaʻa ʻana) ʻaʻole i kūlike me nā ʻōnaehana ʻōnaehana o kahi OS.

No laila, ʻoiai inā hiki ke hoʻohana ʻia ka curl ma kahi kokoke i nā kamepiula āpau, pono ʻoe e haʻi aku iā ia ma nā hilinaʻi, ʻoiai ke neʻe nei i kahi kahua ʻē aʻe ʻaʻole ia ma laila a ʻaʻole paha ʻo ka mana ka mea āu i makemake mua ai.

No ka laʻana, penei paha kāu requirements.txt:

# 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

Kumu 3: Hoʻonohonoho

Nui ka poʻe i lohe i nā moʻolelo o nā mea hoʻomohala like ʻole i ka hoʻouka ʻana i ke code i GitHub i loko o nā waihona lehulehu me nā huaʻōlelo a me nā kī ʻē aʻe mai AWS, e ala ana i ka lā aʻe me kahi hōʻaiʻē o $6000, a i ʻole $50000.

Ke aʻo ʻana i ka mīkini ʻenehana: 10 mau kumu hoʻolālā

ʻOiaʻiʻo, he koʻikoʻi kēia mau hihia, akā nui loa. Inā mālama ʻoe i kāu mau ʻike a i ʻole nā ​​​​ʻikepili ʻē aʻe e pono ai no ka hoʻonohonoho ʻana i loko o ke code, ke hana hewa nei ʻoe, a manaʻo wau ʻaʻole pono e wehewehe i ke kumu.

ʻO kahi koho ʻē aʻe i kēia, ʻo ia ka mālama ʻana i nā hoʻonohonoho i nā ʻano hoʻololi kaiapuni. Hiki iā ʻoe ke heluhelu hou aku e pili ana i nā ʻano hoʻololi kaiapuni maanei.

Nā laʻana o ka ʻikepili i mālama mau ʻia i nā ʻano hoʻololi kaiapuni:

  • Nā inoa kikowaena
  • Nā API URL/URI
  • Nā kī lehulehu a pilikino
  • Hoʻokaʻaʻike (leka uila, kelepona, etc.)

Ma kēia ʻano ʻaʻole pono ʻoe e hoʻololi mau i ke code inā hoʻololi kāu mau hoʻololi hoʻonohonoho. E kōkua kēia i ka mālama ʻana i kou manawa, hoʻoikaika a me ke kālā.

No ka laʻana, inā hoʻohana ʻoe i ka Kaggle API no ka hoʻāʻo ʻana (no ka laʻana, hoʻoiho i ka lako polokalamu a holo i ke kumu hoʻohālike ma o ia mea e hoʻāʻo ai i ka wā e holo pono ai ke kumu hoʻohālike), a laila pono nā kī pilikino mai Kaggle, e like me KAGGLE_USERNAME a me KAGGLE_KEY. mālama ʻia ma nā ʻano hoʻololi kaiapuni.

Kumu 4: Nā lawelawe ʻaoʻao ʻekolu

ʻO ka manaʻo ma ʻaneʻi ʻo ka hana ʻana i ka papahana ma ke ʻano ʻaʻohe ʻokoʻa ma waena o nā kumuwaiwai kūloko a me nā ʻaoʻao ʻekolu e pili ana i ke code. No ka laʻana, hiki iā ʻoe ke hoʻohui i nā MySQL kūloko a me nā ʻaoʻao ʻekolu. Pēlā nō nā API like ʻole e like me Google Maps a i ʻole Twitter API.

I mea e hoʻopau ai i kahi lawelawe ʻaoʻao ʻekolu a i ʻole e hoʻopili i kahi ʻē aʻe, pono ʻoe e hoʻololi i nā kī i ka hoʻonohonoho ʻana i nā ʻano hoʻololi kaiapuni, aʻu i kamaʻilio ai ma ka paukū ma luna.

No laila, no ka laʻana, ma kahi o ke kuhikuhi ʻana i ke ala i nā faila me nā ʻikepili i loko o ke code i kēlā me kēia manawa, ʻoi aku ka maikaʻi o ka hoʻohana ʻana i ka waihona pathlib a haʻi i ke ala i ka datasets ma config.py, no laila ʻaʻohe mea āu e hoʻohana ai (no ka mea. laʻana, CircleCI), ua hiki i ka papahana ke ʻike i ke ala i nā datasets e noʻonoʻo ana i ke ʻano o ka ʻōnaehana faila hou i ka lawelawe hou.

Kumu 5. Kūkulu, hoʻokuʻu, manawa holo

Nui ka poʻe i ka ʻIke ʻIkepili he mea pono e hoʻomaikaʻi i kā lākou mau mākau kākau polokalamu. Inā makemake mākou i kā mākou papahana e hāʻule i ka liʻiliʻi a hiki i ka hana me ka ʻole o ka hemahema no ka lōʻihi o ka hiki, pono mākou e hoʻokaʻawale i ke kaʻina hana o ka hoʻokuʻu ʻana i kahi mana hou i 3 mau pae:

  1. Wāwae na anaina. Ke hoʻololi nei ʻoe i kāu code bare me nā kumuwaiwai pākahi i loko o kahi pūʻolo i kapa ʻia i loaʻa nā code a me nā ʻikepili e pono ai. Kapa ʻia kēia pūʻolo he hui.
  2. Wāwae hoʻokuʻi - eia mākou e hoʻohui i kā mākou config i ka hui, inā ʻaʻole hiki iā mākou ke hoʻokuʻu i kā mākou papahana. I kēia manawa he hoʻokuʻu mākaukau loa kēia.
  3. A hiki mai ke kahua hooko ana. Maanei mākou e hoʻokuʻu ai i ka noi ma ka holo ʻana i nā kaʻina hana pono mai kā mākou hoʻokuʻu ʻana.

ʻO ia ʻōnaehana no ka hoʻokuʻu ʻana i nā mana hou o kahi hiʻohiʻona a i ʻole ka pipeline holoʻokoʻa e hiki ai iā ʻoe ke hoʻokaʻawale i nā kuleana ma waena o nā luna hoʻomalu a me nā mea hoʻomohala, hiki iā ʻoe ke nānā i nā mana a pale i ka hoʻomaha ʻole o ka papahana.

No ka hana hoʻokuʻu, ua hana ʻia nā lawelawe like ʻole i hiki iā ʻoe ke kākau i nā kaʻina hana e holo ai iā ʻoe iho i kahi faila .yml (no ka laʻana, ma CircleCI ʻo config.yml kēia e kākoʻo i ke kaʻina hana ponoʻī). Nui ʻo Wheely i ka hana ʻana i nā pūʻolo no nā papahana.

Hiki iā ʻoe ke hana i nā pūʻolo me nā mana like ʻole o kāu kumu hoʻohālike aʻo mīkini, a laila pūʻulu iā lākou a nānā i nā pūʻolo pono a me kā lākou mau mana e hoʻohana ai i nā hana āu i kākau ai mai laila. E kōkua kēia iā ʻoe e hana i kahi API no kāu hoʻohālike, a hiki ke hoʻokipa ʻia kāu pūʻolo ma Gemfury, no ka laʻana.

Kumu 6. E holo i kāu kumu hoʻohālike ma ke ʻano he hoʻokahi a ʻoi aku paha kaʻina hana

Eia kekahi, ʻaʻole pono nā kaʻina hana i kaʻana like i ka ʻikepili. ʻO ia hoʻi, pono e noho kaʻawale nā ​​kaʻina hana, a pono e noho kaʻawale nā ​​ʻano ʻikepili āpau, no ka laʻana, ma nā lawelawe ʻaoʻao ʻekolu e like me MySQL a i ʻole nā ​​​​mea ʻē aʻe, e pili ana i kāu mea e pono ai.

ʻO ia hoʻi, ʻaʻole pono ka mālama ʻana i ka ʻikepili i loko o ka ʻōnaehana faila, inā ʻaʻole hiki ke alakaʻi i ka hoʻomaʻemaʻe ʻana i kēia ʻikepili i ka wā o ka hoʻokuʻu/hoʻololi ʻana o nā hoʻonohonoho a i ʻole ka hoʻololi ʻana o ka ʻōnaehana e holo ai ka papahana.

Akā aia kekahi ʻokoʻa: no nā papahana aʻo mīkini, hiki iā ʻoe ke mālama i kahi huna o nā hale waihona puke i ʻole e hoʻokomo hou iā lākou i kēlā me kēia manawa āu e hoʻomaka ai i kahi mana hou, inā ʻaʻohe hale waihona puke a i ʻole nā ​​​​hoʻololi i hana ʻia i kā lākou mau mana. Ma kēia ala, e hōʻemi ʻoe i ka manawa e hoʻomaka ai kāu kumu hoʻohālike i ka ʻoihana.

No ka holo ʻana i ke kumu hoʻohālike e like me nā kaʻina hana, hiki iā ʻoe ke hana i kahi faila .yml kahi āu e kuhikuhi ai i nā kaʻina pono a me kā lākou kaʻina.

Kumu 7: Hoʻohana hou

Pono e maʻalahi nā kaʻina hana e holo ana i kāu noi hoʻohālike e hoʻomaka a hoʻōki. No laila, e ʻae kēia iā ʻoe e hoʻonohonoho wikiwiki i nā hoʻololi code, nā hoʻololi hoʻonohonoho, wikiwiki a maʻalahi hoʻi, a pale i nā haki o ka mana hana.

ʻO ia hoʻi, pono kāu kaʻina hana me ke kumu hoʻohālike:

  • E hōʻemi i ka manawa hoʻomaka. ʻO ke kūpono, ʻo ka manawa hoʻomaka (mai ka manawa i hoʻopuka ʻia ai ke kauoha hoʻomaka a hiki i ka manawa e hoʻomaka ai ke kaʻina hana) ʻaʻole i ʻoi aku ma mua o kekahi mau kekona. ʻO ka waihona waihona puke, i wehewehe ʻia ma luna, ʻo ia kekahi ʻenehana no ka hōʻemi ʻana i ka manawa hoʻomaka.
  • Hoʻopau pololei. ʻO ia hoʻi, ua hoʻokuʻu ʻia ka hoʻolohe ʻana ma ke awa lawelawe, a ʻaʻole e hoʻokō ʻia nā noi hou i waiho ʻia i kēia awa. Maanei ʻoe pono e hoʻonohonoho i kahi kamaʻilio maikaʻi me nā ʻenekini DevOps, a i ʻole e hoʻomaopopo i ke ʻano o ka hana ʻana iā ʻoe iho (ʻoi aku ka maikaʻi, ʻoiaʻiʻo, ʻo ka hope, akā e mālama mau ʻia ke kamaʻilio, ma kekahi papahana!)

Kumu 8: Hoʻokomo mau/Hoʻohui

Nui nā hui e hoʻohana i kahi kaʻawale ma waena o ka hoʻomohala noiʻi a me nā hui hoʻolālā (e hoʻolako i ka noi i nā mea hoʻohana hope). Hiki i kēia ke hoʻolōʻihi i ka hoʻomohala ʻana i nā polokalamu a me ka holomua i ka hoʻomaikaʻi ʻana. Hoʻopau pū ia i ka moʻomeheu DevOps, kahi i hui pū ʻia ai ka hoʻomohala ʻana a me ka hoʻohui ʻana.

No laila, ke ʻōlelo nei kēia kumumanaʻo e pili pono kāu wahi hoʻomohala i kahi kokoke i kāu wahi hana.

E ʻae kēia:

  1. E ho'ēmi i ka manawa hoʻokuʻu i nā manawa heʻumi
  2. E ho'ēmi i ka helu o nā hewa ma muli o ke code incompatibility.
  3. Hoʻemi kēia i ka haʻahaʻa o nā limahana, ʻoiai ʻo nā mea hoʻomohala a me nā poʻe e kau ana i ka noi i kēia manawa he hui hoʻokahi.

ʻO nā mea hana e hiki ai iā ʻoe ke hana me kēia ʻo CircleCI, Travis CI, GitLab CI a me nā mea ʻē aʻe.

Hiki iā ʻoe ke hana koke i nā mea hoʻohui i ke kumu hoʻohālike, hōʻano hou, a hoʻomaka koke iā ia, ʻoiai e maʻalahi, i ka wā o ka hāʻule ʻole, e hoʻi wikiwiki i ka mana hana, i ʻike ʻole ai ka mea hoʻohana hope. Hiki ke hana maʻalahi a me ka wikiwiki inā loaʻa iā ʻoe nā hoʻokolohua maikaʻi.

E hoemi i ka like ole!!!

Kumu 9. Kou mau mooolelo

ʻO nā moʻolelo (a i ʻole "Logs") nā hanana, i hoʻopaʻa pinepine ʻia ma ke ʻano kikokikona, i hana ʻia i loko o ka noi (nā kahawai hanana). He laʻana maʻalahi: "2020-02-02 - pae ʻōnaehana - inoa kaʻina hana." Hoʻolālā ʻia lākou i hiki i ka mea hoʻomohala ke ʻike maoli i ka mea e hana nei i ka wā e holo ana ka papahana. ʻIke ʻo ia i ka holomua o nā kaʻina hana a hoʻomaopopo ʻo ia e like me ka mea i manaʻo ʻia e ka mea hoʻomohala.

Ke ʻōlelo nei kēia ʻōlelo ʻaʻole pono ʻoe e mālama i kāu mau lāʻau i loko o kāu ʻōnaehana faila - pono ʻoe e "hoʻopuka" iā lākou i ka pale, no ka laʻana, e hana i kēia ma ka puka maʻamau o ka ʻōnaehana. A ma kēia ala e hiki ai ke nānā i ke kahe o ka pahu i ka wā o ka hoʻomohala ʻana.

ʻO ke ʻano o kēia ʻaʻole pono e mālama i nā lāʻau? ʻAʻole naʻe. ʻAʻole pono kāu noi e hana i kēia - waiho i nā lawelawe ʻaoʻao ʻekolu. Hiki i kāu palapala noi ke hoʻouna wale i nā lāʻau i kahi faila a i ʻole ka pahu kikoʻī no ka nānā ʻana i ka manawa maoli, a i ʻole e hoʻouna iā ia i kahi ʻōnaehana mālama ʻikepili kumu nui (e like me Hadoop). ʻAʻole pono kāu palapala noi e mālama a pili pū me nā lāʻau.

Kumu 10. Hoao!

No ke aʻo ʻana i nā mīkini ʻenehana, he mea koʻikoʻi kēia māhele, no ka mea pono ʻoe e hoʻomaopopo i ka hana pololei ʻana o ke kumu hoʻohālike a hoʻopuka i ka mea āu i makemake ai.

Hiki ke hana ʻia nā hoʻāʻo me ka pytest, a hoʻāʻo ʻia me ka hoʻohana ʻana i kahi dataset liʻiliʻi inā loaʻa iā ʻoe kahi hana regression/classification.

Mai poina i ka hoʻonohonoho ʻana i ka hua hoʻokahi no nā kumu hoʻohālike hohonu i ʻole lākou e hoʻopuka mau i nā hopena like ʻole.

He wehewehe pōkole kēia o nā kumukānāwai 10, a, ʻoiaʻiʻo, paʻakikī ke hoʻohana iā lākou me ka ʻole o ka hoʻāʻo ʻana a me ka ʻike ʻana i kā lākou hana, no laila he prologue wale kēia ʻatikala i kahi ʻatikala hoihoi e hōʻike ai au pehea e hana ai. nā hiʻohiʻona aʻo mīkini ʻenehana, pehea e hoʻohui ai iā lākou i loko o nā ʻōnaehana, a pehea e hiki ai i kēia mau loina ke maʻalahi ke ola no mākou āpau.

E ho'āʻo nō hoʻi au e hoʻohana i nā loina maikaʻi i hiki i kekahi ke waiho i nā manaʻo inā makemake lākou.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka