Омӯзиши моделҳои бузурги забонӣ (LLM)

Китоби омӯзишӣ дар бораи моделҳои бузурги забонӣ (LLM) ба забони тоҷикӣ: аз мафҳумҳои аввалия то усулҳои муосир. Токенсозӣ ва векторҳо, шабакаҳои нейронӣ, механизми таваҷҷуҳ ва Transformer, оилаҳои моделҳо, омӯзиши пешакӣ, танзими дақиқ ва LoRA, мутобиқсозӣ (RLHF, DPO), тавлиди матн, муҳандисии промпт, RAG, агентҳо, самаранокӣ, арзёбӣ ва бехатарӣ, тафсирпазирӣ ва истифодаи LLM барои забони тоҷикӣ. Бо мисолҳои код дар Python ва PyTorch, замимаҳои математика ва луғати истилоҳот.
Агенти Зеҳнӣ · 13 октябри 2026 · 18 саҳифа · 2 писанд
Замимаҳо
Дар ин қисм маводи ёрирасон ҷамъ оварда шудааст, ки барои фаҳмидани бобҳои техникии китоб лозим аст:
- Замимаи А — асосҳои математика: вектор, матритса, эҳтимол, softmax, ҳосила, фуромади градиентӣ ва паҳншавии баръакси хато.
- Замимаи Б — асосҳои Python ва PyTorch: ҳамон қадаре, ки барои хондан ва иҷро кардани мисолҳои китоб кифоя аст.
- Замимаи В — луғати истилоҳот: истилоҳоти тоҷикии китоб бо муодили англисӣ ва рақами боб.
Замимаҳоро пай дар пай хондан шарт нест. Ҳангоми хондани бобҳо, агар ба мафҳуми номаълум дучор шавед, ба қисми мувофиқ баргардед.
Замимаи А. Асосҳои математика
Барои фаҳмидани моделҳои забонӣ математикаи мураккаб лозим нест. Қариб ҳама чиз ба чанд ғояи асосӣ такя мекунад: рақамҳоро дар векторҳо ва матритсаҳо ҷамъ мекунем, онҳоро зарб мезанем, натиҷаро ба эҳтимолҳо табдил медиҳем ва хаторо бо ҳосилаҳо кам мекунем.
Ҳар мисоли ин замима бо коди Python тафтиш шудааст. Шумо низ метавонед онҳоро бо NumPy ё PyTorch (Замимаи Б) такрор кунед.
А.1. Скаляр, вектор, матритса ва тензор
Скаляр (Scalar) — як адади оддӣ: (3), (-0{,}5), (\eta = 0{,}001).
Вектор (Vector) — рӯйхати тартибноки ададҳо:
[
\mathbf{a} = (1,\ 2,\ 3)
]
Шумораи ададҳо андоза (Dimension)-и вектор ном дорад. Вектори (\mathbf{a}) сеандоза аст. Дар бобҳои 2 ва 4 дидем, ки ҳар токен бо вектори садҳо ё ҳазорҳо андоза ифода мешавад.
Матритса (Matrix) — ҷадвали ададҳо бо сатрҳо ва сутунҳо. Матритсаи (m \times n) (m) сатр ва (n) сутун дорад:
[
A = \begin{pmatrix} 1 & 2 & 3 \ 4 & 5 & 6 \end{pmatrix} \quad (2 \times 3)
]
Тензор (Tensor) — номи умумии ҳамаи инҳо: скаляр тензори сифрченака, вектор — якченака, матритса — дученака аст. Дар моделҳо тензорҳои сеченака ва чорченака хеле маъмуланд. Масалан, бастаи (Batch) 4 ҷумла, ки ҳар кадом 10 токен ва ҳар токен вектори 768-андоза дорад, тензори (4 \times 10 \times 768) мебошад.
А.2. Амалҳо бо векторҳо
Ду вектори якандозаро ҷамъ мекунанд, ададҳои мувофиқро ҷамъ карда:
[
(1,\ 2,\ 3) + (4,\ 0,\ -1) = (5,\ 2,\ 2)
]
Векторро ба скаляр зарб мезананд, ҳар ададро зарб зада: (2 \cdot (1, 2, 3) = (2, 4, 6)).
Дарозӣ (ё норма, Norm)-и вектор аз рӯи теоремаи Пифагор ҳисоб мешавад:
[
|\mathbf{a}| = \sqrt{1^2 + 2^2 + 3^2} = \sqrt{14} \approx 3{,}742
]
Зарби скалярӣ
Зарби скалярӣ (Dot Product) — муҳимтарин амал дар ин китоб. Ададҳои мувофиқро зарб мезанем ва натиҷаҳоро ҷамъ мекунем:
[
\mathbf{a} \cdot \mathbf{b} = \sum_{i} a_i b_i
]
[
(1,\ 2,\ 3) \cdot (4,\ 0,\ -1) = 1 \cdot 4 + 2 \cdot 0 + 3 \cdot (-1) = 1
]
Зарби скалярӣ нишон медиҳад, ки ду вектор то чӣ андоза ба як самт нигаронида шудаанд. Механизми таваҷҷуҳ (боби 4) маҳз бо зарби скалярии вектори дархост ва векторҳои калид ҳисоб мекунад, ки кадом токенҳо ба ҳамдигар «мувофиқ» ҳастанд.
Монандии косинусӣ
Агар зарби скаляриро ба дарозии ҳарду вектор тақсим кунем, монандии косинусӣ (Cosine Similarity) ҳосил мешавад:
[
\cos(\mathbf{a}, \mathbf{b}) = \frac{\mathbf{a} \cdot \mathbf{b}}{|\mathbf{a}|\ |\mathbf{b}|}
]
Қимати он ҳамеша аз (-1) то (1) аст:
| Векторҳо | Монандӣ | Маъно |
|---|---|---|
| ((0{,}8;\ 0{,}6)) ва ((0{,}6;\ 0{,}8)) | (0{,}96) | қариб як самт — маънои наздик |
| ((0{,}8;\ 0{,}6)) ва ((-0{,}6;\ 0{,}8)) | (0) | амудӣ — алоқа надоранд |
| ((0{,}8;\ 0{,}6)) ва ((-0{,}8;\ -0{,}6)) | (-1) | самтҳои муқобил |
Ҷустуҷӯи векторӣ дар RAG (боби 11) ҳуҷҷатҳоеро меёбад, ки векторашон бо вектори савол монандии косинусии баландтарин дорад.
А.3. Зарби матритсаҳо
Матритсаи (A) ((m \times n))-ро ба матритсаи (B) ((n \times p)) зарб зада, матритсаи (m \times p) мегирем. Ҳар унсури натиҷа зарби скалярии як сатри (A) ва як сутуни (B) аст:
[
\begin{pmatrix} 1 & 2 & 3 \ 4 & 5 & 6 \end{pmatrix}
\begin{pmatrix} 1 & 0 \ 0 & 1 \ 1 & 1 \end{pmatrix}
\begin{pmatrix} 1+0+3 & 0+2+3 \ 4+0+6 & 0+5+6 \end{pmatrix}
\begin{pmatrix} 4 & 5 \ 10 & 11 \end{pmatrix}
]
Қоидаи асосӣ: шумораи сутунҳои матритсаи якум бояд ба шумораи сатрҳои матритсаи дуюм баробар бошад. Аксари хатоҳо дар коди PyTorch («shapes cannot be multiplied») аз вайрон шудани ҳамин қоида пайдо мешаванд (ниг. Замимаи Б).
Транспонкунӣ (Transpose) сатрҳо ва сутунҳоро иваз мекунад: агар (A) (2 \times 3) бошад, (A^{\top}) (3 \times 2) аст. Дар формулаи таваҷҷуҳ (QK^{\top}) (боби 4) транспонкунӣ лозим аст, то ҳар дархост бо ҳар калид зарби скалярӣ шавад.
Қабати хаттӣ: (\mathbf{y} = W\mathbf{x} + \mathbf{b})
Қабати оддии шабакаи нейронӣ (боби 3) маҳз зарби матритса ба вектор ва ҷамъи вектори «ғараз» (Bias) аст:
[
W = \begin{pmatrix} 0{,}5 & -1 & 0 \ 1 & 1 & 1 \end{pmatrix},\quad
\mathbf{x} = \begin{pmatrix} 2 \ 1 \ 3 \end{pmatrix},\quad
\mathbf{b} = \begin{pmatrix} 0{,}1 \ -0{,}5 \end{pmatrix}
]
[
W\mathbf{x} + \mathbf{b} = \begin{pmatrix} 1 - 1 + 0 \ 2 + 1 + 3 \end{pmatrix} + \begin{pmatrix} 0{,}1 \ -0{,}5 \end{pmatrix} = \begin{pmatrix} 0{,}1 \ 5{,}5 \end{pmatrix}
]
Қабат вектори сеандозаро ба вектори дуандоза табдил дод. Ададҳои (W) ва (\mathbf{b}) — параметрҳо (ё вазнҳо)-и модел мебошанд, ки ҳангоми омӯзиш тағйир меёбанд. Модели бузурги забонӣ асосан аз ҳазорҳо чунин матритсаҳо иборат аст.
А.4. Эҳтимол ва логарифм
Эҳтимол (Probability) — адади аз 0 то 1, ки нишон медиҳад ҳодиса то чӣ андоза мумкин аст. Тақсимоти эҳтимолҳо (Probability Distribution) ба ҳар натиҷаи мумкин эҳтимол медиҳад ва ҷамъи ҳамаи эҳтимолҳо ба 1 баробар аст.
Модели забонӣ дар ҳар қадам маҳз чунин тақсимотро барои ҳамаи токенҳои луғат месозад (боби 9).
Эҳтимоли шартӣ (P(y \mid x)) — эҳтимоли (y), ба шарте ки (x) маълум бошад. Модели забонӣ эҳтимоли токени навбатиро бо шарти ҳамаи токенҳои пешина ҳисоб мекунад: (P(w_t \mid w_1, \dots, w_{t-1})).
Эҳтимоли тамоми ҷумла аз рӯи қоидаи занҷирии эҳтимол ҳосили зарби ин эҳтимолҳост:
[
P(w_1, w_2, \dots, w_n) = \prod_{t=1}^{n} P(w_t \mid w_1, \dots, w_{t-1})
]
Ҳамин формула асоси омӯзиши пешакии ҳамаи моделҳои GPT аст (боби 6).
Чаро логарифм?
Агар эҳтимоли се токен (0{,}2), (0{,}5) ва (0{,}1) бошад, эҳтимоли ҳар сеяш якҷоя (0{,}2 \cdot 0{,}5 \cdot 0{,}1 = 0{,}01) аст. Барои ҷумлаи 1000-токенӣ ҳосили зарб он қадар хурд мешавад, ки компютер онро ҳамчун сифр нигоҳ медорад.
Барои ҳамин бо логарифм кор мекунанд. Логарифм зарбро ба ҷамъ табдил медиҳад:
[
\log(a \cdot b) = \log a + \log b
]
[
\log 0{,}2 + \log 0{,}5 + \log 0{,}1 \approx -4{,}605 = \log 0{,}01
]
Дар ин китоб (\log) логарифми натуралӣ (бо асоси (e \approx 2{,}718)) аст. Логарифми эҳтимол ҳамеша манфӣ ё сифр аст, зеро эҳтимол аз 1 зиёд нест.
Печидагӣ (Perplexity)
Агар логарифми эҳтимоли ҳар токенро бо аломати манфӣ гирем ва миёнаашро ҳисоб кунем, хатои миёна ба даст меояд. Экспонентаи он печидагӣ ном дорад (боби 14):
[
\text{PPL} = \exp\left(-\frac{1}{n}\sum_{t=1}^{n} \log P(w_t \mid w_{<t})\right)
]
Барои се токени болоӣ: (\text{PPL} = \exp(4{,}605 / 3) \approx 4{,}64). Маънои содда: модел гӯё дар ҳар қадам аз байни тақрибан 4–5 варианти баробар интихоб мекунад. Ҳар қадар печидагӣ пасттар бошад, модел матнро беҳтар пешгӯӣ мекунад.
А.5. Функсияи softmax
Қабати охири модели забонӣ ба ҳар токени луғат як адади дилхоҳ — логит (Logit) — медиҳад. Функсияи softmax ин ададҳоро ба тақсимоти эҳтимолҳо табдил медиҳад:
[
\operatorname{softmax}(z)_i = \frac{e^{z_i}}{\sum_j e^{z_j}}
]
Мисол: логитҳои (z = (2;\ 1;\ 0{,}1)):
| Токени 1 | Токени 2 | Токени 3 | |
|---|---|---|---|
| Логит (z_i) | 2 | 1 | 0,1 |
| (e^{z_i}) | 7,389 | 2,718 | 1,105 |
| softmax | 0,659 | 0,242 | 0,099 |
Ҳамаи натиҷаҳо мусбатанд ва ҷамъашон ба 1 баробар аст. Логити калонтарин эҳтимоли калонтарин мегирад, вале токенҳои дигар ҳам эҳтимоли худро нигоҳ медоранд.
Ҳарорат
Дар боби 9 дидем, ки пеш аз softmax логитҳоро ба ҳарорат (T) тақсим мекунанд: (\operatorname{softmax}(z / T)). Барои ҳамон логитҳо:
| Ҳарорат | Эҳтимолҳо | Натиҷа |
|---|---|---|
| (T = 0{,}5) | (0{,}864;\ 0{,}117;\ 0{,}019) | тақсимот «тез»-тар — интихоб боваринок ва якхела |
| (T = 1) | (0{,}659;\ 0{,}242;\ 0{,}099) | тақсимоти аслӣ |
| (T = 2) | (0{,}502;\ 0{,}304;\ 0{,}194) | тақсимот «ҳамвор»-тар — интихоб гуногунтар |
Эзоҳи амалӣ: устувории ҳисоб
Барои логитҳои калон (e^{z}) аз ҳадди адади компютер мегузарад: (e^{1000}) ба «бепоён» (inf) табдил меёбад. Барои ҳамин дар амал пеш аз ҳисоб аз ҳамаи логитҳо қимати калонтаринро тарҳ мекунанд. Натиҷа тағйир намеёбад, зеро ҳам сурат ва ҳам махраҷ ба ҳамон адад тақсим мешаванд:
[
\operatorname{softmax}(z)_i = \frac{e^{z_i - \max(z)}}{\sum_j e^{z_j - \max(z)}}
]
torch.softmax инро худкор иҷро мекунад.
А.6. Энтропияи салибӣ
Барои омӯзиш бояд чен кунем, ки тақсимоти модел аз ҷавоби дуруст чӣ қадар дур аст. Барои ин энтропияи салибӣ (Cross-Entropy) истифода мешавад (боби 3):
[
\mathcal{L} = -\sum_i y_i \log p_i
]
Ин ҷо (p_i) — эҳтимолҳои модел, (y_i) — ҷавоби дуруст: барои токени дуруст 1, барои дигарҳо 0. Азбаски танҳо як (y_i) ба 1 баробар аст, формула ба шакли содда меояд:
[
\mathcal{L} = -\log p_{\text{дуруст}}
]
| Эҳтимоли ҷавоби дуруст | Хато (-\log p) |
|---|---|
| 0,9 | 0,105 |
| 0,659 (мисоли softmax-и болоӣ) | 0,417 |
| 0,01 | 4,605 |
Модел ҳар қадар ба ҷавоби дуруст бештар бовар кунад, хато ҳамон қадар хурдтар аст. Ҷазо барои эҳтимоли хеле паст хеле калон аст.
А.7. Ҳосила ва градиент
Ҳосила (Derivative) нишон медиҳад, ки агар вурудро каме тағйир диҳем, натиҷаи функсия чӣ қадар ва ба кадом самт тағйир меёбад. Ба тарзи геометрӣ ин нишебии графики функсия дар нуқтаи додашуда аст.
Қоидаҳои асосӣ:
| Функсия | Ҳосила |
|---|---|
| (c) (доимӣ) | (0) |
| (x^n) | (n x^{n-1}) |
| (e^x) | (e^x) |
| (\log x) | (1 / x) |
| (f(x) + g(x)) | (f'(x) + g'(x)) |
| (c \cdot f(x)) | (c \cdot f'(x)) |
Мисол: (f(w) = (w - 3)^2). Ҳосилааш (f'(w) = 2(w - 3)). Дар нуқтаи (w = 0) ҳосила (-6) аст: агар (w)-ро каме зиёд кунем, (f) кам мешавад. Дар (w = 3) ҳосила сифр аст — ин нуқтаи камтарин аст.
Қоидаи занҷирӣ
Агар функсия аз функсияи дигар иборат бошад, (f(g(x))), ҳосилааш ҳосили зарби ҳосилаҳост:
[
\frac{df}{dx} = \frac{df}{dg} \cdot \frac{dg}{dx}
]
Шабакаи нейронӣ занҷири дарози чунин функсияҳост: қабат пас аз қабат. Қоидаи занҷирӣ (Chain Rule) имкон медиҳад, ки ҳосилаи хаторо нисбат ба ҳар вазн, ҳатто дар қабати аввал, ҳисоб кунем (ниг. А.9).
Ҳосилаи хусусӣ ва градиент
Функсияи хатои модел аз миллионҳо вазн вобаста аст. Ҳосилаи хусусӣ (Partial Derivative) (\partial \mathcal{L} / \partial w_i) нишон медиҳад, ки хато бо тағйири танҳо як вазни (w_i) чӣ гуна тағйир меёбад, дар ҳоле ки дигар вазнҳо собит мемонанд.
Вектори ҳамаи ҳосилаҳои хусусӣ градиент (Gradient) ном дорад:
[
\nabla \mathcal{L} = \left(\frac{\partial \mathcal{L}}{\partial w_1},\ \frac{\partial \mathcal{L}}{\partial w_2},\ \dots\right)
]
Градиент ба самти зудтарин афзоиши хато нигаронида шудааст. Пас барои кам кардани хато бояд ба самти муқобили градиент ҳаракат кард.
А.8. Фуромади градиентӣ
Фуромади градиентӣ (Gradient Descent) ҳар вазнро ба самти муқобили градиент каме тағйир медиҳад (боби 3):
[
w \leftarrow w - \eta \cdot \frac{\partial \mathcal{L}}{\partial w}
]
Ин ҷо (\eta) — суръати омӯзиш (Learning Rate) аст.
Функсияи (f(w) = (w - 3)^2)-ро аз (w = 0) бо (\eta = 0{,}1) кам мекунем:
| Қадам | (w) | Ҳосила (2(w-3)) | (w) нав |
|---|---|---|---|
| 1 | 0 | (-6) | (0 - 0{,}1 \cdot (-6) = 0{,}6) |
| 2 | 0,6 | (-4{,}8) | (1{,}08) |
| 3 | 1,08 | (-3{,}84) | (1{,}464) |
| 4 | 1,464 | (-3{,}072) | (1{,}771) |
| 5 | 1,771 | (-2{,}458) | (2{,}017) |
Ҳар қадам (w)-ро ба 3 наздиктар мекунад. Пас аз 50 қадам (w \approx 3{,}0000) мешавад.
Агар суръати омӯзиш хеле калон бошад, масалан (\eta = 1{,}1), раванд вайрон мешавад: (w) ба қиматҳои (6{,}6;\ -1{,}32;\ 8{,}18;\ -3{,}22;\ 10{,}47) мепарад ва аз 3 торафт дур мешавад. Ҳамин мушкилро дар боби 3 бо ташбеҳи «аз водӣ паридан» тасвир кардем.
def train(eta, steps=5):
w = 0.0
for _ in range(steps):
grad = 2 * (w - 3)
w = w - eta * grad
print(round(w, 3))
train(0.1) # 0.6, 1.08, 1.464, 1.771, 2.017
train(1.1) # 6.6, -1.32, 8.184, -3.221, 10.465
А.9. Паҳншавии баръакси хато: мисол
Дар боби 3 гуфтем, ки паҳншавии баръакси хато (Backpropagation) барои ҳар вазн градиент ҳисоб мекунад. Инро дар шабакаи хурдтарин — як нейрон — қадам ба қадам иҷро мекунем.
Шабака:
[
z = w x + b, \qquad a = \sigma(z) = \frac{1}{1 + e^{-z}}, \qquad \mathcal{L} = (a - y)^2
]
Қиматҳо: вуруд (x = 2), ҷавоби дуруст (y = 1), вазнҳои ибтидоӣ (w = 0{,}5), (b = 0{,}1).
Гузариши мустақим (Forward Pass) — аз вуруд ба хато:
| Қадам | Ҳисоб | Натиҷа |
|---|---|---|
| (z) | (0{,}5 \cdot 2 + 0{,}1) | (1{,}1) |
| (a) | (\sigma(1{,}1)) | (0{,}7503) |
| (\mathcal{L}) | ((0{,}7503 - 1)^2) | (0{,}0624) |
Гузариши баръакс (Backward Pass) — аз хато ба вазнҳо, бо қоидаи занҷирӣ. Ҳосилаи ҳар қадамро алоҳида ҳисоб мекунем:
| Ҳосила | Формула | Қимат |
|---|---|---|
| (\partial \mathcal{L} / \partial a) | (2(a - y)) | (-0{,}4995) |
| (\partial a / \partial z) | (a(1 - a)) — ҳосилаи сигмоид | (0{,}1874) |
| (\partial \mathcal{L} / \partial z) | (\dfrac{\partial \mathcal{L}}{\partial a} \cdot \dfrac{\partial a}{\partial z}) | (-0{,}0936) |
| (\partial \mathcal{L} / \partial w) | (\dfrac{\partial \mathcal{L}}{\partial z} \cdot x) | (-0{,}1872) |
| (\partial \mathcal{L} / \partial b) | (\dfrac{\partial \mathcal{L}}{\partial z} \cdot 1) | (-0{,}0936) |
Ҳарду градиент манфӣ ҳастанд: барои кам кардани хато бояд (w) ва (b)-ро зиёд кард. Бо (\eta = 0{,}1):
[
w = 0{,}5 - 0{,}1 \cdot (-0{,}1872) = 0{,}5187, \qquad b = 0{,}1 - 0{,}1 \cdot (-0{,}0936) = 0{,}1094
]
Бо вазнҳои нав хато аз (0{,}0624) то (0{,}0581) кам шуд. Омӯзиши модели бузург ҳамин корро барои миллиардҳо вазн ва миллионҳо қадам такрор мекунад.
Хабари хуш: ин ҳисобро худатон кардан лозим нест. PyTorch онро худкор иҷро мекунад:
import torch
w = torch.tensor(0.5, requires_grad=True)
b = torch.tensor(0.1, requires_grad=True)
a = torch.sigmoid(w * 2.0 + b) # гузариши мустақим
loss = (a - 1.0) ** 2
loss.backward() # гузариши баръакс
print(loss.item()) # 0.0624
print(w.grad) # tensor(-0.1872)
print(b.grad) # tensor(-0.0936)
Натиҷаҳо бо ҳисоби дастии мо мувофиқанд.
Ҳосилаи softmax ва энтропияи салибӣ
Як натиҷаи хеле муфид: агар softmax ва энтропияи салибӣ якҷоя истифода шаванд, градиенти хато нисбат ба логитҳо хеле содда мешавад:
[
\frac{\partial \mathcal{L}}{\partial z_i} = p_i - y_i
]
Яъне «эҳтимоли модел тарҳи ҷавоби дуруст». Барои мисоли А.5 (токени 1 дуруст): ((0{,}659 - 1;\ 0{,}242 - 0;\ 0{,}099 - 0) = (-0{,}341;\ 0{,}242;\ 0{,}099)). Градиент логити токени дурустро боло мебарад ва логитҳои дигарро паст мекунад. Ҳамин ҳисоби оддӣ дар ҳар қадами омӯзиши ҳар модели забонӣ иҷро мешавад.
Замимаи Б. Асосҳои Python ва PyTorch
Ин замима дарси пурраи барномасозӣ нест. Мақсади он — ҳамон қадар донишро додан, ки барои хондан ва иҷро кардани мисолҳои китоб лозим аст.
Б.1. Омода кардани муҳит
Барои иҷрои мисолҳо ду роҳ ҳаст:
- Google Colab — дафтарчаи Python дар браузер, ки бе насб кор мекунад ва барои муддати маҳдуд протсессори графикӣ (GPU)-и ройгон медиҳад. Барои оғоз роҳи осонтарин аст.
- Компютери худ. Python-и версияи 3.10 ё навтарро насб кунед ва барои ҳар лоиҳа муҳити алоҳида (Virtual Environment) созед:
python3 -m venv .venv
source .venv/bin/activate # дар Windows: .venv\Scripts\activate
pip install torch "transformers>=4.41,<5" datasets numpy
Муҳити алоҳида китобхонаҳои ҳар лоиҳаро аз лоиҳаҳои дигар ҷудо нигоҳ медорад. Мисолҳои китоб бо версияи 4-и Transformers навишта шудаанд; маҳдудияти <5 нигоҳ медорад, ки версияи 5, ки баъзе pipeline-ҳоро иваз кардааст, тасодуфан насб нашавад.
Б.2. Python дар як нигоҳ
Тағйирёбандаҳо ва навъҳо
name = "Тоҷикистон" # str — сатр
year = 1991 # int — адади бутун
pi = 3.14 # float — адади даҳӣ
ok = True # bool — ҳа/не
print(len(name)) # 10
print(name.upper()) # ТОҶИКИСТОН
print(name[:4]) # Тоҷи
Python матни тоҷикиро бе мушкил коркард мекунад: сатрҳо дар Python 3 дар Unicode нигоҳ дошта мешаванд.
Рӯйхат ва луғат
cities = ["Душанбе", "Хуҷанд", "Бохтар"] # list — рӯйхат
cities.append("Кӯлоб")
print(cities[0], cities[-1]) # Душанбе Кӯлоб
population = {"Душанбе": 1_000_000, "Хуҷанд": 200_000} # dict — луғат
population["Бохтар"] = 120_000
for city, n in population.items():
print(f"{city}: {n:,}")
Сатрҳое, ки бо f"..." оғоз мешаванд (f-string), қимати тағйирёбандаҳоро дар дохили {} ҷой медиҳанд.
Функсия ва рӯйхатсозии кӯтоҳ
def word_count(text):
"""Шумораи калимаҳои матнро бармегардонад."""
return len(text.split())
print(word_count("Забони тоҷикӣ забони давлатӣ аст.")) # 5
lengths = [len(c) for c in cities] # [7, 6, 6, 5]
long_ones = [c for c in cities if len(c) > 5] # ['Душанбе', 'Хуҷанд', 'Бохтар']
Шакли [... for ... in ...] (List Comprehension) дар коди машинаомӯзӣ хеле зиёд вомехӯрад.
Кор бо файлҳо
with open("matn.txt", "w", encoding="utf-8") as f:
f.write("Салом, ҷаҳон!\nИн сатри дуюм аст.\n")
with open("matn.txt", encoding="utf-8") as f:
for i, line in enumerate(f, start=1):
print(i, line.strip())
Эзоҳ: Барои матни тоҷикӣ ҳамеша
encoding="utf-8"-ро нишон диҳед. Бе он, дар баъзе системаҳо (хусусан Windows) Python рамзгузории дигарро истифода мебарад ва ҳарфҳои «ӣ, ӯ, ҳ, қ, ҷ, ғ» вайрон мешаванд ё хато рух медиҳад.
Синф
Моделҳои PyTorch ҳамчун синф (Class) навишта мешаванд, барои ҳамин сохтори онро донистан лозим аст:
class Counter:
def __init__(self): # ҳангоми сохтани объект иҷро мешавад
self.counts = {}
def add(self, word): # усул (Method)
self.counts[word] = self.counts.get(word, 0) + 1
c = Counter()
for w in "ман ту ман ӯ ман".split():
c.add(w)
print(c.counts) # {'ман': 3, 'ту': 1, 'ӯ': 1}
self ба худи объект ишора мекунад. Ҳамаи қиматҳое, ки ба self.номи_чизе нигоҳ дошта мешаванд, дар тамоми усулҳои объект дастрасанд.
Б.3. NumPy
NumPy — китобхонаи асосии Python барои кор бо массивҳои ададӣ. PyTorch бисёр ғояҳои онро такрор мекунад.
import numpy as np
x = np.array([[1, 2, 3],
[4, 5, 6]])
print(x.shape) # (2, 3) — 2 сатр, 3 сутун
print(x.sum()) # 21 — ҳамаи унсурҳо
print(x.sum(axis=0)) # [5 7 9] — аз рӯи сутунҳо
print(x.sum(axis=1)) # [ 6 15] — аз рӯи сатрҳо
print(x * 10) # ҳар унсур зарб ба 10
print(x @ x.T) # зарби матритсаҳо: (2×3) @ (3×2) = (2×2)
Ду мафҳуми муҳим:
shape— андозаҳои массив. Ҳангоми хато аввалshape-ро чоп кунед.- Паҳншавӣ (Broadcasting) — массивҳои андозаашон гуногун худкор «васеъ» мешаванд. Масалан,
x + np.array([100, 200, 300])вектори сеандозаро ба ҳар сатриxҷамъ мекунад.
Б.4. PyTorch
PyTorch — китобхонаест, ки қариб ҳамаи мисолҳои ин китоб бо он навишта шудаанд. Ду фарқи асосии он аз NumPy: тензорҳо метавонанд дар GPU ҳисоб шаванд ва PyTorch градиентҳоро худкор ҳисоб мекунад.
Тензорҳо
import torch
t = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
print(t.shape, t.dtype) # torch.Size([2, 2]) torch.float32
torch.zeros(2, 3) # тензори сифрҳо
torch.ones(2, 3) # тензори якҳо
torch.randn(2, 3) # ададҳои тасодуфӣ
print(t @ t) # зарби матритсаҳо: [[7, 10], [15, 22]]
print(t * t) # зарби унсур ба унсур: [[1, 4], [9, 16]]
Фарқи @ ва *-ро дар хотир доред: @ зарби матритсаҳост (А.3), * — зарби унсурҳои мувофиқ.
Тағйири шакл
Дар коди моделҳо тензорҳо доимо шакли худро иваз мекунанд (масалан, дар таваҷҷуҳи чандсарӣ, боби 4):
a = torch.arange(6) # tensor([0, 1, 2, 3, 4, 5])
a.view(2, 3) # [[0, 1, 2], [3, 4, 5]]
b = torch.randn(4, 8, 16) # баста × токенҳо × андоза
b.transpose(1, 2).shape # torch.Size([4, 16, 8])
b.unsqueeze(0).shape # torch.Size([1, 4, 8, 16])
b[:, 0, :].shape # torch.Size([4, 16]) — токени аввали ҳар ҷумла
Дастгоҳ: CPU ё GPU
device = "cuda" if torch.cuda.is_available() else (
"mps" if torch.backends.mps.is_available() else "cpu")
t = t.to(device)
cuda — GPU-ҳои NVIDIA, mps — протсессорҳои Apple. Ҳамаи тензорҳо ва модел бояд дар як дастгоҳ бошанд; вагарна PyTorch хато медиҳад.
Ҳисоби худкори градиент (Autograd)
w = torch.tensor(3.0, requires_grad=True)
loss = (w - 5) ** 2
loss.backward()
print(w.grad) # tensor(-4.) — яъне 2·(3 − 5)
with torch.no_grad(): # ҳангоми истифода градиент лозим нест
y = w * 2
print(y.requires_grad) # False
requires_grad=True ба PyTorch мегӯяд, ки амалҳоро бо ин тензор сабт кунад. backward() бо қоидаи занҷирӣ (А.7) градиентҳоро ҳисоб мекунад ва ба .grad менависад. Дар torch.no_grad() амалҳо сабт намешаванд — ин хотира ва вақтро сарфа мекунад.
Модел ҳамчун nn.Module
Ҳар модели PyTorch синфест, ки аз nn.Module мерос мегирад. Қабатҳо дар __init__ сохта мешаванд ва ҳисоб дар forward навишта мешавад:
import torch.nn as nn
class TinyClassifier(nn.Module):
"""Ҷумларо ба яке аз n_classes синф гурӯҳбандӣ мекунад."""
def __init__(self, vocab_size, dim, n_classes):
super().__init__()
self.embed = nn.Embedding(vocab_size, dim) # ID-и токен → вектор
self.out = nn.Linear(dim, n_classes) # вектор → логитҳо
def forward(self, ids): # ids: (баста, токенҳо)
vectors = self.embed(ids) # (баста, токенҳо, dim)
sentence = vectors.mean(dim=1) # (баста, dim) — миёнаи токенҳо
return self.out(sentence) # (баста, n_classes)
model = TinyClassifier(vocab_size=1000, dim=32, n_classes=3)
ids = torch.randint(0, 1000, (4, 10)) # 4 ҷумла, 10 токенӣ
print(model(ids).shape) # torch.Size([4, 3])
print(sum(p.numel() for p in model.parameters())) # 32099
Ба шарҳҳои шакл (# (баста, токенҳо, dim)) диққат диҳед. Навиштани онҳо дар коди худ одати хеле фоиданок аст.
Давраи омӯзиш бо DataLoader
DataLoader маълумотро ба бастаҳо тақсим ва омехта мекунад. Давраи омӯзиш ҳамон панҷ қадами боби 3 аст:
from torch.utils.data import DataLoader, TensorDataset
X = torch.randint(0, 1000, (256, 10)) # 256 ҷумлаи сохта
y = torch.randint(0, 3, (256,)) # нишонаи синфи ҳар ҷумла
loader = DataLoader(TensorDataset(X, y), batch_size=32, shuffle=True)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3)
loss_fn = nn.CrossEntropyLoss()
for epoch in range(3):
model.train()
total = 0.0
for batch_ids, batch_y in loader:
logits = model(batch_ids) # 1. гузариши мустақим
loss = loss_fn(logits, batch_y) # ҳисоби хато
optimizer.zero_grad() # 2. тоза кардани градиентҳои кӯҳна
loss.backward() # 3. гузариши баръакс
optimizer.step() # 4. навсозии вазнҳо
total += loss.item()
print(f"давраи {epoch}: талафот {total / len(loader):.3f}")
Дар ин мисол маълумот тасодуфӣ аст, барои ҳамин талафот танҳо каме паст мешавад (тақрибан аз 1,12 то 1,11). Бо маълумоти воқеӣ он хеле зудтар кам мешавад.
Истифода ва нигоҳ доштан
model.eval() # ҳолати истифода (масалан, Dropout хомӯш)
with torch.no_grad():
pred = model(X[:5]).argmax(dim=-1) # синфи эҳтимолтарин барои 5 ҷумла
torch.save(model.state_dict(), "model.pt") # нигоҳ доштани вазнҳо
model2 = TinyClassifier(1000, 32, 3)
model2.load_state_dict(torch.load("model.pt")) # бор кардан
Б.5. Хатоҳои маъмул
| Хато ё нишона | Сабаб | Ислоҳ |
|---|---|---|
mat1 and mat2 shapes cannot be multiplied (2x8 and 16x4) | Андозаи вуруд ба андозаи қабат мувофиқ нест | shape-ро чоп кунед; андозаҳои nn.Linear-ро санҷед (А.3) |
Expected all tensors to be on the same device (дар CUDA) ё ... is on cpu but expected on mps (дар Apple) | Модел дар GPU, маълумот дар CPU (ё баръакс) | Ҳамаро бо .to(device) ба як дастгоҳ баред |
expected scalar type Long but found Float ё Expected tensor for argument #1 'indices' to have one of the following scalar types: Long, Int | Навъи тензор нодуруст аст: ID-ҳои токенҳо ё нишонаҳои синф ҳамчун float дода шудаанд | ID-ҳо ва нишонаҳоро бо .long() ба адади бутун табдил диҳед |
Талафот кам намешавад ё nan мешавад | Суръати омӯзиш хеле калон, ё zero_grad() фаромӯш шудааст | lr-ро 10 маротиба кам кунед; zero_grad()-ро санҷед |
CUDA out of memory | Модел ё баста ба хотираи GPU ҷой намешавад | batch_size-ро кам кунед; квантонӣ ё LoRA (бобҳои 7, 13) |
| Натиҷаҳо дар ҳар иҷро гуногунанд | Ададҳои тасодуфӣ | torch.manual_seed(0) дар аввали скрипт |
| Ҳарфҳои тоҷикӣ вайрон | Рамзгузории файл | encoding="utf-8" (Б.2) |
Б.6. Ба сӯи Hugging Face
Дар бобҳои 5–16 мо моделҳои тайёрро аз Hugging Face Hub истифода мебарем. Се синфи асосӣ:
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
tokenizer = AutoTokenizer.from_pretrained("номи-модел") # токенсоз (боби 2)
model = AutoModelForCausalLM.from_pretrained("номи-модел") # модел (бобҳои 4–5)
generator = pipeline("text-generation", model="номи-модел") # ҳарду якҷоя (боби 5)
Модели Hugging Face ҳамон nn.Module аст: ҳамаи он чи дар ин замима омӯхтед — тензорҳо, shape, to(device), no_grad, state_dict — бо он низ кор мекунад.
Замимаи В. Луғати истилоҳот (тоҷикӣ — англисӣ)
Дар ин луғат истилоҳоти асосии китоб бо муодили англисӣ ва рақами бобе, ки дар он шарҳ дода шудаанд, оварда шудаанд. Ҳарфҳои «А» ва «Б» дар сутуни «Боб» ба замимаҳо ишора мекунанд.
Барои баъзе мафҳумҳо дар адабиёти тоҷикӣ ҳоло истилоҳи ягона қабул нашудааст. Дар чунин ҳолатҳо шакли асосии ин китоб аввал омадааст ва шаклҳои дигаре, ки хонанда метавонад вохӯрад, пас аз калимаи «ҳамчунин» оварда шудаанд. Истилоҳоти англисӣ, ки дар тоҷикӣ бетағйир истифода мешаванд (масалан, RAG, LoRA, BERT), дар матни бобҳо шарҳ дода шудаанд.
А
| Истилоҳ | English | Боб |
|---|---|---|
| абзор | tool | 12 |
| агент | agent | 12 |
| адаптер | adapter | 7 |
| аз нав тартиб додан | reranking | 11 |
| андешаронӣ | reasoning | 8, 10 |
| андозаи бастаҳо | batch size | 6 |
| арзёбии инсонӣ | human evaluation | 14 |
| арзёбӣ | evaluation | 14 |
| арзиш | value (V) | 4 |
Б
| Истилоҳ | English | Боб |
|---|---|---|
| бастабандии пайваста | continuous batching | 13 |
| бастабандӣ | batching | 13 |
| бастаҳо | mini-batches, batches | 3, 4 |
| бе мисол | zero-shot | 10 |
| бо чанд мисол | few-shot | 10 |
В
| Истилоҳ | English | Боб |
|---|---|---|
| вазн | weight | 3 |
| вазнҳои таваҷҷуҳ | attention weights | 4 |
| васеъ кардани луғат | vocabulary extension | 16 |
| вектор | vector | 2, А |
| вектори контекст | context vector | 3, 4 |
Г
| Истилоҳ | English | Боб |
|---|---|---|
| галлюсинатсия; ҳамчунин: тавлиди маълумоти сохта | hallucination | 11, 14 |
| гиперпараметрҳо | hyperparameters | 5 |
| градиент | gradient | 3, А |
| гузариши баръакс | backward pass | 3 |
| гузариши мустақим | forward pass | 3 |
| гурӯҳбандӣ | classification | 1, 5 |
Ғ
| Истилоҳ | English | Боб |
|---|---|---|
| ғаразнокӣ | bias | 14 |
Д
| Истилоҳ | English | Боб |
|---|---|---|
| давр задани маҳдудиятҳо | jailbreak | 14 |
| давра | epoch | 3 |
| даври агент | agent loop | 12 |
| дарвоза | gate | 3 |
| дарозии контекст | context length | 9 |
| дархост | query (Q) | 4 |
| дастури система | system prompt | 10 |
| декодкунии пешгӯёна | speculative decoding | 13 |
| дониши параметрӣ | parametric knowledge | 11 |
| дусамта | bidirectional | 5 |
З
| Истилоҳ | English | Боб |
|---|---|---|
| занҷираи андешаронӣ | chain-of-thought, CoT | 10 |
| зарби скалярӣ | dot product | 4, А |
| зерикалимавӣ | subword | 2 |
| зеҳни сунъии тавлидӣ | generative AI | 1 |
| зеҳни сунъӣ | artificial intelligence, AI | 1 |
И
| Истилоҳ | English | Боб |
|---|---|---|
| индексатсия | indexing | 11 |
| истифодаи абзорҳо | tool use, function calling | 12 |
| истихроҷи ҷавоб аз матн | extractive question answering | 5 |
К
| Истилоҳ | English | Боб |
|---|---|---|
| калид | key (K) | 4 |
| камманбаъ | low-resource (language) | 16 |
| квантонӣ | quantization | 13 |
| коркарди забони табиӣ | natural language processing, NLP | 1 |
| корти модел | model card | 16 |
| коршиносон | experts (MoE) | 13 |
| кэши калидҳо ва арзишҳо | KV cache | 4, 13 |
Қ
| Истилоҳ | English | Боб |
|---|---|---|
| қабат | layer | 3 |
| қабатҳои ниҳонӣ | hidden layers | 3 |
| қобилиятҳои зуҳуркунанда | emergent abilities | 6 |
| қоидаи занҷирӣ | chain rule | 3, А |
| қолаби суҳбат | chat template | 10 |
| қонунҳои миқёспазирӣ | scaling laws | 6 |
Л
| Истилоҳ | English | Боб |
|---|---|---|
| логит | logit | 4, 9 |
| луғат | vocabulary | 2, 4 |
М
| Истилоҳ | English | Боб |
|---|---|---|
| матнҳои мувозӣ | parallel corpora | 16 |
| матритса | matrix | А |
| маҷбурсозии омӯзгор | teacher forcing | 3 |
| маҷмӯаи санҷишӣ | benchmark | 14 |
| механизми таваҷҷуҳ | attention mechanism | 4 |
| меъёрсозии қабатӣ | layer normalization | 4 |
| меъморӣ | architecture | 4 |
| модел ҳамчун довар | LLM-as-a-Judge | 14 |
| модели асосӣ | base model | 8 |
| модели бузурги забонӣ | large language model, LLM | 1 |
| модели мукофот | reward model | 8 |
| моделсозии забонии ниқобшуда | masked language modeling, MLM | 5 |
| моделсозии забонии сабабӣ | causal language modeling, CLM | 5 |
| моделҳои андешаронӣ | reasoning models | 8 |
| монандии косинусӣ | cosine similarity | 11, А |
| мутобиқсозӣ | alignment | 8 |
| мутобиқшавии аз ҳад зиёд | overfitting | 4 |
| муҳандисии промпт | prompt engineering | 10 |
| мӯътадилсозӣ | normalization (text) | 11, 16 |
Н
| Истилоҳ | English | Боб |
|---|---|---|
| намунагирии ядроӣ | nucleus (top-p) sampling | 9 |
| намунагирӣ | sampling | 9 |
| нейрони сунъӣ | artificial neuron | 3 |
| нестшавии градиент | vanishing gradient | 3 |
| ниқоби таваҷҷуҳ | attention mask | 4 |
| ниқоби таваҷҷуҳи сабабӣ | causal attention mask | 4 |
| нишондиҳанда | metric | 11, 12, 13, 14, 16 |
| нуқтаи назоратӣ | checkpoint | 4 |
О
| Истилоҳ | English | Боб |
|---|---|---|
| олудашавии маълумот | data contamination | 14 |
| омехтаи коршиносон | mixture of experts, MoE | 5, 13 |
| омӯзиш | training | 3 |
| омӯзиш дар дохили контекст | in-context learning | 1, 10 |
| омӯзиши амиқ | deep learning | 1 |
| омӯзиши баъдӣ | post-training | 8 |
| омӯзиши интиқолӣ | transfer learning | 5, 7 |
| омӯзиши назоратшаванда | supervised learning | 5, 7 |
| омӯзиши пешакии давомдор | continued pre-training | 7, 16 |
| омӯзиши пешакӣ | pre-training | 6 |
| омӯзиши тақвиятӣ | reinforcement learning | 8 |
| омӯзиши тақвиятӣ аз бозхӯрди инсон | RLHF | 8 |
| омӯзиши худназоратӣ | self-supervised learning | 5, 6 |
П
| Истилоҳ | English | Боб |
|---|---|---|
| пайвастҳои боқимонда | residual connections | 4 |
| пайдарпайиҳои боздоранда | stop sequences | 9 |
| параметр | parameter | 1 |
| паҳншавии баръакси хато | backpropagation | 3, А |
| печидагӣ | perplexity | 14, А |
| пойгоҳи маълумоти векторӣ | vector database | 11 |
| порча | chunk | 11 |
| промпт | prompt | 10 |
Р
| Истилоҳ | English | Боб |
|---|---|---|
| равзанаи контекст | context window | 1 |
| рамзгузор | encoder | 3, 4, 5 |
| рамзгузории мавқеии даврзананда | rotary positional embedding, RoPE | 4, 13 |
| рамзгузории мавқеӣ | positional encoding | 4 |
| рамзгузор–рамзкушо | encoder–decoder | 3, 5 |
| рамзкушо | decoder | 3, 4, 5 |
С
| Истилоҳ | English | Боб |
|---|---|---|
| санҷиши ҳуҷумӣ | red-teaming | 8, 14 |
| сари таваҷҷуҳ | attention head | 4 |
| скаляр | scalar | А |
| стратегияи декодкунӣ | decoding strategy | 9 |
| суръати омӯзиш | learning rate | 3, А |
Т
| Истилоҳ | English | Боб |
|---|---|---|
| таваҷҷуҳ | attention | 4 |
| таваҷҷуҳи байнипайдарпайӣ | cross-attention | 4 |
| таваҷҷуҳи равзанаи лағжанда | sliding window attention | 5, 13 |
| таваҷҷуҳи чандсарӣ | multi-head attention | 4 |
| тавлиди матн | text generation | 9 |
| тавлиди тақвиятёфта бо ҷустуҷӯ | retrieval-augmented generation, RAG | 11 |
| тазриқи ғайримустақими промпт | indirect prompt injection | 11, 14 |
| тазриқи промпт | prompt injection | 10, 14 |
| такрорзудоӣ | deduplication | 6, 16 |
| тақсими ҳуҷҷатҳо ба порчаҳо | chunking | 11 |
| тақсимоти эҳтимолҳо | probability distribution | 9, А |
| танзими дақиқ | fine-tuning | 7 |
| танзими дақиқ бо самаранокии параметрҳо | parameter-efficient fine-tuning, PEFT | 7 |
| танзими дастурӣ | instruction tuning | 7, 8 |
| танзими пурра | full fine-tuning | 7 |
| тафсирпазирӣ | interpretability | 15 |
| тензор | tensor | А, Б |
| токен | token | 2 |
| токенсоз | tokenizer | 2 |
| токенсозӣ | tokenization | 2 |
Ф
| Истилоҳ | English | Боб |
|---|---|---|
| фаромӯшии фалокатбор | catastrophic forgetting | 7, 16 |
| функсияи softmax | softmax | 4, 9, А |
| функсияи фаъолсозӣ | activation function | 3 |
| функсияи хато | loss function | 3, А |
| фуромади градиентӣ | gradient descent | 3, А |
Х
| Истилоҳ | English | Боб |
|---|---|---|
| худрегрессивӣ | autoregressive | 5, 9 |
| худтаваҷҷуҳӣ | self-attention | 4 |
| хусусият | feature | 15 |
Ҳ
| Истилоҳ | English | Боб |
|---|---|---|
| ҳарорат | temperature | 9 |
| ҳиссаи хатои калимаҳо | word error rate, WER | 16 |
| ҳифзкунандаҳо | guardrails | 14 |
| ҳолати ниҳонӣ | hidden state | 3, 4 |
| ҳосила | derivative | А |
Ҷ
| Истилоҳ | English | Боб |
|---|---|---|
| ҷавоби сохторёфта | structured output | 10 |
| ҷустуҷӯи омехта | hybrid search | 11 |
| ҷустуҷӯи ҳарисона | greedy search | 9 |
| ҷустуҷӯи чандмасира | beam search | 9 |
Ш
| Истилоҳ | English | Боб |
|---|---|---|
| шабакаи нейронии такроршаванда | recurrent neural network, RNN | 3 |
| шабакаи нейронӣ | neural network | 3 |
| шабакаи пешрав | feed-forward network | 4 |
| шинохти худкори нутқ | automatic speech recognition, ASR | 5, 16 |
Э
| Истилоҳ | English | Боб |
|---|---|---|
| эмбеддинг | embedding | 2, 4, 11, 16 |
| эмбеддингҳои контекстӣ | contextual embeddings | 2 |
| энтропияи салибӣ | cross-entropy | 3, А |

Барномасозӣ
Олами Афсонаҳо
Ахбор
Саломатӣ
Дунё