ЁЯПл The SchoolтА║ЁЯза AIтА║ЁЯСА рдзрдбрд╛ 06 тАФ Attention рдЖрдгрд┐ transformers: рд╡рд░реНрдЧрд╛рдд рдЗрдХрдбреЗ-рддрд┐рдХрдбреЗ рдкрд╛рд╣рдгрд╛рд░реА рдореБрд▓реЗ
ЁЯЦ╝я╕П See the drawing + lab ЁЯПа Course home ЁЯМ┐ Branch on GitHub тЬПя╕П View source
ЁЯЦ╝я╕П рдЖрдХреГрддреА рдЖрдгрд┐ labThe drawing + lab рдкреВрд░реНрдг рдкрд╛рдирд╛рд╡рд░ рдЙрдШрдбрд╛ тЖЧOpen full page тЖЧ

ЁЯСА рдзрдбрд╛ 06 тАФ Attention рдЖрдгрд┐ transformers: рд╡рд░реНрдЧрд╛рдд рдЗрдХрдбреЗ-рддрд┐рдХрдбреЗ рдкрд╛рд╣рдгрд╛рд░реА рдореБрд▓реЗ

ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 06 ┬╖ рдорд╛рдЧреЗ: lesson-05-next-token ┬╖ рдкреБрдвреЗ: lesson-07-rlhf-lora


ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ

рдзрдбреЗ 01тАУ05, рдЖрдгрд┐ 2017 рдЪрд╛ рддреЛ рд╢реЛрдз рдЬреНрдпрд╛рд╡рд░ рд╕рдВрдкреВрд░реНрдг AI рдЪреА рд▓рд╛рдЯ рдЙрднреА рдЖрд╣реЗ: attention рдЖрдгрд┐ transformer. рдЦрд░реА file: demo/attention_toy.py тАФ рдЦрд░реЗ attention рдЧрдгрд┐рдд, 40 рдУрд│реА, рдХреЛрдгрддреАрд╣реА libraries рдирд╛рд╣реАрдд.

ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ

рд╣реЗ рд╡рд╛рдЪрд╛: "The robot dropped the ball because it was heavy." "it" рдореНрд╣рдгрдЬреЗ рдХрд╛рдп? рддреБрдореНрд╣реА рд╡реНрдпрд╛рдХрд░рдгрд╛рдЪреЗ рдкреБрд╕реНрддрдХ рдЙрдШрдбрд╛рдпрд▓рд╛ рдЧреЗрд▓рд╛ рдирд╛рд╣реАрдд тАФ рддреБрдордЪреЗ рдбреЛрд│реЗ рдорд╛рдЧреЗ рд╡рд│реВрди рдкрд╛рд╣рд┐рд▓реЗ ЁЯСА, рдЙрдореЗрджрд╡рд╛рд░рд╛рдВрдЪреЗ рд╡рдЬрди рдХреЗрд▓реЗ (robot? ball?), рдЖрдгрд┐ "heavy" рдиреЗ рдкрд╛рд░рдбреЗ рдЭреБрдХрд╡рд▓реЗ. рдХреНрд╖рдгрд╛рдд, рд╢рд╛рдВрддрдкрдгреЗ, рд╡рдЬрди рджреЗрдд рдкрд╛рд╣рдгреЗ.

Attention рдореНрд╣рдгрдЬреЗ рдиреЗрдордХреЗ рддреЗрдЪ, рдЧрдгрд┐рддрд╛рдЪреНрдпрд╛ рд░реВрдкрд╛рдд. model рдкреНрд░рддреНрдпреЗрдХ token рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛рдирд╛, рддреНрдпрд╛ token рд▓рд╛ context рдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рджреБрд╕рд▒реНрдпрд╛ token рдХрдбреЗ рдкрд╛рд╣реВрди рдард░рд╡рддрд╛ рдпреЗрддреЗ тАФ рд╢рд┐рдХрд▓реЗрд▓реНрдпрд╛ weights рд╕рд╣ тАФ рдЖрддреНрддрд╛ рдХреЛрдг рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ:

transformer = рдпрд╛ рдпреБрдХреНрддреАрднреЛрд╡рддреА рдмрд╛рдВрдзрд▓реЗрд▓реА рд░рдЪрдирд╛, рдЦреЛрд▓рд╡рд░ рд░рдЪрд▓реЗрд▓реА: рдкрд╛рд╣рд╛-рдЖрдгрд┐-рдорд┐рд╕рд│рд╛, рдордЧ рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛ (рдкреНрд░рддреНрдпреЗрдХ token рд╕рд╛рдареА рдЫреЛрдЯреЗ dial-network), ├ЧрдбрдЭрдирднрд░ рд╡реЗрд│рд╛ рдкреБрдиреНрд╣рд╛. рдЬреБрдиреНрдпрд╛ models рдкреЗрдХреНрд╖рд╛ рддреНрдпрд╛рдЪреА рдорд╣рд╛рд╢рдХреНрддреА: рд╕рдЧрд│реЗ tokens рдПрдХрд╛рдЪ рд╡реЗрд│реА attend рдХрд░рддрд╛рдд (RNNs рд╕рд╛рд░рдЦреЗ рдПрдХрд╛рдорд╛рдЧреВрди рдПрдХ рдирд╡реНрд╣реЗ) тАФ GPU parallelism рд╕рд╛рдареА рдкрд░рд┐рдкреВрд░реНрдг тЖТ рдЖрдкрдг рд╢реЗрд╡рдЯреА рд╕рдВрдкреВрд░реНрдг internet рд╡рд░ train рдХрд░реВ рд╢рдХрд▓реЛ. 2017 рдЪреНрдпрд╛ paper рдЪреЗ рд╢реАрд░реНрд╖рдХ рд╕рдЧрд│реЗ рд╕рд╛рдВрдЧреВрди рдЬрд╛рддреЗ: "Attention Is All You Need."

ЁЯЧ║я╕П рдЖрдХреГрддреА

flowchart TB
    s["'The robot dropped the ball because IT was heavy'"]
    subgraph att["ЁЯСА attention - for the token 'it'"]
        q["'it' asks: who am I about?"]
        w["learned weights:<br/>ball 69% ┬╖ heavy 16% ┬╖ robot 6%"]
        blend["blend: 'it' comes out<br/>BALL-flavored тЪ╜"]
        q --> w --> blend
    end
    subgraph tf["ЁЯПЧя╕П transformer = stack it deep"]
        l1["glance + think - layer 1"]
        l2["тАж ├Ч32 layers, ├Чmany heads,<br/>ALL tokens in parallel"]
        l1 --> l2
    end
    s --> att --> tf
    tf --> out["ЁЯУК next-piece scoreboard - lesson 05"]

тЭУ рдХрд╛рдп

ЁЯдФ рдХрд╛

"рдПрдХрд╛ рдкрд░рд┐рдЪреНрдЫреЗрджрднрд░ 'it' рдХрд╢рд╛рд▓рд╛ рдЙрджреНрджреЗрд╢реВрди рдЖрд╣реЗ рд╣реЗ рддреЗ рдХрд╕реЗ рдХрд╛рдп рдкрдХрдбреВ рд╢рдХрддреЗ?" рдпрд╛рдЪреЗ рд╣реЗ рдЙрддреНрддрд░ рдЖрд╣реЗ тАФ рдЖрдгрд┐ "2017 рдЪ рдХрд╛?" рдпрд╛рдЪреЗрд╣реА. рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА model рдЪреЗ specs рдРрдХрддрд╛ тАФ "32 layers, 96 heads, 128k context" тАФ рддреЗрд╡реНрд╣рд╛ рдЖрддрд╛ рддреБрдореНрд╣реА рдбреЛрд│реНрдпрд╛рд╕рдореЛрд░ рдЖрдгрддрд╛: рдкрд╛рд╣рдгреНрдпрд╛рдЪреНрдпрд╛ рдХрд┐рддреА рдлреЗрд▒реНрдпрд╛, рдХрд┐рддреА parallel рдирдЬрд░рд╛, рдбреЛрд│реЗ рдХрд┐рддреА рдорд╛рдЧреЗ рдкреЛрд╣реЛрдЪреВ рд╢рдХрддрд╛рдд.

ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛

python3 demo/attention_toy.py

рдЦрд░реЗ dot-products, рдЦрд░реЗ softmax, рд╣рд╛рддрд╛рдиреЗ рдмрдирд╡рд▓реЗрд▓реНрдпрд╛ рдЬрд╛рдЧрд╛: it рдиреЗ 69% рдиреЗ ball рдирд┐рд╡рдбрддрд╛рдирд╛ рдкрд╛рд╣рд╛ тАФ рдЬрдб рд╡рд╕реНрддреВ. рдордЧ it рд▓рд╛ robot-рдЖрдХрд╛рд░рд╛рдЪрд╛ рдХрд░рд╛ ([0.5, 0.6, 0.1, 0.1], рдЬрдгреВ рд╡рд╛рдХреНрдп "тАжbecause it was tired" рдиреЗ рд╕рдВрдкрд▓реЗ) рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рдЪрд╛рд▓рд╡рд╛ тАФ рдирдЬрд░ robot рдХрдбреЗ рд╡рд│рддрд╛рдирд╛ рдкрд╛рд╣рд╛. training рд▓рд╛рд▓ рдкреЗрдирдиреЗ рдЬреЗ рдХрд░рддреЗ рддреЗ рддреБрдореНрд╣реА рдЖрддреНрддрд╛ рдХреЗрд▓реЗ: рдПрдХ рдЬрд╛рдЧрд╛ рд╣рд▓рд╡рд▓реА, рдПрдХ рдордд рдмрджрд▓рд▓реЗ.

тПня╕П рдкреБрдвреЗ

рдЖрддрд╛ рдЖрдкрдг рд╕рдВрдкреВрд░реНрдг рдЧреНрд░рдВрдерд╛рд▓рдп рд╡рд╛рдЪрд▓реЗрд▓реЗ рдПрдХ рднрд╡реНрдп autocomplete рдмрдирд╡реВ рд╢рдХрддреЛ. рдПрдХ рдЕрдбрдЪрдг: рддреЗ рдкреВрд░реНрдг рдХрд░рддреЗ тАФ рддреЗ рдиреАрдЯ рд╡рд╛рдЧрдд рдирд╛рд╣реА. рдХрдЪреНрдЪрд╛ model тЖТ рдорджрдд рдХрд░рдгрд╛рд░рд╛ assistant: fine-tuning, RLHF рдЖрдгрд┐ LoRA.

git checkout lesson-07-rlhf-lora

ЁЯСА Lesson 06 тАФ Attention & transformers: kids glancing around the class

ЁЯУН You are here: Lesson 06 of 12 ┬╖ Previous: lesson-05-next-token ┬╖ Next: lesson-07-rlhf-lora


ЁЯУж What's in this branch

Lessons 01тАУ05, plus the 2017 invention the whole AI boom stands on: attention and the transformer. Real file: demo/attention_toy.py тАФ real attention math, 40 lines, no libraries.

ЁЯзТ Explain like I'm 5

Read this: "The robot dropped the ball because it was heavy." What's "it"? You didn't go ask a grammar book тАФ your eyes glanced back ЁЯСА, weighed the candidates (robot? ball?), and "heavy" tipped the scales. Instant, silent, weighted glancing.

Attention is exactly that, as math. When the model processes each token, that token gets to look at every other token in the context and decide тАФ with learned weights тАФ who matters right now:

The transformer = the architecture built around this trick, stacked deep: glance-and-blend, then think (a small dial-network per token), repeat ├Чdozens. Its superpower vs older models: all tokens attend at once (not one-by-one like RNNs) тАФ perfect for GPU parallelism тЖТ we could finally train on the whole internet. The 2017 paper's title says everything: "Attention Is All You Need."

ЁЯЧ║я╕П Diagram

flowchart TB
    s["'The robot dropped the ball because IT was heavy'"]
    subgraph att["ЁЯСА attention - for the token 'it'"]
        q["'it' asks: who am I about?"]
        w["learned weights:<br/>ball 69% ┬╖ heavy 16% ┬╖ robot 6%"]
        blend["blend: 'it' comes out<br/>BALL-flavored тЪ╜"]
        q --> w --> blend
    end
    subgraph tf["ЁЯПЧя╕П transformer = stack it deep"]
        l1["glance + think - layer 1"]
        l2["тАж ├Ч32 layers, ├Чmany heads,<br/>ALL tokens in parallel"]
        l1 --> l2
    end
    s --> att --> tf
    tf --> out["ЁЯУК next-piece scoreboard - lesson 05"]

тЭУ What

ЁЯдФ Why

This is the "how can it possibly track what 'it' refers to across a paragraph?" answer тАФ and the "why 2017?" answer. When you hear model specs тАФ "32 layers, 96 heads, 128k context" тАФ you now picture: how many glance-rounds, how many parallel glances, how far back eyes can reach.

ЁЯзк Try it

python3 demo/attention_toy.py

Real dot-products, real softmax, hand-made seats: watch it choose ball at 69% тАФ the heavy thing. Then make it robot-shaped ([0.5, 0.6, 0.1, 0.1], as if the sentence ended "тАжbecause it was tired") and rerun тАФ watch the glance flip to robot. You just did what training does with the red pen: moved a seat, changed a mind.

тПня╕П Next

We can now build a magnificent autocomplete that read the whole library. One problem: it completes тАФ it doesn't behave. Raw model тЖТ helpful assistant: fine-tuning, RLHF and LoRA.

git checkout lesson-07-rlhf-lora
тЖР Previousnext tokenNext тЖТrlhf lora

This page is the lesson's README from the lesson-06-attention branch, shown here so the whole School stays on one site. Code files open on GitHub at the same branch.