Artificiell intelligens

Den kraftfullaste öppna kÀllkods-LLM hittills: Meta LLAMA 3.1-405B

mm
The Most Powerful Open Source LLM Yet: Meta LLAMA 405B
div]:bg-bg-300 [&_pre]:-mr-4 md:[&_pre]:-mr-9″>
_*]:min-w-0″>

Llama 3.1-405B, utvecklad av Meta AI, representerar ett betydande steg framåt i öppna källkods-språkmodeller. Med 405 miljarder parametrar är det den största offentligt tillgängliga språkmodellen hittills, som rivaliserar och till och med överträffar några av de mest avancerade proprietära modellerna i olika benchmark-tester.

Nyckelfunktioner:

  • 405 miljarder parametrar
  • 128K token kontextlängd
  • Flerspråkig stöd (8 språk)
  • Instruktionsjusterad version tillgänglig
  • Öppen källkod med en permissiv licens

Släppandet av en sådan kraftfull modell i den öppna källkods-domen är en spelväxlare, som demokratiserar tillgången till state-of-the-art AI-kapaciteter och främjar innovation inom hela branschen.

Modellarkitektur och utbildning

Processen börjar med att indata-texttoken omvandlas till token-inbäddningar. Dessa inbäddningar passerar genom flera lager av självuppmärksamhet och feedforward-nätverk, vilket tillåter modellen att fånga komplexa relationer och beroenden inom texten. Den autoregressiva avkodningsmekanismen genererar sedan utdata-texttoken, vilket slutför processen.

 

_*]:min-w-0″>
div]:bg-bg-300 [&_pre]:-mr-4 md:[&_pre]:-mr-9″>
_*]:min-w-0″>
  1. Grupperad frågeuppmärksamhet (GQA)

Grupperad frÄgeuppmÀrksamhet

Grupperad frågeuppmärksamhet

Llama 3.1 använder Grupperad frågeuppmärksamhet, som är en viktig optimeringsteknik som inte fullständigt täcktes i den tidigare responsen. Låt oss undersöka detta närmare:

Grupperad frågeuppmärksamhet (GQA) är en variant av multi-huvuduppmärksamhet som syftar till att minska beräkningskostnader och minnesanvändning under inferens, särskilt för långa sekvenser. I Llama 3.1 405B-modellen implementeras GQA med 8 nyckel-värdehuvuden.

Här är hur GQA fungerar:

  1. Istället för att ha separata nyckel- och värdeprojektioner för varje uppmärksamhets-huvud, grupperar GQA flera frågehuvuden för att dela samma nyckel- och värdehuvuden.
  2. Denna gruppering minskar betydligt antalet parametrar i nyckel- och värdeprojektionerna, vilket leder till mindre modellstorlekar och snabbare inferens.
  3. Uppmärksamhetsberäkningen kan uttryckas som:
Uppmärksamhet(Q, K, V) = softmax(QK^T / sqrt(d_k))V

Där Q är grupperad i g grupper, och K och V har färre huvuden än Q.

Fördelarna med GQA i Llama 3.1 405B inkluderar:

  • Minskat minnesavtryck: Färre nyckel- och värdeprojektioner innebär att mindre minne krävs för att lagra modellparametrarna.
  • Snabbare inferens: Med färre beräkningar som krävs för nyckel- och värdeprojektioner förbättras inferenshastigheten.
  • Bibehållen prestanda: Trots minskningen av parametrar har GQA visat sig bibehålla jämförbar prestanda med standard multi-huvuduppmärksamhet i många uppgifter.
  1. Tvåstegs förutbildning för utökad kontext

Artikeln nämner en tvåstegs förutbildningsprocess för att uppnå 128K token kontextfönstret. Detta är en avgörande aspekt av Llama 3.1 405B:s förmågor:

Steg 1: Initial förutbildning på 8K token

  • Modellen tränas först på sekvenser upp till 8K token.
  • Denna fas tillåter modellen att lära sig allmän språkförståelse och genereringsförmåga.

Steg 2: Fortsatt förutbildning för kontextutvidgning

  • Efter den initiala utbildningen genomgår modellen en fortsatt förutbildning för att öka kontextlängden till 128K token.
  • Denna fas innefattar noggrant utformade utbildningsregimer för att hjälpa modellen generalisera till längre sekvenser utan att förlora sin förmåga att hantera kortare sammanhang.
  1. Flerspråkiga förmågor

Medan den tidigare responsen berörde flerspråkiga förmågor, kan vi utveckla detta:

Kompositionell ansats:

  • Llama 3.1 405B använder separata encoder för olika modaliteter (t.ex. bilder, tal).
  • Dessa encoder omvandlar indata från olika modaliteter till ett gemensamt inbäddningsspråk som språkmodellen kan förstå.

Integrering med språkmodell:

  • Utdata från dessa specialiserade encoder matas sedan in i den huvudsakliga språkmodellen.
  • Detta tillåter Llama 3.1 405B att bearbeta och förstå olika typer av data samtidigt, vilket möjliggör uppgifter som involverar flera modaliteter.

Korsuppmärksamhetsmekanismer:

  • För att hantera integrationen av olika modaliteter använder Llama 3.1 405B sannolikt korsuppmärksamhetsmekanismer.
  • Dessa mekanismer tillåter modellen att uppmärksamma relevant information från olika modaliteter när den genererar text eller utför andra uppgifter.

De flerspråkiga förmågorna i Llama 3.1 405B öppnar upp en mängd olika tillämpningar, såsom:

  • Bildbeskrivning och visuell frågebesvaring
  • Tal-till-text-transkription med kontextuell förståelse
  • Flerspråkiga resonemangsuppgifter som kombinerar text, bilder och potentiellt andra datatyper

Utbildningsdetaljer

  • Tränad på över 15 biljoner token
  • Egenbyggd GPU-kluster med 39,3M GPU-timmar för 405B-modellen
  • Mångsidig dataset-samling för flerspråkiga förmågor

Den instruktionsjusterade versionen genomgick ytterligare utbildning:

Prestandamätningar

Tabellen jämför Llama 3.1 405B, Nemotron 4 340B Instruct, GPT-4 (0125), GPT-4 Omni och Claude 3.5 Sonnet. Nyckelbenchmark-tester inkluderar allmänna uppgifter som MMLU och IFEval, koduppgifter som HumanEval och GSM8K, och resonemangsuppgifter som ARC Challenge. Varje benchmark-poäng reflekterar modellens förmåga att förstå och generera mänsklig text, lösa komplexa problem och utföra kod. Noterbart är att Llama 3.1 405B och Claude 3.5 Sonnet utmärker sig i flera benchmark-tester, vilket visar deras avancerade förmågor inom både allmänna och domänspecifika uppgifter.

Minneskrav för Llama 3.1-405B

Att köra Llama 3.1-405B kräver betydande minne och beräkningsresurser:

  • GPU-minne: 405B-modellen kan använda upp till 80GB GPU-minne per A100 GPU för effektiv inferens. Användning av tensorparallellism kan distribuera belastningen över flera GPU:er.
  • RAM: En minimum på 512GB systemminne rekommenderas för att hantera modellens minnesavtryck och säkerställa smidig datahantering.
  • Lagring: Se till att du har flera terabyte SSD-lagring för modellvikter och associerade dataset. Högpresterande SSD-lagring är avgörande för att minska datatillgångstider under utbildning och inferens​ (Llama Ai Model)​​ (Groq)​.

Inferensoptimeringstekniker för Llama 3.1-405B

Att köra en 405B-parametrig modell som Llama 3.1 effektivt kräver flera optimeringstekniker. Här är viktiga metoder för att säkerställa effektiv inferens:

a) Kvantifiering: Kvantifiering innebär att minska precisionen för modellens vikter, vilket minskar minnesanvändning och förbättrar inferenshastighet utan att signifikant påverka noggrannheten. Llama 3.1 stöder kvantifiering till FP8 eller ännu lägre precisionsnivåer med tekniker som QLoRA (Quantized Low-Rank Adaptation) för att optimera prestanda på GPU:er.

Exempelkod:


<p>from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig</p>

<p>modellnamn = "meta-llama/Meta-Llama-3.1-405B"
bnb_config = BitsAndBytesConfig(
load_in_8bit=True, # Ändra till load_in_4bit för 4-bitars precision
bnb_8bit_quant_type="fp8",
bnb_8bit_compute_dtype=torch.float16,
)
modell = AutoModelForCausalLM.from_pretrained(
modellnamn,
quantization_config=bnb_config,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(modellnamn)</p>

b) Tensorparallellism: Tensorparallellism innebär att dela modellens lager över flera GPU:er för att parallellisera beräkningar. Detta är särskilt användbart för stora modeller som Llama 3.1, vilket möjliggör effektiv användning av resurser.

Exempelkod:

from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline

<p>modellnamn = "meta-llama/Meta-Llama-3.1-405B"
modell = AutoModelForCausalLM.from_pretrained(
modellnamn,
device_map="auto",
torch_dtype=torch.float16
)
tokenizer = AutoTokenizer.from_pretrained(modellnamn)
nlp = pipeline("text-generation", model=modell, tokenizer=tokenizer, device=0)

c) KV-cacheoptimering: Effektiv hantering av nyckel-värde-cachen är avgörande för att hantera långa kontexter. Llama 3.1 stöder utökade kontextlängder, som kan hanteras effektivt med optimerade KV-cache-tekniker. Exempelkod:

# Se till att du har tillräckligt med GPU-minne för att hantera utökade kontextlängder
utdata = modell.generate(
indatatoken,
max_längd=4096, # Öka baserat på ditt kontextlängdsbehov
use_cache=True
)

Distributionsstrategier

Att distribuera Llama 3.1-405B kräver noggrann övervägning av hårdvaruresurser. Här är några alternativ:

a) Molnbaserad distribution: Använd högminnes-GPU-instanser från molntjänstleverantörer som AWS (P4d-instanser) eller Google Cloud (TPU v4).

Exempelkod:

# Exempel på inställning för AWS
import boto3
ec2 = boto3.resource('ec2')
instans = ec2.create_instances(
ImageId='ami-0c55b159cbfafe1f0', # Deep Learning AMI
InstanceType='p4d.24xlarge',
MinCount=1,
MaxCount=1
)

b) Lokal distribution: För organisationer med högpresterande datorresurser erbjuder distribution av Llama 3.1 på plats mer kontroll och potentiellt lägre långsiktiga kostnader.

Exempelinställning:

# Exempel på inställning för lokal distribution
# Se till att du har flera högpresterande GPU:er, som NVIDIA A100 eller H100
pip install transformers
pip install torch # Se till att CUDA är aktiverat

c) Distribuerad inferens: För större distributioner, överväg att distribuera modellen över flera noder.

Exempelkod:

# Användning av Hugging Faces accelerate-bibliotek
from accelerate import Accelerator

<p>accelerator = Accelerator()
modell, tokenizer = accelerator.prepare(modell, tokenizer)

Användningsfall och tillämpningar

Kraften och flexibiliteten i Llama 3.1-405B öppnar upp en mängd möjligheter:

a) Syntetisk datagenerering: Generera högkvalitativ, domänspecifik data för utbildning av mindre modeller.

Exempel på användningsfall:

from transformers import pipeline

<p>generator = pipeline("text-generation", model=modell, tokenizer=tokenizer)
syntetisk_data = generator("Generera finansiella rapporter för Q1 2023", max_längd=200)</p>

b) Kunskapsdestillering: Överför kunskapen från 405B-modellen till mindre, mer distribuerbara modeller.

Exempelkod:

# Använd destilleringstekniker från Hugging Face
from transformers import DistillationTrainer, DistillationTrainingArguments

<p>träningsargument = DistillationTrainingArguments(
output_dir="./destillerad_modell",
per_device_train_batch_size=2,
num_train_epochs=3,
logging_dir="./loggar",
)
tränare = DistillationTrainer(
lärar_modell=modell,
student_modell=smallare_modell,
args=träningsargument,
träningsdataset=träningsdataset,
utvärderingsdataset=utvärderingsdataset,
)
tränare.träna()</p>

c) Domänspecifik fine-tuning: Anpassa modellen för specialiserade uppgifter eller branscher.

Exempelkod:

from transformers import Trainer, TrainingArguments

<p>träningsargument = TrainingArguments(
output_dir="./domänspecifik_modell",
per_device_train_batch_size=1,
num_train_epochs=3,
)
tränare = Trainer(
modell=modell,
args=träningsargument,
träningsdataset=träningsdataset,
utvärderingsdataset=utvärderingsdataset,
)
tränare.träna()</p>

Dessa tekniker och strategier kommer att hjälpa dig att utnyttja den fulla potentialen i Llama 3.1-405B, säkerställande effektiv, skalbar och specialiserad AI-tillämpning.

Framtida riktningar

Släppandet av Llama 3.1-405B kommer sannolikt att accelerera innovation inom flera områden:

  • Förbättrade fine-tuningstekniker för specialiserade domäner
  • Utveckling av mer effektiva inferensmetoder
  • Framsteg inom modellkomprimering och destillering

Slutsats

Llama 3.1-405B representerar en betydande milstolpe inom öppen källkods-AI, som erbjuder förmågor som tidigare var exklusiva för slutna modeller.

Medan vi fortsätter att utforska kraften i denna modell, är det avgörande att närma sig dess användning med ansvar och etisk övervägning. Verktygen och skydd som tillhandahålls tillsammans med modellen erbjuder en ram för ansvarsfull distribution, men kontinuerlig vaksamhet och samarbete inom samhället kommer att vara avgörande för att säkerställa att denna kraftfulla teknologi används till förmån för samhället.

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.