11-bo‘lim
transformers kutubxonasi
pipeline bilan tez boshlash, Auto sinflari, model ichida nima borligi, kesh hajmi va tayyor modelning ishonchli xatosi.
Ushbu bo‘lim mundarijasi
8-bo'limda modelni noldan yozdik. Amalda esa hech kim shunday qilmaydi -
tayyor modellar olinadi. transformers kutubxonasi shu ish uchun.
pipeline - eng qisqa yo'l #
from transformers import pipeline
p = pipeline("sentiment-analysis",
model="distilbert-base-uncased-finetuned-sst-2-english")
for s in ["This tutorial is excellent!", "I did not like it at all."]:
r = p(s)[0]
print(f" {s:34s} -> {r['label']} ({r['score']:.4f})")
yuklandi: 27s
This tutorial is excellent! -> POSITIVE (0.9999)
I did not like it at all. -> NEGATIVE (0.9993)
Uch qator kod - va ishlaydigan tahlilchi. pipeline tokenizatorni,
modelni va natijani qayta ishlashni o'zi bajaradi.
Endi o'zbekchada #
for s in ["Bu darslik juda zo'r!", "Menga umuman yoqmadi."]:
r = p(s)[0]
print(f" {s:28s} -> {r['label']} ({r['score']:.4f})")
Bu darslik juda zo'r! -> NEGATIVE (0.9919)
Menga umuman yoqmadi. -> NEGATIVE (0.9942)
Birinchi jumla - ijobiy maqtov. Model uni salbiy dedi, ustiga 99.19% ishonch bilan.
Ikkinchisi tasodifan to'g'ri chiqdi - chunki model hamma narsani salbiy deyapti.
PyTorch darsligining 18-bo'limida «kalibrlanmagan model» haqida gapirgan edik. Mana uning eng toza namunasi.
Model xato qilganini bilmaydi. U 99% ishonch qaytaradi va sizning kodingiz o'sha songa qarab qaror qabul qiladi.
Agar bu do'kon sharhlarini saralaydigan tizim bo'lsa, barcha o'zbekcha maqtovlar shikoyat papkasiga tushardi - va hisobotda hech qanday ogohlantirish ko'rinmasdi.
Sababi oddiy: bu model faqat inglizcha sharhlarda o'qitilgan
(-uncased-finetuned-sst-2-english). Model nomining o'zi buni aytib
turibdi - nomni o'qing.
pipeline ichida nima bor #
from transformers import AutoTokenizer, AutoModelForSequenceClassification
nom = "distilbert-base-uncased-finetuned-sst-2-english"
tok = AutoTokenizer.from_pretrained(nom)
mdl = AutoModelForSequenceClassification.from_pretrained(nom)
mdl.eval()
print(" sinflar:", mdl.config.id2label)
enc = tok("This tutorial is excellent!", return_tensors="pt")
with torch.no_grad():
logit = mdl(**enc).logits
p_ = torch.softmax(logit, dim=-1)[0]
sinflar: {0: 'NEGATIVE', 1: 'POSITIVE'}
logitlar: [-4.262, 4.623]
ehtimollar: {'NEGATIVE': 0.0001, 'POSITIVE': 0.9999}
Tanish ko'rinadi. Bu PyTorch darsligining 19-bo'limidagi bashorat
funksiyasining o'zi: tokenizatsiya, eval(), no_grad(), model,
softmax.
Model logit qaytaradi - softmax ichida emas (PyTorch 6-bo'lim).
pipeline, qachon Autopipeline - tez sinash va oddiy holatlar uchun.
Auto sinflari - nazorat kerak bo'lganda: paketlash, no_grad,
qurilma tanlash, ehtimollarni o'zingiz qayta ishlash, fine-tuning.
Ishlab chiqarishda deyarli har doim Auto ishlatiladi.
AutoModel oilasi #
Bitta tayyor model turli masalalarga moslanadi. Buni bosh (head) belgilaydi:
| Sinf | Nima uchun |
|---|---|
AutoModel | Xom yashirin holat (embedding) |
AutoModelForSequenceClassification | Matn tasniflash |
AutoModelForTokenClassification | NER - har token uchun yorliq |
AutoModelForQuestionAnswering | Matndan javob topish |
AutoModelForMaskedLM | [MASK] to'ldirish |
AutoModelForCausalLM | Matn yozish |
Tana (transformer bloklari) bir xil - faqat oxirgi qatlam farq qiladi. Bu PyTorch darsligining 16-bo'limidagi transfer learning g'oyasining o'zi: backbone saqlanadi, bosh almashtiriladi.
base = AutoModel.from_pretrained("bert-base-multilingual-cased")
e = btok("Dasturlash qiziqarli", return_tensors="pt")
with torch.no_grad():
o = base(**e)
print(" last_hidden_state:", tuple(o.last_hidden_state.shape))
last_hidden_state: (1, 9, 768) <- har token uchun vektor
tokenlar: ['[CLS]', 'Das', '##tur', '##lash', 'q', '##izi', '##qa', '##rli', '[SEP]']
AutoModel boshsiz keladi: u har token uchun 768 o'lchamli vektor
beradi. 16-bo'limda aynan shu vektorlardan semantik qidiruv quramiz.
Modellar qayerda saqlanadi #
models--bert-base-multilingual-cased 1368 MB
models--distilbert-base-multilingual-cased 1039 MB
models--distilbert-base-uncased-finetuned-sst-2-engl 511 MB
models--gpt2 1051 MB
JAMI 5945 MB
Bu darslikda ishlatilgan bir necha model 6 GB joy egalladi. Fayllar
~/.cache/huggingface/hub da yotadi.
Modellar avtomatik yuklanadi va avtomatik o'chirilmaydi. Bir necha kun tajriba qilsangiz, kesh o'nlab gigabaytga yetadi.
Tozalash:
du -sh ~/.cache/huggingface/hub
rm -rf ~/.cache/huggingface/hub/models--kerak-emas-model
Boshqa joyga o'tkazish uchun HF_HOME muhit o'zgaruvchisini o'rnating.
Model nomlari ma'lumot beradi:
| Bo'lak | Ma'nosi |
|---|---|
base, large, small | Model o'lchami |
multilingual | Ko'p tilli (o'zbekcha uchun umid bor) |
uncased | Katta-kichik harf farqlanmaydi |
distil | Kichraytirilgan, tezroq variant |
finetuned-sst-2-english | Aniq masala va til |
Yuqoridagi xato aynan oxirgi qatorni o'qimaslikdan kelib chiqdi.
pipelinebilan inglizcha matn kayfiyatini aniqlang.- Xuddi shu modelga ijobiy o'zbekcha jumla berib, natijani yozing.
- Model ishonch darajasini ko'rib, xulosa chiqaring.
- Model nomidagi
englishbo'lagi nimani anglatishini tushuntiring. AutoTokenizervaAutoModelForSequenceClassificationbilan pipeline ni qo'lda takrorlang.id2labelni chop etib, sinflar tartibini aniqlang.- Logit va ehtimol farqini ko'rsating.
AutoModelbilan xom vektorlarni oling va shaklini izohlang.AutoModel*sinflaridan uchtasining vazifasini yozing.- Kesh papkasi hajmini o'lchab, keraksiz modelni o'chiring.
Xulosa #
pipelineuch qatorda ishlaydigan model beradi - tez sinash uchun qulay.- U tokenizatsiya, model va natijani qayta ishlashni o'zi bajaradi.
- Inglizcha model o'zbekcha maqtovni NEGATIVE (99.19%) deb baholadi.
- Bu kalibrlanmagan modelning namunasi: ishonchli, lekin xato.
- Sabab model nomida yozilgan edi:
finetuned-sst-2-english. Autosinflari nazorat beradi va ishlab chiqarishda shular ishlatiladi.- Model logit qaytaradi;
softmaxni o'zingiz qo'llaysiz. - Bitta tana turli boshlar bilan turli masalaga moslanadi.
AutoModelboshsiz keladi va har token uchun 768 o'lchamli vektor beradi.- Modellar keshda to'planadi - bizda bir necha model 6 GB egalladi.
Keyingi bo'limda tayyor modelni o'z ma'lumotimizga sozlashga tayyorlanamiz - ma'lumot to'plami va baholash mezoni bilan.
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.