1. Utangulizi na Muhtasari
Kazi hii inashughulikia changamoto muhimu katika ukuzaji wa programu za kisasa za wingu: ugumu wa uendeshaji wa usanifu wa huduma ndogo. Ingawa huduma ndogo zinatoa faida katika uwezo wa kuongezeka na uharaka, zinaleta mzigo mkubwa wa usimamizi, hasa katika uboreshaji wa utendakazi. Karatasi hii inapendekeza njia mpya ya kuwezesha uboreshaji huu kiotomatiki kwa kukabiliana na mbinu za uboreshaji wa vigezo vya juu (HPO)—hasa Utafutaji wa Gridi na Utafutaji wa Nasibu—kutoka kwa masomo ya mashine hadi kwenye uwanja wa usanidi wa huduma ndogo. Lengo ni kuwezesha mifumo inayojiboresha ambayo inaweza kurekebisha vigezo vya utendaji kwa nguvu ili kuboresha viashiria vya utendakazi kama vile ucheleweshaji.
2. Njia Kuu na Usanifu
2.1 Kesi ya Matumizi: Mfumo wa Ushuru Unaozingatia Uchafuzi wa Hewa
Njia iliyopendekezwa inathminiwa kwa kutumia programu halisi ya huduma ndogo: mfumo wa hesabu ya ushuru unaozingatia uchafuzi wa hewa. Programu hiyo inachakata data ya eneo la gari kwa wakati halisi kupitia mlolongo wa huduma ndogo tatu kuu:
- Huduma ya MapMatcher: Inalinganisha viwianishi vya GPS ghafi na mitandao ya barabara.
- Huduma ya PollutionMatcher: Inahusianisha eneo la gari na data ya uchafuzi kutoka kwa hifadhidata.
- Huduma ya TollCalculator: Inakokotoa ushuru wa kimazingira kulingana na viwango vya uchafuzi.
Utendakazi hupimwa kwa kutumia Ufuatiliaji Usambazaji ili kukamata ucheleweshaji wa mwisho-hadi-mwisho na kwa kila huduma.
2.2 Usuli: Uboreshaji wa Vigezo Vya Juu kwa Huduma Ndogo
Karatasi hii inaweka uboreshaji wa utendakazi wa huduma ndogo kama shida ya utafutaji ndani ya nafasi ya usanidi iliyowekwa mipaka. Kila huduma ndogo ina vigezo vinavyoweza kurekebishwa (k.m., ukubwa wa dimbwi la nyuzi, ukubwa wa kache, mipaka ya muunganisho). Mchanganyiko wa vigezo hivi katika huduma zote hufafanua nafasi ya utafutaji yenye vipimo vingi. Lengo ni kupata usanidi unaopunguza kipimo lengwa (k.m., ucheleweshaji wa wastani). Kazi hii inalinganisha njia zilizochaguliwa (Utafutaji wa Gridi, Utafutaji wa Nasibu) na mbinu zingine za HPO kama Uboreshaji wa Bayesian [5] na Njia za Meta-heuristic [6], ikibishania kwa urahisi na uelewevu wa zile za kwanza katika otomatiki ya awali.
2.3 Usanifu Ulipendekezwa na Kiboreshaji Huduma Ndogo
Ubunifu mkuu ni Kiboreshaji Huduma Ndogo, sehemu mpya ya programu. Usanifu wake (ulioelezewa kwenye Mchoro 2 wa PDF) unahusisha:
- Ufafanuzi wa Nafasi ya Utafutaji: Mwendeshaji anafafanua seti iliyowekwa mipaka ya thamani zinazowezekana kwa kila kigezo kinachoweza kurekebishwa.
- Utekelezaji wa Utafutaji: Kiboreshaji hutengeneza mchanganyiko mpya wa usanidi kwa kurudia:
- Utafutaji wa Gridi: Inatathmini kikamilifu pointi zote kwenye gridi iliyotengwa ya nafasi ya vigezo.
- Utafutaji wa Nasibu: Inachukua sampuli za nasibu za usanidi kutoka kwa nafasi iliyofafanuliwa.
- Utumiaji wa Usanidi na Tathmini: Usanidi mpya unasambazwa kwa huduma ndogo. Utendakazi wa mfumo (ucheleweshaji) huzingatiwa na kurekodiwa.
- Muunganisho wa Matokeo: Data ya utendakazi kutoka kila kurudia huhifadhiwa ili kutambua usanidi bora.
Mawasiliano kati ya kiboreshaji, huduma ndogo, na dashibodi ya ufuatiliaji hurahisishwa kupitia broker ya ujumbe (NATS) na seva ya wavuti.
3. Utekelezaji wa Kiufundi na Tathmini
3.1 Usanidi wa Majaribio na Mazingira
Mazingira ya tathmini yalianzishwa kwenye Amazon AWS kwa kutumia mfano wa EC2 t2.medium (vCPU 2, RAM 4GB). Huduma ndogo zote zilitekelezwa kwa Java na kusambazwa kama vyombo vya Docker. Mawasiliano kati ya huduma yalishughulikiwa kwa wakati usio sawa kupitia broker ya ujumbe ya NATS. Usanidi huu unafanana na usambazaji halisi wa wingu wenye vikwazo vya rasilimali.
3.2 Matokeo ya Tathmini ya Kwanza na Faida za Utendakazi
Matokeo ya awali yanaonyesha uwezekano wa njia hii. Kwa kutumia mbinu za Utafutaji wa Gridi na Utafutaji wa Nasibu kurekebisha usanidi wa huduma ndogo wakati wa utendaji, mfumo ulifikia kupunguzwa kwa ucheleweshaji wa mwisho-hadi-mwisho hadi 10.56% ikilinganishwa na usanidi wa msingi usioboreshwa. Matokeo, yaliyowasilishwa kwa umbo la chati ya baa kwenye PDF, yanaonyesha wakati wa wastani wa utendaji kwa programu nzima na kwa huduma binafsi (Pollution Matcher, Map Matcher, Toll Calculator) katika usanidi tofauti uliojaribiwa, ikionyesha wazi uboreshaji wa utendakazi kwa seti maalum za vigezo.
Kipimo Muhimu cha Utendakazi
Uboreshaji wa Juu wa Ucheleweshaji: 10.56%
Ilifikia kupitia utafutaji wa usanidi wa otomatiki.
4. Uchambuzi na Tafsiri ya Mtaalamu
4.1 Uelewa Mkuu
Uelewa wa msingi wa karatasi hii ni wenye nguvu na ulio wazi baadaye: tathmini usanidi wa huduma ndogo kama shida ya kigezo cha juu cha masomo ya mashine. Kwa kutoa maana maalum ya idadi ya nyuzi au mipaka ya kumbukumbu na kuyaona kama vilivyo tu katika nafasi yenye vipimo vingi, waandishi wamefungua seti ya algoriti za uboreshaji zilizosomwa vizuri. Hii ni hatua ya kawaida ya kufikiria kwa upana, inayokumbusha jinsi watafiti walivyotumia Mitandao ya Kupinga ya Kizazi (GANs) kwa tafsiri ya picha-hadi-picha isiyo na jozi katika karatasi ya CycleGAN, ikitumia mfumo wa kupinga kwa uwanja mpya. Thamani hapa sio katika kubuni algoriti mpya ya utafutaji, bali katika kuweka shida hiyo.
4.2 Mtiririko wa Mantiki
Mantiki ni sahihi lakini inafunua asili yake ya mfano wa kitaaluma. Inafuata mfereji safi, wa mstari: 1) Fafanua nafasi ya utafutaji (ingizo la mwendeshaji), 2) Sambaza kiboreshaji (Utafutaji wa Gridi/Nasibu), 3) Rudia, tumia, pima, 4) Chagua usanidi bora. Hata hivyo, mtiririko huu unadhani mzigo wa kazi tuli na mazingira ya maabara yaliyodhibitiwa. Kiungo kilichokosekana muhimu ni ucheleweshaji wa maoni na wakati wa kukutana. Katika mfumo halisi wa uzalishaji, muundo wa mzigo wa kazi hubadilika kila wakati. Ni usanidi "mbaya" ngapi lazima ujaribiwe (na uwezekano wa kudhoofisha uzoefu wa mtumiaji) kabla ya kupata nzuri? Tathmini ya karatasi, ingawa chanya, haijajaribu kutosha kitanzi hiki chini ya hali zinazobadilika.
4.3 Nguvu na Kasoro
Nguvu:
- Uzuri wa Dhana: Ramani kutoka HPO hadi usanidi wa marekebisho ni bora kwa urahisi wake.
- Urahisi wa Utekelezaji: Utafutaji wa Gridi na Nasibu ni rahisi kuelewa, kurekebisha hitilafu, na kuelezea kwa timu za uendeshaji, kuepuka dharau ya "sanduku nyeusi" ya Uboreshaji wa Bayesian.
- Msingi Thabiti: Inajenga juu ya utafiti wa miaka mingi wa HPO kutoka ML, kama ilivyorekodiwa katika rasilimali kama kitabu cha Automated Machine Learning (Feurer et al.) au maktaba ya scikit-optimize.
- Matokeo Yanayoonekana: Uboreshaji wa 10.56% sio mdogo, hasa kwa programu zinazohitaji ucheleweshaji mdogo.
Kasoro na Pengo Muhimu:
- Msingi wa Nguvu Kwa Nguvu: Utafutaji wa Gridi unajulikana kwa kutokuwa na ufanisi katika nafasi zenye vipimo vingi ("laana ya vipimo"). Njia hii haiongezeki vizuri zaidi ya vigezo vichache vinavyorekebishwa kwa kila huduma.
- Kupuuza Gharama: Utafutaji huboresha tu kwa ucheleweshaji. Haizingatii gharama ya rasilimali (CPU, kumbukumbu, $) ya usanidi. Usanidi ambao ni 5% kwa kasi lakini unatumia CPU zaidi 50% unaweza kuwa usiofaa kiuchumi.
- Hakuna Ujifunzaji wa Kuhamisha: Kila usambazaji wa programu unaonekana kuanza utafutaji wake kutoka mwanzo. Hakuna utaratibu wa kutumia ujuzi kutoka kwa uboreshaji wa huduma ndogo zinazofanana katika programu zingine, mwelekeo uliochunguzwa katika ujifunzaji wa meta kwa HPO.
- Mifumo ya Usalama Haipo: Karatasi haijadili vizingiti vya kuzuia usambazaji wa usanidi mbaya sana ambao unaweza kuvunja huduma au kusababisha shida ya mfululizo.
4.4 Uelewa Unaoweza Kutekelezwa
Kwa viongozi wa uhandisi, utafiti huu ni uthibitisho wa dhana lakini sio mpango tayari kwa uzalishaji. Hapa ndio jinsi ya kutenda juu yake:
- Anza na Utafutaji wa Nasibu, sio Utafutaji wa Gridi. Kama karatasi ya 2012 ya Bergstra na Bengio "Random Search for Hyper-Parameter Optimization" ilionyesha kwa mashuhuri, Utafutaji wa Nasibu mara nyingi ni bora zaidi kuliko Utafutaji wa Gridi kwa bajeti sawa ya kompyuta. Tekeleza hii kwanza.
- Jenga Kazi ya Lengo Yenye Kujua Gharama. Usipunguze tu ucheleweshaji. Punguza kazi yenye uzani kama $\text{Lengo} = \alpha \cdot \text{Ucheleweshaji} + \beta \cdot \text{GharamaYaRasilimali}$. Hii inalinganisha utendakazi wa kiufundi na viashiria vya biashara.
- Tekeleza Muundo wa "Utafutaji wa Canary". Kabla ya kutumia usanidi mpya kwa mifano yote, sambaza kwa mfano mmoja wa canary na jaribu utendakazi wake dhidi ya msingi chini ya trafiki halisi. Hii inapunguza hatari.
- Wekeza katika Hifadhidata ya Ujuzi wa Usanidi. Rekodi kila usanidi uliojaribiwa na matokeo yake. Hii inaunda seti ya data kwa viboreshaji vya baadaye, vinavyoweza kujifunza kutoka kwa historia na kuanzisha utafutaji kwa joto.
- Zingatia Vigezo vya Uvutano wa Juu Kwanza. Tumia njia hii kwa vigezo 2-3 kwa kila huduma vinavyojulikana kuwa na athari kubwa zaidi ya utendakazi (k.m., ukubwa wa dimbwi la muunganisho la hifadhidata, mipangilio ya JVM heap). Epuka kujaribu kila kitu.
5. Maelezo ya Kiufundi na Uundaji wa Kihisabati
Shida ya uboreshaji inaweza kufafanuliwa rasmi. Acha programu ya huduma ndogo iwe na huduma $n$. Kwa kila huduma $i$, kuna seti ya vigezo $m_i$ vinavyoweza kurekebishwa. Acha $\theta_i^{(j)}$ iwakilishe kigezo cha $j$-th cha huduma $i$, ambacho kinaweza kuchukua thamani kutoka kwa seti $V_i^{(j)}$ (kwa kategoria) au muda uliowekwa mipaka $[a_i^{(j)}, b_i^{(j)}]$ (kwa nambari).
Nafasi ya usanidi wa pamoja $\Theta$ ni bidhaa ya Cartesian ya seti zote za thamani ya kigezo:
$\Theta = V_1^{(1)} \times ... \times V_1^{(m_1)} \times ... \times V_n^{(1)} \times ... \times V_n^{(m_n)}$
Acha $L(\theta)$ iwe ucheleweshaji wa mwisho-hadi-mwisho unaoonekana wa programu wakati usanidi $\theta \in \Theta$ unasambazwa. Lengo ni kupata:
$\theta^* = \arg\min_{\theta \in \Theta} L(\theta)$
Utafutaji wa Gridi hufanya kazi kwa kutenganisha vipindi vinavyoendelea kuwa seti ya thamani, kuunda gridi kamili juu ya $\Theta$, na kutathmini $L(\theta)$ kwa kila nukta ya gridi.
Utafutaji wa Nasibu huchukua sampuli $N$ za usanidi $\{\theta_1, \theta_2, ..., \theta_N\}$ kwa nasibu kutoka $\Theta$ (au kutoka kwa seti za thamani zilizofafanuliwa) na hutathmini $L(\theta)$ kwa kila sampuli, ikichagua bora zaidi.
6. Mfumo wa Uchambuzi na Kesi ya Mfano
Mfano: Uboreshaji wa Huduma Ndogo ya Usindikaji wa Malipo
Fikiria "PaymentService" katika programu ya biashara ya mtandaoni. Mwendeshaji anatambua vigezo vitatu muhimu vinavyoweza kurekebishwa vinavyoshukiwa kuwa na athari kwenye ucheleweshaji chini ya mzigo:
- Ukubwa wa Dimbwi la Muunganisho la Hifadhidata (dbc_conns): Nambari kamili kati ya 5 na 50.
- Nyuzi za Mfanyakazi wa Seva ya HTTP (http_threads): Nambari kamili kati ya 10 na 100.
- Ukubwa wa Kache ya Kumbukumbu (cache_mb): Nambari kamili kati ya 128 na 1024 (MB).
Ufafanuzi wa Nafasi ya Utafutaji:
Mwendeshaji anafafanua nafasi ya utafutaji kwa Kiboreshaji Huduma Ndogo:
PaymentService: { dbc_conns: [5, 10, 20, 30, 40, 50], http_threads: [10, 25, 50, 75, 100], cache_mb: [128, 256, 512, 1024] }
Utekelezaji wa Uboreshaji:
- Utafutaji wa Gridi: Ingejaribu mchanganyiko wote 6 * 5 * 4 = 120.
- Utafutaji wa Nasibu: Inaweza kuchukua sampuli ya mchanganyiko 30 ya nasibu kutoka kwa nafasi hii (k.m., (dbc_conns=20, http_threads=75, cache_mb=256), (dbc_conns=40, http_threads=25, cache_mb=512), n.k.).
Matokeo: Kiboreshaji kinaweza kugundua kuwa usanidi wa {dbc_conns: 30, http_threads: 50, cache_mb: 512} hutoa ucheleweshaji wa asilimia 95 chini ya 12% kwa PaymentService ikilinganishwa na chaguo-msingi {dbc_conns: 10, http_threads: 25, cache_mb: 128}, bila ongezeko kubwa la kumbukumbu. Usanidi huu kisha huhifadhiwa kama bora kwa muundo wa mzigo wa kazi uliozingatiwa.
7. Matumizi ya Baadaye na Mwelekeo wa Utafiti
Njia kutoka kwa kazi hii ya msingi inaelekeza kwa mwelekeo kadhaa wa baadaye:
- Uboreshaji wa Malengo Mengi na Mipaka: Kupanua utafutaji kwa usawa wa ucheleweshaji, uwezo wa kuchukua, gharama ($), na uaminifu (kiwango cha hitilafu) wakati huo huo, kwa uwezekano kutumia njia za Pareto-frontier.
- Muunganisho wa Uboreshaji wa Bayesian: Kubadilisha Utafutaji wa Gridi/Nasibu na Uboreshaji wa Bayesian (BO) wenye ufanisi zaidi wa sampuli kwa kutumia Mchakato wa Gaussian. BO inaweza kuiga mandhari ya utendakazi na kuchagua kwa busara usanidi wenye matumaini zaidi wa kujaribu ijayo.
- Ujifunzaji wa Meta kwa Kuanza kwa Joto: Kukuza mfumo ambao, ukitoa huduma ndogo mpya, unaweza kupendekeza usanidi wa kuanzia na nafasi ya utafutaji kulingana na mifumo iliyojifunza kutoka kwa maelfu ya huduma zilizoboreshwa hapo awali (k.m., "huduma zinazotumia PostgreSQL na viwango vya juu vya kuandika huwa bora na dimbwi la muunganisho kati ya 20-40").
- Ujifunzaji wa Kujilimbikizia (RL) kwa Kukabiliana na Mabadiliko: Kuendelea zaidi ya uboreshaji wa mara moja hadi kukabiliana kila wakati. Wakala wa RL anaweza kujifunza sera ya kurekebisha usanidi kwa wakati halisi kulingana na mifumo inayobadilika ya trafiki, sawa na jinsi huduma ya Vizier ya Google inavyofanya kazi lakini kukabiliana na majukwaa ya huduma ndogo kama Kubernetes.
- Muunganisho na Mashimo ya Huduma: Kuweka kiboreshaji ndani ya mashimo ya huduma (k.m., Istio, Linkerd). Mashimo tayari inadhibiti trafiki na kuzingatia viashiria, na kuifanya jukwaa bora la kutekeleza na kusambaza mabadiliko ya usanidi kwa usalama kupitia toleo la canary au kusambazwa hatua kwa hatua.
8. Marejeo
- Newman, S. (2015). Building Microservices. O'Reilly Media. (Imetajwa kwa faida za huduma ndogo).
- Dinh-Tuan, H., et al. (2022). Air Pollution-Aware Toll System. [Marejeo ya programu maalum ya kesi ya matumizi].
- OpenTelemetry Project. (2021). Distributed Tracing Specification. https://opentelemetry.io
- Zhu, L., et al. (2017). Optimizing Microservices in the Cloud: A Survey. IEEE Transactions on Cloud Computing.
- Snoek, J., Larochelle, H., & Adams, R. P. (2012). Practical Bayesian Optimization of Machine Learning Algorithms. Advances in Neural Information Processing Systems (NeurIPS).
- Barrera, J., et al. (2020). A Meta-heuristic Approach for Configuration Tuning of Cloud Systems. IEEE Transactions on Services Computing.
- Bergstra, J., & Bengio, Y. (2012). Random Search for Hyper-Parameter Optimization. Journal of Machine Learning Research.
- Feurer, M., & Hutter, F. (2019). Hyperparameter Optimization. In Automated Machine Learning (pp. 3-33). Springer.
- Zhu, J., Park, T., Isola, P., & Efros, A. A. (2017). Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks. IEEE International Conference on Computer Vision (ICCV). (Marejeo ya CycleGAN kwa mfano wa kufikiria kwa upana).
- Golovin, D., et al. (2017). Google Vizier: A Service for Black-Box Optimization. Proceedings of the 23rd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.