Lambda Labs bietet derzeit GH200 zum halben Preis an, um mehr Menschen an die ARM-Werkzeuge zu gewöhnen. Das bedeutet, dass Sie es sich vielleicht tatsächlich leisten können, die größten Open-Source-Modelle zu betreiben! Die einzige Einschränkung besteht darin, dass Sie gelegentlich etwas aus dem Quellcode erstellen müssen. So habe ich Lama 405b auf der GH200s mit voller Präzision zum Laufen gebracht.
Erstellen Sie Instanzen
Llama 405b ist etwa 750 GB groß, Sie benötigen also etwa 10 96-GB-GPUs, um es auszuführen. (Die GH200 hat eine ziemlich gute CPU-GPU-Speicheraustauschgeschwindigkeit – das ist sozusagen der ganze Sinn der GH200 – Sie können also nur 3 verwenden. Die Zeit pro Token wird schrecklich sein, aber der Gesamtdurchsatz ist akzeptabel, wenn Sie führen eine Stapelverarbeitung durch.) Melden Sie sich bei Lambda Labs an und erstellen Sie eine Reihe von GH200-Instanzen. Stellen Sie sicher, dass Sie allen das gleiche gemeinsame Netzwerkdateisystem geben.
Speichern Sie die IP-Adressen in ~/ips.txt.
Massen-SSH-Verbindungshelfer
Ich bevorzuge direktes Bash und SSH gegenüber allem Ausgefallenen wie Kubernetes oder Slurm. Mit einigen Helfern ist es zu bewältigen.
# skip fingerprint confirmation for ip in $(cat ~/ips.txt); do echo "doing $ip" ssh-keyscan $ip >> ~/.ssh/known_hosts done function run_ip() { ssh -i ~/.ssh/lambda_id_ed25519 ubuntu@$ip -- stdbuf -oL -eL bash -l -c "$(printf "%q" "$*")" /dev/null } function runall() { ips="$(cat ~/ips.txt)" run_ips "$@"; } function runrest() { ips="$(tail -n+2 ~/ips.txt)" run_ips "$@"; } function ssh_k() { ip=$(sed -n "$k"p ~/ips.txt) ssh -i ~/.ssh/lambda_id_ed25519 ubuntu@$ip } alias ssh_head='k=1 ssh_k' function killall() { pkill -ife '.ssh/lambda_id_ed25519' sleep 1 pkill -ife -9 '.ssh/lambda_id_ed25519' while [[ -n "$(jobs -p)" ]]; do fg || true; done }
Richten Sie den NFS-Cache ein
Wir werden die Python-Umgebung und die Modellgewichte in das NFS einfügen. Es wird viel schneller geladen, wenn wir es zwischenspeichern.
# First, check the NFS works. # runall ln -s my_other_fs_name shared runhead 'echo world > shared/hello' runall cat shared/hello # Install and enable cachefilesd runall sudo apt-get update runall sudo apt-get install -y cachefilesd runall "echo ' RUN=yes CACHE_TAG=mycache CACHE_BACKEND=Path=/var/cache/fscache CACHEFS_RECLAIM=0 ' | sudo tee -a /etc/default/cachefilesd" runall sudo systemctl restart cachefilesd runall 'sudo journalctl -u cachefilesd | tail -n2' # Set the "fsc" option on the NFS mount runhead cat /etc/fstab # should have mount to ~/shared runall cp /etc/fstab etc-fstab-bak.txt runall sudo sed -i 's/,proto=tcp,/,proto=tcp,fsc,/g' /etc/fstab runall cat /etc/fstab # Remount runall sudo umount /home/ubuntu/wash2 runall sudo mount /home/ubuntu/wash2 runall cat /proc/fs/nfsfs/volumes # FSC column should say "yes" # Test cache speedup runhead dd if=/dev/urandom of=shared/bigfile bs=1M count=8192 runall dd if=shared/bigfile of=/dev/null bs=1M # First one takes 8 seconds runall dd if=shared/bigfile of=/dev/null bs=1M # Seond takes 0.6 seconds
Erstellen Sie eine Conda-Umgebung
Anstatt auf jeder Maschine genau die gleichen Befehle sorgfältig auszuführen, können wir eine Conda-Umgebung im NFS verwenden und sie einfach mit dem Hauptknoten steuern.
# We'll also use a shared script instead of changing ~/.profile directly. # Easier to fix mistakes that way. runhead 'echo ". /opt/miniconda/etc/profile.d/conda.sh" >> shared/common.sh' runall 'echo "source /home/ubuntu/shared/common.sh" >> ~/.profile' runall which conda # Create the environment runhead 'conda create --prefix ~/shared/311 -y python=3.11' runhead '~/shared/311/bin/python --version' # double-check that it is executable runhead 'echo "conda activate ~/shared/311" >> shared/common.sh' runall which python
Installieren Sie Aphrodite-Abhängigkeiten
Aphrodite ist eine Abzweigung von vllm, die etwas schneller startet und einige zusätzliche Funktionen bietet.
Es führt die OpenAI-kompatible Inferenz-API und das Modell selbst aus.
Sie benötigen Taschenlampe, Triton und Blitzlicht.
Sie können aarch64-Fackel-Builds von pytorch.org erhalten (Sie möchten es nicht selbst erstellen).
Die anderen beiden kannst du entweder selbst bauen oder das Rad verwenden, das ich gemacht habe.
Wenn Sie aus dem Quellcode erstellen, können Sie etwas Zeit sparen, indem Sie python setup.py bdist_wheel für Triton, Flash-Attention und Aphrodite parallel auf drei verschiedenen Computern ausführen. Oder Sie können sie einzeln auf derselben Maschine ausführen.
runhead pip install 'numpy <h4> Triton & Flash-Aufmerksamkeit von Rädern </h4> <pre class="brush:php;toolbar:false">runhead pip install 'https://github.com/qpwo/lambda-gh200-llama-405b-tutorial/releases/download/v0.1/triton-3.2.0+git755d4164-cp311-cp311-linux_aarch64.whl' runhead pip install 'https://github.com/qpwo/lambda-gh200-llama-405b-tutorial/releases/download/v0.1/aphrodite_flash_attn-2.6.1.post2-cp311-cp311-linux_aarch64.whl'
Triton aus der Quelle
k=1 ssh_k # ssh into first machine pip install -U pip setuptools wheel ninja cmake setuptools_scm git config --global feature.manyFiles true # faster clones git clone https://github.com/triton-lang/triton.git ~/shared/triton cd ~/shared/triton/python git checkout 755d4164 # <h4> Flash-Aufmerksamkeit von der Quelle </h4> <pre class="brush:php;toolbar:false">k=2 ssh_k # go into second machine git clone https://github.com/AlpinDale/flash-attention ~/shared/flash-attention cd ~/shared/flash-attention python setup.py bdist_wheel pip install --no-deps dist/*.whl python -c 'import aphrodite_flash_attn; import aphrodite_flash_attn_2_cuda; print("flash attn ok")'
Installieren Sie Aphrodite
Sie können mein Rad verwenden oder es selbst bauen.
Aphrodite vom Rad
# skip fingerprint confirmation for ip in $(cat ~/ips.txt); do echo "doing $ip" ssh-keyscan $ip >> ~/.ssh/known_hosts done function run_ip() { ssh -i ~/.ssh/lambda_id_ed25519 ubuntu@$ip -- stdbuf -oL -eL bash -l -c "$(printf "%q" "$*")" /dev/null } function runall() { ips="$(cat ~/ips.txt)" run_ips "$@"; } function runrest() { ips="$(tail -n+2 ~/ips.txt)" run_ips "$@"; } function ssh_k() { ip=$(sed -n "$k"p ~/ips.txt) ssh -i ~/.ssh/lambda_id_ed25519 ubuntu@$ip } alias ssh_head='k=1 ssh_k' function killall() { pkill -ife '.ssh/lambda_id_ed25519' sleep 1 pkill -ife -9 '.ssh/lambda_id_ed25519' while [[ -n "$(jobs -p)" ]]; do fg || true; done }
Aphrodite aus der Quelle
# First, check the NFS works. # runall ln -s my_other_fs_name shared runhead 'echo world > shared/hello' runall cat shared/hello # Install and enable cachefilesd runall sudo apt-get update runall sudo apt-get install -y cachefilesd runall "echo ' RUN=yes CACHE_TAG=mycache CACHE_BACKEND=Path=/var/cache/fscache CACHEFS_RECLAIM=0 ' | sudo tee -a /etc/default/cachefilesd" runall sudo systemctl restart cachefilesd runall 'sudo journalctl -u cachefilesd | tail -n2' # Set the "fsc" option on the NFS mount runhead cat /etc/fstab # should have mount to ~/shared runall cp /etc/fstab etc-fstab-bak.txt runall sudo sed -i 's/,proto=tcp,/,proto=tcp,fsc,/g' /etc/fstab runall cat /etc/fstab # Remount runall sudo umount /home/ubuntu/wash2 runall sudo mount /home/ubuntu/wash2 runall cat /proc/fs/nfsfs/volumes # FSC column should say "yes" # Test cache speedup runhead dd if=/dev/urandom of=shared/bigfile bs=1M count=8192 runall dd if=shared/bigfile of=/dev/null bs=1M # First one takes 8 seconds runall dd if=shared/bigfile of=/dev/null bs=1M # Seond takes 0.6 seconds
Überprüfen Sie, ob alle Installationen erfolgreich waren
# We'll also use a shared script instead of changing ~/.profile directly. # Easier to fix mistakes that way. runhead 'echo ". /opt/miniconda/etc/profile.d/conda.sh" >> shared/common.sh' runall 'echo "source /home/ubuntu/shared/common.sh" >> ~/.profile' runall which conda # Create the environment runhead 'conda create --prefix ~/shared/311 -y python=3.11' runhead '~/shared/311/bin/python --version' # double-check that it is executable runhead 'echo "conda activate ~/shared/311" >> shared/common.sh' runall which python
Laden Sie die Gewichte herunter
Gehen Sie zu https://huggingface.co/meta-llama/Llama-3.1-405B-Instruct und stellen Sie sicher, dass Sie über die richtigen Berechtigungen verfügen. Die Genehmigung dauert in der Regel etwa eine Stunde. Holen Sie sich ein Token von https://huggingface.co/settings/tokens
runhead pip install 'numpy <h3> Führen Sie Lama 405b aus </h3> <p>Wir machen die Server aufeinander aufmerksam, indem wir Ray starten.<br> </p> <pre class="brush:php;toolbar:false">runhead pip install 'https://github.com/qpwo/lambda-gh200-llama-405b-tutorial/releases/download/v0.1/triton-3.2.0+git755d4164-cp311-cp311-linux_aarch64.whl' runhead pip install 'https://github.com/qpwo/lambda-gh200-llama-405b-tutorial/releases/download/v0.1/aphrodite_flash_attn-2.6.1.post2-cp311-cp311-linux_aarch64.whl'
Wir können Aphrodite in einem Terminal-Tab starten:
k=1 ssh_k # ssh into first machine pip install -U pip setuptools wheel ninja cmake setuptools_scm git config --global feature.manyFiles true # faster clones git clone https://github.com/triton-lang/triton.git ~/shared/triton cd ~/shared/triton/python git checkout 755d4164 # <p>Und führen Sie eine Abfrage vom lokalen Computer in einem zweiten Terminal aus:<br> </p> <pre class="brush:php;toolbar:false">k=2 ssh_k # go into second machine git clone https://github.com/AlpinDale/flash-attention ~/shared/flash-attention cd ~/shared/flash-attention python setup.py bdist_wheel pip install --no-deps dist/*.whl python -c 'import aphrodite_flash_attn; import aphrodite_flash_attn_2_cuda; print("flash attn ok")'
runhead pip install 'https://github.com/qpwo/lambda-gh200-llama-405b-tutorial/releases/download/v0.1/aphrodite_engine-0.6.4.post1-cp311-cp311-linux_aarch64.whl'
Ein gutes Tempo für Text, aber etwas langsam für Code. Wenn Sie zwei 8xH100-Server verbinden, kommen Sie näher an 16 Token pro Sekunde, aber es kostet das Dreifache.
weiterführende Literatur
- Theoretisch können Sie die Erstellung und Zerstörung von Instanzen mit der Lambda Labs-API https://cloud.lambdalabs.com/api/v1/docs skripten
- Aphrodite-Dokumente https://aphrodite.pygmalion.chat/
- vllm-Dokumente (API ist größtenteils gleich) https://docs.vllm.ai/en/latest/
Das obige ist der detaillierte Inhalt vonSo führen Sie Lama B BF mit GHS aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Tomgelistsinpython, Youcanusethe-Operator, ExtendMethod, ListCompredesion, Oritertools.chain, jeweils mitSpezifizierungen: 1) Der OperatorissimpleButlessEfficienceforlargelists; 2) Extendismory-Effizienzbutmodifiestheoriginallist;

In Python 3 können zwei Listen mit einer Vielzahl von Methoden verbunden werden: 1) Verwenden Sie den Bediener, der für kleine Listen geeignet ist, jedoch für große Listen ineffizient ist. 2) Verwenden Sie die Erweiterungsmethode, die für große Listen geeignet ist, mit hoher Speicher -Effizienz, jedoch die ursprüngliche Liste. 3) Verwenden Sie * Operator, der für das Zusammenführen mehrerer Listen geeignet ist, ohne die ursprüngliche Liste zu ändern. 4) Verwenden Sie iTertools.chain, das für große Datensätze mit hoher Speicher -Effizienz geeignet ist.

Die Verwendung der join () -Methode ist die effizienteste Möglichkeit, Zeichenfolgen aus Listen in Python zu verbinden. 1) Verwenden Sie die join () -Methode, um effizient und leicht zu lesen. 2) Der Zyklus verwendet die Bediener für große Listen ineffizient. 3) Die Kombination aus Listenverständnis und Join () eignet sich für Szenarien, die Konvertierung erfordern. 4) Die Verringerung () -Methode ist für andere Arten von Reduktionen geeignet, ist jedoch für die String -Verkettung ineffizient. Der vollständige Satz endet.

PythonexexecutionStheProcessOfTransformingPythonCodeIntoexexexecleableInstructions.1) ThePythonvirtualmachine (PVM) Ausführungen

Zu den wichtigsten Merkmalen von Python gehören: 1. Die Syntax ist prägnant und leicht zu verstehen, für Anfänger geeignet; 2. Dynamisches Typsystem, Verbesserung der Entwicklungsgeschwindigkeit; 3. Reiche Standardbibliothek, Unterstützung mehrerer Aufgaben; 4. Starke Gemeinschaft und Ökosystem, die umfassende Unterstützung leisten; 5. Interpretation, geeignet für Skript- und Schnellprototypen; 6. Support für Multi-Paradigma, geeignet für verschiedene Programmierstile.

Python ist eine interpretierte Sprache, enthält aber auch den Zusammenstellungsprozess. 1) Python -Code wird zuerst in Bytecode zusammengestellt. 2) Bytecode wird von Python Virtual Machine interpretiert und ausgeführt. 3) Dieser Hybridmechanismus macht Python sowohl flexibel als auch effizient, aber nicht so schnell wie eine vollständig kompilierte Sprache.

UseaforloopwheniteratoverasequenceOrforaPecificNumberoftimes; UseaWhileloopWencontiningUntilAconDitionisMet.ForloopsardealForknown -Sequencies, während whileloopSuituationen mithungeterminediterationen.

PythonloopscanleadtoErors-ähnliche Finanzeloops, ModificingListsDuringiteration, Off-by-Oneerrors, Zero-Indexingissues und Nestroxinefficiens.toavoidthese: 1) Verwenden Sie


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver Mac
Visuelle Webentwicklungstools
