Dette NLP-skykurset viser hvordan du distribuerer og bruker Mistral 7b generativ AI-modell på en NVIDIA A10 GPU på AWS.
Mistral 7b-modellen slår LLaMA 3 7b i alle benchmarks og LLaMA 3 13b i mange benchmarks. Den er faktisk til og med på nivå med LLaMA 1 34b-modellen.
Implementering og bruk krever minst 15 GB VRAM, og derfor trenger vi en A10 GPU med minst 24 GB VRAM.
Her er kursets struktur:
Hei, dette er Julien Sainas fra NLP Cloud.
I dag skal vi se hvordan vi distribuerer den generative modellen Mistral 7b på en AWS A10 GPU.
Mistral 7b er en toppmoderne generativ modell utgitt av det franske selskapet Mistral AI.
Denne modellen ble lansert i september 2023 og slår Lama 2 7b på alle offisielle benchmarks.
Enda mer interessant er det at den også slår Lama 2 13b på mange benchmarks, og den er på nivå med Lama 1 34b.
Mistral AI har gitt ut denne modellen med en Apache-lisens, slik at du kan bruke modellen slik du vil.
Teamet lanserte både en grunnleggende modell og en finjustert chat-versjon.
Vi skal distribuere chat-versjonen i denne videoen i dag.
Mistral 7b krever minst 14 gigabyte virtuelt minne, og mer hvis kontekststørrelsen er stor.
Så vi kommer til å distribuere den på en A10 NVIDIA GPU på AWS, siden denne GPU-en har 24 gigabyte virtuelt minne og er ganske kostnadseffektiv.
Den enkleste måten å distribuere Mistral 7b på er å bruke Hugging Face-rammeverket og følge Mistral AIs offisielle retningslinjer.
I første omgang må vi velge riktig AWS-maskin.
Det finnes massevis av maskiner på AWS, så det beste rådet jeg kan gi deg er å starte med denne siden for forekomsttyper og deretter gå til Accelerated Computing til venstre.
Her har du en liste over alle de akselererte maskinvareinstansene som AWS tilbyr, og den vi vil ha i dag er G5.
Som du kan se her, har G5 en A10 GPU, som er det vi ønsker oss.
Det finnes flere varianter av G5-instanser.
Noen har bare én GPU, andre har fire eller åtte GPU-er.
Én GPU er nok for oss, fordi det er nok virtuelt minne på én GPU, men vi må være veldig forsiktige med hvor mye minne instansen har, for når vi starter Mistral 7b-modellen, trenger vi midlertidig litt minne for å laste inn modellen.
Det er grunnen til at vi velger en G5 4X large-forekomst i dag, fordi 64 gigabyte bør være nok.
Nå bytter jeg til AWS-konsollen og klikker på Launch Instance.
La oss kalle den Test A10 Mistral.
Vi velger Ubuntu OS, men det er et triks.
Vi ønsker ikke å velge standard Ubuntu OS fordi vi må installere NVIDIA-driverne manuelt, noe som er svært smertefullt.
Det vi skal gjøre er å velge Deep Learning AMI GPU PyTorch-serveren her, som er mye bedre fordi denne AMI-en kommer med Ubuntu pluss NVIDIA-drivere pluss CUDA-verktøysett pluss PyTorch og andre ting, som er alt vi trenger i dag for testene våre.
Her velger vi den store forekomsten G5 4X.
Hvis du ikke har et nøkkelpar, må du opprette et.
Hvis dette er første gang du gjør dette, og du ikke er helt sikker på hvordan du kobler VS Code til AWS-instansen din, anbefaler jeg at du ser vår egen video om eksternt utviklingsmiljø med VS Code på AWS.
Du trenger ikke å åpne andre porter, og jeg anbefaler at du legger til kanskje 100 gigabyte disk.
I teorien skal modellen bare ta 20 gigabyte harddisk, men det er alltid best å ha mer fordi vi kanskje trenger å installere biblioteker, så her er vi trygge.
La oss klikke på Launch Instance.
Bra, den er opprettet.
Hvis du har et kvoteproblem fordi det kanskje er første gang du lanserer en 8N GPU, anbefaler jeg at du kontakter AWS-support.
Jeg tar nå den offentlige IP-adressen her, og nå bytter jeg til VS Code.
Nederst til venstre må du koble et aktuelt vindu til verten, og først må du konfigurere vertene dine.
Dette er IP-adressen jeg nettopp hentet fra AWS, og dette er SSH-nøkkelen min.
Jeg lagrer filen og gjør det samme igjen, og denne gangen klikker jeg på Mistral 7B.
Jeg ønsker å godta det nye fingeravtrykket.
Perfekt.
Nå er vi på vår 8N GPU-maskin.
La oss først sjekke om GPU-en er tilgjengelig med de riktige driverne.
Perfekt med NVIDIA SMI.
Jeg kan se at jeg har en 8N GPU her, og at den er tom, så jeg har nesten 24 gigabyte VRAM til modellen min i dag.
Jeg oppretter en testkatalog som jeg åpner med VS Code, og nå oppretter jeg en testfil.
La oss kalle den infer.py.
Så hva skal vi legge inn i denne infer.py-filen? Det er enkelt.
La oss gå til Mistral AI-modellen vår på Hugging Face.
Hvis dette er første gang du laster ned en modell på Hugging Face, kan du i utgangspunktet gå hit til modeller, og du har mange modeller tilgjengelig.
Du kan klikke her og skrive inn Mistral 7B.
Som du kan se, var Mistral allerede øverst på listen fordi det er veldig trendy i disse dager.
Jeg kommer til å velge Instruct-modellen fordi den er morsommere å leke med i dag, og her følger jeg bare retningslinjene fra Mistral AI-teamet.
Så jeg kopierer og limer inn koden i VS Code.
Det vil ikke fungere som det er, for før dette må vi installere Transformers-biblioteket.
Siden denne Mistral 7B-modellen nettopp er lagt til i Transformers, er den ennå ikke tilgjengelig i PyPy-pakken, men det er ikke noe problem.
Vi installerer Transformers direkte fra GitHub-depotet.
Bra.
Nå er Transformers riktig installert.
Det siste vi må gjøre, er å bruke flytpunkt 16-versjonen av modellen, for hvis vi bruker standardversjonen av modellen, som er flytpunkt 32, blir den for stor for vår A10 GPU, og som oftest er forskjellen mellom FP16 og FP32 for denne typen modeller absolutt ikke merkbar.
Det vi må gjøre i dag, er å importere Torch og legge til denne parameteren, Torch dtype, når vi laster inn modellen.
Bra.
La oss nå prøve å kjøre inferensskriptet.
Bra.
Så vi har en skikkelig oppskrift på majones.
Kanskje vi kan prøve noe annet.
La oss spørre modellen hvordan du installerer Transformers på en Linux-server.
Vi kan fjerne dette.
Bra.
Så CSS, jeg er ikke sikker på hvorfor.
Det høres riktig ut, bortsett fra CSS-markeringen her.
Jeg er ikke sikker på hvorfor det er denne detaljen, men jeg tror det er nok til å vise deg at det er en fin 7B-modell, og nå vet du hvordan du bruker den, så nå er det din tur.
Du vet nå hvordan du distribuerer Mistral 7B-modellen på din egen server.
Som du ser, er det ikke nødvendigvis komplisert, særlig fordi vi bare bruker én enkelt GPU i dag.
Hvis du ikke har en A10 GPU med nok virtuelt minne, kan det hende du trenger flere mindre GPU-er.
I så fall må du dele opp modellen på flere mindre GPU-er.
Det blir litt mer komplekst, og vi trenger en egen video til dette.
Ha en fin dag.