\documentclass[tikz,border=8pt]{standalone} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{tikz} \usetikzlibrary{arrows.meta,backgrounds,positioning,shapes.geometric} \definecolor{slayerRed}{RGB}{190,42,38} \definecolor{ink}{RGB}{28,30,34} \definecolor{muted}{RGB}{93,98,108} \definecolor{panel}{RGB}{247,248,250} \definecolor{line}{RGB}{190,196,205} \tikzset{ box/.style={ draw=line, fill=panel, rounded corners=3pt, very thick, minimum width=3.2cm, minimum height=1.18cm, align=center, text=ink, font=\sffamily\small }, note/.style={ draw=slayerRed, fill=slayerRed!7, rounded corners=3pt, very thick, minimum width=11.4cm, minimum height=1.25cm, align=center, text=ink, font=\sffamily\small }, arrow/.style={-{Latex[length=3mm]}, very thick, draw=ink}, small/.style={font=\sffamily\footnotesize, text=muted, align=center} } \begin{document} \begin{tikzpicture}[node distance=1.05cm and 0.95cm] \node[box] (raw) {Polski korpus\\UTF-8 text}; \node[box, right=of raw] (bytes) {Byte-level\\pretokenizacja}; \node[box, right=of bytes] (pairs) {Statystyczne\\zliczanie par}; \node[box, right=of pairs] (merges) {BPE merges\\najczestsze pary}; \node[box, right=of merges] (vocab) {Vocab 32k\\token ids uint16}; \draw[arrow] (raw) -- (bytes); \draw[arrow] (bytes) -- (pairs); \draw[arrow] (pairs) -- (merges); \draw[arrow] (merges) -- (vocab); \node[note, below=1.05cm of pairs, xshift=2.05cm] (stat) { To nie jest tokenizer morfologiczny: brak reguł fleksyjnych, lematyzacji i słownika morfemów\\ To czysty tokenizer statystyczny: segmenty wynikają z częstości par w korpusie }; \draw[arrow, slayerRed] (pairs.south) -- ([xshift=-2.2cm]stat.north); \draw[arrow, slayerRed] (merges.south) -- (stat.north); \node[small, above=0.35cm of bytes] {diakrytyki sa zachowane jako bajty UTF-8}; \node[small, above=0.35cm of vocab] {model/ckpt.pt wymaga\\tokenizers/polish\_bpe\_32k.json}; \node[font=\sffamily\bfseries\large, text=ink, above=1.0cm of pairs] { Jak powstal tokenizer Slayer GPT: byte-level BPE, nie morfologia }; \begin{scope}[on background layer] \fill[white] ([xshift=-0.35cm,yshift=-0.35cm]current bounding box.south west) rectangle ([xshift=0.35cm,yshift=0.35cm]current bounding box.north east); \end{scope} \end{tikzpicture} \end{document}