#experience
Bir qiziq bug'ni tuzadim. Bizda code base monorepo holida saqlanadi. Ya'ni hamma kodlar bitta repo'da saqlanadi. Bu holda kodlarni test qilish, build qilish, va hokazo operatsiyalarni qo'lda bajarish yoki ularga pipeline yozib ularni boshqarish qiyinlashib boradi. Bunga yechim incremental build systems ishlatish.
Incremental build system ham oddiy dasutr, faqat u kodlaringizni o'zgarishini, dependency control, qaysi qismda o'zgarish bo'lsa faqat o'sha qismni build, test qilishni belgilay oladi. Tasavvur qiling Google, Meta, Dropbox kabi tizmlarda hamma dasturlarni kodlari bitta joyda (monorepo holida) saqlanadi.
Build System alohida Linux machine'larda ishlab turadi. O'zgarishlar bo'lsa kodlar o'sha mashinaga boradi, test, build qilinadi va keyin shunga qarab natijalar bizga ko'rinadi. Bir kun build system service OOM (out of memory) bo'lib qoldi. Memory swap qilishni boshladi. Lekin biz u servislar uchun ajratgan resurslarimiz yetishi kerak edi. Borib tahlil qilishni boshladim. 64GM RAM umumiy xisobda. Hammasi yaxshi. 48GB ram qaysidir process tomonidan ishlatilayotganini ko'rdim. Va yana 16GB OS filesystem cache ham bor edi. OS filesystem cache ni doim tozalay oladi. Lekin bu holatda nimaga swap qilayotganini tushuna olmadim.
Esingizda bo'lsa docker minimal versiyasini yasab ko'rganim haqida aytgandim. Ha o'sha tajriba qo'l keldi. Hamma gap
Ba'zan qilgan eksperimentlarim ko'p azq otadi. Peace!
Updated: Bu voqeaga ancha bo'lgan lekin hozir yozgim kelib qoldi. Balkim shu ham promoga yordam bo'lgandir, who knows
Bir qiziq bug'ni tuzadim. Bizda code base monorepo holida saqlanadi. Ya'ni hamma kodlar bitta repo'da saqlanadi. Bu holda kodlarni test qilish, build qilish, va hokazo operatsiyalarni qo'lda bajarish yoki ularga pipeline yozib ularni boshqarish qiyinlashib boradi. Bunga yechim incremental build systems ishlatish.
Incremental build system ham oddiy dasutr, faqat u kodlaringizni o'zgarishini, dependency control, qaysi qismda o'zgarish bo'lsa faqat o'sha qismni build, test qilishni belgilay oladi. Tasavvur qiling Google, Meta, Dropbox kabi tizmlarda hamma dasturlarni kodlari bitta joyda (monorepo holida) saqlanadi.
Build System alohida Linux machine'larda ishlab turadi. O'zgarishlar bo'lsa kodlar o'sha mashinaga boradi, test, build qilinadi va keyin shunga qarab natijalar bizga ko'rinadi. Bir kun build system service OOM (out of memory) bo'lib qoldi. Memory swap qilishni boshladi. Lekin biz u servislar uchun ajratgan resurslarimiz yetishi kerak edi. Borib tahlil qilishni boshladim. 64GM RAM umumiy xisobda. Hammasi yaxshi. 48GB ram qaysidir process tomonidan ishlatilayotganini ko'rdim. Va yana 16GB OS filesystem cache ham bor edi. OS filesystem cache ni doim tozalay oladi. Lekin bu holatda nimaga swap qilayotganini tushuna olmadim.
swappiness degan narsa haqida google qilib o'rgandim. Agar swappiness qiymati baland bo'lsa swap qilishni boshlar ekan. Bizdagi config 2 ko'rsatayotgan edi va men uni sysctl vm.swappiness=1 ga set qildim. Lekin shunda ham swap qilishda davom etaverdi. Swapni o'chirib qo'ydik, ancha ahvol yomonlashdi. Process'lar OOM berishni boshladi. OOM berganda Linux uni kill qiladi (to'xtatadi). O'zimga "why? why?" deb bir idea kelib qoldi.Esingizda bo'lsa docker minimal versiyasini yasab ko'rganim haqida aytgandim. Ha o'sha tajriba qo'l keldi. Hamma gap
cgroup da edi. Buni rostligini tekshirish uchun dmesg ni tekshirdim, voila javob topildi. Bug topildi. Aynan bizga kerakli ishlab turgan process'lar limiti past bo'lgan cgroup ga tushib qolganini ko'rib ich-ichimdan xursand bo'lib ketdim. I wanted to scream like "Technologia, I found the bug".Ba'zan qilgan eksperimentlarim ko'p azq otadi. Peace!
#experience
Kodingiz 1 millisecond'da 23 000 qator record (ma'lumot)larni ustida operatsiyani bajarish qanchalik zo'r? Kecha bir kodni ko'rdim va hamksablar bilan gaplashganimdan beri bu ko'rsatkich sekinga aylanib qoldi. I love Distributed Systems😢 .
Kecha java'dagi Math.pow() funksiyasini optimizatsiya qilishganini ko'rib qoldim. Bu unchalik muhim bo'lmasa kerak deb o'ylagandim, adashibman. Hozir kod 100x tezroq ishlayabdi ekan. Ishonmay benchmark ham qilib ko'rdim (eski va yangi change'larni farqini bilishga). Awesome!!!
Okay bu haqda blog yozishga arziydi lekin kanalda 2k reader (follower) bo'lsak bu haqida albatta yozaman. Hozircha bu sizga challange sifatida qolaqolsin. Btw, bu muammoni men yechmaganman, lekin men ham shunday yechgan bo'lardim.
Kodingiz 1 millisecond'da 23 000 qator record (ma'lumot)larni ustida operatsiyani bajarish qanchalik zo'r? Kecha bir kodni ko'rdim va hamksablar bilan gaplashganimdan beri bu ko'rsatkich sekinga aylanib qoldi. I love Distributed Systems
Kecha java'dagi Math.pow() funksiyasini optimizatsiya qilishganini ko'rib qoldim. Bu unchalik muhim bo'lmasa kerak deb o'ylagandim, adashibman. Hozir kod 100x tezroq ishlayabdi ekan. Ishonmay benchmark ham qilib ko'rdim (eski va yangi change'larni farqini bilishga). Awesome!!!
Okay bu haqda blog yozishga arziydi lekin kanalda 2k reader (follower) bo'lsak bu haqida albatta yozaman. Hozircha bu sizga challange sifatida qolaqolsin. Btw, bu muammoni men yechmaganman, lekin men ham shunday yechgan bo'lardim.
Please open Telegram to view this post
VIEW IN TELEGRAM
Har qanday loyiha ma'lumotlar bilan ishlaydi. Va ma'lumotlar omborini tushunish tizimni eng kerakli qismini tushunishdan iborat.
Shu paytgacha topishgan ba'zi kompaniyalarimda ma'lumotlar ombori haqida qiziq muhokamalar olib borganmiz. Ba'zilarida men intervyu oluvchiga o'rgatganman. Ya'na ba'zilarida intervyu oluvchidan o'rganganman (ya'ni uni savoliga javob bera olmay, keyingi intervyuga javob topib borganman).
Ulardan ba'zilar:
- Siz biror table'ni index qildingiz, ammo undan ma'lumot olmoqchi bo'lganingizda index'dan qidirmayabdi? Bunda nima qilasiz?
- Tasavvur qiling siz ko'p tranzaksiyalar bajaruvchi tizmda ishlaysiz. Ikki va undan ko'p tranzaksiya bir vaqtda bitta row'ni yangilashga urinsa (update) nima qilasiz? Qaysi qiymatni qabul qilishni qanday qaror qilasiz?
- Trazaksiya paytida biror xodisa yuz bersa, ammo ma'lumotlar ombori COMMIT qilganizni tasdiqlasayu ammo ma'lumotlar yo'qligiga guvoh bo'lsangiz nima qilasiz?
- Primary Key va Secondary Key o'rtasida nima farq bor? Ularni qachon ishlatmagan bo'lardingiz?
- Database recover qilgan paytingiz haqida gapirib bering? Qanday backup qilgansiz? Nima uchun unday qilgansiz? Va recover process qanday bo'lgandi? Zarar nimada bo'lgandi?
- Izolyatsiya darajasi REPEATABLE READ'da bo'lsa ham, siz PHANTOM READ'dagi o'zgarishlarni ko'ra olasiz. Ammo nega ekanligni tushuntirib bering?
- Column vs Row DBlar o'rtasidagi farq nimada?
- Sizda 1 millardlik jadval bor. U tez-tez yangilanib turadi. Qatorlar sonini xisoblash uchun nima qilasiz? (Materialized View va denormalization o'rtasidagi trade-offs)
Bu savollarga javob topish uchun ba'zi ochiq va yopiq darslarni ko'rib chiqishingiz mumkin:
42.uz/course/express-database
To’liq kurs 1 Dekabr oyida chiqadi. Hozir ulgurib qoling, keyin narx o’zgaradi.
Shu paytgacha topishgan ba'zi kompaniyalarimda ma'lumotlar ombori haqida qiziq muhokamalar olib borganmiz. Ba'zilarida men intervyu oluvchiga o'rgatganman. Ya'na ba'zilarida intervyu oluvchidan o'rganganman (ya'ni uni savoliga javob bera olmay, keyingi intervyuga javob topib borganman).
Ulardan ba'zilar:
- Siz biror table'ni index qildingiz, ammo undan ma'lumot olmoqchi bo'lganingizda index'dan qidirmayabdi? Bunda nima qilasiz?
- Tasavvur qiling siz ko'p tranzaksiyalar bajaruvchi tizmda ishlaysiz. Ikki va undan ko'p tranzaksiya bir vaqtda bitta row'ni yangilashga urinsa (update) nima qilasiz? Qaysi qiymatni qabul qilishni qanday qaror qilasiz?
- Trazaksiya paytida biror xodisa yuz bersa, ammo ma'lumotlar ombori COMMIT qilganizni tasdiqlasayu ammo ma'lumotlar yo'qligiga guvoh bo'lsangiz nima qilasiz?
- Primary Key va Secondary Key o'rtasida nima farq bor? Ularni qachon ishlatmagan bo'lardingiz?
- Database recover qilgan paytingiz haqida gapirib bering? Qanday backup qilgansiz? Nima uchun unday qilgansiz? Va recover process qanday bo'lgandi? Zarar nimada bo'lgandi?
- Izolyatsiya darajasi REPEATABLE READ'da bo'lsa ham, siz PHANTOM READ'dagi o'zgarishlarni ko'ra olasiz. Ammo nega ekanligni tushuntirib bering?
- Column vs Row DBlar o'rtasidagi farq nimada?
- Sizda 1 millardlik jadval bor. U tez-tez yangilanib turadi. Qatorlar sonini xisoblash uchun nima qilasiz? (Materialized View va denormalization o'rtasidagi trade-offs)
Bu savollarga javob topish uchun ba'zi ochiq va yopiq darslarni ko'rib chiqishingiz mumkin:
42.uz/course/express-database
Build Your First Model
O'zingizni ilk Machine Learning modelingizni yaratib ko'rishni o'ylaganmisiz? Unda ushbu blog siz uchun. Nimalarni o'rganamiz?
· Machine Learning ortidagi Matematika siz o'ylaganchalik qiyin emasligini
· Modelni 0dan, hech qanday kutubxonalarsiz qurishni (kodingizni otabek.io da sahifada ishlatib ko'rsangiz bo'ladi)
· Va weight ni topishni turli xil yo'llarini ko'rib o'tamiz.
Ushbu blogdan keyin biror yaxshiroq erkin loyiha qila olishingizga ishonaman. Sinab ko'ring
Batafsil: otabek.io/blogs/build-your-first-model
O'zingizni ilk Machine Learning modelingizni yaratib ko'rishni o'ylaganmisiz? Unda ushbu blog siz uchun. Nimalarni o'rganamiz?
· Machine Learning ortidagi Matematika siz o'ylaganchalik qiyin emasligini
· Modelni 0dan, hech qanday kutubxonalarsiz qurishni (kodingizni otabek.io da sahifada ishlatib ko'rsangiz bo'ladi)
· Va weight ni topishni turli xil yo'llarini ko'rib o'tamiz.
Ushbu blogdan keyin biror yaxshiroq erkin loyiha qila olishingizga ishonaman. Sinab ko'ring
Batafsil: otabek.io/blogs/build-your-first-model
#shortBlog
Isolation ma'lumotlar omborini go'zal tamoyillaridan biri deb bilaman. Bir nechta tranzaksiya bir-birini blok qilib qo'ymasligi uchun ajoyib yechimlar qilingan. Sezganingizdek Pessimistic Locking va Optimistic Locking mexanizmlari haqida gap ketayabdi.
Pessimistic Locking
Tranzaksiya A obyektni o'qishi yoki yozishidan oldin. Unga (Lock) qulf qo'yadi. Agar Tranzaksiya B o'sha obyektni ustida biror ish qilmoqchi bo'lsa, uni tugashini va qulfni olib tashlashini kutishi kerak bo'ladi. Bu yechimni yomon tomoni, agar ko'p tranzaksiyalar bir-birini kutib qolsa (Deadlock), tizim qotib qolishi mumkin.
Optimistic Locking
Multi-Version Concurrency Control mehanizmi yuqoridagi muammoni yanada yaxshiroq yechish uchun qilingan. Men uni Time Travel deb atayman. Nega unday? Chunki biz multi dimension olamda yashaybamiz (quantum physics aytishi bo'yicha). Bu yechimdagi go'zallik, DB barcha tranzaksiyalar qilgan o'zgarishlarni saqlab boradi. Qachonki Tranzaksiya A boshlansa, DB hozirgi holatidan "Snapshot" oladi. Tranzaksiya B ham boshlanib, biror qiymatni o'zgartirsa, u ham o'zidagi versiyani o'zgartirgan bo'ladi. Tranzaksiya A ga hech qanday zarar o'tmaydi. Read qilayotganlar ham, Write qilayotganlar ham bir-birini blok qilmaydi.
Bu ikkisi ham trade-off. Pessimistic Locking'da tizimni qotirib qo'yishingiz mumkin bo'lsa, Optimistic Locking'da juda ko'p xotira ishlatishni boshlaysiz. Undan tashqari Timestamp Ordering, 2PL, SSI, DCC, Token-Based / Lease-Based kabi yechimlar ham bor. O'rganishni maslahat beraman. System Design intervyularda o'qigan kitoblaringiz emas, texnik bilmlaringiz va ularni ishlata olishingiz ko'proq azq otadi.
Isolation ma'lumotlar omborini go'zal tamoyillaridan biri deb bilaman. Bir nechta tranzaksiya bir-birini blok qilib qo'ymasligi uchun ajoyib yechimlar qilingan. Sezganingizdek Pessimistic Locking va Optimistic Locking mexanizmlari haqida gap ketayabdi.
Pessimistic Locking
Tranzaksiya A obyektni o'qishi yoki yozishidan oldin. Unga (Lock) qulf qo'yadi. Agar Tranzaksiya B o'sha obyektni ustida biror ish qilmoqchi bo'lsa, uni tugashini va qulfni olib tashlashini kutishi kerak bo'ladi. Bu yechimni yomon tomoni, agar ko'p tranzaksiyalar bir-birini kutib qolsa (Deadlock), tizim qotib qolishi mumkin.
Optimistic Locking
Multi-Version Concurrency Control mehanizmi yuqoridagi muammoni yanada yaxshiroq yechish uchun qilingan. Men uni Time Travel deb atayman. Nega unday? Chunki biz multi dimension olamda yashaybamiz (quantum physics aytishi bo'yicha). Bu yechimdagi go'zallik, DB barcha tranzaksiyalar qilgan o'zgarishlarni saqlab boradi. Qachonki Tranzaksiya A boshlansa, DB hozirgi holatidan "Snapshot" oladi. Tranzaksiya B ham boshlanib, biror qiymatni o'zgartirsa, u ham o'zidagi versiyani o'zgartirgan bo'ladi. Tranzaksiya A ga hech qanday zarar o'tmaydi. Read qilayotganlar ham, Write qilayotganlar ham bir-birini blok qilmaydi.
Bu ikkisi ham trade-off. Pessimistic Locking'da tizimni qotirib qo'yishingiz mumkin bo'lsa, Optimistic Locking'da juda ko'p xotira ishlatishni boshlaysiz. Undan tashqari Timestamp Ordering, 2PL, SSI, DCC, Token-Based / Lease-Based kabi yechimlar ham bor. O'rganishni maslahat beraman. System Design intervyularda o'qigan kitoblaringiz emas, texnik bilmlaringiz va ularni ishlata olishingiz ko'proq azq otadi.
Concurrency Control, Double booking problem uchun bir necha xil yechimlar, Cursor, Security, va boshqa chqur mavzular backend dasturchilar uchun juda muhim. Ularni bilish yaxshi, tushunib ishlata olish undanda yaxshiroq.
Deep Dive bo'limidan yana bir darsni ochib qo'ydim. Uni bepulga kursni sotib olmasdan ham ko'rishingiz va yangi bilmlar olishingiz mumkin.
Eng ko'p beriladigan savollarga javob sifatida:
Express Database kursi bir texnologiyaga va faqat SQL tiliga bog'liqligi yo'q. Bu kursda ma'lumotlar ombori (RDBMS) bo'yicha bilmlar ko'proq. Kurs har qanday darajaga to'g'ri keladi, ha 0dan o'rgatadi. Distributed System haqida ham tushunchalar yoritilgan, sabab arxitekturik qarorlarni to'g'ri qabul qila olishga o'rgatish.
Batafsil👉 42.uz/course/express-database/random-topics/
Deep Dive bo'limidan yana bir darsni ochib qo'ydim. Uni bepulga kursni sotib olmasdan ham ko'rishingiz va yangi bilmlar olishingiz mumkin.
Eng ko'p beriladigan savollarga javob sifatida:
Express Database kursi bir texnologiyaga va faqat SQL tiliga bog'liqligi yo'q. Bu kursda ma'lumotlar ombori (RDBMS) bo'yicha bilmlar ko'proq. Kurs har qanday darajaga to'g'ri keladi, ha 0dan o'rgatadi. Distributed System haqida ham tushunchalar yoritilgan, sabab arxitekturik qarorlarni to'g'ri qabul qila olishga o'rgatish.
Batafsil
Please open Telegram to view this post
VIEW IN TELEGRAM
Lectures
Barcha ochiq ma'ruzalarimni videolarini shu yerda kuzatsangiz bo'ladi.
Batafsil👉 otabek.io/lectures
Barcha ochiq ma'ruzalarimni videolarini shu yerda kuzatsangiz bo'ladi.
Batafsil
Please open Telegram to view this post
VIEW IN TELEGRAM
Internet ortidagi mo'jizani o'zingiz tushunib, va o'rgangan bilmlar asosida ularni qayta ixtiroq qilishni istaysiz. Ammo qayerdan boshlashni bilmaysizmi?
- DNS query
- HTTP protokoli
- Xavfsiz va tezkor API
- Sniffing tool (hacking uchun)
- Speedbumper
- Proxy (Nginx ga o'xshagan)
- Ngrok (Tunneling service)
- Real-time tizimlar (oz resurs, ko'p connection)
- ... va h.k.z larni 0dan quramiz (kutubxonalarsiz)
Bu yerdan boshlasangiz bo'ladi: 42.uz/course/express-networking
Hacking va Security bo'limida o'rgatilgan barcha bilm va amaliyotlarni faqat yaxshi yo'lda sarflaysiz deb umid qilaman
- DNS query
- HTTP protokoli
- Xavfsiz va tezkor API
- Sniffing tool (hacking uchun)
- Speedbumper
- Proxy (Nginx ga o'xshagan)
- Ngrok (Tunneling service)
- Real-time tizimlar (oz resurs, ko'p connection)
- ... va h.k.z larni 0dan quramiz (kutubxonalarsiz)
Bu yerdan boshlasangiz bo'ladi: 42.uz/course/express-networking
Vohid aka bilan podkastda intervyu haqida gaplashgandik va F5 kompaniyasi intervyusidan yiqilib, Networking'ni N harfini bilmasligimni bilgandim deb aytgan edim. O'sha intervyudan juda ko'p (rostan ham ko'p) xulosa va tajriba olganman.
Express Networking kursida bular haqida bo'lishib borayabman. Sizga yana bir ajoyib mavzuni o'rgatib va F5 kompaniyasiga bo'lgan intervyudan yiqilganimdan olgan tajribamni bo'lishishga qaror qildim. Bu darsni ham bepul ko'rishingiz mumkin.
Bu darsda sizga nslookup va dig kabi dasturlarni RFC o'qib qurishni amaliy o'rgatib kod yozib berganman.
👉 42.uz/course/express-networking/udp-tezkor-kuryer
Express Networking kursida bular haqida bo'lishib borayabman. Sizga yana bir ajoyib mavzuni o'rgatib va F5 kompaniyasiga bo'lgan intervyudan yiqilganimdan olgan tajribamni bo'lishishga qaror qildim. Bu darsni ham bepul ko'rishingiz mumkin.
Bu darsda sizga nslookup va dig kabi dasturlarni RFC o'qib qurishni amaliy o'rgatib kod yozib berganman.
Please open Telegram to view this post
VIEW IN TELEGRAM
#experience
Yillar davomida o’rgangan ba’zi bilmlarimdan:
- Abstraksiya funksiya yoki servis qanday ishlashiga emas, nima bersangiz nima olishingiz mumkinligiga diqqatingizni qaratadi. Bu ba’zan sizga tizimni murakkabligini soddaroq tushinb qurishga yordam qilsa, ba’zan sizga qimmatga tushishi mumkin. On-call, o’zbek tilida navbatchilik deymiz. Infra, cloud jamoalarda ishlaydiganlar odatda buni yaxshi bilishadi. Aynan navbatchilik paytida bizga yoqmaydigan fundamental “algoritmlar”, “data structure”, “low-level”, “matematika”, “networking”, “database”, “operating systems” va h.k.z bilmlar juda kerak bo’lishini ko’p guvohi bo’lasiz. Insonlar mukammallikdan uzoq bo’lgani kabi, ular yozgan dasturlar, kodlar, kitoblar va asarlar ham huddi shunday ekan.
- Kod yozishdan ko’ra ko’proq kodni o’chirish qiyinroq va ko’proq xavfsizlik keltirar ekan. Shu paytgacha 20 238 qator kod o’chirdim. Jamoa bu ishimdan juda hursand bo’ldi. Pul, asab va energiya tejadik. Qanday? Endi bu servis hech qachon buzilmaydi, biz uni soatlab “nima bo’ldi ekan?” deb kuzatmaymiz/tuzatmaymiz. Ota-bobolarimiz aytganidek “eng yaxshi kod bu yozilmagan kod”.
- Yiqilishdan qo’rqmaydiganlar ko’p yutar ekan. Qiziqishlarim menga juda qimmatga tushgan. Dadam olib bergan o’sha $500 lik kompyuterni chuqalab $50 ga sotganimiz, startup quraman deb cloudga to’lagan oxirgi $4000 pulim, system dizayni amaliyot qilib o’rganaman deb ketkazilgan vaqt (20ta kitob o’qib yodlash mumkin edi bu vaqtga), production’da qilingan xatolik va eksperimentlar, ehh gapirsa tugamaydigandek. Lekin barchasi Otabekni shu yergacha kelishiga o’z xissasini qo’shgan. Dastur muammosiz ishlasa o’smaysiz. Istalgan kompaniya ham shuncha odamni bekorga ishlatmaydi. Xatolar va muammolar bizni bor qilib turibdi, buzishdan qo’rqmang. Ammo buzg’unchi bo’lmang.
- Yaxshi do’stlar ortdiring va qiymat bering. Blog yozib ham do’st orttirish mumkin ekan. Hozirda minglab do’slarim (sizlar) shu blogimni foydasi bor deb o’qishadi. Ba’zilar “qiziqshim oshadi sizni blogizni o’qisam” desa, yana ba’zilar “senior bo’lishda/ishga kirishimda yordam qildi blogingiz” deydi. Ha “nima deyabsan o’zing tushunayabsanmi?” deydiganlar ham topiladi. Ammo foydasi tegayabdi, shunisidan xursandman.
Xullas qisqacha shular.
Yillar davomida o’rgangan ba’zi bilmlarimdan:
- Abstraksiya funksiya yoki servis qanday ishlashiga emas, nima bersangiz nima olishingiz mumkinligiga diqqatingizni qaratadi. Bu ba’zan sizga tizimni murakkabligini soddaroq tushinb qurishga yordam qilsa, ba’zan sizga qimmatga tushishi mumkin. On-call, o’zbek tilida navbatchilik deymiz. Infra, cloud jamoalarda ishlaydiganlar odatda buni yaxshi bilishadi. Aynan navbatchilik paytida bizga yoqmaydigan fundamental “algoritmlar”, “data structure”, “low-level”, “matematika”, “networking”, “database”, “operating systems” va h.k.z bilmlar juda kerak bo’lishini ko’p guvohi bo’lasiz. Insonlar mukammallikdan uzoq bo’lgani kabi, ular yozgan dasturlar, kodlar, kitoblar va asarlar ham huddi shunday ekan.
- Kod yozishdan ko’ra ko’proq kodni o’chirish qiyinroq va ko’proq xavfsizlik keltirar ekan. Shu paytgacha 20 238 qator kod o’chirdim. Jamoa bu ishimdan juda hursand bo’ldi. Pul, asab va energiya tejadik. Qanday? Endi bu servis hech qachon buzilmaydi, biz uni soatlab “nima bo’ldi ekan?” deb kuzatmaymiz/tuzatmaymiz. Ota-bobolarimiz aytganidek “eng yaxshi kod bu yozilmagan kod”.
- Yiqilishdan qo’rqmaydiganlar ko’p yutar ekan. Qiziqishlarim menga juda qimmatga tushgan. Dadam olib bergan o’sha $500 lik kompyuterni chuqalab $50 ga sotganimiz, startup quraman deb cloudga to’lagan oxirgi $4000 pulim, system dizayni amaliyot qilib o’rganaman deb ketkazilgan vaqt (20ta kitob o’qib yodlash mumkin edi bu vaqtga), production’da qilingan xatolik va eksperimentlar, ehh gapirsa tugamaydigandek. Lekin barchasi Otabekni shu yergacha kelishiga o’z xissasini qo’shgan. Dastur muammosiz ishlasa o’smaysiz. Istalgan kompaniya ham shuncha odamni bekorga ishlatmaydi. Xatolar va muammolar bizni bor qilib turibdi, buzishdan qo’rqmang. Ammo buzg’unchi bo’lmang.
- Yaxshi do’stlar ortdiring va qiymat bering. Blog yozib ham do’st orttirish mumkin ekan. Hozirda minglab do’slarim (sizlar) shu blogimni foydasi bor deb o’qishadi. Ba’zilar “qiziqshim oshadi sizni blogizni o’qisam” desa, yana ba’zilar “senior bo’lishda/ishga kirishimda yordam qildi blogingiz” deydi. Ha “nima deyabsan o’zing tushunayabsanmi?” deydiganlar ham topiladi. Ammo foydasi tegayabdi, shunisidan xursandman.
Xullas qisqacha shular.
Oddiy dasturchi emas, o’z ishini maromiga yetkazib, oshig’i bilan qiladigan inson sifatida shakllaning. Mavzularni “ish topish” uchun emas, sohaga yangilik qilish va katta muammolarni tushunish, ularni yecha olish uchun o’rganing.
Faqat gap yoki taklif emas, sizga darslik ham bermoqchiman. HTTP ni ishlatib serverlar qurasizu lekin, uni ostidagi jarayonni tushunmasligingiz mumkin. Ammo bugundan bular o’zgarishini va bunga o’z xissam qo’shilishini istayman.
Hech bir qurgan loyiham cho’ntagim uchun qilinmagan. Bo’lmasa bu blogni ham tekinga o’qimasdingiz, men otabek.io ni palon pulga sotib olmasdim. Tajribalar oddiydir lekin bular men uchun bir qiyinchilik ortidagi hikoyalar. (Siz shunday emassiz lekin shunday fikrlaydiganlar yetarlicha ekan)
• HTTPni 0dan quramiz - Go dasturlash tilida
• HTTPni 0dan quramiz - Python dasturlash tilida
yoki
• otabek.io/lectures
Faqat Java/Node.js yo’q ekan demang. O’rganing va qiling, omad : )
Bu bilmni ulashing, zora ko’plab dasturchilarga qiziqish uyg’otishda foydamiz tegsa
Faqat gap yoki taklif emas, sizga darslik ham bermoqchiman. HTTP ni ishlatib serverlar qurasizu lekin, uni ostidagi jarayonni tushunmasligingiz mumkin. Ammo bugundan bular o’zgarishini va bunga o’z xissam qo’shilishini istayman.
Hech bir qurgan loyiham cho’ntagim uchun qilinmagan. Bo’lmasa bu blogni ham tekinga o’qimasdingiz, men otabek.io ni palon pulga sotib olmasdim. Tajribalar oddiydir lekin bular men uchun bir qiyinchilik ortidagi hikoyalar. (Siz shunday emassiz lekin shunday fikrlaydiganlar yetarlicha ekan)
• HTTPni 0dan quramiz - Go dasturlash tilida
• HTTPni 0dan quramiz - Python dasturlash tilida
yoki
• otabek.io/lectures
Faqat Java/Node.js yo’q ekan demang. O’rganing va qiling, omad : )
Build your first model postidan keyin AI/ML o’rganish bo’yicha savollar va maslahat so'rashlar yanada ko'paydi. Hozir trendda bo'lgani uchun bo'lsa kerak. Qisqacha tajribam haqida aytib beray.
2-yil oldin o’sha ilmiy ishni (research paper) o’qib hech narsa tushunmagandim. Bu ilmiy ish haqida Andrej Karpathy juda zo’r video darslik chiqargan. Yaqinda (o’tgan yili) amaliy tarzda, videolarga qaramasdan kichik progress qila oldim.
Generative Pre-trained Transformers (GPT) qurishni va transformer’lar hozirgi LLMlarni kengaya olishidagi o’rnini, attention mexanizmi haqida ko’plab o’rganasiz.
Bundan oldin Recurrent Neural Network (RNN) va LSTM degan modellardan foydalanishgan. Muammo, ular juda sekin, kengayishga qiyin va unutuvchan bo’lgan. Model promptni so’zma-so’z o'qiydigan bo'lgan, agar gap uzun bo’lsa gapni boshini unutib qo’yardi.
Transformer’lar esa bunga ajoyib yechim berishadi. Ular so’zma-so’z o’qish o’rniga butun gapni bittada o’qiydi. Va Self-Attention mexanizmi orqali gapdagi so’zlar bir-biriga qanday bog’liqligi borligini xisoblab ko’radi.
Misol uchun “I didn't eat the food on the table because it wasn’t delicious” gapidagi “it” nimani bildirayotganini bilishingiz kerak. Bu yerda u ovqatga "food"ga nisbatan kelayabdi, "table" so'ziga emas.
Xullas bu model tezroq LLMlarni train qilishga va kengaya olishiga sababchi bo’lgan. Xullas qisqasi transformer gapni “Attention” mexanizmi orqali outputga aylantirishini yaxshilab tushunib olasiz. Balkim keyingi eng zo'r GPT modellarni siz qurarsiz, who knows.
Attention is all you need
2-yil oldin o’sha ilmiy ishni (research paper) o’qib hech narsa tushunmagandim. Bu ilmiy ish haqida Andrej Karpathy juda zo’r video darslik chiqargan. Yaqinda (o’tgan yili) amaliy tarzda, videolarga qaramasdan kichik progress qila oldim.
Generative Pre-trained Transformers (GPT) qurishni va transformer’lar hozirgi LLMlarni kengaya olishidagi o’rnini, attention mexanizmi haqida ko’plab o’rganasiz.
Bundan oldin Recurrent Neural Network (RNN) va LSTM degan modellardan foydalanishgan. Muammo, ular juda sekin, kengayishga qiyin va unutuvchan bo’lgan. Model promptni so’zma-so’z o'qiydigan bo'lgan, agar gap uzun bo’lsa gapni boshini unutib qo’yardi.
Transformer’lar esa bunga ajoyib yechim berishadi. Ular so’zma-so’z o’qish o’rniga butun gapni bittada o’qiydi. Va Self-Attention mexanizmi orqali gapdagi so’zlar bir-biriga qanday bog’liqligi borligini xisoblab ko’radi.
Misol uchun “I didn't eat the food on the table because it wasn’t delicious” gapidagi “it” nimani bildirayotganini bilishingiz kerak. Bu yerda u ovqatga "food"ga nisbatan kelayabdi, "table" so'ziga emas.
Xullas bu model tezroq LLMlarni train qilishga va kengaya olishiga sababchi bo’lgan. Xullas qisqasi transformer gapni “Attention” mexanizmi orqali outputga aylantirishini yaxshilab tushunib olasiz. Balkim keyingi eng zo'r GPT modellarni siz qurarsiz, who knows.
Attention is all you need
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Serverlarga xakkerlar xujum qiladi.
Menga esamushugim Mimi 🐈
Express Networking 3 modul, "Serverga xujum qilamiz" darsini yozish jarayonidan lavha
Menga esa
Please open Telegram to view this post
VIEW IN TELEGRAM
#5MinuteTopic
Platform vs DevOps Engineer
O‘tgan galgi streamda Platform Engineer vs DevOps Engineer nima farqi bor deb so‘rashgandi. Keyinroq shuni o‘zimga yozishni va ko‘rishganda so‘rashni boshlashdi. Bu yerda bu ikkisini farqi haqida gaplashamiz. Infrastruktura tomonda ishlaganim uchun bu haqda o‘rganishga va amaliy sinab ko‘rishga muvaffaq bo‘la oldim.
DevOps Engineer bu to‘liq texnik emas balkim qaysidir darajada madaniyatni ham tatbiq etuvchi rol hisoblanadi. Siz developer’lar va operations team’ni bog‘lovchi inson bo‘lishingiz kerak. Texnik tomondan to‘g‘ri siz CI/CD (continuous delivery / continuous deployment), Kubernetes, Jenkins, Git, Networking, Security va Cloud yechimlar haqida bilishingiz kerak bo‘ladi. Bu sizda mijozlarga dasturchilar qurgan dasturni to‘g‘ri yetkazib berishdek mas’uliyatni shakllantiradi. Ammo, tasavvur qiling qaysidir dasturchi yoki jamoa biror yangi loyiha qilsa va DevOps jamoasi band bo‘lsa butun process to‘xtab qoladi degani. Bu muammoni yechish uchun esa Platform Engineer sohasi shakllangan.
Platform Engineer bu IDP (Internal Developer Platform) quruvchi injener hisoblanadi. Endi siz DevOps engineer bo‘shashini kutmaysiz, chunki siz uchun platforma qurilgan. Siz bir nechta tugmalarni bosish va dokumentatsiyada ko‘rsatilgandek qoida yozishni o‘rganish orqali o‘zingiz bemalol operate (harakat) qila olasiz degani. Ya’ni dasturchilar uchun o‘ziga-o‘zi xizmat ko‘rsatuvchi platforma degani bu, ajoyib-a? Endi jamoada hamma Terraform, AWS, K8S ni bilishi shart emas. Ular platformaga kiradi va qoida yozishni o‘rganib shunchaki o‘zlariga-o‘zlari xizmat ko‘rsata olishadi.
DevOps uchun mijozlar bu haqiqiy mijozlardir. Platform Engineer uchun mijozlar bu dasturchilardir. Siz "I will write a Jenkins pipeline for the team" dan "I will build a template in the IDP so any team can spin up a secure pipeline in 3 clicks without asking me" ga o‘tasiz.
Biz SRE haqida gaplashmadik, bu umumman alohida mavzu.
Platform vs DevOps Engineer
O‘tgan galgi streamda Platform Engineer vs DevOps Engineer nima farqi bor deb so‘rashgandi. Keyinroq shuni o‘zimga yozishni va ko‘rishganda so‘rashni boshlashdi. Bu yerda bu ikkisini farqi haqida gaplashamiz. Infrastruktura tomonda ishlaganim uchun bu haqda o‘rganishga va amaliy sinab ko‘rishga muvaffaq bo‘la oldim.
DevOps Engineer bu to‘liq texnik emas balkim qaysidir darajada madaniyatni ham tatbiq etuvchi rol hisoblanadi. Siz developer’lar va operations team’ni bog‘lovchi inson bo‘lishingiz kerak. Texnik tomondan to‘g‘ri siz CI/CD (continuous delivery / continuous deployment), Kubernetes, Jenkins, Git, Networking, Security va Cloud yechimlar haqida bilishingiz kerak bo‘ladi. Bu sizda mijozlarga dasturchilar qurgan dasturni to‘g‘ri yetkazib berishdek mas’uliyatni shakllantiradi. Ammo, tasavvur qiling qaysidir dasturchi yoki jamoa biror yangi loyiha qilsa va DevOps jamoasi band bo‘lsa butun process to‘xtab qoladi degani. Bu muammoni yechish uchun esa Platform Engineer sohasi shakllangan.
Platform Engineer bu IDP (Internal Developer Platform) quruvchi injener hisoblanadi. Endi siz DevOps engineer bo‘shashini kutmaysiz, chunki siz uchun platforma qurilgan. Siz bir nechta tugmalarni bosish va dokumentatsiyada ko‘rsatilgandek qoida yozishni o‘rganish orqali o‘zingiz bemalol operate (harakat) qila olasiz degani. Ya’ni dasturchilar uchun o‘ziga-o‘zi xizmat ko‘rsatuvchi platforma degani bu, ajoyib-a? Endi jamoada hamma Terraform, AWS, K8S ni bilishi shart emas. Ular platformaga kiradi va qoida yozishni o‘rganib shunchaki o‘zlariga-o‘zlari xizmat ko‘rsata olishadi.
DevOps uchun mijozlar bu haqiqiy mijozlardir. Platform Engineer uchun mijozlar bu dasturchilardir. Siz "I will write a Jenkins pipeline for the team" dan "I will build a template in the IDP so any team can spin up a secure pipeline in 3 clicks without asking me" ga o‘tasiz.
Biz SRE haqida gaplashmadik, bu umumman alohida mavzu.
50ta tizim dizayn intervyularidan o'rganganlarim shu bo'ldi
Tizim dizayni intervyularidan o'rganganlarim, xatolarim va ularni yaxshilash haqida yozdim. Big Tech'ni crack qilishni istaganlar uchun maxsus.
Batafsil
Tizim dizayni intervyularidan o'rganganlarim, xatolarim va ularni yaxshilash haqida yozdim. Big Tech'ni crack qilishni istaganlar uchun maxsus.
Batafsil
#experience
Dropbox Dash jamoasi bilan 4 oy ishladim (Tour of Duty). Va RAG haqida va uni katta masshtabda yuritish (running at scale) haqida juda ko'p o'rgandim.
Agar RAG qurayotgan bo'lsangiz va write/read amallari soni juda ko'p bo'lsa siz qurayotgan RAG katta ehtimollik bilan kengaya olmaydi va juda ko'p alaqsiraydi (hallucination). Vector database kichik bo'lsa kNN qidiruvi ishlashi mumkin. Agar ma'lumot bo'laklar hajmi 80k-100k dan oshsa juda katta kechikish (latency) sodir bo'ladi. Sababi so'rov (query) va har bir vector o'rtasidagi masofani xisoblash qimmatlashib va og'irlashib ketadi.
Buni qanday yechish mumkin? kNN o'rniga ANN algoritmlaridan foydalanish kerak, misol uchun HNSW (Hierarchical navigable small world) indekslari. Eng katta trade off, 100% to'g'ri ma'lumot emas, balkim 99.5% - 99.9% foiz aniqlikda ma'lumotlarni topa olasiz. Xisoblash (Computing) hali ham qimmat xisoblanadi garchi ba'zilar buni hozir amal qilmaydigan ta'rif deyishsada. Agar ana katta kompaniyalar aytishayabdi desangiz, Cloud narxi nega tushmayabdi? Xullas tushundingiz menimcha.
PDF kabi xujjatlarni qanday qilib saqlaydi va ulardan qanday ma'lumot qidiradi deysizmi? Bu yerda ham shunday trade off qilinadi. Vector Quantization ya'ni rasmlarni sifatini tushurish degani, compression. High-precision floating point raqamlar saqlashdan ko'ra, ularni round qilib saqlaysiz simple cluster'larga.
Ba'zan alaqsirashga (hallucination) sabab "The Context Window Paradox" bo'ladi va uni "Lost in the Middle" muammosi deb ataymiz. Ya'ni "promptda ko'proq ma'lumot bersang, yaxshiroq natija olasan" degan gaplar noto'g'ri. Buni ko'pincha Attention modellar qanday ishlashini bilmaydiganlar aytadi. Chunki bu model diqqatini (attention) buzadi. Ya'ni prompt o'rtasiga borib model ma'lumotni yo'qotadi. Buning uchun "Re-ranking layer" yechimlari mavjud. Xullas LLMga berishdan oldin, vector db dan olingan ma'lumot bo'laklarni (chunk) cross-encoder'ga berasiz va re-rank qilingan top 3-5 tasini yuborasiz LLMga.
Bizda ham RAG qurayotganlar ko'payabdi, balkim foydasi tegar : )
Dropbox Dash jamoasi bilan 4 oy ishladim (Tour of Duty). Va RAG haqida va uni katta masshtabda yuritish (running at scale) haqida juda ko'p o'rgandim.
Agar RAG qurayotgan bo'lsangiz va write/read amallari soni juda ko'p bo'lsa siz qurayotgan RAG katta ehtimollik bilan kengaya olmaydi va juda ko'p alaqsiraydi (hallucination). Vector database kichik bo'lsa kNN qidiruvi ishlashi mumkin. Agar ma'lumot bo'laklar hajmi 80k-100k dan oshsa juda katta kechikish (latency) sodir bo'ladi. Sababi so'rov (query) va har bir vector o'rtasidagi masofani xisoblash qimmatlashib va og'irlashib ketadi.
Buni qanday yechish mumkin? kNN o'rniga ANN algoritmlaridan foydalanish kerak, misol uchun HNSW (Hierarchical navigable small world) indekslari. Eng katta trade off, 100% to'g'ri ma'lumot emas, balkim 99.5% - 99.9% foiz aniqlikda ma'lumotlarni topa olasiz. Xisoblash (Computing) hali ham qimmat xisoblanadi garchi ba'zilar buni hozir amal qilmaydigan ta'rif deyishsada. Agar ana katta kompaniyalar aytishayabdi desangiz, Cloud narxi nega tushmayabdi? Xullas tushundingiz menimcha.
PDF kabi xujjatlarni qanday qilib saqlaydi va ulardan qanday ma'lumot qidiradi deysizmi? Bu yerda ham shunday trade off qilinadi. Vector Quantization ya'ni rasmlarni sifatini tushurish degani, compression. High-precision floating point raqamlar saqlashdan ko'ra, ularni round qilib saqlaysiz simple cluster'larga.
Ba'zan alaqsirashga (hallucination) sabab "The Context Window Paradox" bo'ladi va uni "Lost in the Middle" muammosi deb ataymiz. Ya'ni "promptda ko'proq ma'lumot bersang, yaxshiroq natija olasan" degan gaplar noto'g'ri. Buni ko'pincha Attention modellar qanday ishlashini bilmaydiganlar aytadi. Chunki bu model diqqatini (attention) buzadi. Ya'ni prompt o'rtasiga borib model ma'lumotni yo'qotadi. Buning uchun "Re-ranking layer" yechimlari mavjud. Xullas LLMga berishdan oldin, vector db dan olingan ma'lumot bo'laklarni (chunk) cross-encoder'ga berasiz va re-rank qilingan top 3-5 tasini yuborasiz LLMga.
Bizda ham RAG qurayotganlar ko'payabdi, balkim foydasi tegar : )
LLM vs RLM
LLM qurish biz o‘ylaganchalik qiyin ish emas ekan. Uni mashq qildirish, unga sifatli ma’lumotlar topish, deploy qilish, monitoring qilish va h.k.z.lar qilish qiyin. Yaqinda Attention mexanizmi haqida yozgandim. Aynan o‘sha mexanizm kontekstni (context) boshqaradi. Kontekstni tushunish uchun u doim ortga qarab yuradi. Ya’ni model chapdan-o‘ngga qarab shunchaki o‘qib ketmaydi, balki ushbu gapdagi qaysi so‘z menga bu so‘zni yaxshiroq tushunishimga yordam beradi degan savol bilan yurish qiladi va so'zlar bilan aloqa xaritasi yasaydi, uni GPU'dagi VRAM (Video RAM)da KV Cache ga saqlaydi .
Nima uchun modellarda 128k - 256k ba’zan 1M context limit bor? Sababi oddiy matematika, Quadratic Complexity. Huddi tepada aytganimdek, agar ba’zimda 5 ta odam bo‘lsa, ular bir-birlari bilan oson gaplasha olishadi. Agar 100 ta odam bo‘lsa 100 000 ta kombinatsiya, 1 000 000 odam bo‘lsa ehheeeee. Undan tashqari VRAM buncha katta ma’lumotlar saqlashi qiyinlashib boradi.
LLM lar uchun har bir token (so‘z) boshqa token’larga qarashi kerak context da qolishi uchun. Matn hajmi ikki baravar oshsa, hisoblash (computational work) ishi ikki baravar emas, to‘rt baravar oshadi, insane.
Bu muammoni yechish uchun kodlarni indekslash kabi yechimlar chiqgan. Ammo ularni biznesi uzoqqa bormaydi deb o‘ylayman. Shaxsan o‘zim ishda RLM ya’ni Recursive Language Model qurish jarayonida qatnashib ko‘rdim. Large Language Modellardan farqi shundaki, u rekursiv o‘zini-o‘zi chaqira oladi, ammo nega? Context muammosini yechish uchun. Decomposer mexanizmi ya'ni LLM ortidagi "Divide-and-conquer" algoritmi.
LLM:
• katta prompt bersangiz, prompt o‘rtasiga yetganda boshini unutib qo‘yishi mumkin
• prompt dagi barcha narsaga diqqat (attention) qilmoqchi bo‘ladi
• Internal weight ga asoslanib ishlaydi (trainingdagi ma’lumotlar bilan)
RLM:
• Faqat kichik va kerakli parchaga (snippet) diqqat qiladi. Keyingi bo‘lakga o‘tish uchun recursion ishlatadi.
• Controller mexanizmi orqali katta topshiriqni kichik bo‘laklarga bo‘lib kerak paytda o‘zini-o‘zi chaqira oladi kerakli parcha bilan.
• 1M matn uchun "filter" yozib kerakli qismini o‘qiy oladi.
RLM bilan 10M context gacha bemalol chiqsa bo‘lar ekan. To‘liq test qilib production da yuritib ko‘rilmagan, ammo eksperiment sifatida qilingan ishni bo‘lishdim. Bu kompaniya siri emas, ochiq manba. Sirli tomonlar hozircha "miyada" 😅
LLM qurish biz o‘ylaganchalik qiyin ish emas ekan. Uni mashq qildirish, unga sifatli ma’lumotlar topish, deploy qilish, monitoring qilish va h.k.z.lar qilish qiyin. Yaqinda Attention mexanizmi haqida yozgandim. Aynan o‘sha mexanizm kontekstni (context) boshqaradi. Kontekstni tushunish uchun u doim ortga qarab yuradi. Ya’ni model chapdan-o‘ngga qarab shunchaki o‘qib ketmaydi, balki ushbu gapdagi qaysi so‘z menga bu so‘zni yaxshiroq tushunishimga yordam beradi degan savol bilan yurish qiladi va so'zlar bilan aloqa xaritasi yasaydi, uni GPU'dagi VRAM (Video RAM)da KV Cache ga saqlaydi .
Nima uchun modellarda 128k - 256k ba’zan 1M context limit bor? Sababi oddiy matematika, Quadratic Complexity. Huddi tepada aytganimdek, agar ba’zimda 5 ta odam bo‘lsa, ular bir-birlari bilan oson gaplasha olishadi. Agar 100 ta odam bo‘lsa 100 000 ta kombinatsiya, 1 000 000 odam bo‘lsa ehheeeee. Undan tashqari VRAM buncha katta ma’lumotlar saqlashi qiyinlashib boradi.
LLM lar uchun har bir token (so‘z) boshqa token’larga qarashi kerak context da qolishi uchun. Matn hajmi ikki baravar oshsa, hisoblash (computational work) ishi ikki baravar emas, to‘rt baravar oshadi, insane.
Bu muammoni yechish uchun kodlarni indekslash kabi yechimlar chiqgan. Ammo ularni biznesi uzoqqa bormaydi deb o‘ylayman. Shaxsan o‘zim ishda RLM ya’ni Recursive Language Model qurish jarayonida qatnashib ko‘rdim. Large Language Modellardan farqi shundaki, u rekursiv o‘zini-o‘zi chaqira oladi, ammo nega? Context muammosini yechish uchun. Decomposer mexanizmi ya'ni LLM ortidagi "Divide-and-conquer" algoritmi.
LLM:
• katta prompt bersangiz, prompt o‘rtasiga yetganda boshini unutib qo‘yishi mumkin
• prompt dagi barcha narsaga diqqat (attention) qilmoqchi bo‘ladi
• Internal weight ga asoslanib ishlaydi (trainingdagi ma’lumotlar bilan)
RLM:
• Faqat kichik va kerakli parchaga (snippet) diqqat qiladi. Keyingi bo‘lakga o‘tish uchun recursion ishlatadi.
• Controller mexanizmi orqali katta topshiriqni kichik bo‘laklarga bo‘lib kerak paytda o‘zini-o‘zi chaqira oladi kerakli parcha bilan.
• 1M matn uchun "filter" yozib kerakli qismini o‘qiy oladi.
RLM bilan 10M context gacha bemalol chiqsa bo‘lar ekan. To‘liq test qilib production da yuritib ko‘rilmagan, ammo eksperiment sifatida qilingan ishni bo‘lishdim. Bu kompaniya siri emas, ochiq manba. Sirli tomonlar hozircha "miyada" 😅
Sizga hech kim aytmagan sirni aytaman
Gigant kompaniyalarda sizga birinchi o’t yoqib, keyin o’chirishga ruxsat bor. Ammo hamma ishga kirganlar buni qilib bo’lmaydi deb, qandaydir yozilmagan qoidalarga amal qilishga harakat qilishadi )