Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Uendelezaji wa programu ya viwanda unahitaji uangalifu wa karibu kwa uvumilivu wa makosa ya bidhaa ya mwisho, pamoja na majibu ya haraka kwa kushindwa na glitches lazima kutokea. Ufuatiliaji hakika husaidia kukabiliana na kushindwa na glitches kwa ufanisi zaidi na kwa haraka, lakini haitoshi. Kwanza, ni vigumu sana kufuatilia idadi kubwa ya seva—inahitaji idadi kubwa ya watu. Pili, ni muhimu kuelewa vizuri muundo wa programu ili kutabiri hali yake. Kwa hivyo, tunahitaji watu wengi wenye ufahamu wa kina wa mifumo tunayounda, vipimo vyake na vipengele mahususi. Wacha tuchukue kwamba hata ikiwa tutapata watu wa kutosha walio tayari kufanya hivi, kuwafundisha bado kutachukua muda mwingi.

Kwa hiyo tufanye nini? Hapa ndipo akili ya bandia inakuja kutusaidia. Makala hii itajadili matengenezo ya utabiri (matengenezo ya utabiri). Mbinu hii inapata umaarufu haraka. Nakala nyingi zimeandikwa juu yake, pamoja na Habr. Makampuni makubwa yanatumia kikamilifu mbinu hii ili kudumisha utendaji wa seva zao. Baada ya kukagua nakala nyingi, tuliamua kujaribu. Ni nini kilitoka kwake?

Utangulizi

Mfumo wa programu ulioendelezwa hatimaye umewekwa katika kazi. Ni muhimu kwa mtumiaji kwamba mfumo hufanya kazi bila usumbufu. Ikiwa dharura itatokea, lazima isuluhishwe kwa ucheleweshaji mdogo.

Ili kurahisisha usaidizi wa kiufundi kwa mfumo wa programu, haswa ikiwa kuna seva nyingi, programu za ufuatiliaji hutumiwa kwa kawaida. Programu hizi hukusanya vipimo kutoka kwa mfumo wa programu inayoendesha, kuwezesha uchunguzi wa hali yake, na kusaidia kuamua sababu ya kutofaulu. 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 huo unatumika, pamoja na muhuri wa muda unaoonyesha muda ambapo vipimo vilipatikana. Katika uchanganuzi tuli, data ya kipimo huitwa mfululizo wa saa. Ili kufuatilia hali ya mfumo wa programu, vipimo huonyeshwa kama grafu: saa iko kwenye mhimili wa x na thamani ziko kwenye mhimili wa y (Mchoro 1). Vipimo elfu kadhaa vinaweza kukusanywa kutoka kwa mfumo wa programu inayoendesha (kwa kila nodi). Vipimo hivi huunda nafasi ya kipimo (msururu wa saa wa pande nyingi).

Kwa sababu mifumo changamano ya programu hukusanya idadi kubwa ya vipimo, ufuatiliaji wa mwongozo huwa kazi ngumu. Ili kupunguza kiasi cha data ambacho msimamizi lazima achanganue, zana za ufuatiliaji zinajumuisha zana za kutambua kiotomatiki matatizo yanayoweza kutokea. Kwa mfano, kichochezi kinaweza kusanidiwa kuwaka wakati nafasi ya bure ya diski inafikia kizingiti maalum. Kuzimwa kwa seva au kushuka kwa huduma muhimu kunaweza pia kutambuliwa kiotomatiki. Kiutendaji, zana za ufuatiliaji ni nzuri sana katika kugundua mapungufu yaliyopita au kutambua dalili rahisi za kutofaulu siku zijazo, lakini kutabiri kutofaulu kunaweza kusalia kuwa ngumu sana. Utabiri kupitia uchanganuzi wa metriki wa mwongozo unahitaji ushirikishwaji wa wataalamu waliohitimu na hauna tija. Makosa mengi yanayoweza kutokea yanaweza kwenda bila kutambuliwa.

Hivi karibuni, kinachojulikana kuwa matengenezo ya utabiri wa mifumo ya programu imekuwa maarufu kati ya makampuni makubwa ya maendeleo ya programu ya IT. Mbinu hii hutumia akili ya bandia kutambua matatizo ambayo husababisha uharibifu wa mfumo katika hatua ya awali, kabla ya kushindwa. Mbinu hii haiondoi kabisa ufuatiliaji wa mfumo wa mwongozo, lakini hutumika kama nyongeza ya mchakato mzima wa ufuatiliaji.

Chombo kikuu cha kutekeleza matengenezo ya utabiri ni kazi ya kutafuta hitilafu katika mfululizo wa wakati, tangu wakati anomaly hutokea kuna uwezekano mkubwa katika data kwamba baada ya muda fulani kushindwa au kutofanya kazi kutatokeaTatizo ni kupotoka katika utendaji wa mfumo wa programu, kama vile kuzorota kwa kasi ya kutekeleza aina moja ya ombi au kupungua kwa wastani wa idadi ya maombi yanayochakatwa kwa kiwango kisichobadilika cha vipindi vya mteja.

Kazi ya kugundua makosa katika mifumo ya programu ina maalum yake. Kwa hakika, kila mfumo wa programu unahitaji uundaji au uboreshaji wa mbinu zilizopo, kwa kuwa ugunduzi wa hitilafu unategemea sana data ambayo inachakatwa, na data katika mifumo ya programu hutofautiana sana kulingana na zana za utekelezaji zinazotumiwa, ikiwa ni pamoja na kompyuta ambayo mfumo unatumia.

Mbinu za kugundua hitilafu katika kutabiri kushindwa kwa mfumo wa programu

Kwanza kabisa, inafaa kusema kwamba wazo la utabiri wa kutofaulu liliongozwa na kifungu hicho Kujifunza kwa Mashine katika Ufuatiliaji wa ITIli kupima ufanisi wa mbinu ya kiotomatiki ya kugundua hitilafu, mfumo wa programu ya Ujumuishaji wa Wavuti, mradi wa NPO Krista, ulichaguliwa. Ufuatiliaji wa mwongozo wa vipimo vilivyotokana ulikuwa umetekelezwa hapo awali kwa mfumo huu. Kutokana na utata wa mfumo, idadi kubwa ya vipimo hukusanywa: Vipimo vya JVM (mzigo wa kuzoa taka), vipimo vya OS (kumbukumbu halisi, % mzigo wa CPU), vipimo vya mtandao (mzigo wa mtandao), seva yenyewe (mzigo wa CPU, mzigo wa kumbukumbu), vipimo vya Wildfly, na vipimo vya programu yenyewe kwa mifumo yote midogo midogo.

Vipimo vyote vinakusanywa kutoka kwa mfumo kwa kutumia grafiti. Hapo awali, hifadhidata ya Whisper ilitumiwa kama suluhu la kawaida la grafana, lakini kadiri msingi wa mteja unavyokua, grafiti ilianza kutoweza kuendelezwa, na hivyo kuchosha upitiaji wa mfumo mdogo wa diski wa kituo cha data. Baada ya hayo, uamuzi ulifanywa ili kupata suluhisho la ufanisi zaidi. Uchaguzi ulifanywa kwa niaba ya graphite+clickhouse, ambayo ilipunguza mzigo kwenye mfumo mdogo wa disk kwa amri ya ukubwa na kupunguza nafasi ya disk iliyochukuliwa na mara tano hadi sita. Chini ni mchoro wa utaratibu wa kukusanya metriki kwa kutumia graphite+clickhouse (Mchoro 2).

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Kielelezo 2. Mpango wa kuchukua vipimo

Mchoro unachukuliwa kutoka kwa nyaraka za ndani. Inaonyesha ubadilishanaji wa data kati ya grafana (kiolesura cha ufuatiliaji tunachotumia) na grafiti. Vipimo hukusanywa kutoka kwa programu kwa kutumia programu tofauti - jmxtransPia huwaweka kwenye grafiti.
Mfumo wa Ujumuishaji wa Wavuti una idadi ya vipengele vinavyoleta matatizo kwa utabiri wa kushindwa:

  1. Mitindo hubadilika mara kwa mara. Matoleo mbalimbali ya mfumo fulani wa programu hutolewa. Kila toleo huleta mabadiliko kwenye programu ya mfumo. Kwa hivyo, wasanidi programu huathiri moja kwa moja vipimo vya mfumo na wanaweza kusababisha mabadiliko ya mtindo.
  2. vipengele vya utekelezaji, pamoja na madhumuni ambayo wateja hutumia mfumo huu, mara nyingi husababisha kutofautiana bila uharibifu wa awali;
  3. asilimia ya hitilafu zinazohusiana na seti nzima ya data ni ndogo (<5%);
  4. Mapengo katika kupokea metriki kutoka kwa mfumo yanaweza kutokea. Katika muda fulani mfupi, mfumo wa ufuatiliaji unaweza kushindwa kupokea vipimo. Kwa mfano, ikiwa seva imejaa. Hii ni muhimu kwa mafunzo ya mtandao wa neva. Inakuwa muhimu kujaza mapengo synthetically;
  5. Makosa mara nyingi yanafaa tu kwa tarehe/mwezi/saa mahususi (msimu). Mfumo huu una miongozo wazi ya matumizi yake na watumiaji. Kwa hivyo, vipimo vinafaa tu kwa wakati maalum. Mfumo hauwezi kutumika mara kwa mara, lakini tu katika miezi fulani, kwa kuchagua kulingana na mwaka. Hali hutokea ambapo tabia sawa ya kipimo inaweza kusababisha kushindwa kwa mfumo wa programu katika hali moja, lakini si katika nyingine.
    Kuanza, tulichanganua mbinu za kugundua hitilafu katika data ya ufuatiliaji wa mfumo wa programu. Vifungu kuhusu mada hii mara nyingi hupendekeza kutumia mitandao ya neva wakati asilimia ya hitilafu ni ndogo ikilinganishwa na mkusanyiko wa data wote.

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

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Kielelezo 3. Kutafuta hitilafu kwa kutumia mtandao wa neva

Kulingana na utabiri au ujenzi wa dirisha la sasa la mtiririko wa metri, kupotoka kutoka kwa data iliyopatikana kutoka kwa mfumo wa programu inayoendesha huhesabiwa. Ikiwa kuna tofauti kubwa kati ya vipimo vilivyopatikana kutoka kwa mfumo wa programu na mtandao wa neva, inaweza kuhitimishwa kuwa sehemu ya sasa ya data si ya kawaida. Seti zifuatazo za changamoto hutokea wakati wa kutumia mitandao ya neva:

  1. Ili kufanya kazi kwa usahihi katika hali ya utiririshaji, data ya mafunzo ya miundo ya mtandao wa neva inapaswa kujumuisha data "ya kawaida" pekee;
  2. Muundo wa kisasa ni muhimu kwa utambuzi sahihi. Kubadilisha mitindo na msimu katika vipimo kunaweza kusababisha idadi kubwa ya chanya za uwongo. Ili kusasisha mfano, ni muhimu kufafanua wazi wakati ambapo mtindo umepitwa na wakati. Kusasisha muundo mapema sana au kuchelewa kunaweza kusababisha idadi kubwa ya chanya za uwongo.
    Pia ni muhimu kukumbuka kutambua na kuzuia chanya za uwongo za mara kwa mara. Haya yanatarajiwa kutokea mara nyingi katika hali za dharura. Walakini, zinaweza pia kuwa matokeo ya hitilafu ya mtandao wa neural kwa sababu ya mafunzo ya kutosha. Ni muhimu kupunguza idadi ya chanya za uwongo zinazotolewa na modeli. Vinginevyo, utabiri wa uwongo utapoteza muda mwingi wa msimamizi, ambao umejitolea kujaribu 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, mtu anaweza kutuma maombi mtandao wa neva wa mara kwa mara na kumbukumbu ya LSTM. Shida pekee ni kwamba inaweza kutumika tu kwa safu za wakati zinazotabirika. 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 Mchoro wa 4 unavyoonyesha, RNN LSTM ilifanikiwa kugundua hitilafu katika kipindi hiki cha muda. Ambapo matokeo yana hitilafu ya juu ya wastani, hitilafu ya metriki ilitokea. Kutumia RNN LSTM pekee hakutoshi, kwani inatumika kwa idadi ndogo ya vipimo. Inaweza kutumika kama njia msaidizi ya kugundua upungufu.

Kisimbaji otomatiki kwa utabiri wa kutofaulu

Kisimbaji otomatiki - kimsingi mtandao wa neva bandia. Safu ya pembejeo ni encoder, safu ya pato ni decoder. Kikwazo cha mitandao yote ya neva ya aina hii ni uwezo wao duni wa kuainisha hitilafu. 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 kiotomatiki hufunzwa juu ya data ya kawaida na kisha hugundua habari yoyote isiyo ya kawaida katika data iliyotolewa kwa modeli. Hiki ndicho hasa kinachohitajika kwa kazi hii. Chaguo pekee iliyobaki ni kisimbaji kiotomatiki kinafaa kwa kazi hii. Kwa usanifu, aina rahisi zaidi ya kiencoder kiotomatiki ni mtandao wa neva wa kusambaza, ambao ni sawa na perceptron ya multilayer (perceptron ya multilayer, MLP), na safu ya pembejeo, safu ya pato, na safu moja au zaidi iliyofichwa inayowaunganisha.
Hata hivyo, tofauti kati ya visimbaji otomatiki na MLP ni kwamba katika kisimbaji kiotomatiki, safu ya pato ina idadi sawa ya nodi na safu ya ingizo, na kwamba badala ya kujifunza kutabiri thamani lengwa ya Y kutokana na ingizo la X, kisimbaji kiotomatiki hujifunza kuunda upya X yake yenyewe. Kwa hiyo, visimbaji kiotomatiki ni vielelezo vya kujifunza visivyosimamiwa.

Jukumu la kisimbaji kiotomatiki ni kutafuta fahirisi za saa r0 … rn zinazolingana na vipengele visivyo vya kawaida katika vekta ya uingizaji X. Athari hii hupatikana kwa kutafuta hitilafu ya mraba.

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Kielelezo 6. Kisimbaji otomatiki cha Synchronous

Kwa kisimbaji kiotomatiki kilichaguliwa usanifu wa synchronousFaida zake ni pamoja na uwezo wa kutumia usindikaji wa utiririshaji na idadi ndogo ya vigezo vya mtandao wa neural ikilinganishwa na usanifu mwingine.

Utaratibu wa uwongo wa kupunguza kengele

Kutokana na uwezekano wa hali mbalimbali zisizo za kawaida, pamoja na uwezekano wa mafunzo ya kutosha ya mtandao wa neva, iliamuliwa kuendeleza utaratibu wa kupunguza chanya za uwongo kwa ajili ya modeli ya kugundua hitilafu inayotengenezwa. Utaratibu huu unategemea hifadhidata ya kiolezo iliyoainishwa na msimamizi.

Algorithm ya Mabadiliko ya Mkoba wa Maeneo Uliyotembelea Algorithm ya DTW (kutoka kwa neno la Kiingereza "dynamic time warping") inaruhusu mtu kupata mawasiliano bora kati ya mfuatano wa wakati. Ilitumika kwa mara ya kwanza katika utambuzi wa usemi: ilitumiwa kubainisha jinsi ishara mbili za usemi zinavyowakilisha kishazi kilekile cha kusemwa. Baadaye ilitumika katika nyanja zingine.

Kanuni ya msingi ya kupunguza chanya za uwongo ni kukusanya hifadhidata ya kesi za marejeleo kwa kutumia opereta anayeainisha kesi zinazotiliwa shaka zinazotambuliwa kwa kutumia mitandao ya neva. Kesi ya marejeleo iliyoainishwa kisha inalinganishwa na kesi iliyogunduliwa na mfumo, na hitimisho hufikiwa ikiwa kesi hiyo ni ya uwongo au inasababisha kutofaulu. Algorithm ya DTW inatumika kulinganisha safu mbili za wakati. Uainishaji unasalia kuwa zana kuu ya kupunguza chanya za uwongo. Inachukuliwa kuwa baada ya kukusanya idadi kubwa ya kesi za kumbukumbu, mfumo utahitaji maswali machache ya waendeshaji kutokana na kufanana kwa matukio mengi na tukio la sawa.

Hatimaye, kulingana na mbinu za mtandao wa neva zilizoelezwa hapo juu, programu ya majaribio ya kutabiri kushindwa katika mfumo wa Ujumuishaji wa Wavuti iliundwa. Lengo la programu hii lilikuwa kutathmini ufaafu wa mbinu hii kwa mifumo yetu ya programu kwa kutumia kumbukumbu iliyopo ya data ya ufuatiliaji na taarifa kuhusu kushindwa huko nyuma. Chati ya mtiririko wa programu imeonyeshwa hapa chini, katika Mchoro 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

Mchoro unaonyesha vizuizi viwili kuu: kutafuta muda usio wa kawaida katika mtiririko wa data ya ufuatiliaji (metriki) na utaratibu wa kupunguza chanya za uwongo. Kumbuka: Kwa madhumuni ya majaribio, data hutolewa kupitia muunganisho wa JDBC kutoka kwa hifadhidata, ambapo itahifadhiwa kwa grafiti.
Kiolesura cha mfumo wa ufuatiliaji unaotokana umewasilishwa hapa chini (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 katika vipimo vilivyopokelewa. Kwa upande wetu, data ni simulated. Tayari tuna data yote kwa wiki kadhaa na tunaipakia hatua kwa hatua ili kupima hitilafu zinazosababisha kutofaulu. Upau wa hali ya chini huonyesha asilimia ya jumla ya hitilafu katika data kwa wakati fulani, iliyoamuliwa kwa kutumia kisimbaji kiotomatiki. Asilimia tofauti, inayokokotolewa na RNN LSTM, pia huonyeshwa kwa vipimo vilivyotabiriwa.

Mfano wa kugundua hitilafu katika vipimo vya CPU kwa kutumia mtandao wa neva wa RNN LSTM (Mchoro 9).

Tunatafuta hitilafu na kutabiri kushindwa kwa kutumia mitandao ya neva

Kielelezo 9. Utambuzi wa RNN LSTM

Kesi rahisi, kimsingi ya nje ya kawaida ambayo husababisha kushindwa kwa mfumo, ilihesabiwa kwa ufanisi kwa kutumia RNN LSTM. Kiwango cha kutofautiana katika muda huu wa muda ni 85-95%; kitu chochote kilicho juu ya 80% (kizingiti kiliamuliwa kwa majaribio) kinachukuliwa kuwa shida.
Mfano wa ugunduzi wa hitilafu: mfumo umeshindwa 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 hali hii isiyo ya kawaida kwa sababu hakijawahi kuona kitu kama hicho hapo awali. Hapa, hali isiyo ya kawaida inaendelea 100% hadi mfumo urudi kwenye hali ya kufanya kazi. Ukosefu huo unaonyeshwa katika vipimo vyote. Kama ilivyoelezwa hapo awali, kisimbaji kiotomatiki hakiwezi kuainisha hitilafu. Opereta anaitwa kufanya kazi hii katika hali kama hizo.

Hitimisho

Kifurushi cha programu ya Ujumuishaji wa Wavuti kimeundwa kwa miaka kadhaa. Mfumo huo ni thabiti, na idadi ya matukio yaliyorekodiwa ni ya chini. Hata hivyo, tuliweza kutambua hitilafu zinazosababisha kushindwa dakika 5-10 kabla ya kutokea. Katika baadhi ya matukio, taarifa ya mapema ya kushindwa itasaidia kuokoa muda uliopangwa wa matengenezo.

Ni mapema mno kutoa hitimisho dhabiti kutoka kwa majaribio ambayo tumefanya. Matokeo hadi sasa yanapingana. Kwa upande mmoja, ni wazi kwamba algoriti za msingi wa mtandao wa neural zina uwezo wa kugundua hitilafu "muhimu". Kwa upande mwingine, inabakia kiwango cha juu cha chanya za uwongo, na sio makosa yote yanayogunduliwa na mtaalamu aliyehitimu hugunduliwa na mtandao wa neva. Kikwazo kingine ni kwamba mitandao ya neva kwa sasa inahitaji mafunzo yanayosimamiwa ili kufanya kazi vizuri.

Njia kadhaa zinaweza kuzingatiwa kwa maendeleo zaidi ya mfumo wa kutabiri kushindwa na kukamilika kwake kwa kuridhisha. Hizi ni pamoja na uchanganuzi wa kina zaidi wa hitilafu zinazosababisha kutofaulu, na hivyo kupanua orodha ya vipimo muhimu vinavyoathiri kwa kiasi kikubwa hali ya mfumo na kutupa zisizo za lazima ambazo hazina athari. Zaidi ya hayo, tukielekea upande huu, tunaweza kujaribu kurekebisha algoriti hasa kwa matukio yetu ya hitilafu yanayosababisha kutofaulu. Mbinu nyingine ni kuboresha usanifu wa mtandao wa neural, na hivyo kuongeza usahihi wa ugunduzi na kupunguza muda wa mafunzo.

Ningependa kuwashukuru wenzangu walionisaidia kuandika na kudumisha umuhimu wa makala hii: Victor Verbitsky na Sergei Finogenov.

Chanzo: mapenzi.com

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS 🔥 Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster