Brug af store sprogmodeller til at bygge generative AI-applikationer medfører nye udfordringer. Et centralt spørgsmål er at sikre svarens kvalitet (præcision og relevans) i det indhold, modellen genererer for en given brugerforespørgsel. I tidligere lektioner har vi diskuteret teknikker som prompt engineering og retrieval-augmented generation, der forsøger at løse problemet ved at ændre prompt-inputtet til den eksisterende model.
I dagens lektion diskuterer vi en tredje teknik, finjustering, som forsøger at tackle udfordringen ved at genuddanne selve modellen med yderligere data. Lad os dykke ned i detaljerne.
Denne lektion introducerer begrebet finjustering af fortrænede sprogmodeller, udforsker fordelene og udfordringerne ved denne tilgang, og giver vejledning om, hvornår og hvordan man bruger finjustering til at forbedre ydeevnen af dine generative AI-modeller.
Ved slutningen af denne lektion bør du kunne besvare følgende spørgsmål:
- Hvad er finjustering for sprogmodeller?
- Hvornår, og hvorfor, er finjustering nyttig?
- Hvordan kan jeg finjustere en fortrænet model?
- Hvad er begrænsningerne ved finjustering?
Klar? Lad os komme i gang.
Vil du have et overblik over, hvad vi vil dække, inden vi går i gang? Tjek denne illustrerede guide, der beskriver læringsrejsen for denne lektion – fra kernen i begreberne og motivationen for finjustering til forståelse af processen og bedste praksis for udførelse af finjusteringsopgaven. Dette er et spændende emne for udforskning, så glem ikke at besøge Ressourcesiden for yderligere links til at støtte din selvstyrede læringsrejse!
Efter definition er store sprogmodeller fortrænede på store mængder tekst hentet fra forskellige kilder, inklusive internettet. Som vi har lært i tidligere lektioner, har vi brug for teknikker som prompt engineering og retrieval-augmented generation for at forbedre kvaliteten af modellens svar på brugerens spørgsmål ("prompter").
En populær prompt engineering teknik involverer at give modellen mere vejledning om, hvad der forventes i svaret, enten ved at give instruktioner (eksplicit vejledning) eller give den nogle få eksempler (implicit vejledning). Dette kaldes for few-shot learning, men det har to begrænsninger:
- Modeltokens grænser kan begrænse antallet af eksempler, du kan give, og begrænse effektiviteten.
- Modeltokens omkostninger kan gøre det dyrt at tilføje eksempler til hver prompt, og begrænse fleksibiliteten.
Finjustering er en almindelig praksis i maskinlæringssystemer, hvor vi tager en fortrænet model og genuddanner den med nye data for at forbedre dens præstation på en specifik opgave. I konteksten af sprogmodeller kan vi finjustere den fortrænede model med et kurateret sæt eksempler til en given opgave eller anvendelsesdomæne for at skabe en tilpasset model, der kan være mere præcis og relevant for netop denne specifikke opgave eller domæne. En sidegevinst ved finjustering er, at det også kan reducere antallet af nødvendige eksempler ved few-shot learning – hvilket mindsker token-forbrug og de relaterede omkostninger.
I denne kontekst, når vi taler om finjustering, refererer vi til superviseret finjustering, hvor genuddannelsen sker ved tilføjelse af nye data, som ikke var del af det oprindelige træningsdatasæt. Dette adskiller sig fra en usuperviseret finjusteringsmetode, hvor modellen genuddannes på de oprindelige data, men med forskellige hyperparametre.
Det vigtigste at huske er, at finjustering er en avanceret teknik, som kræver et vist ekspertiseniveau for at opnå de ønskede resultater. Hvis det gøres forkert, giver det muligvis ikke de forventede forbedringer og kan endda forringe modellens ydeevne for dit specifikke domæne.
Så før du lærer "hvordan" man finjusterer sprogmodeller, skal du vide "hvorfor" du bør vælge denne vej, og "hvornår" du skal starte processen med finjustering. Start med at stille dig selv disse spørgsmål:
- Use Case: Hvad er dit anvendelsestilfælde for finjustering? Hvilket aspekt af den nuværende fortrænede model ønsker du at forbedre?
- Alternativer: Har du prøvet andre teknikker for at opnå de ønskede resultater? Brug dem til at skabe et referencepunkt for sammenligning.
- Prompt engineering: Prøv teknikker som few-shot prompting med eksempler på relevante prompt-svar. Evaluer svarenes kvalitet.
- Retrieval Augmented Generation: Prøv at forstærke prompts med resultatet fra forespørgsler, hentet ved at søge i dine data. Evaluer svarenes kvalitet.
- Omkostninger: Har du identificeret omkostningerne for finjustering?
- Tilgængelighed – er den fortrænede model tilgængelig for finjustering?
- Arbejdsindsats – til forberedelse af træningsdata, evaluering og forfining af model.
- Computekraft – til at køre finjusteringsjob og implementere finjusteret model.
- Data – adgang til tilstrækkeligt kvalitetsmateriale til at have effekt ved finjustering.
- Fordele: Har du bekræftet fordelene ved finjustering?
- Kvalitet – overgik den finjusterede model referencepunktet?
- Omkostning – kan det reducere tokenforbrug ved at forenkle prompts?
- Udvidelsesmuligheder – kan du genbruge basismodellen til nye domæner?
Ved at besvare disse spørgsmål bør du kunne afgøre, om finjustering er den rette tilgang for dit anvendelsestilfælde. Ideelt set er tilgangen kun gyldig, hvis fordelene opvejer omkostningerne. Når du beslutter dig for at gå videre, er det tid til at tænke på hvordan du kan finjustere den fortrænede model.
Vil du have flere indsigter i beslutningsprocessen? Se To fine-tune or not to fine-tune
For at finjustere en fortrænet model skal du have:
- en fortrænet model til at finjustere
- et datasæt at bruge til finjustering
- et træningsmiljø til at køre finjusteringsjobbet
- et hostingmiljø for at implementere den finjusterede model
Følgende ressourcer giver trin-for-trin tutorials, der guider dig igennem et reelt eksempel med en udvalgt model og et kurateret datasæt. For at gennemføre disse tutorials skal du have en konto hos den specifikke udbyder, samt adgang til de relevante modeller og datasæt.
| Udbyder | Tutorial | Beskrivelse |
|---|---|---|
| OpenAI | Sådan finjusteres chatmodeller | Lær at finjustere en gpt-35-turbo for et bestemt domæne ("recipe assistant") ved at forberede træningsdata, køre finjusteringsjobbet og bruge den finjusterede model til inferens. |
| Azure OpenAI | GPT 3.5 Turbo finjusteringsvejledning | Lær at finjustere en gpt-35-turbo-0613 model på Azure ved at følge trin til at oprette og uploade træningsdata, køre finjusteringsjobbet. Implementer og brug den nye model. |
| Hugging Face | Finjustering af LLMs med Hugging Face | Dette blogindlæg viser dig, hvordan du finjusterer en åben LLM (f.eks. CodeLlama 7B) ved brug af transformers biblioteket & Transformer Reinforcement Learning (TRL) med åbne datasets på Hugging Face. |
| 🤗 AutoTrain | Finjustering af LLMs med AutoTrain | AutoTrain (eller AutoTrain Advanced) er et Python-bibliotek udviklet af Hugging Face, der tillader finjustering for mange forskellige opgaver inklusive LLM finjustering. AutoTrain er en no-code løsning, og finjustering kan foretages i din egen cloud, på Hugging Face Spaces eller lokalt. Det understøtter både en webbaseret GUI, CLI og træning via yaml-konfigurationsfiler. |
| 🦥 Unsloth | Finjustering af LLMs med Unsloth | Unsloth er et open source-rammeværk, som understøtter LLM finjustering og forstærkningslæring (RL). Unsloth strømliner lokal træning, evaluering og implementering med færdige notebooks. Det understøtter også tekst-til-tale (TTS), BERT og multimodale modeller. For at komme i gang, læs deres trin-for-trin Finjusteringsguide for LLMs. |
Vælg en af ovenstående tutorials og gennemfør den. Vi kan muligvis reproducere en version af disse tutorials i Jupyter Notebooks i dette repositorium til reference. Brug venligst de originale kilder direkte for at få den nyeste version.
Efter at have gennemført denne lektion, kan du tjekke vores Generative AI Learning samling for at fortsætte med at udvikle din viden om Generativ AI!
Tillykke!! Du har gennemført den sidste lektion i v2-serien for dette kursus! Stop ikke med at lære og bygge videre. **Tjek RESSOURCERNE for en liste med yderligere forslag netop til dette emne.
Vores v1-serie af lektioner er også blevet opdateret med flere opgaver og koncepter. Så tag et øjeblik til at friske din viden op - og del venligst dine spørgsmål og feedback for at hjælpe os med at forbedre disse lektioner for fællesskabet.
Ansvarsfraskrivelse:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi bestræber os på nøjagtighed, bedes du være opmærksom på, at automatiske oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på dets modersmål bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.

