Dnes generativní modely umělé inteligence pokrývají různé úkoly od sumarizace textu, otázek a odpovědí až po generování obrázků a videí. Ke zlepšení kvality výstupu se používají přístupy jako n-short learning, Prompt engineering, Retrieval Augmented Generation (RAG) a jemné ladění. Jemné ladění vám umožňuje upravit tyto generativní modely umělé inteligence, abyste dosáhli lepšího výkonu při úkolech specifických pro vaši doménu.
S Amazon SageMaker nyní můžete spustit výukovou úlohu SageMaker jednoduše tím, že označíte svůj Python kód pomocí @remote decorator. The SageMaker Python SDK automaticky přeloží vaše stávající prostředí pracovního prostoru a jakýkoli související kód pro zpracování dat a datové sady do školicí úlohy SageMaker, která běží na školicí platformě. To má výhodu v tom, že kód píšete přirozenějším, objektově orientovaným způsobem a stále využívá schopnosti SageMakeru ke spouštění školicích úloh na vzdáleném clusteru s minimálními změnami.
V tomto příspěvku ukážeme, jak doladit a Falcon-7B Foundation Models (FM) pomocí @remote decorator ze SageMaker Python SDK. Také používá Parametrově efektivní jemné doladění Hugging Face (PEFT) prostřednictvím knihovny a kvantizačních technik bitsandbajtů na podporu jemného doladění. Kód prezentovaný v tomto blogu lze také použít k doladění dalších FM, jako je např Lama-2 13b.
Plně přesné reprezentace tohoto modelu mohou mít problémy s uložením do paměti na jednom nebo dokonce několika Grafické procesorové jednotky (GPU) — nebo může dokonce potřebovat větší instanci. Proto, abychom tento model doladili bez zvýšení nákladů, používáme techniku známou jako Kvantované LLM s adaptéry s nízkou hodností (QLoRA). QLoRA je účinný přístup k jemnému ladění, který snižuje využití paměti LLM při zachování velmi dobrého výkonu.
Výhody použití @remote decorator
Než půjdeme dále, pojďme pochopit, jak vzdálený dekorátor zlepšuje produktivitu vývojářů při práci se SageMakerem:
- @remote decorator spouští tréninkovou úlohu přímo pomocí nativního kódu pythonu, bez explicitního vyvolání SageMaker Estimators a vstupních kanálů SageMaker
- Nízká bariéra vstupu pro vývojáře školící modely na SageMaker.
- Není třeba přepínat Integrovaná vývojová prostředí (IDE). Pokračujte v psaní kódu podle vašeho výběru IDE a vyvolejte úlohy školení SageMaker.
- Není třeba se učit o kontejnerech. Pokračujte v poskytování závislostí v a
požadavky.txt
a dodat to vzdálenému dekoratérovi.
Předpoklady
Je potřeba účet AWS s rolí AWS Identity and Access Management (AWS IAM), která má oprávnění ke správě prostředků vytvořených jako součást řešení. Podrobnosti naleznete v části Vytvoření účtu AWS.
V tomto příspěvku používáme Amazon SageMaker Studio s Data Science 3.0
obrázek a a ml.t3.střední
instance rychlého spuštění. Můžete však použít libovolné integrované vývojové prostředí (IDE) dle vašeho výběru. Stačí správně nastavit přihlašovací údaje rozhraní příkazového řádku AWS (AWS CLI). Další informace naleznete v části Konfigurace rozhraní AWS CLI.
Pro jemné doladění slouží Falcon-7B, an ml.g5,12xvelký
instance je použita v tomto příspěvku. Zajistěte prosím dostatečnou kapacitu pro tuto instanci v účtu AWS.
Musíte to naklonovat úložiště Github za replikaci řešení ukázaného v tomto příspěvku.
Přehled řešení
- Nainstalujte předpoklady pro jemné doladění modelu Falcon-7B
- Nastavte vzdálené konfigurace dekoratérů
- Předběžně zpracujte datovou sadu obsahující často kladené dotazy ke službám AWS
- Dolaďte Falcon-7B na služby AWS – časté dotazy
- Vyzkoušejte dolaďovací modely na vzorových otázkách týkajících se služeb AWS
1. Nainstalujte předpoklady pro jemné doladění modelu Falcon-7B
Spusťte notebook falcon-7b-qlora-remote-decorator_qa.ipynb v SageMaker Studio výběrem Ikouzelník tak jako Data Science
a Jádro tak jako Python 3
. Nainstalujte všechny požadované knihovny uvedené v požadavky.txt
. Jen málo knihoven je třeba nainstalovat do samotné instance notebooku. Proveďte další operace potřebné pro zpracování datové sady a spuštění úlohy školení SageMaker.
2. Nastavte vzdálené konfigurace dekorátoru
Vytvořte konfigurační soubor, ve kterém budou specifikovány všechny konfigurace související s úlohou školení Amazon SageMaker. Tento soubor čte @remote decorator při spuštění úlohy školení. Tento soubor obsahuje nastavení, jako jsou závislosti, tréninkový obraz, instance a spouštěcí role, která se má použít pro tréninkovou úlohu. Pro podrobný odkaz na všechna nastavení podporovaná konfiguračním souborem se podívejte Konfigurace a používání výchozích hodnot pomocí sady SageMaker Python SDK.
Není povinné používat config.yaml
abyste mohli pracovat s @remote dekorátorem. Toto je jen čistší způsob, jak dodat všechny konfigurace dekorátoru @remote. To udržuje parametry související se SageMakerem a AWS mimo kód s jednorázovým úsilím o nastavení konfiguračního souboru používaného mezi členy týmu. Všechny konfigurace by také mohly být dodány přímo v argumentech dekorátoru, ale to z dlouhodobého hlediska snižuje čitelnost a udržovatelnost změn. Konfigurační soubor může také vytvořit správce a sdílet ho se všemi uživateli v prostředí.
Předběžně zpracujte datovou sadu obsahující často kladené dotazy ke službám AWS
Dalším krokem je načtení a předzpracování datové sady, aby byla připravena pro trénovací úlohu. Nejprve se podívejme na datovou sadu:
Zobrazuje FAQ pro jednu ze služeb AWS. Kromě QLoRA, bitsanbajtů
se používá k převodu na 4bitovou přesnost pro kvantování zmrazeného LLM na 4bitové a připojení LoRA adaptéry na něm.
Vytvořte šablonu výzvy k převedení každého vzorku nejčastějších dotazů do formátu výzvy:
Dalším krokem je převedení vstupů (textu) na ID tokenů. To provádí a Objímání Face Transformers Tokenizer.
Nyní jednoduše použijte prompt_template
funkce pro převod všech nejčastějších dotazů do formátu výzvy a nastavení datových sad vlaků a testů.
4. Vylaďte Falcon-7B na často kladené otázky o službách AWS
Nyní můžete připravit tréninkový skript a definovat tréninkovou funkci train_fn
a na funkci nastavte @remote decorator.
Tréninková funkce dělá následující:
- tokenizuje a rozděluje datovou sadu
- založit
BitsAndBytesConfig
, který určuje, že model by měl být načten ve 4 bitech, ale výpočet by měl být převeden nabfloat16
. - Načtěte model
- Najděte cílové moduly a aktualizujte potřebné matice pomocí obslužné metody
find_all_linear_names
- Vytvořit LoRA konfigurace, které určují hodnocení matic aktualizace (
s
), faktor měřítka (lora_alpha
), moduly pro použití aktualizačních matic LoRA (cílové_moduly
), pravděpodobnost výpadku pro vrstvy Lora(lora_dropout
),task_type
, atd. - Začněte školení a hodnocení
A vyvolat train_fn()
Úloha ladění by běžela na tréninkovém clusteru Amazon SageMaker. Počkejte na dokončení ladění.
5. Otestujte modely jemného ladění na vzorových otázkách týkajících se služeb AWS
Nyní je čas provést několik testů modelu. Nejprve načteme model:
Nyní načtěte ukázkovou otázku z trénovací datové sady, abyste viděli původní odpověď, a poté položte stejnou otázku z vyladěného modelu, abyste viděli odpověď v porovnání.
Zde je ukázka otázky z tréninkové sady a původní odpověď:
Nyní je stejná otázka položena vyladěnému modelu Falcon-7B:
Tímto je dokončena implementace jemného ladění Falcon-7B na datové sadě FAQ služeb AWS pomocí @remote decorator z Amazon SageMaker Python SDK.
Čištění
Chcete-li vyčistit své zdroje, proveďte následující kroky:
- Vypněte instance aplikace Amazon SageMaker Studio, abyste předešli dalším nákladům.
- Vyčistěte svůj adresář Amazon Elastic File System (Amazon EFS) vymazáním adresáře mezipaměti Hugging Face:
Závěr
V tomto příspěvku jsme vám ukázali, jak efektivně využít schopnosti dekorátoru @remote k doladění modelu Falcon-7B pomocí QLoRA, Hugging Face PEFT s bitsandbtyes
bez použití významných změn v tréninkovém notebooku a využívali schopnosti Amazon SageMaker ke spouštění školicích úloh na vzdáleném clusteru.
Veškerý kód zobrazený jako součást tohoto příspěvku pro jemné doladění Falconu-7B je k dispozici v úložiště GitHub. Úložiště také obsahuje notebook ukazující, jak doladit Llama-13B.
Jako další krok vám doporučujeme vyzkoušet funkci @remote decorator a Python SDK API a použijte jej ve svém výběru prostředí a IDE. Další příklady jsou k dispozici v příklady amazonského mudrce úložiště, abyste mohli rychle začít. Můžete se také podívat na následující příspěvky:
O autorech
Bruno Pistone je AI/ML Specialist Solutions Architect pro AWS se sídlem v Miláně. Pracuje s velkými zákazníky, pomáhá jim hluboce porozumět jejich technickým potřebám a navrhovat řešení AI a strojového učení, která nejlépe využívají AWS Cloud a Amazon Machine Learning stack. Mezi jeho odborné znalosti patří: strojové učení od začátku do konce, industrializace strojového učení a generativní umělá inteligence. Rád tráví čas se svými přáteli a poznává nová místa a také cestuje do nových destinací.
Vikesh Pandey je specialistou na řešení strojového učení ve společnosti AWS, který pomáhá zákazníkům z finančních odvětví navrhovat a vytvářet řešení na generativní umělé inteligenci a ML. Mimo práci Vikesh rád zkouší různé kuchyně a hraje venkovní sporty.
zanechte odpověď