Distribuera den generativa modellen för Mistral 7b på en A10 GPU på AWS

Summary

Denna NLP-molnkurs visar hur man distribuerar och använder Mistral 7b generativ AI-modell på en NVIDIA A10 GPU på AWS.

Mistral 7b-modellen slår LLaMA 3 7b i alla riktmärken och LLaMA 3 13b i många riktmärken. Den är faktiskt till och med i nivå med LLaMA 1 34b-modellen.

Att distribuera och använda den kräver minst 15 GB VRAM, vilket är anledningen till att vi behöver en A10 GPU med minst 24 GB VRAM.

Här är kursens struktur:

Transcript

Hej, det här är Julien Sainas från NLP Cloud.

Idag ska vi se hur man distribuerar den generativa modellen Mistral 7b på en AWS A10 GPUHär har vi det.

Mistral 7b är en toppmodern generativ modell som släppts av ett franskt företag som heter Mistral AI.

Denna modell lanserades i september 2023 och slår Lama 2 7b i alla officiella jämförelser.

Ännu mer intressant är att den också slår Lama 2 13b i många benchmarks, och den är i nivå med Lama 1 34b.

Mistral AI släppte denna modell med en Apache-licens, vilket gör att du kan använda denna modell hur du vill.

Teamet släppte både en grundmodell och en finjusterad chattversion.

Vi kommer att distribuera chattversionen i den här videon idag.

Mistral 7b kräver minst 14 gigabyte virtuellt minne och mer om kontextstorleken är stor.

Så vi kommer att distribuera den på en A10 NVIDIA GPU på AWS, eftersom denna GPU har 24 gigabyte virtuellt minne och är ganska kostnadseffektiv.

Det enklaste sättet att distribuera Mistral 7b är att använda Hugging Face-ramverket och följa Mistral AI:s officiella riktlinjer.

Som ett första steg måste vi välja rätt AWS-maskin.

Det finns massor av maskiner på AWS, så det bästa rådet jag kan ge dig är att börja med den här sidan för instanstyper och sedan gå till Accelerated Computing till vänster.

Här har du en lista över alla accelererade hårdvaruinstanser som AWS tillhandahåller, och den vi vill ha idag är G5.

Som du kan se här har G5 en A10 GPU, vilket är vad vi vill ha.

Det finns flera varianter av G5-instanser.

Vissa har bara en GPU, andra har fyra eller åtta GPU:er.

En GPU är tillräckligt för oss eftersom det finns tillräckligt med virtuellt minne på en GPU, men vi måste vara mycket försiktiga med mängden minne som instansen har eftersom när vi startar Mistral 7b-modellen kommer vi tillfälligt att behöva lite minne för att ladda modellen.

Det är därför vi kommer att välja en G5 4X stor instans idag eftersom 64 gigabyte borde räcka.

Nu byter jag till min AWS-konsol och klickar på Launch Instance.

Låt oss kalla det Test A10 Mistral.

Vi kommer att välja Ubuntu OS, men det finns ett trick.

Vi vill inte välja standard Ubuntu OS eftersom vi kommer att behöva installera NVIDIA-drivrutinerna manuellt på det, vilket är mycket smärtsamt.

Vad vi kommer att göra är att välja Deep Learning AMI GPU PyTorch-servern här, vilket är mycket bättre eftersom denna AMI levereras med Ubuntu plus NVIDIA-drivrutiner plus CUDA-verktygssats plus PyTorch och andra saker, vilket är alla saker som vi kommer att behöva idag för våra tester.

Här väljer vi den stora instansen G5 4X.

Om du inte har ett nyckelpar måste du skapa ett.

Om det är första gången du gör detta och du inte är helt säker på hur du ansluter VS Code till din AWS-instans, rekommenderar jag att du tittar på vår dedikerade video om fjärrutvecklingsmiljö med VS Code på AWS.

Du behöver inte öppna andra portar, och jag rekommenderar att du lägger till kanske 100 gigabyte hårddisk.

I teorin ska modellen bara ta 20 gigabyte hårddisk, men det är alltid bäst att ha mer eftersom vi kanske kommer att behöva installera bibliotek, så här är vi säkra.

Låt oss klicka på Launch Instance.

Bra, den är skapad.

Om du har ett kvotproblem eftersom det kanske är första gången du lanserar en 8N GPU, rekommenderar jag att du kontaktar AWS support.

Jag tar nu den offentliga IP-adressen här, och nu byter jag till VS Code.

Längst ned till vänster måste du ansluta ett aktuellt fönster till värden, och först måste du konfigurera dina värdar.

Det här är IP-adressen som jag just hämtade från AWS, och det här är min SSH-nyckel.

Jag sparar filen och gör samma sak igen, men den här gången klickar jag på Mistral 7B.

Jag vill acceptera det nya fingeravtrycket.

Perfekt.

Nu är vi framme vid vår 8N GPU-maskin.

Låt oss först kontrollera om GPU:n är tillgänglig med rätt drivrutiner.

Med NVIDIA SMI är det perfekt.

Jag kan se att jag har en 8N GPU här och att den är tom, så jag har nästan 24 gigabyte VRAM för min modell idag.

Jag skapar en testkatalog som jag öppnar med VS Code, och nu skapar jag en testfil.

Låt oss kalla den infer.py.

Så vad ska vi lägga in i denna infer.py-fil? Det är enkelt.

Låt oss gå till vår Mistral AI-modell på Hugging Face.

Om det är första gången du laddar ner en modell på Hugging Face, kan du i princip gå hit till modeller, och du har massor av modeller tillgängliga.

Du kan klicka här och skriva Mistral 7B.

Som du kan se var Mistral redan högst upp på listan eftersom det är mycket trendigt idag.

Jag kommer att välja Instruct-modellen eftersom den är roligare att leka med idag, och här följer jag bara riktlinjerna från Mistrals AI-team.

Så jag kopierar och klistrar helt enkelt in koden i VS Code.

Det kommer inte att fungera som det är eftersom vi innan detta måste installera Transformers-biblioteket.

Eftersom Mistral 7B-modellen precis har lagts till i Transformers är den ännu inte tillgänglig i PyPy-paketet, men det är inget problem.

Vi kommer att installera Transformers direkt från GitHub-förvaret.

Bra.

Nu är Transformers korrekt installerat.

Det sista vi behöver göra är att använda 16-versionen av modellen med flytande punkt, för om vi använder standardversionen av modellen, som är 32 med flytande punkt, blir den för stor för vår A10 GPU, och för det mesta är skillnaden mellan FP16 och FP32 för denna typ av modell absolut inte märkbar.

Så vad vi behöver göra idag är att importera Torch och lägga till denna parameter, Torch dtype, när vi laddar modellen.

Bra.

Låt oss nu försöka köra inferensskriptet.

Bra.

Så vi har ett riktigt recept på majonnäs.

Vi kanske kan prova något annat.

Låt oss fråga modellen hur man installerar Transformers på en Linux-server.

Vi kan ta bort detta.

Bra.

Så CSS, jag är inte säker på varför.

Det låter korrekt, förutom CSS-markeringen här.

Jag är inte säker på varför det finns denna detalj, men jag tror att det räcker för att visa dig att det är en fin 7B-modell, och nu vet du hur man använder den, så det är din tur nu.

Du vet nu hur du distribuerar Mistral 7B-modellen på din egen server.

Som du kan se är det inte nödvändigtvis komplicerat, särskilt eftersom vi bara använder en enda GPU idag.

Om du inte har en A10 GPU med tillräckligt virtuellt minne kan du behöva flera mindre GPU:er.

I så fall måste du dela upp din modell på flera mindre GPU:er.

Det kommer att vara lite mer komplext, och vi kommer att behöva en annan dedikerad video för detta.

Ha en trevlig dag.