Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Maendeleo ya viwanda ya mifumo ya programu inahitaji tahadhari kubwa kwa uvumilivu wa makosa ya bidhaa ya mwisho, pamoja na majibu ya haraka kwa kushindwa na kushindwa ikiwa hutokea. Ufuatiliaji, bila shaka, husaidia kujibu kushindwa na kushindwa kwa ufanisi zaidi na kwa haraka, lakini haitoshi. Kwanza, ni vigumu sana kufuatilia idadi kubwa ya seva - idadi kubwa ya watu inahitajika. Pili, unahitaji kuwa na ufahamu mzuri wa jinsi programu inavyofanya kazi ili kutabiri hali yake. Kwa hivyo, tunahitaji watu wengi ambao wana ufahamu mzuri wa mifumo tunayounda, utendaji na sifa zao. Wacha tuchukue kwamba hata ikiwa utapata watu wa kutosha walio tayari kufanya hivi, bado inachukua muda mwingi kuwafundisha.

Nini cha kufanya? Hapa ndipo akili ya bandia inakuja kutusaidia. Makala itazungumzia matengenezo ya utabiri (matengenezo ya utabiri). Njia hii inazidi kupata umaarufu. Idadi kubwa ya nakala zimeandikwa, pamoja na Habre. Makampuni makubwa hutumia kikamilifu mbinu hii ili kudumisha utendaji wa seva zao. Baada ya kusoma idadi kubwa ya nakala, tuliamua kujaribu njia hii. Ni nini kilitoka kwake?

Utangulizi

Mfumo wa programu uliotengenezwa mapema au baadaye utaanza kufanya kazi. Ni muhimu kwa mtumiaji kwamba mfumo hufanya kazi bila kushindwa. Ikiwa dharura itatokea, inapaswa kutatuliwa kwa kuchelewa kidogo.

Ili kurahisisha usaidizi wa kiufundi wa mfumo wa programu, hasa ikiwa kuna seva nyingi, programu za ufuatiliaji hutumiwa kawaida ambazo huchukua metrics kutoka kwa mfumo wa programu inayoendesha, hufanya iwezekanavyo kutambua hali yake na kusaidia kuamua nini hasa kilichosababisha kushindwa. Utaratibu huu unaitwa ufuatiliaji wa mfumo wa programu.

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Kielelezo 1. Kiolesura cha ufuatiliaji wa Grafana

Vipimo ni viashirio mbalimbali vya mfumo wa programu, mazingira ya utekelezaji wake, au kompyuta halisi ambayo mfumo unafanya kazi ikiwa na muhuri wa muda wa wakati ambapo vipimo vilipokelewa. Katika uchanganuzi tuli, vipimo hivi huitwa mfululizo wa saa. Ili kufuatilia hali ya mfumo wa programu, metriki huonyeshwa kwa namna ya grafu: saa iko kwenye mhimili wa X, na maadili iko kwenye mhimili wa Y (Mchoro 1). Metrics elfu kadhaa zinaweza kuchukuliwa kutoka kwa mfumo wa programu inayoendesha (kutoka kwa kila nodi). Wanaunda nafasi ya vipimo (mfululizo wa muda wa multidimensional).

Kwa kuwa idadi kubwa ya metriki hukusanywa kwa mifumo ngumu ya programu, ufuatiliaji wa mwongozo unakuwa kazi ngumu. Ili kupunguza kiasi cha data iliyochambuliwa na msimamizi, zana za ufuatiliaji zina zana za kutambua moja kwa moja matatizo iwezekanavyo. Kwa mfano, unaweza kusanidi kichochezi kuwaka wakati nafasi ya bure ya diski iko chini ya kizingiti maalum. Unaweza pia kutambua kiotomatiki kuzimwa kwa seva au kushuka kwa kasi kwa kasi ya huduma. Katika mazoezi, zana za ufuatiliaji hufanya kazi nzuri ya kuchunguza kushindwa ambayo tayari imetokea au kutambua dalili rahisi za kushindwa kwa siku zijazo, lakini kwa ujumla, kutabiri kushindwa iwezekanavyo inabakia kuwa nati ngumu kwao. Utabiri kupitia uchanganuzi wa mwongozo wa vipimo unahitaji ushirikishwaji wa wataalam waliohitimu. Ni tija ndogo. Mapungufu mengi yanayoweza kutokea yanaweza kwenda bila kutambuliwa.

Hivi karibuni, kinachojulikana kuwa matengenezo ya utabiri wa mifumo ya programu imezidi kuwa maarufu kati ya makampuni makubwa ya maendeleo ya programu ya IT. Kiini cha mbinu hii ni kupata matatizo yanayosababisha uharibifu wa mfumo katika hatua za mwanzo, kabla ya kushindwa, kwa kutumia akili ya bandia. Njia hii haizuii kabisa ufuatiliaji wa mwongozo wa mfumo. Ni msaidizi kwa mchakato wa ufuatiliaji kwa ujumla.

Chombo kikuu cha kutekeleza matengenezo ya utabiri ni kazi ya kutafuta hitilafu katika mfululizo wa wakati, tangu wakati anomaly hutokea katika data kuna uwezekano mkubwa kwamba baada ya muda fulani kutakuwa na kushindwa au kushindwa. Tatizo ni kupotoka fulani katika utendakazi wa mfumo wa programu, kama vile kutambua uharibifu katika kasi ya utekelezaji wa aina moja ya ombi au kupungua kwa wastani wa idadi ya maombi yanayohudumiwa katika kiwango cha mara kwa mara cha vipindi vya mteja.

Kazi ya kutafuta anomalies kwa mifumo ya programu ina maalum yake. Kwa nadharia, kwa kila mfumo wa programu ni muhimu kukuza au kuboresha njia zilizopo, kwani utaftaji wa makosa unategemea sana data ambayo inafanywa, na data ya mifumo ya programu inatofautiana sana kulingana na zana za kutekeleza mfumo. , hadi kwenye kompyuta gani inaendeshwa.

Mbinu za kutafuta hitilafu wakati wa kutabiri kushindwa kwa mifumo ya programu

Kwanza kabisa, inafaa kusema kwamba wazo la kutabiri kushindwa liliongozwa na kifungu hicho "Kujifunza kwa mashine katika ufuatiliaji wa IT". Ili kupima ufanisi wa mbinu na utafutaji wa moja kwa moja wa hitilafu, mfumo wa programu ya Ujumuishaji wa Wavuti ulichaguliwa, ambayo ni moja ya miradi ya kampuni ya NPO Krista. Hapo awali, ufuatiliaji wa mwongozo ulifanywa kwa ajili yake kulingana na vipimo vilivyopokelewa. Kwa kuwa mfumo ni ngumu sana, idadi kubwa ya metriki huchukuliwa kwa ajili yake: viashiria vya JVM (mzigo wa mtoza taka), viashiria vya OS ambayo kanuni inatekelezwa (kumbukumbu halisi, % OS CPU mzigo), viashiria vya mtandao (mzigo wa mtandao). ), seva yenyewe (mzigo wa CPU , kumbukumbu), vipimo vya nzi mwitu na vipimo vya programu yenyewe kwa mifumo yote midogo midogo.

Vipimo vyote vinachukuliwa kutoka kwa mfumo kwa kutumia grafiti. Hapo awali, hifadhidata ya kunong'ona ilitumiwa kama suluhisho la kawaida la grafana, lakini kadiri msingi wa mteja ulivyokua, grafiti haikuweza tena kustahimili, baada ya kumaliza uwezo wa mfumo mdogo wa diski ya DC. Baada ya hayo, iliamuliwa kupata suluhisho la ufanisi zaidi. Chaguo lilifanywa kwa neema graphite+clickhouse, ambayo ilifanya iwezekanavyo kupunguza mzigo kwenye mfumo mdogo wa disk kwa amri ya ukubwa na kupunguza nafasi ya disk iliyochukuliwa kwa mara tano hadi sita. Chini ni mchoro wa utaratibu wa kukusanya metrics kwa kutumia grafiti + clickhouse (Mchoro 2).

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Mchoro 2. Mpango wa kukusanya vipimo

Mchoro unachukuliwa kutoka kwa nyaraka za ndani. Inaonyesha mawasiliano kati ya grafana (kiolesura cha ufuatiliaji tunachotumia) na grafiti. Kuondoa vipimo kutoka kwa programu hufanywa na programu tofauti - jmxtrans. Anaziweka kwenye grafiti.
Mfumo wa Ujumuishaji wa Wavuti una idadi ya vipengele vinavyoleta matatizo ya kutabiri kushindwa:

  1. Mwelekeo mara nyingi hubadilika. Matoleo mbalimbali yanapatikana kwa mfumo huu wa programu. Kila mmoja wao huleta mabadiliko kwenye sehemu ya programu ya mfumo. Ipasavyo, kwa njia hii, wasanidi programu huathiri moja kwa moja vipimo vya mfumo fulani na wanaweza kusababisha mabadiliko ya mwenendo;
  2. kipengele cha utekelezaji, pamoja na madhumuni ambayo wateja hutumia mfumo huu, mara nyingi husababisha kutofautiana bila uharibifu uliopita;
  3. asilimia ya hitilafu zinazohusiana na seti nzima ya data ni ndogo (<5%);
  4. Kunaweza kuwa na mapungufu katika kupokea viashiria kutoka kwa mfumo. Katika baadhi ya vipindi vifupi, mfumo wa ufuatiliaji hushindwa kupata vipimo. Kwa mfano, ikiwa seva imejaa. Hii ni muhimu kwa mafunzo ya mtandao wa neva. Kuna haja ya kujaza mapengo synthetically;
  5. Kesi zilizo na hitilafu mara nyingi zinafaa tu kwa tarehe/mwezi/saa mahususi (msimu). Mfumo huu una kanuni wazi za matumizi yake na watumiaji. Ipasavyo, vipimo vinafaa kwa muda maalum tu. Mfumo hauwezi kutumika kila wakati, lakini katika miezi kadhaa tu: kwa kuchagua kulingana na mwaka. Hali hutokea wakati tabia sawa ya metrics katika kesi moja inaweza kusababisha kushindwa kwa mfumo wa programu, lakini si kwa mwingine.
    Kuanza, mbinu za kugundua hitilafu katika ufuatiliaji wa data ya mifumo ya programu zilichambuliwa. Katika makala kuhusu mada hii, wakati asilimia ya hitilafu ni ndogo ikilinganishwa na seti nyingine ya data, mara nyingi hupendekezwa kutumia mitandao ya neva.

Mantiki ya msingi ya kutafuta hitilafu kwa kutumia data ya mtandao wa neva inaonyeshwa kwenye Mchoro 3:

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Kielelezo 3. Kutafuta hitilafu kwa kutumia mtandao wa neva

Kulingana na matokeo ya utabiri au urejesho wa dirisha la mtiririko wa sasa wa metriki, kupotoka kutoka kwa ile iliyopokelewa kutoka kwa mfumo wa programu inayoendesha huhesabiwa. Ikiwa kuna tofauti kubwa kati ya vipimo vilivyopatikana kutoka kwa mfumo wa programu na mtandao wa neva, tunaweza kuhitimisha kuwa sehemu ya sasa ya data si ya kawaida. Msururu ufuatao wa shida huibuka kwa matumizi ya mitandao ya neva:

  1. kufanya kazi kwa usahihi katika hali ya utiririshaji, data ya mafunzo ya miundo ya mtandao wa neural lazima iwe na data "ya kawaida" tu;
  2. inahitajika kuwa na modeli ya kisasa kwa utambuzi sahihi. Kubadilisha mitindo na msimu katika vipimo kunaweza kusababisha idadi kubwa ya matokeo chanya kwenye muundo. Ili kuisasisha, ni muhimu kuamua wazi wakati ambapo mtindo umepitwa na wakati. Ikiwa unasasisha mfano baadaye au mapema, basi, uwezekano mkubwa, idadi kubwa ya chanya za uwongo zitafuata.
    Pia hatupaswi kusahau kuhusu kutafuta na kuzuia tukio la mara kwa mara la chanya za uwongo. Inachukuliwa kuwa mara nyingi hutokea katika hali za dharura. Walakini, zinaweza pia kuwa matokeo ya hitilafu ya mtandao wa neva kutokana na mafunzo yasiyotosha. Inahitajika kupunguza idadi ya chanya za uwongo za mfano. Vinginevyo, utabiri wa uwongo utapoteza muda mwingi wa msimamizi unaokusudiwa kuangalia mfumo. Hivi karibuni au baadaye msimamizi ataacha tu kujibu mfumo wa ufuatiliaji wa "paranoid".

Mtandao wa kawaida wa neva

Ili kugundua hitilafu katika mfululizo wa saa, unaweza kutumia mtandao wa neva wa mara kwa mara na kumbukumbu ya LSTM. Shida pekee ni kwamba inaweza kutumika tu kwa mfululizo wa wakati uliotabiriwa. Kwa upande wetu, sio vipimo vyote vinavyotabirika. Jaribio la kutumia RNN LSTM kwa mfululizo wa saa linaonyeshwa kwenye Mchoro wa 4.

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Kielelezo 4. Mfano wa mtandao wa neva wa kawaida na seli za kumbukumbu za LSTM

Kama inavyoonekana kutoka kwenye Kielelezo 4, RNN LSTM iliweza kukabiliana na utafutaji wa hitilafu katika kipindi hiki. Ambapo matokeo yana hitilafu ya juu ya utabiri (kosa la maana), hitilafu katika viashiria imetokea. Kutumia RNN LSTM moja haitatosha kwa wazi, kwani inatumika kwa idadi ndogo ya vipimo. Inaweza kutumika kama njia msaidizi ya kutafuta hitilafu.

Kisimbaji otomatiki kwa utabiri wa kutofaulu

Kisimbaji otomatiki - kimsingi mtandao wa neva bandia. Safu ya pembejeo ni encoder, safu ya pato ni decoder. Ubaya wa mitandao yote ya neva ya aina hii ni kwamba haiainishi hitilafu vizuri. Usanifu wa kisimbaji otomatiki wa kusawazisha ulichaguliwa.

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Kielelezo 5. Mfano wa uendeshaji wa encoder auto

Visimbaji otomatiki hufunzwa juu ya data ya kawaida na kisha hupata kitu kisicho cha kawaida katika data iliyolishwa kwa mfano. Unachohitaji tu kwa kazi hii. Kilichobaki ni kuchagua ni kisimba kiotomatiki kipi kinafaa kwa kazi hii. Njia rahisi ya usanifu ya kiencoder kiotomatiki ni mtandao wa neva wa mbele, usiorudi, ambao unafanana sana na perceptron ya multilayer (perceptron ya multilayer, MLP), na safu ya pembejeo, safu ya pato, na safu moja au zaidi iliyofichwa inayowaunganisha.
Walakini, tofauti kati ya visimbaji otomatiki na MLPs ni kwamba katika kisimbaji otomatiki, safu ya pato ina idadi sawa ya nodi na safu ya ingizo, na kwamba badala ya kufunzwa kutabiri thamani inayolengwa ya Y inayotolewa na ingizo X, kiencoder kiotomatiki hufunzwa. ili kuunda upya X zake. Kwa hivyo, Visimbaji Kiotomatiki ni vielelezo vya kujifunza visivyosimamiwa.

Kazi ya kisimbaji kiotomatiki ni kupata fahirisi za wakati r0 ... rn zinazolingana na vipengee visivyo vya kawaida katika vekta ya uingizaji X. Athari hii inafanikiwa kwa kutafuta kosa la mraba.

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Kielelezo 6. Kisimbaji otomatiki cha Synchronous

Kwa kisimbaji kiotomatiki kilichaguliwa usanifu wa synchronous. Faida zake: uwezo wa kutumia hali ya usindikaji wa utiririshaji na idadi ndogo ya vigezo vya mtandao wa neural ikilinganishwa na usanifu mwingine.

Utaratibu wa kupunguza chanya za uwongo

Kutokana na ukweli kwamba hali mbalimbali zisizo za kawaida hutokea, pamoja na hali inayowezekana ya mafunzo ya kutosha ya mtandao wa neural, kwa mfano wa kugundua upungufu unaotengenezwa, iliamuliwa kuwa ni muhimu kuendeleza utaratibu wa kupunguza chanya za uwongo. Utaratibu huu unategemea msingi wa violezo ambao umeainishwa na msimamizi.

Algorithm ya mabadiliko ya kalenda ya matukio (Algorithm ya DTW, kutoka kwa mpito wa wakati wa Kiingereza) hukuruhusu kupata mawasiliano bora kati ya mfuatano wa wakati. Hutumika mara ya kwanza katika utambuzi wa usemi: hutumika kubainisha jinsi ishara mbili za usemi zinavyowakilisha kishazi kilekile cha kusemwa. Baadaye, maombi yalipatikana katika maeneo mengine.

Kanuni kuu ya kupunguza chanya za uwongo ni kukusanya hifadhidata ya viwango kwa usaidizi wa opereta anayeainisha kesi zinazotiliwa shaka zinazogunduliwa kwa kutumia mitandao ya neva. Ifuatayo, kiwango kilichoainishwa kinalinganishwa na kesi ambayo mfumo uligundua, na hitimisho hufanywa kuhusu ikiwa kesi hiyo ni ya uwongo au inaongoza kwa kutofaulu. Algorithm ya DTW inatumika kwa usahihi kulinganisha safu mbili za wakati. Chombo kikuu cha kupunguza bado ni uainishaji. Inatarajiwa kwamba baada ya kukusanya idadi kubwa ya kesi za kumbukumbu, mfumo utaanza kuuliza operator chini kutokana na kufanana kwa matukio mengi na tukio la sawa.

Kwa hivyo, kulingana na mbinu za mtandao wa neva zilizoelezwa hapo juu, programu ya majaribio iliundwa ili kutabiri kushindwa kwa mfumo wa "Ujumuishaji wa Wavuti". Lengo la programu hii lilikuwa, kutumia kumbukumbu iliyopo ya ufuatiliaji wa data na taarifa kuhusu kushindwa hapo awali, kutathmini umahiri wa mbinu hii kwa mifumo yetu ya programu. Mpango wa mpango umeonyeshwa hapa chini kwenye Kielelezo 7.

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Mchoro wa 7. Mpango wa ubashiri wa kutofaulu kulingana na uchanganuzi wa nafasi ya metri

Katika mchoro, vizuizi viwili kuu vinaweza kutofautishwa: utaftaji wa vipindi visivyo vya kawaida katika mkondo wa data wa ufuatiliaji (metrics) na utaratibu wa kupunguza chanya za uwongo. Kumbuka: Kwa madhumuni ya majaribio, data hupatikana kupitia muunganisho wa JDBC kutoka kwa hifadhidata ambayo grafiti itaihifadhi.
Ifuatayo ni kiolesura cha mfumo wa ufuatiliaji uliopatikana kutokana na maendeleo (Mchoro 8).

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Kielelezo 8. Kiolesura cha mfumo wa ufuatiliaji wa majaribio

Kiolesura kinaonyesha asilimia ya hitilafu kulingana na vipimo vilivyopokelewa. Kwa upande wetu, risiti ni simulated. Tayari tuna data yote kwa wiki kadhaa na tunaipakia hatua kwa hatua ili kuangalia kisa cha hitilafu inayosababisha kutofaulu. Upau wa hali ya chini huonyesha asilimia ya jumla ya hitilafu ya data kwa wakati fulani, ambayo hubainishwa kwa kutumia kisimbaji kiotomatiki. Pia, asilimia tofauti huonyeshwa kwa vipimo vilivyotabiriwa, vinavyokokotolewa na RNN LSTM.

Mfano wa ugunduzi wa hitilafu kulingana na utendakazi wa CPU kwa kutumia mtandao wa neva wa RNN LSTM (Mchoro 9).

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Kielelezo 9. Ugunduzi wa RNN LSTM

Kesi rahisi, kimsingi ya nje ya kawaida, lakini inayosababisha kushindwa kwa mfumo, ilihesabiwa kwa ufanisi kwa kutumia RNN LSTM. Kiashiria kisicho cha kawaida katika kipindi hiki cha wakati ni 85-95%; kila kitu kilicho juu ya 80% (kizingiti kiliamuliwa kwa majaribio) kinachukuliwa kuwa shida.
Mfano wa ugunduzi wa hitilafu wakati mfumo haukuweza kuwasha baada ya sasisho. Hali hii inagunduliwa na kiencoder kiotomatiki (Mchoro 10).

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Kielelezo 10. Mfano wa kutambua autoencoder

Kama unaweza kuona kutoka kwa takwimu, PermGen imekwama kwa kiwango kimoja. Kisimbaji kiotomatiki kilipata hii ya kushangaza kwa sababu haikuwahi kuona kitu kama hicho hapo awali. Hapa hali isiyo ya kawaida inabaki 100% hadi mfumo urudi kwenye hali ya kufanya kazi. Hitilafu huonyeshwa kwa vipimo vyote. Kama ilivyoelezwa hapo awali, kisimbaji kiotomatiki hakiwezi kuainisha hitilafu. Opereta anaitwa kufanya kazi hii katika hali hizi.

Hitimisho

Kompyuta "Ujumuishaji wa Wavuti" imekuwa katika maendeleo kwa miaka kadhaa. Mfumo uko katika hali tulivu, na idadi ya matukio yaliyorekodiwa ni ndogo. Walakini, iliwezekana kupata hitilafu zilizosababisha kutofaulu dakika 5 - 10 kabla ya kutofaulu kutokea. Katika baadhi ya matukio, taarifa ya kutofaulu mapema ingesaidia kuokoa wakati uliopangwa ambao umetengwa kwa ajili ya kufanya kazi ya "kukarabati".

Kulingana na majaribio ambayo yalifanywa, ni mapema sana kufikia hitimisho la mwisho. Hadi sasa, matokeo yanapingana. Kwa upande mmoja, ni wazi kwamba algorithms kulingana na mitandao ya neural inaweza kupata hitilafu "muhimu". Kwa upande mwingine, bado kuna asilimia kubwa ya chanya za uwongo, na sio kasoro zote zinazogunduliwa na mtaalamu aliyehitimu katika mtandao wa neva zinaweza kugunduliwa. Hasara ni pamoja na ukweli kwamba sasa mtandao wa neural unahitaji mafunzo na mwalimu kwa operesheni ya kawaida.

Ili kukuza zaidi mfumo wa utabiri wa kutofaulu na kuuleta katika hali ya kuridhisha, njia kadhaa zinaweza kuzingatiwa. Huu ni uchambuzi wa kina zaidi wa kesi zilizo na makosa ambayo husababisha kutofaulu, kwa sababu ya nyongeza hii kwenye orodha ya metriki muhimu ambazo zinaathiri sana hali ya mfumo, na kutupwa kwa zisizo za lazima ambazo haziathiri. Pia, tukielekea upande huu, tunaweza kufanya majaribio ya kuangazia algoriti haswa kwa kesi zetu zenye hitilafu zinazosababisha kushindwa. Kuna njia nyingine. Hili ni uboreshaji wa usanifu wa mtandao wa neva na hivyo kuongeza usahihi wa ugunduzi kwa kupunguzwa kwa muda wa mafunzo.

Natoa shukrani zangu kwa wenzangu walionisaidia kuandika na kudumisha umuhimu wa makala hii: Victor Verbitsky na Sergei Finogenov.

Chanzo: mapenzi.com

Kuongeza maoni