Lernpfad
Vor kurzem hat NVIDIA ein innovatives Modell namens LLaMA-Meshveröffentlicht, das in der Lage ist, 3D-Netze aus einfachen Textbeschreibungen zu erzeugen.
Es funktioniert auch andersherum: Bei einem 3D-Netz kann das Modell das Objekt identifizieren.
Dies ist ein bedeutender Fortschritt für das maschinelle Lernen, denn das Verständnis des 3D-Raums ist ein entscheidender Schritt auf dem Weg zu AGI. LLaMA-Mesh ist auch ein wertvolles Werkzeug für Profis und Enthusiasten, die häufig mit Software wie Blender arbeiten, da es die Erstellung und Verwendung von 3D-Netzen beschleunigt.
In diesem kurzen Leitfaden erkläre ich dir die Möglichkeiten des Modells und führe ein paar Beispiele an, damit du sein Potenzial und seine Grenzen verstehst.
Was ist LLaMa-Mesh?
LLaMA-Mesh ist ein innovatives, von NVIDIA entwickeltes Modell, das die Fähigkeiten von großen Sprachmodellen (LLMs) auf den 3D-Bereich erweitert.
Wie kein anderes Modell zuvor vereint LLaMA-Mesh Text und 3D-Modalitäten und ermöglicht es den Nutzern, 3D-Netze durch einfache natürlichsprachliche Eingabeaufforderungen zu erstellen.
Unter der Haube ist das Modell ein fein abgestimmter LLaMa-3.1-8B-Instruct. Das Modell funktioniert, indem es 3D-Mesh-Daten in einem textbasierten Format kodiert, insbesondere mit dem OBJ-Dateistandard, der Eckpunkte und Flächen als reinen Text beschreibt.
Wie man auf LLaMa-Mesh zugreift
Es gibt drei Möglichkeiten, wie du das Modell nutzen kannst:
- Du kannst das Modell lokal über Hugging Face ausführen - das Repository ist verfügbar hier.
- Für diejenigen unter euch, die Blender beherrschen und das Modell dort verwenden wollen, ist es als Blender Addon.
- Die Autoren haben auch eine Online-Demo auf der Hugging Face Plattform eingerichtet, die ich nutzen werde, um Versuchsnetze für den Leitfaden zu erstellen.
So sieht die Demo-WebApp aus:
Die Online-Demo unterstützt bis zu 4096 Token, während das Vollmodell 8K unterstützt. Deshalb müssen wir das Modell lokal ausführen, um seine volle Leistungsfähigkeit zu erfahren.
Als Nächstes werde ich drei Beispiele für Formen mit steigendem Schwierigkeitsgrad erstellen, um die Grenzen des Modells zu testen. Ich werde die Beispiele sowohl mit der 4K- als auch mit der 8K-Token-Version des Modells durchführen, um zu sehen, wie sie sich unterscheiden.
So richtest du LLaMa-Mesh für die lokale oder cloudbasierte Nutzung ein
In dieser Anleitung zeige ich dir, wie du das Modell mit der A100 GPU-Runtime von Google Colab ausführst. Wenn du vor Ort über genügend Rechenleistung verfügst, kann derselbe Code auch auf deiner persönlichen Hardware ausgeführt werden. Das Hugging Face Repository ist verfügbar hier.
Um loszulegen, müssen wir die notwendigen Bibliotheken importieren und das Modell und den Tokenizer herunterladen:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = "Zhengyi/LLaMA-Mesh"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto").cuda()
Wir müssen auch die pad_token
einstellen:
if tokenizer.pad_token_id is None:
tokenizer.pad_token_id = tokenizer.eos_token_id
Zum Schluss müssen wir die Eingabeaufforderung tokenisieren und in ein Modell zur Inferenz einspeisen (all das ist ein Standard-Workflow von Huggingface, der mit fast jedem anderen Modell funktioniert):
prompt = "Create a 3D model of an original designer chair."
inputs = tokenizer(prompt, return_tensors="pt", padding=True)
input_ids = inputs.input_ids.cuda()
output = model.generate(
input_ids,
attention_mask=inputs['attention_mask'], # Provide the attention_mask
max_length=8000,
)
Die Autoren geben nicht an, welche Hyperparameter sie in der Web-App-Demo verwenden. Um fair zu sein, werde ich die Standardwerte für unseren Vergleich verwenden.
LLaMa-Mesh Beispiele
Ich gehe jetzt drei Beispiele mit steigendem Schwierigkeitsgrad durch und vergleiche die Ergebnisse der Demo-App mit den Ergebnissen, die ich erhalte, wenn ich das Modell auf Colab laufen lasse.
Beispiel 1: A Stuhl
Wir beginnen mit etwas Einfachem, aber Kreativem - einem Designerstuhl. Hier ist die Eingabeaufforderung (ich füge am Ende die Bitte hinzu, das Mesh im OBJ-Format zu generieren, weil das lokal laufende Modell sich manchmal weigert, etwas anderes zu generieren):
Create a 3D model of an original designer chair in OBJ format.
Hier ist das generierte Objekt in der Online-Demo:
Es ist auf jeden Fall ein cooler und seltsamer Stuhl, auch wenn er mehr an den Stuhl eines Filmregisseurs erinnert als an den eines Designers.
Versuchen wir nun, die Eingabeaufforderung lokal auszuführen und das Ergebnis zu visualisieren. Das ist es, was wir bekommen:
3D-Netzvisualisierung eines Stuhls
Die Masche mit einem größeren Kontext sieht detaillierter aus. Meiner Meinung nach sieht der Stuhl aber eher wie eine Couch aus.
Beispiel 2: A Torus
Als Nächstes wollen wir ein geometrisches Objekt ausprobieren: einen Torus (einen 3D-Donut). Die Aufforderung für dieses Beispiel lautet:
Create a 3D model of a torus in OBJ format.
So sieht das von einem 4096er Modell erzeugte Netz aus:
Vom Modell erzeugter Torus
Auf der anderen Seite siehst du hier die Visualisierung des Netzes, das durch das Modell in Colab erzeugt wurde:
Vom Modell erzeugter Torus
Wie du sehen kannst, hat dieses Netz viel mehr Polygone. Sie hat aber immer noch kein Loch in der Mitte. So sollte ein Torus aussehen:
Quelle: Wikipedia
Beispiel 3: Klein bottle
Zum Schluss wollen wir mit einer Klein-Flasche - einer komplexen 3D-Struktur - an die Grenzen gehen. Die Aufforderung dazu lautet:
Create a 3D model of a Klein bottle in OBJ format.
Das Online-Modell generiert mit dieser Eingabe endlos viele Maschen, bis es sich schließlich selbst überholt und einen Fehler ausgibt.
Wenn du die Eingabeaufforderung lokal mit einem größeren Kontextfenster ausführst, wird das Problem behoben, aber das Netz, das wir erhalten, sieht nicht wie eine kleine Flasche aus:
Die vom Modell erzeugte kleine Flasche
So sieht die Klein-Flasche aus, falls es dich interessiert:
Quelle: Wikipedia
Aus den obigen Tests geht hervor, dass LLaMA-Mesh (sowohl die Online- als auch die lokale Version) zwar bei kreativen und einfachen Entwürfen gut abschneidet, aber bei präzisen geometrischen und hochkomplexen mathematischen Formen an seine Grenzen stößt. Wenn sich das Modell weiterentwickelt, wird es spannend sein zu sehen, wie sich diese Möglichkeiten erweitern.
Fazit
In diesem Leitfaden haben wir das neue LLaMa-Mesh-Modell von Nvidia erkundet und ein paar Beispiele auf der Demo-Plattform durchgeführt. Auch wenn das Modell noch in den Kinderschuhen steckt, ist es vielversprechend für Profis und Enthusiasten, die schnelle und intuitive Lösungen für die Erstellung von 3D-Netzen benötigen.
Mit der Weiterentwicklung des Frameworks werden zukünftige Updates möglicherweise erweiterte Funktionen mit sich bringen, z. B. die Verarbeitung komplexerer Geometrien oder die Kompatibilität mit 3D-Druckern.