1-bo‘lim
PyTorch nima va u qayerdan paydo bo'ldi
Framework nima uchun kerak, PyTorch kim tomonidan va qanday sharoitda yaratilgani, dinamik graf g'oyasi va boshqa vositalar bilan farqi.
Ushbu bo‘lim mundarijasi
Oldingi darslikda siz neyron tarmoqni NumPy bilan noldan yozdingiz: oldinga tarqalish, yo'qotish funksiyasi, hosilalar va orqaga tarqalish - hammasi qo'lda. Bu eng yaxshi o'rganish usuli. Lekin haqiqiy loyihada hech kim shunday ishlamaydi.
Nima uchun framework kerak #
Qo'lda yozilgan tarmoqda har bir yangi qatlam uchun ikkita ish qilasiz: oldinga hisoblashni yozasiz va uning hosilasini chiqarasiz. Uchta qatlam uchun bu bajariladigan ish. O'ttiz qatlam uchun esa - deyarli imkonsiz.
| Vazifa | NumPy bilan qo'lda | PyTorch bilan |
|---|---|---|
| Yangi qatlam qo'shish | Oldinga + orqaga hisob yoziladi | Bitta qator |
| Hosilalarni topish | Qog'ozda chiqariladi | loss.backward() |
| Optimizatorni almashtirish | Qaytadan yoziladi | Adam o'rniga SGD |
| GPU da ishlatish | Deyarli imkonsiz | .to("cuda") |
| Tayyor modelni olish | Yo'q | Bir necha qator |
| Xatolikni topish | Hosilani qo'lda tekshirish | Ogohlantirish va xabarlar |
Framework sizdan matematikani yashirmaydi - u faqat takrorlanadigan qismini o'z zimmasiga oladi. Shuning uchun avval noldan yozib ko'rish, keyin frameworkka o'tish to'g'ri tartib.
Torch - Lua davri #
2010-yil atrofida. Shveytsariyaning Idiap tadqiqot institutida Ronan Collobert va hamkasblari Torch7 kutubxonasini yozdi. U kuchli edi, lekin bitta g'alati tomoni bor edi: u Lua tilida yozilardi.
Lua tez va yengil til, lekin ilmiy hisob-kitob dunyosida u begona edi - tadqiqotchilar Python va uning NumPy, SciPy, matplotlib ekotizimida ishlardi. Torch kuchli bo'lsa ham, uni ishlatish uchun butun boshqa tilni o'rganish kerak edi.
PyTorch qanday tug'ildi #
2015-2016-yillar. Soumith Chintala 2012-yildan beri Torch7 ustida ishlardi. U boshchiligidagi guruh Torch ning C dagi asosini Lua dan ajratish ustida ish boshladi - shunda uni boshqa tildan ham ishlatish mumkin bo'lardi.
O'sha paytda Adam Paszke degan talaba amaliyot izlab murojaat qildi. Unga taklif shunday bo'ldi: keling, Torch ning keyingi versiyasini zamonaviy dizayn bilan yozamiz.
2016-yil, sentabr. PyTorch chiqdi. Uning hammualliflari - Adam Paszke, Sam Gross, Soumith Chintala va Gregory Chanan.
Loyiha g'oyalarni bir necha manbadan oldi:
| Manba | Nima olindi |
|---|---|
| Torch7 (Lua) | Tenzor kutubxonasi va C dagi asos |
| Chainer | Define-by-run - dinamik hisoblash grafi |
| HIPS Autograd | Avtomatik differensiallash yondashuvi |
| NumPy | Tanish interfeys va Python ekotizimi |
Statik va dinamik graf #
Bu PyTorch ning eng muhim qarori edi va u butun sohani o'zgartirdi.
Amalda bu shuni bildiradi: PyTorch kodi ichida print() yozsangiz - u
ishlaydi. if yozsangiz - u har chaqiruvda boshqacha yo'l tanlashi mumkin.
Xato chiqsa - Python ning odatdagi xato izini ko'rasiz.
TensorFlow 2.0 (2019) dan keyin u ham sukut bo'yicha dinamik rejimda
ishlaydi, PyTorch esa torch.compile bilan statik optimallashtirishni
taklif qiladi.
Ya'ni ikkala vosita bir-biriga yaqinlashdi. Lekin 2016-2019 yillardagi bu farq PyTorch ni tadqiqot dunyosida yetakchi qildi va o'sha ustunlik bugun ham saqlanib qolgan.
Bugungi manzara #
| Vosita | Kim ishlatadi | Izoh |
|---|---|---|
| PyTorch | Tadqiqot va ishlab chiqarish | Maqolalar va ochiq modellarning katta qismi |
| TensorFlow / Keras | Ko'proq korxonalar | Mobil va ishlab chiqarish vositalari kuchli |
| JAX | Tadqiqot, katta modellar | Funksional uslub, tez, lekin murakkabroq |
| scikit-learn | Klassik ML | Neyron tarmoq uchun emas - oldingi darslikda |
Ochiq modellar (Hugging Face) va ilmiy maqolalar kodi ko'pincha aynan PyTorch da yoziladi - shuning uchun uni bilish boshqa odamlarning ishini o'qish imkonini beradi.
Darslikda nima quramiz #
Nima bilish kerak #
| Talab | Izoh |
|---|---|
| Python asoslari | Funksiya, sinf, sikl - Python darsligi |
| NumPy | Massiv va shakl (shape) tushunchasi |
| Neyron tarmoq mohiyati | Neyron tarmoqlar noldan |
| Hosila haqida tasavvur | Formulani chiqarish shart emas |
| GPU | Shart emas - hamma misol oddiy protsessorda ishlaydi |
Darslikdagi barcha misollar oddiy noutbukda, protsessorda ishlaydi. GPU faqat 9-bo'limda alohida mavzu sifatida ko'riladi.
Katta modelni o'qitmoqchi bo'lsangiz, Google Colab bepul GPU beradi - bu haqda ham o'sha bo'limda gaplashamiz.
- Framework nima uchun kerakligini uchta sabab bilan yozing.
- Torch nima uchun Lua da yozilgani va bu qanday muammo tug'dirganini tushuntiring.
- PyTorch qaysi yilda va kimlar tomonidan chiqarilganini yozib oling.
- Statik va dinamik grafning farqini o'z so'zingiz bilan ayting.
- Dinamik graf disk raskotni qanday osonlashtirishini bitta misol bilan ko'rsating.
- PyTorch, TensorFlow va JAX ni uchta mezon bo'yicha jadvalga soling.
- Hugging Face saytiga kirib, sevimli mavzuingizdagi bitta modelni toping.
- O'sha modelning kodi qaysi frameworkda yozilganini aniqlang.
- Oldingi darslikda o'zingiz yozgan tarmoqni eslang: unda qaysi qism eng ko'p vaqt olgan?
- Shu darslik oxirida qanday model qurmoqchi ekaningizni bir jumlada yozing.
Xulosa #
- Framework matematikani yashirmaydi - u takrorlanadigan qismni o'z zimmasiga oladi.
- Qo'lda yozilgan tarmoqda har yangi qatlam uchun hosilani ham yozish kerak; frameworkda yo'q.
- Torch7 (2010 atrofida, Idiap, Ronan Collobert va boshqalar) Lua tilida yozilgan edi.
- Lua ilmiy hisob dunyosida begona edi - Python ekotizimi kuchliroq bo'lgan.
- PyTorch 2016-yil sentabrda chiqdi; hammualliflari: Adam Paszke, Sam Gross, Soumith Chintala, Gregory Chanan.
- G'oyalar Torch7, Chainer (define-by-run), HIPS Autograd va NumPy dan olingan.
- Dinamik graf: hisoblash grafi kod ishlayotganda quriladi, shuning uchun
print()va debugger ishlaydi. - Bugun TensorFlow ham dinamik rejimda ishlaydi - farq kichraygan, lekin PyTorch tadqiqotda yetakchi bo'lib qoldi.
- Ochiq modellar va maqolalar kodi ko'pincha PyTorch da - bu boshqalarning ishini o'qish imkonini beradi.
- Darslikdagi hamma narsa oddiy protsessorda ishlaydi; GPU majburiy emas.
Keyingi bo'limda muhitni sozlaymiz va birinchi tenzorni yaratamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.