Vyzkoušeli jsme malou AI Gemma 2 od Googlu. Mluví česky a spustíte ji i na PC s herní grafikou Ilustrace: AI DALL-E 3

Vyzkoušeli jsme malou AI Gemma 2 od Googlu. Mluví česky a spustíte ji i na PC s herní grafikou | Ilustrace: AI DALL-E 3

Sumarizace českého textu pomocí většího modelu Gemma 2 (27B) v Google AI Studio 

Sumarizace českého textu pomocí většího modelu Gemma 2 (27B) v Google AI Studio 

Generování českého textu se stejnými parametry

Generování českého textu se stejnými parametry

Quadro M4000 se právě pokouší zpracovat povel „Co je to pomeranč?“

Quadro M4000 se právě pokouší zpracovat povel „Co je to pomeranč?“

Spuštění zdrojového kódu. V boxu si vysvětlíme, co znamenají jednotlivé části promptu a odpovědi, která je ořezaná jen na 200 tokenů

Spuštění zdrojového kódu. V boxu si vysvětlíme, co znamenají jednotlivé části promptu a odpovědi, která je ořezaná jen na 200 tokenů

Analýza textu Skákal pes přes oves pomocí Gemma 9B v mém chatbotovém rozhraní

Analýza textu Skákal pes přes oves pomocí Gemma 9B v mém chatbotovém rozhraní

Tvorba štítků/klíčových slov z textu tohoto článku pomocí Gemma 9B

Tvorba štítků/klíčových slov z textu tohoto článku pomocí Gemma 9B

Co je to pomeranč?

Co je to pomeranč?

Sumarizace českého textu pomocí většího modelu Gemma 2 (27B) v Google AI Studio 
Generování českého textu se stejnými parametry
Quadro M4000 se právě pokouší zpracovat povel „Co je to pomeranč?“
Spuštění zdrojového kódu. V boxu si vysvětlíme, co znamenají jednotlivé části promptu a odpovědi, která je ořezaná jen na 200 tokenů
8
Fotogalerie

Vyzkoušeli jsme malou AI Gemma 2 od Googlu. Mluví česky a spustíte ji i na PC s herní grafikou

Google letos v zimě představil svoji novou rodinu menších jazykových modelů Gemma. Staví na stejné architektuře jako vlajková loď firmy Gemini, ale rozdíl spočívá v tom, že je mohou vývojáři rozjet nejen v cloudu Googlu, ale i na vlastní infrastruktuře.

V tomto směru je Gemma odpovědí třeba na Llamu, modely z rodiny Phi od Microsoftu a celý zástup dalších open-source modelů na internetu malé a střední velikosti.

Malá AI Gemma 2, která rozumí i česky

Google nedávno vypustil do světa novou verzi Gemma 2, která je k dispozici ve dvou velikostech 9B a 27B. Hodnoty udávají počet vnitřních parametrů neuronové sítě (v miliardách) a představují její naučenou složitost – komplexnost.

Zatímco malé modely mají nejvýše jednotky až nižší desítky miliard parametrů, velké jazykové modely, které pohánějí populární chatboty, mohou být až 1000× větší. Některé z nich čítají až biliony parametrů.

3c003971-268c-4543-b4d2-1d32ed790ef6
Sumarizace českého textu pomocí většího modelu Gemma 2 (27B) v Google AI Studio 

Z toho důvodu malé modely většinou spolehlivě komunikují jen v angličtině, protože se do nich další jazyky jednoduše nevejdou. Gemma 2 je ale jiná a i menší varianta 9B odpovídá kupodivu velmi slušně česky!

b3876314-8c32-4949-b97d-1af70cf7c8b6
Generování českého textu se stejnými parametry

Vyzkoušet si to můžete třeba ve webové aplikaci Google AI Studio pro testování SLM/LLM ze stáje Alphabetu.

Malá Gemma 2 na mém starém desktopu

No dobrá, v Google AI Studiu odpovídá 27B verze poměrně rychle a kvalitně, není ale divu, je už totiž dost velká a běží na výkonných akcelerátorech TPU v cloudu.

9a0ed3f8-c77d-4c17-a3b2-f7f4fbbda72d
Quadro M4000 se právě pokouší zpracovat povel „Co je to pomeranč?“

Co kdybych chtěl ale spustit Gemmu 2 na své staré mašině, kterou jsem odkoupil od kolegy Tomáše Holčíka? Kdysi dávno stříhala videa do našich pořadů, no a dnes je to můj hlavní vývojářský stroj.

Počítač je vyzbrojený starým Xeonem E5-1650 a grafikou v důchodovém věku Nvidia Quadro M4000. S dnešními kartami RTX nesnese vůbec srovnání, na technologické hrátky s CUDA a jednoduchou lokální AI to ale s trochou trpělivosti ještě stále stačí.

Python, Transformers a Hugging Face

S lokálním během Gemmy pomůže Python a knihovna Transformers od Hugging Face, které slouží jako skladiště a platforma pro open-source modely AI. Microsoft tu hostuje své malé modely Phi a Google konečně i Gemmu v hromadě variant

Já pro experiment použiji její nejmenší verzi 9B v modifikaci instruct, která je vhodná pro vedení dialogu, jak ho známe z chatbotů: gemma-2-9b-it. Na její kartě najdete vedle popisu a skladištěm se soubory také několik jednoduchých ukázek kódu.

Ukázka zdrojového kódu:


# Je třeba nainstalovat vše potřebné včetně ovladačů CUDA GPU atp. podle grafiky
# Viz huggingface.co/docs/transformers/index a huggingface.co/google/gemma-2-9b-it
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
import torch

# Model je dostupný až po potvrzení podmínek registrovaným uživatelem HuggingFace, a proto je k běhu třeba autorizační token
# Token si vygenerujete zde https://huggingface.co/settings/tokens
token = "hf_blablablamameradikubucizkablablabla" 


# Nastavení kvantizace/zjednodušení na 4bit
kvantizace = BitsAndBytesConfig(
    load_in_4bit=True, 
    bnb_4bit_compute_dtype=torch.float16
)

# Nastavení tokenizéru (překladače textu na numerické tokeny neuronové sítě a zpět)
# Nastavení velkého jayzkového modelu – automaticky se vše stáhne (cca 20 GB)
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-9b-it", token=token)
model = AutoModelForCausalLM.from_pretrained(
    "google/gemma-2-9b-it",
    quantization_config=kvantizace,
    token=token)

# LLM je nakonfigurovaný a zbytek kódu už můžeme volat třeba ve smyčce a posílat do LLM libovolné prompty

# Lidský prompt
prompt = "Co je to pomeranč?"

# Prompt obalený řídícími tokeny (viz box níže v článku)
prompt = f"<start_of_turn>user\n{prompt}<end_of_turn>\n<start_of_turn>model"

# Převedu text na tokeny, Používám CUDA/GPU
prompt_tokeny = tokenizer(prompt, return_tensors="pt").to("cuda")
# Pošlu tokeny do LLM a přikážu mu vygenerovat nejvýše 200 tokenů
vystupni_tokeny = model.generate(**prompt_tokeny, max_new_tokens=200)

# Přeložím vygenerované tokeny na text a zobrzím ho v příkazové řádce
print(tokenizer.decode(vystupni_tokeny[0]))

Ukázka si po spuštění si sama stáhne veškerá potřebná data modelu, který bude v této verzi zabírat na disku okolo 20 GB!

550098d8-4642-4e7a-a35f-feef98c490d7
Spuštění zdrojového kódu. V boxu si vysvětlíme, co znamenají jednotlivé části promptu a odpovědi, která je ořezaná jen na 200 tokenů

Úryvky kódu jsem si později upravil do podoby chatbota a na přiložených snímcích vidíte, že i 9B verze komunikuje docela obstojně česky.

A to přesto, že jsem do hry zapojil ještě tzv. 4bitovou kvantizaci (quantization), což je velmi jednoduše řečeno snížení bitového rozlišení modelu, aby nepotřeboval tolik paměti. 

2024-07-18 14 49 52.png
Analýza textu Skákal pes přes oves pomocí Gemma 9B v mém chatbotovém rozhraní
2024-07-18 15 02 29.png
Tvorba štítků/klíčových slov z textu tohoto článku pomocí Gemma 9B

Gemma 2 řeší na mém železe i ty nejstručnější povely desítky sekund a komplexní sumarizace tohoto článku mu trvala několik minut. Kdybych ale z mašiny udělal server, který bude tímto způsobem zpracovávat články dávkově třeba během noci, generovat z nich klíčová slova/štítky atp., ničemu by to nevadilo. Tedy až na ten pozdější nedoplatek za elektřinu...

Formát dialogu

Jazykové modely optimalizované pro chat pracují s nejrůznějšími šablonami pro vedení dialogu, aby jen hloupě nedoplňovaly nejpravděpodobnější text. V případě Gemmy to jsou slovíčka – systémové formátovací tokeny – user a model pro určení role a <start_of_turn> a <end_of_turn> pro řízení, kdo má právě teď slovo 

Takže kdybych se chtěl modelu gemma-2-9b-it zeptat, co je to pomeranč, mohu do něj poslat tento text:

<start_of_turn>user
Co je to pomeranč?<end_of_turn>
<start_of_turn>model

Model teď ví, že se ptáme na pomeranč a má doplnit text ve stylu dialogu, jak jej na něj v Googlu učili ve fázi, které říkáme instruction-tuning. Protože nám z neuronky vyskočí celý doplněný text uvedený ještě tokenem <bos>, díky řídícím slovíčkům můžeme najít a odstranit úvod a zobrazit jen čistou odpověď AI jako na obrázku níže.

1af5dcbc-c2aa-4cf5-a6bb-792a6772e02f
Co je to pomeranč?

Všimněte si zároveň, že odpověď končí uprostřed věty, modelu jsem totiž při konfiguraci nastavil, že má generovat nejvýše 200 tokenů (znaky/slabiky). Čím delší odpověď, tím složitější výpočet a požadavky na GPU.

Anebo Google Colab a hosting AI modelů

Pokud nemáte v garáži superpočítač, nabízí se (komerční) běh modelu přímo z cloudu Googlu. Teprve pak dosáhnete výkonu jako v testovací aplikaci AI Studio, kde je Gemma opravdu svižná jako blesk.

K dispozici je nakonec i sada interaktivních návodů v Pythonu, které spustíte ve službě Google Colab a projdete krok za krokem. Najdete v nich postupy, jak si s Gemmou povídat jako s chatbotem, jak ji přinutit sumarizovat text a jak ji přeučit na vlastních datech (tzv. fine-tuning) a nebývale ji zpřesnit.

Určitě si přečtěte

Články odjinud