Vaikeuksia tekoälyn tai full-stack-kehityksen kanssa? Asiantuntijamme opastavat sinua: räätälöityjä neuvoja, teknistä integrointia ja paljon muuta. Ota yhteyttä osoitteessa [email protected].

LLaMA 3:n, Mistralin ja Mixtralin käyttöönotto AWS EC2:ssa vLLM:n avulla.

Vuonna 2023 on julkaistu monia kehittyneitä avoimen lähdekoodin LLM-malleja, mutta näiden tekoälymallien käyttöönotto tuotannossa on edelleen tekninen haaste. Tässä artikkelissa näytämme, miten joitakin parhaista LLM-malleista voidaan ottaa käyttöön AWS EC2:ssa: LLaMA 3 70B, Mistral 7B ja Mixtral 8x7B. Käytämme kehittynyttä päättelymoottoria, joka tukee eräkohtaista päättelyä läpimenon maksimoimiseksi: vLLM.

vLLM

LLaMA 3, Mistral ja Mixtral.

Meta on luonut ja lanseerannut suurten kielimallien (LLM) LLaMA 3 -sarjan, joka sisältää erilaisia generatiivisia tekstimalleja, jotka on esivalmennettu ja hienosäädetty. Näiden mallien koko vaihtelee, ja niiden parametrit vaihtelevat 7 miljardin ja 70 miljardin välillä.

Mistral AI on startup-yritys, jonka perustajina toimivat henkilöt, joilla on kokemusta Googlen DeepMindistä ja Metasta, ja se teki merkittävän tulon LLM-yritysten maailmaan Mistral 7B:n ja myöhemmin Mixtral 8x7B:n avulla.

Mistral 7B:n tekee erityisen vaikuttavaksi sen suorituskyky. Eri testeissä se on ylittänyt Llama2-13B:n ja jopa Llama1-34B:n monissa mittareissa. Tämä viittaa siihen, että Mistral 7B tarjoaa samanlaiset tai paremmat ominaisuudet huomattavasti pienemmällä laskennallisella yleiskustannuksella. Koodaustehtävissä Mistral 7B kilpailee CodeLlama 7B:n kanssa, ja sen 13,4 gigatavun koko mahdollistaa sen käytön tavallisilla koneilla.

Mixtral 8x7B on mukautuva ja nopea malli, joka sopii erilaisiin sovelluksiin. Se toimii kuusi kertaa nopeammalla nopeudella ja joko vastaa tai ylittää LLaMA 3 70B:n suorituskyvyn kaikissa testimittareissa. Tämä malli tukee useita kieliä ja sillä on luontaiset koodausominaisuudet. Se pystyy hallitsemaan jopa 32 000 merkin pituisia sekvenssejä.

Kaikki nämä mallit ovat avoimen lähdekoodin malleja, ja voit ottaa ne käyttöön omalla palvelimellasi, jos saat käyttöön oikean laitteiston. Katsotaanpa, miten ne otetaan käyttöön AWS EC2:ssa vLLM:n avulla.

Eräpäätelmä ja moni GPU vLLM:llä

vLLM on nopea ja käyttäjäystävällinen kirjasto, joka on räätälöity LLM:n tehokkaaseen päättelyyn ja käyttöön. vLLM:n suorituskyky perustuu useisiin kehittyneisiin tekniikoihin, kuten paged attention -tekniikkaan, joka mahdollistaa tehokkaan huomioavaimen ja -arvon muistinhallinnan, saapuvien kyselyjen eräajokäsittelyn reaaliajassa sekä räätälöityihin CUDA-ytimiin.

Lisäksi vLLM tarjoaa hyvää joustavuutta hajautetun päättelyn (tensoririnnakkaisuuden avulla), tulostuksen suoratoiston ja sekä NVIDIAn että AMD:n näytönohjainarkkitehtuurien mukauttamisen ansiosta.

Erityisesti vLLM on erittäin hyödyllinen LLaMA 3:n, Mistralin ja Mixtralin käyttöönotossa, koska sen avulla voimme ottaa mallit käyttöön AWS EC2 -instansseissa, joihin on upotettu useita pienempiä näytönohjaimia (kuten NVIDIA A10) yhden ison näytönohjaimen (kuten NVIDIA A100 tai H100) sijasta. Lisäksi vLLM:n avulla voimme lisätä huomattavasti mallimme läpimenoa eräkohtaisen päättelyn ansiosta.

Oikean laitteiston käyttöönotto AWS EC2:ssa

Elinikäisen oppimisen käyttöönotto on haaste monesta syystä: VRAM:n (GPU:n muistin) käyttö, päättelynopeus, läpäisykyky, levytilan käyttö... Tässä meidän on varmistettava, että AWS EC2:ssa on GPU-instanssi, jolla on riittävästi VRAM-muistia mallien suorittamiseen.

G5-instanssit ovat hyvä valinta, koska niiden avulla saat käyttöösi nykyaikaiset NVIDIA A10 -näytönohjaimet ja ne voivat skaalautua jopa 192 gigatavuun VRAM-muistia (katso g5.48xlarge-instanssi), mutta ne ovat silti melko kustannustehokkaita.

Mistral 7B on helpoin malli ottaa käyttöön, sillä se vaatii noin 14 Gt VRAM-muistia. Sitten tulevat Mixtral 8x7B, jossa on 110 Gt, ja LLaMA 3 70B, jossa on 140 Gt. Tässä tarkastellaan vain fp16:ta, ei fp32:ta, emmekä käytä minkäänlaista kvantisointia.

Näin ollen Mistral 7B voi toimia g5.xlarge-instanssilla, mutta Mixtral 8x7B ja LLaMA 3 70B vaativat g5.48xlarge-instanssin, joten tässä ohjeessa käytetään g5.48xlarge-instanssia.

Jotta voit tarjota tällaisia instansseja, kirjaudu AWS EC2 -konsoliin ja käynnistä uusi instanssi: valitse NVIDIA deep learning AMI g5.48xlarge -instanssissa. Tarvitset vähintään 300 Gt levytilaa.

Deep Learning AMI G5-instanssissa AWS:ssä

Asenna vLLM hajautettua päättelyä varten

vLLM:n asennus on melko suoraviivaista. Avataan SSH-yhteys juuri luotuun AWS-instanssiin ja asennetaan vLLM pipin avulla:

pip install vllm

Koska käytämme vLLM:ää hajautettuun päättelyyn 8 x A10-grafiikkapiirillä, meidän on asennettava myös Ray:

pip install ray

Jos asennuksen aikana ilmenee yhteensopivuusongelmia, voi olla helpompaa rakentaa vLLM lähdekoodista tai käyttää niiden Docker-kuvaa: katso lisätietoja asennusasiakirjoista.

Luo päättelyskripti

Voit nyt luoda ensimmäisen päättelyskriptin. Luo Python-tiedosto, joka sisältää seuraavaa:

from vllm import LLM

# Replace the model name with the one you want to use:
# Mixtral simple: mistralai/Mixtral-8x7B-v0.1
# Mixtral instruct: mistralai/Mixtral-8x7B-Instruct-v0.1
# Mistral 7B simple: mistralai/Mistral-7B-v0.1
# Mistral 7B instruct: mistralai/Mistral-7B-Instruct-v0.1
# LLaMA 3 70B: meta-llama/Llama-2-70b-hf
llm = LLM("mistralai/Mixtral-8x7B-Instruct-v0.1", tensor_parallel_size=8)

print(llm.generate("What is batch inference?"))

Suorita nyt skriptisi Pythonilla, joka palauttaa jotain tällaista:

Batch inference is the process of applying machine learning models to a batch of data inputs all at once, rather than processing each input individually in real-time. In batch inference, a large set of inputs is collected and then processed together as a group, or "batch," by the machine learning model.

Batch inference is often used in scenarios where real-time predictions are not required, and where there is a large volume of data that needs to be processed. It can be more efficient and cost-effective than real-time inference, as it allows for the efficient use of computing resources and can reduce the latency associated with processing individual inputs.

Batch inference is commonly used in applications such as image recognition, natural language processing, and predictive analytics. For example, a company might use batch inference to analyze customer data and generate insights about purchasing patterns, or to analyze sensor data from industrial equipment to identify potential maintenance issues.

In summary, batch inference is the process of applying machine learning models to a batch of data inputs all at once, as an alternative to real-time inference. It is commonly used in scenarios where real-time predictions are not required and where there is a large volume of data that needs to be processed efficiently.

Kuten näet, tämä on helppo nakki. Sinun on mukautettava tensor_parallel_size sen mukaan, kuinka monta näytönohjainta sinulla on.

Edellä mainittu oli kertaluonteinen skenaario. Nyt haluamme käynnistää kunnollisen päättelypalvelimen, joka pystyy käsittelemään useita pyyntöjä ja suorittamaan eräkohtaisia päättelyjä lennossa. Käynnistä ensin palvelin:

python -m vllm.entrypoints.openai.api_server \
--model mistralai/Mixtral-8x7B-Instruct-v0.1
--tensor-parallel-size 8

Jonkin ajan kuluttua, kun malli on ladattu oikein VRAM-muistiin, voit avata toisen shell-ikkunan ja tehdä joitakin pyyntöjä:

curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
    "model": "mistralai/Mixtral-8x7B-Instruct-v0.1",
    "prompt": "What is batch inference?"
}'

Tämä palauttaa saman tuloksen kuin aiemminkin, mutta tällä kertaa voit tehdä useita pyyntöjä samanaikaisesti.

Päätelmä

Kehittyneen päättelypalvelimen, kuten vLLM:n, hyödyntäminen on hyödyllistä, jos haluat maksimoida näytönohjaimen käytön ja ottaa mallisi helposti käyttöön useilla näytönohjaimilla rinnakkain.

Kuten näet, tämän tekniikan avulla on melko helppoa ottaa käyttöön kehittyneimmät avoimen lähdekoodin tekoälymallit, kuten LLaMA 3, Mistral ja Mixtral, omalla palvelimellasi.

Tässä ohjeessa käytimme AWS EC2:ta, mutta olisimme tietenkin voineet käyttää myös muita toimittajia. Suurin haaste on GPU:iden hinta ja niiden saatavuus.

Jos et halua ottaa tällaisia LLM:iä käyttöön itse, suosittelemme käyttämään sen sijaan NLP Cloud API:ta. Se säästää paljon aikaa ja saattaa olla jopa halvempaa kuin omien LLM:ien käyttöönotto. Jos et ole vielä tehnyt, kokeile rohkeasti!

Vincent
NLP Cloudin kehittäjäasiamies