Green NLP: QuantizationGreen AI, Topic 2 · Universidade da Coruña
Contents

Start

Cátedra Inditex–UDC de Algoritmos Verdes

Microcredencial Algoritmos verdes para la IA: diseño e implementación

Green NLP: Quantization

Natural language processing · Topic 2 · Instructor: Olga Zamaraeva

CITIC, Universidade da CoruñaFunding
Before the activity

The task: answering questions about documents

documents
+ question
→
language
model
→
answer
→
right or wrong?
  • Input: a few short documents about green AI, and a question. The model must answer from the documents, in one short sentence.
  • Model: Qwen2.5-1.5B-Instruct, a small general-purpose language model
  • Score: an answer is right if it contains the reference answer as whole words, ignoring capital letters. Accuracy = right answers ÷ all questions.
  • Two runs: with the documents, and without them. What do the documents add to accuracy, and to energy?
questionWhat does the acronym PUE stand for?
referencepower usage effectiveness

The check is simple and cheap. It also misses right answers that use other words.

Activity · 60–75 minutes, individual

Notebook 01a: Baseline measurement

  • Answer questions about a small set of documents, measured with CodeCarbon: energy, CO₂eq and quality, as rows of your leaderboard
  • The same quiz with no documents: what does the model know on its own?

Notebook 01a, in Colab, with a GPU

  • In Colab: Runtime → Change runtime type → T4 GPU
  • Download leaderboard.csv at the end: the next notebooks add rows to it

The plan

The same tasks, the same model, one change

Baseline
baseline-fp16
16 bits per number
→
Quantized
gptq-int4 or bnb-int8-fallback
4 or 8 bits per number
  • The same documents, the same questions, the same scoring rule
  • The same model, Qwen2.5-1.5B-Instruct
  • One change: how many bits store each of the model's numbers. This is quantization.

Each run is one row of your leaderboard

qualityaccuracy: right answers ÷ questions
energykWh, measured by CodeCarbon
carbong CO₂eq, from that energy
timeseconds for the whole quiz
memorypeak GPU memory, GB (in the quantized rows only)

Step 1 · Weights are numbers

A model is a collection of numbers

token embeddingsattention: query, key, value tablesfeed-forward tables× 28 layersQwen2.5-1.5Bone corner of the first query table: 1,536 × 1,536 numbers0.0127−0.00870.00130.0025−0.0041−0.00030.0009−0.0025−0.01940.00500.0181−0.02540.00480.0192−0.0045−0.00090.01350.00560.00590.0483−0.00990.0138−0.00040.0005all the tables together: 1,543,714,304 numbersthese are the parameters, also called the weightsSet by training, then fixed. How is each number stored?

A computer stores every number as bits

Binary: the same place values as decimal, with powers of 2

1 1 0 1 2 8 4 2 1 worth = 1 × 8 + 1 × 4 + 0 × 2 + 1 × 1 = 8 + 4 + 0 + 1 = 13
  • A bit is 0 or 1
  • Each position is worth twice the one to its right: 1, 2, 4, 8, …
  • A model's parameters are numbers: billions of them, all stored as bits

Integers

1 bit012 values2 bits000110114 values3 bits0000010100111001011101118 valueseach extra bit doubles the values: 4 bits give 16, 8 bits give 256INT4−80716 whole numbersINT8−1280127256 whole numbersIntegers (INT): whole numbers, evenly spaced, one step apart

Can integers store the weights?

all the weights of Qwen2.5-1.5B's layers: how many have each value−0.15−0.1−0.0500.050.10.15the only whole number on this whole axis: 0−1 is far off to the left, +1 far off to the right99.8% of the weights lie between −0.1 and 0.1. As whole numbers, they would all be 0

What larger weights would do to attention

how much the word “is” attends to each word so farThecapitalofGaliciaisweights as trainedscores as trained21%43%36%query and key weights × 3scores × 983%17%query and key weights × 10scores × 100100%Larger weights make larger scores, and softmax then gives everything to one word
  • Real attention of Qwen2.5-1.5B, one head of the first layer, in “The capital of Galicia is Santiago de Compostela.”

A floating-point number has three parts

The IEEE 754 standard: sign, exponent, mantissa

sign exponent: 5 bits mantissa: 10 bits + or − the scale: × 2 to some power the detail: ½ + ¼ + … (added to 1)

value = sign × (1 + mantissa) × 2exponent − bias

  • FP16: a 16-bit floating-point number. FP32 uses 32 bits.
  • The next slides show where the 1 and the bias in this formula come from

Moving the point

worth8421½¼⅛.the number× a power of 21101.8 + 4 + 1 = 13× 1 = 131101.4 + 2 + ½ = 6.5× 2 = 131101.2 + 1 + ¼ = 3.25× 4 = 131101.1 + ½ + ⅛ = 1.625× 8 = 13Each move of the point to the left halves the number. The power of 2 doubles, and the result stays 13: × 1, × 2, × 4, × 8, which is 2⁰, 2¹, 2², 2³.
  • The place values continue past the point: each position is worth half the one to its left. The same happens in decimal: 13 = 1.3 × 10¹

Storing 13: the leading 1

13 in binary1101= 8 + 4 + 0 + 1Move the point1.101× 2³worth1½¼⅛the previous slide: 1.625 × 8The leading 1The point goes right after the first digit that is not 0. In decimal, that digit can be 1 to 9.In binary that digit is always 1 and need not be stored: one bit saved.

Storing 13: the bias

exponents needed−14−70+3+15−14−70+3+155 bits can hold01531cannot be stored818specialspecialSmall numbers need negative exponents: 0.01 = 1.28 × 2⁻⁷5 bits hold only 0 to 31: a negative exponent cannot be storedThe bias: add 15 to every exponent before storing itStored value = exponent + 15: −7 is stored as 8, +3 as 18worth168421smallest00000= 0largest11111= 16 + 8 + 4 + 2 + 1 = 3113 in FP160100101010000000+exponent: 3 + 15 = 18mantissa: the digits after the point, 101, then zerosCheck, decoding these 16 bits: (1 + ½ + ⅛) × 2¹⁸⁻¹⁵ = 1.625 × 8 = 13

Two exponent values are kept for special cases

what the 5 exponent bits can hold00000stored 000001 … 11110stored 1 to 3011111stored 31ordinary numbers: exponent −14 to +15stored like 13, with the leading 1no leading 1mantissa all 0: zerootherwise: the tiniestnumbers, down to 2⁻²⁴With a leading 1, zero would be impossible. One exponent value switches it offnot numbersmantissa all 0: infinityotherwise: NaN,“not a number”

One real weight in FP16

a real weight: the first number of the query table we saw0.01269531…= 1.625 × 2⁻⁷0010001010000000sign: +exponent: −7 + 15 = 8mantissa: 101, then zerosThe mantissa is the same as for 13: 1 + ½ + ⅛ = 1.625Only the exponent differs: 2³ for 13, 2⁻⁷ for this weightEvery one of the 1.5 billion weights is stored like this: 16 bits each

Floating point: fine steps for small numbers

An illustration with 4 bits and no bias: eemm2 exponent bits (FP16: 5)2 mantissa bits (FP16: 10)number = (1 + mantissa) × 2 to the power of the exponent1 + mantissa001011.25101.5111.75exponent 0: × 2⁰ = × 10000100011.2500101.500111.75neighbors: 0.25 apart0.25exponent 1: × 2¹ = × 20100201012.50110301113.5neighbors: 0.5 apart0.5exponent 2: × 2² = × 410004100151010610117neighbors: 1 apart1exponent 3: × 2³ = × 811008110110111012111114neighbors: 2 apart20124816Each row is the row above × 2. The gaps between neighbors double too: 0.25, 0.5, 1, 2

How fine are the steps in FP16?

the same short stretch of the number line, a length of 0.001, at three places: each mark is a number FP16 can storenear a weight0.01270.0137131 numbersnear 111.0012 numbersnear 1,0001,0001,000.0011 numberThe marks crowd together where the weights are: FP16 stores weights very finely

Formats side by side

10⁻⁴⁰10⁻³⁰10⁻²⁰10⁻¹⁰110¹⁰10²⁰10³⁰10⁴⁰the size of a number← smaller than 1larger than 1 →INT44 bits1 to 7INT88 bits1 to 127FP1616 bits6 × 10⁻⁸ to 65,504FP3232 bits10⁻⁴⁵ to 3.4 × 10³⁸BF1616 bits10⁻⁴⁰ to 3.4 × 10³⁸Qwen2.5-1.5B's weights: 97% lie between 0.001 and 0.1Other models differ in the details, but transformer weights are generally far below 1: training starts them near 0.FP16 covers such weights; INT8 and INT4 alone do not, because whole numbers start at 1.Exponent bits buy range: BF16 reaches as far as FP32 with half the bits.
  • A scale of sizes: each gridline is × 10¹⁰. 1 is in the middle, and 0 is not on it. Each float format stores the same sizes with a minus sign too
  • Mantissa bits buy precision, how close two numbers can be: every doubling holds 8,388,608 values in FP32, 1,024 in FP16, 128 in BF16
Interactive

Flip the bits

Step 2 · Quantization and memory

What quantization is

six real weights from the corner of the first query table, on the number linestored in 16 bits0.0127−0.00870.00130.0025−0.0041−0.0003rounded to steps of 0.002marks: the allowed values−0.012−0.010−0.008−0.006−0.004−0.00200.0020.0040.0060.0080.0100.0120.0140.016rounded to steps of 0.01marks: the allowed values−0.01000.010Quantization: store each weight with fewer bits, by rounding it to one of a few allowed valuesFewer allowed values need fewer bits. Each weight moves a little (the red lines): the coarser the steps, the more

Memory for the weights of our model

Qwen2.5-1.5B-Instruct: 1.5 billion parameters, from here on also called its weights (not the attention weights of Topic 1)

1.5 × 109​ parameters × 16 bits1parameter = 24 × 109​ bits × 1 byte8bits = 3 × 109​ bytes = 3 GB
6 GBFP32
32 bits
3 GBFP16
16 bits
1.5 GBINT8
8 bits
0.75 GBINT4
4 bits

The weights only. Running the model also needs memory for its intermediate values.

Try it · about 10 minutes

Which models fit on a 16 GB GPU?

The Python here runs in your browser. The first Run loads Python, which takes a few seconds.The same exercise as a notebook: beginner · advanced (Colab)

Replace each ___ with code. Run shows what your code prints. Run the tests also checks it and says what to fix.

Exercise 1 · Weight memory

Complete weight_memory_gb: memory in gigabytes = parameters × bits ÷ 8, divided by 109 bytes per GB. Then the loop checks 7B, 32B and 70B models in FP16, INT8 and INT4 against the 16 GB of a Colab T4. Ignore everything except the weights.

Hints
  • params_billion * 1e9 is the number of parameters.
  • Bits ÷ 8 gives bytes; bytes ÷ 1e9 gives gigabytes.
  • A model fits if its weights take less than the GPU's memory.

When quantization decides whether a model fits

Weight memory, against the 16 GB of a Colab T4

7B32B70B FP16 14 GB INT8 7 INT4 3.5 FP16 64 GB INT8 32 INT4 16 FP16 140 GB INT8 70 INT4 35 16 GB: the whole GPU
  • 7B: all three fit. FP16, 14 GB, leaves almost no room for anything else.
  • 32B: only INT4 comes close, and it takes the whole GPU: in practice it does not fit.
  • 70B: none fits. Even INT4 needs more than twice the GPU.
  • Past some size, quantization is the only way to run a model on given hardware; past a larger size, it is no longer enough.

What you gain and what you risk

Gain: the memory of the weights16 bits3 GB8 bits1.5 GB4 bits0.75 GBRisk: every weight moves a little0.0127→0.01−0.0087→−0.011.5 billion small changes: do the answers change?The question of this topic: how far can the bits go down before the quality suffers?

Step 3 · Absmax quantization

From weights to integer codes

the real weights−0.1500.15INT4 codes−7−6−5−4−3−2−10123456736% of the weights fall in this one strip, and all get the code 0: many values, one code
  • Each weight is replaced by the code of its strip. Stored: the small integers, plus one number to get back. This is why it is lossy: inside a strip, weights can no longer be told apart

Absmax quantization

weights x00.0009−0.0025−0.01940.00500.0181−0.0254−α+αα = max |x|= 0.0254codes−7−6−5−4−3−2−101234567s = 7 ÷ α= 275.6x × scode = round(x × s)back: code ÷ s. The red gaps are the error, at most half a step
  • Six real weights and INT4: the codes run to 7. With INT8 they run to 127, and the steps are 18 times finer. Zero stays exactly zero
Interactive

Fewer bits, fewer codes

Try it · about 15 minutes for both exercises

Absmax from scratch

The Python here runs in your browser, with NumPy. The first Run loads Python, which takes a few seconds.The same exercises as a notebook: beginner · advanced (Colab)

Replace each ___ with code. Do the exercises in order: the second one uses your first function.

Exercise 2 · Quantize and dequantize

Complete absmax_quantize and absmax_dequantize. qmax is the largest code of a signed bits-bit integer: 127 for 8 bits. alpha is the largest absolute value. The scale maps alpha to qmax. The cell should print the codes 64, 36, −89, 0, −22, −54, 127, 36, −23.

Hints
  • A signed bits-bit integer goes up to 2bits − 1 − 1.
  • np.abs(x) gives absolute values; np.max the largest one.
  • scale = qmax / alpha. Quantize: multiply by the scale, then round. Dequantize: divide by it.

Exercise 3 · Sweep the bit widths

Quantize the same values with 8, 4, 3 and 2 bits. For each, count the distinct codes the values use, and compute the mean and the largest absolute error.

Hints
  • set(q.tolist()) keeps each code once; len counts them.
  • The error of each value is values - dq; take np.abs of it first.

Step 4 · Choosing the range

Lopsided values: asymmetric quantization

An illustration, with values from −1 to 3

values−3−103β: smallest value, −1α: largest value, 3absmax−7−6−5−4−3−2−1012345675 codes never usedasymmetric0123456789101112131415every code in use. Here s = (α − β) ÷ 15 is the step between codes; in absmax, s was its inversethe value 0 lands on code 4: the zero point z, stored with the scale
  • Both rows use INT4 codes. Weights center on 0, and absmax suits them; one-sided values do not, like the outputs of ReLU, a common step inside networks that replaces every negative value with 0

One large weight stretches the range for all

most weights, zoomed in: −0.15 to 0.15−0.1500.15all the weights, up to the largest: 3.06, in layer 16's query table3.06−3.060INT4 codes−7−6−5−4−3−2−10123456799.99% of the weights get the code 0: one large weight has erased the others
  • Absmax on the real model with one scale for all its weights, in INT4
Interactive

Clip the range

Open the full page

Clipping: a narrower range

all the weights on one axis, cut at the // marks. The box is the range kept; the lines inside it separate the 15 codes−0.500.5−3.063.06the largest weight: 3.06error of a typical weight, for each rangethe range kept: ± this value0.030.10.313.06range ±3.06weights on code 0: 99.99%weights clipped: 0%error: 0.0288clipped: stored as 0.5range ±0.5weights on code 0: 81%weights clipped: under 0.001%error: 0.0190clipped: stored as 0.2range ±0.2weights on code 0: 44%weights clipped: 0.01%error: 0.0083clipped: stored as 0.1range ±0.1weights on code 0: 23%weights clipped: 0.43%error: 0.0049clipped: stored as 0.03range ±0.03weights on code 0: 7%weights clipped: 25.89%error: 0.0126Too wide: almost every weight on code 0. Too narrow: too many weights clipped. Smallest error near ±0.1
  • Real weights, INT4, one scale for all the weights. Error: the root mean squared difference between each weight and its stored value

Choosing the range is called calibration

  • Clipping trades one large error for many small ones
  • Calibration: choosing the range, often on a sample of real inputs
Calibration ruleThe range keeps…
percentileall values except the rarest extremes, e.g. the top 0.1%
mean squared errorthe one that makes the average squared error smallest
KL divergencethe one that keeps the shape of the values' histogram (how many values fall in each small interval) closest
input
×
weights
fixed after training
→
activations
new for every input
Post-training quantizationscale and zero pointtrade-off
dynamiccomputed during each runadapts to every input; extra work
staticfixed in advance, from calibration datafaster; needs representative data
Try it · about 20 minutes for both exercises

The zero point and clipping

These exercises use your absmax_quantize and absmax_dequantize from Exercise 2. Run that cell first.

Exercise 4 · Asymmetric quantization

Complete asymmetric_quantize and asymmetric_dequantize. The codes run from 0 to 2bits − 1. The scale is the width of the range divided by the number of steps: the step between two codes, so values are divided by it (absmax's scale was the inverse, codes per unit). The zero point is the code that stands for 0.0. The cell compares both methods on one-sided values, at 4 bits.

Hints
  • The width of the range is xmax - xmin.
  • Quantize: divide by the scale, then add the zero point.
  • Dequantize: subtract the zero point, then multiply by the scale.

Exercise 5 · Clip before quantizing

Complete quantize_with_clipping: limit every value to [−clip, clip], then quantize with absmax. The loop compares no clipping with three clipping ranges on the 24 ordinary values and the outlier.

Hints
  • np.clip(x, low, high) replaces values below low with low and above high with high.

Step 5 · Methods used in practice

GPTQ: round one weight, then correct the others

One output of a learned table: the dot product of two weights with the input x = (2, 1); weights rounded to steps of 0.25

y = w1​·2 + w2​·1 original: 0.37·2 + 0.52·1 = 0.74 + 0.52 = 1.26 round each weight on its own: 0.37 → 0.25, 0.52 → 0.50 0.25·2 + 0.50·1 = 0.50 + 0.50 = 1.00 error 0.26 GPTQ: round, then correct the next weight: w1​: 0.37 → 0.25 the output loses 0.12·2 = 0.24 w2​: 0.52 + 0.24 ÷ 1 = 0.76 → 0.75 0.25·2 + 0.75·1 = 0.50 + 0.75 = 1.25 error 0.01
  • The goal: keep the output (the dot product) close to the original
  • GPTQ rounds the weights one at a time; after each, it adjusts the weights not yet rounded to make up for the error
  • The adjustment is computed on a small set of real inputs, the calibration data
  • 4 bits per weight with little loss, without retraining

Frantar et al., “GPTQ: Accurate post-training quantization for generative pre-trained transformers,” ICLR 2023

Interactive

Watch GPTQ correct the next weight

GGUF: one scale per block of weights

three real blocks of 32 weights, from the row with the largest weightone scale for all: range ±3.06block 1block 2block 3one scale per block±0.50±3.06±0.29The cost: each block stores its scale too32 weights × 4 bits = 128 bits16scale144 bits ÷ 32 weights = 4.5 bits per weight
  • Tick marks: the codes. One large weight spoils the range only in its own block. The file format of llama.cpp, for running models on laptops and CPUs; type Q4_0 is shown
Interactive

One scale, or one per block

Quantization-aware training

Train with the rounding in place: the model learns to live with it

full-precision
weight
→
quantize
→
dequantize
→
forward pass
and loss
→
update the
full-precision weight
↺

Post-training quantization (PTQ)

  • Train in full precision, quantize at the end
  • Cheap: minutes to hours
  • The GPTQ checkpoint used here is PTQ

Quantization-aware training (QAT)

  • The forward pass already sees the rounding error
  • Usually more accurate at low precision
  • Expensive: it needs training

BitNet: weights of −1, 0 or +1

A dot product of inputs and weights, with ordinary weights and with ternary weights (three possible values); inputs (2, 5, 3)

inputs: 2, 5, 3 ordinary weights 0.4, −0.1, 0.9: 0.4·2 + (−0.1)·5 + 0.9·3 = 0.8 − 0.5 + 2.7 = 3.0 BitNet weights +1, −1, 0: (+1)·2 + (−1)·5 + 0·3 = 2 − 5 + 0 = −3 keep, flip the sign, skip: only additions
  • × +1: keep the input; × −1: flip its sign; × 0: skip it. No multiplication left, only additions.
  • Trained this way from the start, as in QAT
  • One weight is coarse; thousands of them together still give a fine range of sums

Ma et al., “The era of 1-bit LLMs: all large language models are in 1.58 bits,” 2024

Which method, when

MethodWhen it is usedCost
Absmax, zero point (PTQ)8 bits; the basic building block of every methodalmost none
Dynamic PTQactivations whose range changes a lot from input to inputextra work in every run
Static PTQfast inference, when representative calibration data existsa calibration run
GPTQ4 bits on a GPU, without retrainingcalibration, layer by layer
GGUF block formatsrunning models on laptops and CPUsone scale per block
QATthe best accuracy at low precision, when training is affordabletraining
BitNeta model designed for ternary weightstraining from scratch

Step 6 · Does it pay off?

What measurements show

Two recent studies, on very different hardware

Study and settingFinding
Shi & Ding (2025): 11 quantization methods, models of 7B to 70B parameters, A100 and H100 GPUsenergy efficiency up to 30% better (34B models)
waiting time (latency) of the slowest responses up to 70% shorter
code generation (HumanEval): share of generated programs that pass their tests, down by up to 92% for the 13B model; smaller models lose more quality
Husom et al. (2025): 28 quantized models, a Raspberry Pi 43- and 4-bit models used up to 79% less energy than 16-bit ones
for Qwen2.5 1.5B, our model: every 3-bit version used more energy per token than the 4-bit ones

Shi & Ding, “Systematic characterization of LLM quantization: a performance, energy, and quality perspective,” arXiv:2508.16712; Husom et al., “Sustainable LLM inference for edge AI,” ACM Transactions on Internet of Things 6(4), 2025, doi:10.1145/3767742

The hardware has to support the format

Peak throughput of the NVIDIA T4, the GPU in Colab, from its datasheet

FP328.1 TFLOPS
FP1665 TFLOPS
INT8130 TOPS
INT4260 TOPS

TFLOPS, TOPS: trillions of floating-point or integer operations per second

  • The T4 has special circuits, tensor cores, for 16-, 8- and 4-bit numbers
  • These are peak numbers: real runs are slower, and memory is often the limit
  • A format the hardware or the software cannot use directly is unpacked first: smaller, but not faster
Discussion · 10–15 minutes

Is quantization a free lunch?

When would quantization not be worth it? Think of:

  • hardware or software that cannot compute in the lower precision
  • too few bits for the task: code, arithmetic, rare words
  • a small model, already close to its quality limit
  • calibration data unlike the real inputs
  • a quality check too weak to notice what broke

Discuss with your neighbor, then with the room.

Your turn

What we run

The same model family, two ways to load it with fewer bits

config in the leaderboardwhat is loaded
baseline-fp16Notebook 01a: Qwen2.5-1.5B-Instruct, 16 bits
gptq-int4first try: Qwen/Qwen2.5-1.5B-Instruct-GPTQ-Int4, quantized by the Qwen team with GPTQ
bnb-int8-fallbackif GPTQ does not install: the 16-bit model, quantized to 8 bits as it loads, with the bitsandbytes library
  • The same layers, the same tokens (pieces of words), the same training: only the stored numbers change
  • The software that computes with them changes too: the configuration is recorded with every row
  • gptq-int4 and bnb-int8-fallback are two different configurations: compare like with like
Activity · 90–125 minutes, individual

Notebook 02a: Quantized measurement

  1. Upload your three CSV files: leaderboard.csv (Notebook 01a), mt_leaderboard.csv and mt_eval_leaderboard.csv (Notebook 01e); without them, the notebook starts new ones
  2. Load the quantized model: GPTQ first, then the fallback
  3. Run the same eight questions with CodeCarbon, and score them the same way
  4. Append a row to leaderboard.csv and compare it with your baseline
  5. Translate the Galician passage again; grade it with BLEU, BERTScore and two LLM judges

Notebook 02a, in Colab, with a GPU

  • In Colab: Runtime → Change runtime type → T4 GPU
  • After the install cell: Runtime → Restart session, once
  • Download the three CSV files again before you close Colab
Activity · about 40 minutes, if time allows

Notebook 02c: Where does quantization pay off?

  • Part A: peak GPU memory, quantized and 16-bit, for one question
  • Part B: memory as the batch grows from 1 to 128 questions at once
  • Part C: a 7B model on the same GPU, in 16 bits and in 4 bits: the chart from “When quantization decides whether a model fits”, measured

Notebook 02c, in Colab, with a GPU, after 02a

Share-out: what changed?

Compare your two rows

  • Which configuration loaded: gptq-int4 or bnb-int8-fallback?
  • Accuracy: the same as the baseline?
  • Energy and CO₂eq: lower, the same, higher?
  • Time? Peak memory (quantized rows only)?
  • The translation: did it change in a way a reader would notice?

Then compare with your neighbor

  • Same configuration, same numbers?
  • Run the quiz twice: how much do your own numbers vary between runs?

What comes next

Topics 2 and 3

Topic 2

  • A number is stored as bits; fewer bits, less memory
  • Quantization: scale, round, store the codes; the error is the price
  • The range decides the error: outliers, clipping, the zero point, blocks
  • Savings and losses depend on the model, the task and the hardware: measure them

Topic 3: retrieval

Topic 2
baseline
→
Topic 2
fewer bits
→
Topic 3
less text
  • The same 16-bit model, given only the relevant documents

Thank you for your attention

Cátedra Inditex–UDC de Algoritmos Verdes
catedrainditexalgoritmosverdes.com
Contents
0:00