AI-modeller och plattformar

Llama 2: En djupdykning i den öppen källkods-utmanaren till ChatGPT

mm
Lägg till Unite.AI bland dina föredragna källor på Google

Stora språkmodeller (LLM) som kan utföra komplexa resonemangsuppgifter har visat löfte i specialiserade områden som programmering och kreativt skrivande. Men världen av LLM är inte bara en plug-and-play-paradis; det finns utmaningar när det gäller användbarhet, säkerhet och beräkningskrav. I den här artikeln kommer vi att dyka djupt i Llama 2:s förmågor, samtidigt som vi ger en detaljerad genomgång av hur man ställer in den här högpresterande LLM via Hugging Face och T4 GPU:er på Google Colab.

Llama 2, som utvecklats av Meta i samarbete med Microsoft (MSFT ), syftar till att omdefiniera områdena för generativ AI och naturligt språkförståelse. Llama 2 är inte bara en statistisk modell som tränats på terabyte data; det är en inkarnation av en filosofi som betonar en öppen källkods-approach som ryggraden i AI-utveckling, särskilt inom generativ AI.

Llama 2 och dess dialog-optimerade variant, Llama 2-Chat, kommer med upp till 70 miljarder parametrar. De genomgår en finjusteringsprocess som syftar till att anpassa dem nära till mänskliga preferenser, vilket gör dem både säkrare och mer effektiva än många andra offentligt tillgängliga modeller. Denna nivå av granularitet i finjustering är ofta förbehållen stängda “produkt”-LLM, såsom ChatGPT och BARD, som inte generellt är tillgängliga för offentlig granskning eller anpassning.

Teknisk djupdykning av Llama 2

För att träna Llama 2-modellen används, liksom dess föregångare, en auto-regressiv transformatorarkitektur, förtränad på en omfattande korpus av självständigt tränad data. Men den lägger till en ytterligare nivå av sofistikering genom att använda förstärkt inlärning med mänsklig återkoppling (RLHF) för att bättre anpassa sig till mänskligt beteende och preferenser. Detta är beräkningsmässigt dyrt men avgörande för att förbättra modellens säkerhet och effektivitet.

Meta Llama 2-träningsarkitektur

Meta Llama 2-träningsarkitektur

Förträning och dataeffektivitet

Llama 2:s grundläggande innovation ligger i dess förträningsregim. Modellen tar ledtrådar från sin föregångare, Llama 1, men introducerar flera avgörande förbättringar för att höja dess prestanda. Noterbart är en 40-procentig ökning av det totala antalet token som tränats och en fördubbling av kontextlängden. Dessutom använder modellen grupp-frågeuppmärksamhet (GQA) för att förstärka inferensmöjligheten.

Övervakad finjustering (SFT) och förstärkt inlärning med mänsklig återkoppling (RLHF)

Llama-2-Chat har genomgått en rigorös finjustering med både SFT och RLHF. I detta sammanhang fungerar SFT som en integrerad komponent i RLHF-ramverket, vilket raffinerar modellens svar för att anpassa sig nära till mänskliga preferenser och förväntningar.

OpenAI har tillhandahållit en insiktsfull illustration som förklarar SFT- och RLHF-metoderna som används i InstructGPT. Liksom LLaMa 2 använder InstructGPT också dessa avancerade träningsmetoder för att optimera modellens prestanda.

Steg 1 i den nedan bild fokuserar på övervakad finjustering (SFT), medan de efterföljande stegen slutför förstärkt inlärning från mänsklig återkoppling (RLHF)-processen.

Övervakad finjustering (SFT) är en specialiserad process som syftar till att optimera en förtränad stor språkmodell (LLM) för en specifik nedströmsuppgift. Till skillnad från oövervakade metoder, som inte kräver datavalidering, använder SFT en dataset som har förvaliderats och märkts.

Att skapa dessa dataset är vanligtvis dyrt och tidskrävande. Llama 2:s tillvägagångssätt var kvalitet före kvantitet. Med endast 27 540 annoteringar uppnådde Metas team prestandanivåer som är konkurrenskraftiga med mänskliga annotatorer. Detta stämmer väl överens med nya studier som visar att även begränsade men rena dataset kan driva högkvalitativa resultat.

I SFT-processen exponeras den förtränade LLM för en märkt dataset, där de övervakade inlärningsalgoritmerna kommer in i spel. Modellens interna vikter justeras baserat på gradienter beräknade från en uppgiftsspecifik förlustfunktion. Denna förlustfunktion kvantifierar diskrepanserna mellan modellens förutsagda utdata och de faktiska grund-sanningsetiketterna.

Denna optimering tillåter LLM att greppa de intrikata mönster och nyanser som är inbäddade i den märkta dataseten. Följaktligen är modellen inte bara ett generaliserat verktyg, utan utvecklas till en specialiserad tillgång, skicklig på att utföra måluppgiften med en hög grad av noggrannhet.

Förstärkt inlärning är nästa steg, som syftar till att anpassa modellbeteende till mänskliga preferenser mer noggrant.

Finjusteringsfasen använde förstärkt inlärning från mänsklig återkoppling (RLHF), med tekniker som viktprovtagning och proximal policy-optimisering för att införa algoritmiskt brus, och därigenom undvika lokala optima. Denna iterativa finjustering inte bara förbättrade modellen, utan anpassade också dess utdata till mänskliga förväntningar.

Llama 2-Chat använde en binär jämförelseprotokoll för att samla in mänsklig preferensdata, vilket markerar en anmärkningsvärd trend mot mer kvalitativa tillvägagångssätt. Denna mekanism informerade belöningsmodellerna, som sedan användes för att finjustera den konversationsbaserade AI-modellen.

Spökuppmärksamhet: Multi-vänds-samtal

Meta introducerade en ny funktion, Spökuppmärksamhet (GAtt), som är utformad för att förbättra Llama 2:s prestanda i multi-vänds-samtal. Detta löser effektivt det bestående problemet med kontextförlust i pågående samtal. GAtt fungerar som en ankare, som länkar de initiala instruktionerna till alla efterföljande användarmeddelanden. I kombination med förstärkt inlärningstekniker hjälper det till att producera konsekventa, relevanta och användar-anpassade svar över längre samtal.

Från Meta Git-repository med hjälp av download.sh

  1. Besök Meta-webbplatsen: Navigera till Metas officiella Llama 2-webbplats och klicka på ‘Ladda ner modellen’
  2. Fyll i detaljerna: Läs igenom och godkänn villkoren och bestämmelserna för att fortsätta.
  3. E-postbekräftelse: När formuläret har skickats in kommer du att få ett e-postmeddelande från Meta med en länk för att ladda ner modellen från deras Git-repository.
  4. Kör download.sh: Klona Git-repositoryt och kör download.sh-skriptet. Detta skript kommer att be dig att autentisera med en URL från Meta som upphör att gälla efter 24 timmar. Du kommer också att välja modellens storlek – 7B, 13B eller 70B.

Från Hugging

  1. Motta godkännande-e-post: Efter att ha fått tillgång från Meta, gå till Hugging Face.
  2. Begär åtkomst: Välj din önskade modell och skicka in en begäran för att bevilja åtkomst.
  3. Bekräftelse: Förvänta dig ett ‘åtkomst beviljad’-e-post inom 1-2 dagar.
  4. Generera åtkomsttoken: Navigera till ‘Inställningar’ i ditt Hugging Face-konto för att skapa åtkomsttoken.

Transformers 4.31-utgåvan är fullständigt kompatibel med LLaMa 2 och öppnar upp många verktyg och funktioner inom Hugging Face-ekosystemet. Från tränings- och inferensskript till 4-bitars kvantisering med bitsandbytes och parameter-effektiv finjustering (PEFT) är verktyget omfattande. För att komma igång, se till att du är på den senaste Transformers-utgåvan och inloggad på ditt Hugging Face-konto.

Här är en strömlinjeformad guide för att köra LLaMa 2-modellinference i en Google Colab-miljö, med hjälp av en GPU-körning:

Google Colab-modell - T4 GPU

Google Colab-modell – T4 GPU

 

 

 

 

 

 

Paketinstallation


<p>!pip install transformers
!huggingface-cli login

Importera nödvändiga Python-bibliotek.

from transformers import AutoTokenizer
import transformers
import torch

Initiera modellen och tokenisatorn

I detta steg, specificera vilken Llama 2-modell du kommer att använda. För den här guiden använder vi meta-llama/Llama-2-7b-chat-hf.

model = "meta-llama/Llama-2-7b-chat-hf"
tokenizer = AutoTokenizer.from_pretrained(model)

Konfigurera pipelinen

Använd Hugging Face-pipelinen för textgenerering med specifika inställningar:

pipeline = transformers.pipeline(
"text-generation",
model=model,
torch_dtype=torch.float16,
device_map="auto")

Generera textsekvenser

Slutligen, kör pipelinen och generera en textsekvens baserat på din indata:

sequences = pipeline(
'Vem är de viktigaste bidragsgivarna till området för artificiell intelligens?\n',
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200)
for seq in sequences:
print(f"Resultat: {seq['generated_text']}")

A16Z:s användargränssnitt för LLaMa 2

Andreessen Horowitz (A16Z) har nyligen lanserat ett banbrytande Streamlit-baserat chatbot-gränssnitt anpassat för Llama 2. Värd på GitHub, detta gränssnitt bevarar sessionschatt-historik och erbjuder också flexibiliteten att välja mellan flera Llama 2-API-slutpunkter som värd på Replicate. Detta användarcentrerade designmönster syftar till att förenkla interaktioner med Llama 2, vilket gör det till ett idealiskt verktyg för både utvecklare och slutanvändare. För de som är intresserade av att uppleva detta, finns en live-demo tillgänglig på Llama2.ai.

Llama 2: Vad gör den annorlunda jämfört med GPT-modeller och dess föregångare Llama 1?

Variation i skala

Till skillnad från många språkmodeller som erbjuder begränsad skalbarhet, ger Llama 2 dig en mängd olika alternativ för modeller med varierande parametrar. Modellen skalar från 7 miljarder till 70 miljarder parametrar, vilket ger en rad konfigurationer som passar olika beräkningsbehov.

Förbättrad kontextlängd

Modellen har en ökad kontextlängd på 4K token jämfört med Llama 1. Detta tillåter den att behålla mer information, vilket förbättrar dess förmåga att förstå och generera mer komplex och omfattande innehåll.

Grupp-frågeuppmärksamhet (GQA)

Arkitekturen använder konceptet GQA, som är utformat för att påskynda uppmärksamhetsberäkningen genom att cacha tidigare tokenpar. Detta förbättrar effektivt modellens inferensmöjlighet och ökar tillgängligheten.

Prestandabenchmarks

Jämförande prestandaanalys av Llama 2-Chat-modeller med ChatGPT och andra konkurrenter

Prestandaanalys av Llama 2-Chat-modeller med ChatGPT och andra konkurrenter

Llama 2 har satt en ny standard för prestandamätningar. Den presterar inte bara bättre än sin föregångare, Llama 1, utan erbjuder också betydande konkurrens till andra modeller som Falcon och GPT-3.5.

Llama 2-Chats största modell, 70B, presterar också bättre än ChatGPT i 36% av fallen och matchar prestanda i ytterligare 31,5% av fallen. Källa: Papper

Öppen källkod: Kommunitetsmakt

Meta och Microsoft avser att Llama 2 ska vara mer än bara en produkt; de ser det som ett communitydrivet verktyg. Llama 2 är fritt tillgänglig för både forskning och icke-kommersiella ändamål. De syftar till att demokratisera AI-förmågor, vilket gör det tillgängligt för start-ups, forskare och företag. En öppen källkods-paradigm tillåter “crowdsourced troubleshooting” av modellen. Utvecklare och AI-etiker kan testa, identifiera sårbarheter och erbjuda lösningar i en accelererad takt.

Medan licensvillkoren för LLaMa 2 är generellt sett tillåtande, undantag finns. Stora företag med över 700 miljoner månatliga användare, som Google, kräver uttrycklig auktorisering från Meta för dess användning. Dessutom förbjuder licensen användningen av LLaMa 2 för att förbättra andra språkmodeller.

Aktuella utmaningar med Llama 2

  1. Dataallmängiltighet: Både Llama 2 och GPT-4 kan ibland brista i enhetligt hög prestanda över olika uppgifter. Datakvalitet och mångfald är lika viktiga som volym i dessa scenarier.
  2. Modelltransparens: Med tanke på tidigare bakslag med AI som producerar vilseledande utdata, är det viktigt att undersöka beslutsprocessen bakom dessa komplexa modeller.

Code Llama – Metas senaste lansering

Meta har nyligen tillkännagett Code Llama, som är en stor språkmodell specialiserad på programmering med parameterstorlekar som sträcker sig från 7B till 34B. Liksom ChatGPT Code Interpreter kan Code Llama strömlinjeforma utvecklars arbetsflöden och göra programmering mer tillgänglig. Den stöder olika programmeringsspråk och kommer i specialiserade varianter, såsom Code Llama-Python för Python-specifika uppgifter. Modellen erbjuder också olika prestandanivåer för att möta olika latenskrav. Öppet licensierad, inbjuder Code Llama till community-input för kontinuerlig förbättring.

https://about.fb.com/news/2023/08/code-llama-ai-for-coding/

Slutsats

Den här artikeln har guidat dig genom att ställa in en Llama 2-modell för textgenerering på Google Colab med Hugging Face-stöd. Llama 2:s prestanda drivs av en mängd avancerade tekniker, från auto-regressiva transformer-arkitekturer till förstärkt inlärning med mänsklig återkoppling (RLHF). Med upp till 70 miljarder parametrar och funktioner som Spökuppmärksamhet, presterar den här modellen bättre än nuvarande branschstandarder i vissa områden, och med sin öppna natur, banar den väg för en ny era inom naturligt språkförståelse och generativ AI.

Jag har tillbringat de senaste fem åren med att dyka djupt in i den fascinerande världen av Maskinlärning och Djupinlärning. Min passion och expertis har lett mig till att bidra till över 50 olika mjukvaruprojekt, med särskild fokus på AI/ML. Min pågående nyfikenhet har också lett mig mot Naturlig Språkbehandling, ett område som jag är angelägen om att utforska vidare.