﻿1
00:00:00,418 --> 00:00:03,251
(dramatic whoosh)

2
00:00:05,340 --> 00:00:08,460
- Why are fast tokenizers called fast?

3
00:00:08,460 --> 00:00:10,950
In this video, we'll see
exactly how much faster,

4
00:00:10,950 --> 00:00:13,800
also, so-called fast
organizers are compared

5
00:00:13,800 --> 00:00:15,153
to their slow counterparts.

6
00:00:16,200 --> 00:00:19,260
For this benchmark, we'll
use the GLUE MNLI dataset

7
00:00:19,260 --> 00:00:23,160
which contains 432,000 spells of text.

8
00:00:23,160 --> 00:00:25,890
We'll see how long it takes
for the fast and slow versions

9
00:00:25,890 --> 00:00:28,143
of a BERT tokenizer to process them all.

10
00:00:29,670 --> 00:00:31,380
We define our fast and
slow token organizer

11
00:00:31,380 --> 00:00:33,717
using the AutoTokenizer API.

12
00:00:33,717 --> 00:00:37,110
The fast tokenizer is a
default when available.

13
00:00:37,110 --> 00:00:40,443
So we pass along, use_fast=False
to define the slow one.

14
00:00:41,430 --> 00:00:43,530
In a notebook, we can time the execution

15
00:00:43,530 --> 00:00:46,800
of itself with a time
magic command, like this.

16
00:00:46,800 --> 00:00:49,350
Processing the whole data
set is four times faster

17
00:00:49,350 --> 00:00:50,970
with a fast tokenizer.

18
00:00:50,970 --> 00:00:54,000
That quicker indeed,
but not very impressive.

19
00:00:54,000 --> 00:00:55,380
This is because we passed along the texts

20
00:00:55,380 --> 00:00:57,240
to the tokenizer one at a time.

21
00:00:57,240 --> 00:00:59,730
This is a common mistake
to do with fast organizers

22
00:00:59,730 --> 00:01:02,550
which are backed by Rust,
and thus able to prioritize

23
00:01:02,550 --> 00:01:05,370
the tokenization of multiple texts.

24
00:01:05,370 --> 00:01:07,290
Passing them only one text at a time,

25
00:01:07,290 --> 00:01:09,720
is like sending a cargo
ship between two continents

26
00:01:09,720 --> 00:01:13,140
with just one container,
it's very inefficient.

27
00:01:13,140 --> 00:01:15,810
To unleash the full speed
of our fast tokenizers,

28
00:01:15,810 --> 00:01:18,840
we need to send them batches
of texts, which we can do

29
00:01:18,840 --> 00:01:21,423
with the batched=True
argument of the map method.

30
00:01:22,620 --> 00:01:25,950
Now those are impressive
results, so the fast tokenizer

31
00:01:25,950 --> 00:01:28,410
takes 12 second to process
the dataset that takes four

32
00:01:28,410 --> 00:01:30,093
minute to the slow tokenizer.

33
00:01:31,440 --> 00:01:33,510
Summarizing the results in this table,

34
00:01:33,510 --> 00:01:36,630
you can see why we have
called those tokenizers fast.

35
00:01:36,630 --> 00:01:38,760
And this is only for tokenizing texts.

36
00:01:38,760 --> 00:01:40,710
If you ever need to train a new tokenizer,

37
00:01:40,710 --> 00:01:42,523
they do this very quickly too.

