Bereitstellung des Llama 3.1 405B Inference Service: Ein Leitfaden für Einsteiger

Bereitstellung des Llama 3.1 405B Inference Service: Ein Leitfaden für Einsteiger

Einleitung

Dieser Artikel zeigt anhand einer 8 x H100 GPU-Instanz, wie Llama3.1–405B bereitgestellt wird. Die eigene Bereitstellung großer Modelle ist zeitaufwändig und kostspielig. Um diese mühsame und teure Arbeit zu vermeiden, können Sie Llama3.1–405B direkt nutzen. Suchen Sie nach hervorragenden Modellanbieter-Plattformen in der KI-Branche und nutzen Sie diese über den OpenAI-API-Standard für Inferenzdienste. Sie sind benutzerfreundlich und das Pay-as-you-go-Preismodell ist kosteneffizient und überschaubar. Wir empfehlen den Llama3.1–405B-Inferenz-API-Dienst von Novita AI.

Anforderungen für die Bereitstellung von Llama3.1–405B

Alle von Meta veröffentlichten Llama3.1-Modelle umfassen 8B, 70B und 405B. Das Llama3.1–405B-Modell ist das bisher größte quelloffene große Sprachmodell mit 405 Milliarden Parametern. Die Leistungsbewertungsergebnisse des Modells übertreffen GPT-4 und GPT-4o und sind gleichauf mit Claude3.5-Sonnet.

Es ist schwierig, ein so großes Modell auf eine GPU zu laden. Die originale FP16-Version des 405B-Modells benötigt 810 GB GPU-Speicher, wie im folgenden Bild dargestellt. Am Beispiel der derzeit leistungsstärksten verfügbaren GPU H100 kann der 8-Sockel-Server diese Version des Modells nicht direkt laden. Es ist notwendig, die FP16-Version des Modells zu quantisieren und in eine Darstellung mit niedriger Genauigkeit umzuwandeln, wodurch die Speicheranforderungen reduziert werden und das erfolgreiche Laden auf die GPU ermöglicht wird.

Die Llama3.1-Modelle haben eine ähnliche Architektur wie die Llama3-Modelle, was die Anpassung an das Inferenz-Framework erleichtert. Open-Source-Inferenzlösungen wie vLLM können schnell angepasst werden, um das große Llama3.1–405B zu unterstützen.

Für die Bereitstellung eines Inferenzdienstes für Llama3.1–405B sind die drei wichtigsten Vorbereitungen:

  • Hardware: Wir empfehlen, die 8 x H100 GPU-Serverinstanz zu mieten und etwa 1,5 TB Speicherplatz zu reservieren.
  • Modell: Bereiten Sie ein Hugging Face-Konto vor und laden Sie das originale Llama3.1–405B oder die FP8- oder INT4-Versionen des Modells herunter.
  • Inferenz-Framework: Laden Sie die neueste Version von vLLM v0.5.3.post1 herunter.

Modellvorbereitung

Nachdem Sie einen 8-Sockel-H100-GPU-Server vorbereitet haben, melden Sie sich auf dem Server an und laden Sie das Modell herunter. Wir stellen vor, wie Sie die FP16-Version des Modells herunterladen und in FP8- und INT4-quantisierte Versionen konvertieren (Sie können natürlich auch die vorquantisierten Modelle von Hugging Face herunterladen).

Wir empfehlen, die Instruct-Version von der Hugging Face-Plattform herunterzuladen. Registrieren Sie sich zunächst und melden Sie sich bei Hugging Face an. Erstellen und speichern Sie auf der Einstellungsseite den aktuellen Access Token des Benutzers, der beim Herunterladen des Modells verwendet wird.

Öffnen Sie die Llama3.1–405B-Modellseite: https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct, reichen Sie eine Modellanfrage bei Meta ein und warten Sie etwa eine halbe Stunde auf die Autorisierung.

Gehen Sie zurück zum GPU-Server, installieren Sie die Hugging Face-Client-Anwendung und starten Sie den Download des Modells. Der Befehl lautet wie folgt:

pip install huggingface-hub
huggingface-cli login ## Access Token eingeben
huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct ## Download des 405B-Modells starten

Nach einer langen Wartezeit (abhängig von der Internetverbindung) wird das 800 GB große 405B-Modell auf den lokalen Rechner heruntergeladen. Rufen Sie „huggingface-cli scan-cache“ auf, um die detaillierten Modellinformationen anzuzeigen.

Als Nächstes führen wir die FP8- und INT4-Quantisierung des Originalmodells durch.

Laden Sie zunächst das FP8-Quantisierungstool herunter. Sie können das Open-Source-Tool AutoFP8 verwenden: https://github.com/neuralmagic/AutoFP8. Rufen Sie die darin enthaltenen Skripte auf, um die Quantisierung im dynamischen Modus durchzuführen. Gehen Sie dabei wie folgt vor:

git clone https://github.com/neuralmagic/AutoFP8.git
cd AutoFP8
pip install -e . ## AutoFP8-Tool lokal kompilieren und installieren
python3 examples/quantize.py --model-id meta-llama/Meta-Llama-3.1-405B-Instruct --save-dir Meta-Llama-3-8B-Instruct-fp8 --activation-scheme dynamic --max-seq-len 2048 --num-samples 2048

Das Quantisierungsskript gibt mit „ --save-dir“ den Ausgabepfad für die quantisierte Modellversion an. Da es sich um eine reine Gewichtsquantisierung handelt, ist die Gesamtgeschwindigkeit hoch.

Sie können auch die von Meta bereitgestellte FP8-quantisierte Version herunterladen: https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct-FP8. Der Download-Befehl lautet wie folgt:

huggingface-cli download meta-llama/Meta-Llama-3.1-405B-Instruct-FP8

Wie bei der FP8-Quantisierung können Sie das Open-Source-Tool AutoAWQ verwenden, um eine INT4-Quantisierung durchzuführen. Die Adresse für diese Quantisierungsmethode ist https://github.com/casper-hansen/AutoAWQ. Die Quantisierungsschritte sind wie folgt:

Erstellen des Inferenz-Frameworks

Dank der leistungsstarken Open-Source-Community ist vLLM ein effizientes Inferenz-Framework, das Unterstützung für verschiedene LLMs bietet und zeitnah aktualisiert wird. Ab v0.5.3.post1 unterstützt vLLM den Inferenzdienst für die Llama 3.1-Modelle.

Die Schritte zum Herunterladen des vLLM-Quellcodes und zum Kompilieren sind wie folgt:

git clone https://github.com/vllm-project/vllm
cd vllm
git checkout -b v0.5.3.post1 v0.5.3.post1
pip install -e .

Nach der Kompilierung können Sie den Inferenzdienst starten.

Neben der Kompilierung von vLLM auf dem lokalen Rechner können Sie vLLM auch als Docker-Image erstellen. Die Methode ist wie folgt:

git clone https://github.com/vllm-project/vllm
cd vllm
git checkout -b v0.5.3.post1 v0.5.3.post1
docker build -t vllm_0.5.3.p1 .

Sie können das vLLM-Image auch herunterladen:

docker pull vllm/vllm-openai:v0.5.3.post1

Ausführen des Inferenzdienstes

Nachdem Sie das vLLM-Inferenz-Framework erstellt haben, können Sie vLLM starten und das Llama 3.1–405B-Modell laden, um den Inferenzdienst durchzuführen. Für die lokale Kompilierung des vLLM-Inferenz-Frameworks müssen Sie in das Stammverzeichnis des vLLM-Quellcodes wechseln und dann den folgenden Befehl ausführen, um den Inferenzdienst zu starten:

cd vllm
python3 -m vllm.entrypoints.openai.api_server --port 18001 --model meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tensor-parallel-size 8 --pipeline-parallel-size 1 --swap-space 16 --gpu-memory-utilization 0.99 --dtype auto --served-model-name llama31-405b-fp8 --max-num-seqs 32 --max-model-len 32768 --max-num-batched-tokens 32768 --max-seq-len-to-capture 32768

Wenn Sie den Inferenzdienst in einem Docker-Container ausführen möchten, können Sie den folgenden Befehl verwenden:

docker run -d --gpus all --privileged --ipc=host --net=host vllm/vllm-openai:v0.5.3.post1 --port 18001 --model meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tensor-parallel-size 8 --pipeline-parallel-size 1 --swap-space 16 --gpu-memory-utilization 0.99 --dtype auto --served-model-name llama31-405b-fp8 --max-num-seqs 32 --max-model-len 32768 --max-num-batched-tokens 32768 --max-seq-len-to-capture 32768

Sobald das vLLM-Inferenz-Framework ausgeführt wird, hört es auf Port 18001 und empfängt und verarbeitet Benutzeranfragen. Sie können den Inferenzdienst schnell überprüfen, indem Sie von Ihrem lokalen Terminal aus eine POST-Anfrage an den Completions-Endpunkt senden. Der Befehl lautet wie folgt:

curl -X POST -H “Content-Type: application/json”
http://localhost:18001/v1/completions
-d ‘{“model”: “llama31-405b-fp8”, “prompt”: “San Francisco is a”}’

Damit ist die Bereitstellung des Llama 3.1-Modells abgeschlossen.

Novita AI is the All-in-one cloud platform that empowers your AI ambitions. Integrated APIs, serverless, GPU Instance — the cost-effective tools you need. Eliminate infrastructure, start free, and make your AI vision a reality.