Ve výzkumných pracích o modelech GIT bylo vysvětleno, že se používá silný kodér vidění a pro jazykový model jsou přijímány náhodné parametry. Tentokrát, protože cílem je nakonec použít jazykový model třídy 7B, bude na jazykový model aplikován předem vyškolený model. Následující moduly budou prověřeny pro doladění. The GIT projekce, který je inicializovaným modulem, je vždy zahrnut. Některé kombinace se mohou zdát nadbytečné, ale jsou zkoumány bez přílišného zájmu o tuto zkoušku.
Moduly nastavené pro trénování dostávají přechody, zatímco ostatní jsou upraveny tak, aby přechody neměly.
# Specifikace parametrů pro trénování (trénování všech by zvýšilo využití paměti)
pro jméno p v model.model.named_parameters():
if np.any([k v názvu pro k in keys_finetune]):
p.requires_grad = Pravda
jiný:
p.requires_grad = False
Vision Encoder a LLM používané pro toto vyšetření jsou:
- openai/clip-vit-base-patch16
- facebook/opt-350m
Školení využívá datovou sadu COCO a trvá 5 epoch.
Zde jsou cílové moduly vyškolené během každého experimentu:
- Proj: GIT projekce. Inicializováno náhodně, takže je vždy natrénováno.
- LoRA: Byly použity dotaz, klíč a hodnota vlastní pozornosti v jazykovém modelu.
- OPT: Všechny vrstvy byly vyškoleny.
- ViT: Všechny vrstvy byly vyškoleny.
- Hlava: Poslední lm_head OPT byl trénován.
(Poznámka: LoRA lze sice použít na ViT, ale aby nebyly experimenty příliš komplikované, tentokrát nebyla zahrnuta.)
Jak ukazuje graf ztrát při tréninku, je zřejmé, že některé skupiny nepodávají dobrý výkon. To byl případ, kdy je OPT zařazen do školení. Ačkoli byly všechny experimenty prováděny za poměrně podobných podmínek, při dolaďování jazykového modelu mohou být nutné podrobnější úpravy, jako je rychlost učení. Výsledky, s výjimkou modelů, kde je OPT zahrnuto do školení, budou zkoumány dále.
Ztráta při výcviku i ověřování se nejvíce snížila Projekce+LoRA Modelka. Finále dolaďování Hlava vrstva vykazovala téměř identické výsledky. Pokud je ViT také trénován, ztráta se zdá být o něco vyšší a výsledky se zdají být nestabilní. I při přidání LoRA během ViT tréninku bývá ztráta stále vysoká. Zdá se, že použití předtrénovaného modelu ViT bez aktualizace jeho parametrů pro jemné doladění s těmito daty přináší stabilnější výsledky. Účinnost LoRA byla potvrzena na různých místech a z tohoto experimentu je zřejmé, že přidání LoRA do LLM zlepšilo jak trénink, tak ztrátu validace.
Kontrola výsledků odvození některých testovacích dat:
Při samotném tréninku OPT jsou výsledky stejně špatné jako výsledek ztráty, takže model ztrácí slova. Navíc při trénování ViT dává výstup sémantický smysl, ale popisuje něco úplně jiného než daný obrázek. Zdá se však, že ostatní výsledky do určité míry zachycují rysy snímků. Například první obrázek zmiňuje „kočka“ a „banán“ a druhý identifikuje „dopravní značku“. Při porovnávání výsledků s a bez LoRA má LoRA tendenci opakovaně používat podobná slova, ale zdá se, že použití LoRA je o něco přirozenější. Školení Hlava výsledkem jsou zajímavé výstupy, jako je použití „hraní“ místo „jíst“ pro první obrázek. I když jsou v těchto výsledcích některé nepřirozené prvky, lze odvodit, že trénink byl úspěšný při zachycení obrazových prvků.
Pro jemné doladění podmínek v dřívějších experimentech byl použit o něco menší jazykový model OPT-350m. Nyní je záměrem změnit jazykový model na model 7B. Nejen spokojit se s OPT, ale také budou představeny silnější LLM, LLaMA a MPT.
Integraci těchto dvou modelů lze provést podobným způsobem jako OPT. S odkazem na dopředné funkce Model lamy a MPTModel, zkombinujte promítané obrazové vektory s textovými tokeny a změňte masku z Maska kauzální pozornosti na GIT's Attention Mask. Jedna věc k poznámce: pro MPT maska není (0, -inf), ale (False, True). Následné procesy lze implementovat podobně.
Chcete-li použít model třídy 7B s OPT, stačí změnit název modelu z facebook/opt-350m na facebook/opt-6.7b.
Pro LLaMA s dostupností LLaMA2 to bude model volby. Chcete-li použít tento předtrénovaný model, potřebujete schválení od Meta i Hugging Face. Pro Hugging Face je nutný účet, takže si ho nezapomeňte nastavit. Schválení obvykle přichází během několika hodin. Poté se přihlaste do Hugging Face na terminálu, kde probíhá školení.
přihlášení huggingface-cli
Můžete se přihlásit pomocí tokenu vytvořeného v účtu Hugging Face → Nastavení → Přístupový token.
Parametry školení zůstávají konzistentní, využívají datovou sadu COCO a trvají 3 epochy. Na základě výsledků experimentu 1 byly moduly nastavené pro jemné doladění Projekce + LoRA.
Pojďme se podívat na výsledky.
Při přezkoumání ztráty je zřejmé, že modely využívající LLaMA2 a MPT jako LLM vykazují uspokojivější snížení. Podívejme se také na výsledky odvození.
Co se týče prvního obrázku, u všech modelů se zdají výrazy přirozenější ve srovnání s OPT-350m. Neexistují žádné bizarní výrazy jako „banán s banánem“, které zdůrazňují sílu LLM. U druhého obrázku jsou stále nějaké potíže s frázemi jako „semafor“ nebo „budova“. U takto složitých obrázků může být potřeba zvážit upgrade modelu ViT.
Nakonec pojďme vyvodit závěry z obrázků, které se staly populárními u GPT-4.
Přestože se od používání LLM očekávaly plynulé reakce, výsledky jsou poměrně jednoduché. To může být proto, že model byl trénován pouze na COCO.
Vzhledem k ohromujícím výsledkům předchozího experimentu bylo rozhodnuto začlenit pro trénink jiná data než COCO. V současnosti používaný datový soubor M3IT je poměrně komplexní a dokáže zpracovat značné množství dat ve stejném formátu jako COCO.
Je určeno k použití dat z tohoto zdroje s výjimkou kategorií „čínština“ a „video“. Původně tréninkový datový soubor COCO obsahoval 566 747 kusů dat. Kombinací s dalšími zdroji se tento počet zvýšil na 1 361 650. I když se velikost zhruba zdvojnásobila, má se za to, že datový soubor získal vyšší kvalitu kvůli zvýšené rozmanitosti úkolů.
Zpracování více datových sad Pytorch lze snadno dosáhnout pomocí ConcatDataset.
seznam_datových_souborů = [
datasets.load_dataset("MMInstruction/M3IT", i) pro i v seznamu m3it_name_list
]
train_dataset = torch.utils.data.ConcatDataset([d["vlak"] pro d v seznamu datových sad])
Školení bylo prováděno po dobu 1 epochy a pro jemné doladění byl použit model LLaMA2 Projekce a LoRA, podobně jako v experimentu 2.
Vzhledem k tomu, že neexistuje žádná ztráta, kterou by bylo možné srovnávat s tímto časem, pojďme se rovnou ponořit do výsledků odvození.
Spolu s řešením jednoduchých problémů nyní model zvládá i složitější výzvy. Přidáním datových sad pro úkoly, které jsou složitější než jen titulky, se možnosti výrazně rozšířily. Dosažení této úrovně přesnosti s pouhou 1 epochou výcviku bylo překvapivé.
Pojďme to otestovat na následujícím příkladu obrázku. Vzhledem k větší rozmanitosti v souboru dat byl způsob, jakým byly otázky prezentovány, mírně upraven.
Zatímco popis „Umbrella“ byl stále zapojen, zdá se, že se to zlepšuje. Chcete-li se dále zlepšovat, je třeba zvýšit počet epoch školení, přidat více typů nebo objemů datových sad a využít výkonnější ViT nebo LLM. Nicméně je působivé, že takový model mohl být vyvinut za pouhých půl dne s ohledem na výpočetní a datové zdroje.
zanechte odpověď