Accéder au contenu principal

Le Llama Mesh de Nvidia : Un guide avec des exemples

Découvrez le modèle de génération de maillage 3D de NVIDIA, LLaMA-Mesh, ainsi que ses capacités, ses limites, ses instructions de configuration et ses exemples.
Actualisé 16 janv. 2025  · 8 min de lecture

Récemment, NVIDIA a publié un modèle innovant appelé LLaMA-Meshqui est capable de générer des maillages 3D à partir de descriptions en texte brut.

Cela fonctionne également dans l'autre sens : à partir d'un maillage 3D, le modèle peut identifier l'objet.

Il s'agit d'une avancée significative pour l'apprentissage automatique, car la compréhension de l'espace 3D est une étape cruciale vers l'intelligence artificielle. LLaMA-Mesh est également un outil précieux pour les professionnels et les passionnés qui travaillent fréquemment avec des logiciels tels que Blender, rendant le processus de génération et d'utilisation des maillages 3D plus rapide.

Dans ce petit guide, j'expliquerai les capacités du modèle et je présenterai quelques exemples pour vous aider à comprendre son potentiel et ses limites.

Qu'est-ce que LLaMa-Mesh ?

LLaMA-Mesh est un modèle innovant développé par NVIDIA qui étend les capacités des grands modèles de langage (LLM) au domaine 3D.

Contrairement à tous les modèles précédents, LLaMA-Mesh unifie les modalités textuelles et 3D, permettant aux utilisateurs de créer des maillages 3D à l'aide de simples invites en langage naturel. 

Sous le capot, le modèle est un modèle de précision. LLaMa-3.1-8B-Instruction. Le modèle fonctionne en encodant les données de maillage 3D dans un format textuel, en particulier en utilisant la norme de fichier OBJ, qui décrit les sommets et les faces sous forme de texte brut.

Comment accéder à LLaMa-Mesh

Vous pouvez utiliser le modèle de trois manières différentes :

  1. Vous pouvez exécuter le modèle localement par l'intermédiaire de Hugging Face - le référentiel est disponible ici.
  2. Pour ceux d'entre vous qui maîtrisent Blender et qui souhaitent utiliser le modèle, celui-ci est disponible sous la forme d'un addon blender.
  3. Les auteurs ont également mis en place une démo en ligne sur la plateforme Hugging Face que j'utiliserai pour générer des maillages expérimentaux pour le guide.

Voici à quoi ressemble la WebApp de démonstration :

Nvidia Llama Mesh

La démo en ligne prend en charge jusqu'à 4096 jetons, tandis que le modèle complet prend en charge 8K. C'est pourquoi nous devons faire fonctionner le modèle localement pour bénéficier de toutes ses capacités.

Ensuite, je produirai trois exemples de formes de difficulté croissante pour tester les limites du modèle. J'exécuterai les exemples sur les versions 4K et 8K du modèle pour voir quelles sont les différences.

Comment configurer LLaMa-Mesh pour une utilisation locale ou dans le cloud ?

Pour ce guide, je vous montrerai comment exécuter le modèle en utilisant le moteur d'exécution A100 GPU de Google Colab. Si vous disposez localement d'une puissance de calcul suffisante, le même code peut être adapté pour fonctionner sur votre matériel personnel. Le dépôt Hugging Face est disponible ici.

Pour commencer, nous devons importer les bibliothèques nécessaires et télécharger le modèle et le tokenizer :

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()

Nous devons également définir l'adresse pad_token:

if tokenizer.pad_token_id is None:
    tokenizer.pad_token_id = tokenizer.eos_token_id

Enfin, nous devons tokeniser l'invite et l'introduire dans un modèle pour l'inférence (tout ceci est un flux de travail standard de Huggingface qui fonctionne avec presque n'importe quel autre modèle) :

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,
)

Les auteurs ne précisent pas les hyperparamètres qu'ils utilisent dans la démonstration de l'application web, donc par souci d'équité, j'utiliserai les valeurs par défaut pour notre comparaison.

Exemples de maillage LLaMa

Je vais maintenant passer en revue trois exemples de difficulté croissante et comparer les résultats de l'application de démonstration avec ceux que j'ai obtenus en exécutant le modèle sur Colab.

Exemple 1 : Un président

Commençons par quelque chose de simple mais de créatif : une chaise design. Voici l'invite (j'ajoute à la fin une demande pour que le maillage soit généré au format OBJ car le modèle qui tourne localement refuse parfois de générer quoi que ce soit d'autre) :

Create a 3D model of an original designer chair in OBJ format.

Voici l'objet généré dans la démo en ligne :

exemple de maillage nvidia llama - visualisation du maillage 3D d'une chaise

Il s'agit d'une chaise à la fois cool et étrange, bien qu'elle ressemble davantage à une chaise de réalisateur qu'à une chaise de designer.

Essayons maintenant d'exécuter l'invite localement et de visualiser le résultat. Voilà ce que nous obtenons :

exemple de maillage nvidia llama - visualisation du maillage 3D d'une chaise

Visualisation 3D d'une chaise

Le maillage avec un contexte plus large semble plus détaillé. Cependant, la chaise ressemble davantage à un canapé, à mon avis.

Exemple 2 : Un tore

Essayons maintenant un objet géométrique : un tore (un beignet en 3D). L'invite de cet exemple est la suivante :

Create a 3D model of a torus in OBJ format.

Voici à quoi ressemble le maillage généré par un modèle de 4096 :

exemple de tore maillé nvidia llama

Torus généré par le modèle

D'autre part, voici la visualisation du maillage généré par le modèle fonctionnant sur Colab :

exemple de tore maillé nvidia llama

Torus généré par le modèle

Comme vous pouvez le constater, ce maillage comporte beaucoup plus de polygones. Cependant, il n'y a toujours pas de trou au milieu. Voici à quoi devrait ressembler un tore :

exemple de tore

Source : Wikipedia

Exemple 3 : Bouteille de Klein

Enfin, repoussons les limites avec une bouteille de Klein, une structure 3D complexe. L'invite sera la suivante :

Create a 3D model of a Klein bottle in OBJ format.

Le modèle en ligne continue de générer un maillage à l'infini à partir de ces données, jusqu'à ce qu'il s'arrête lui-même et donne une erreur.

L'exécution locale de l'invite avec une fenêtre contextuelle plus grande résout le problème, mais le maillage obtenu ne ressemble en rien à une bouteille de Klein :

nvidia llama mesh exemple de bouteille klein

Bouteille de Klein générée par le modèle

Pour les personnes intéressées, voici à quoi ressemble la bouteille de Klein :

Exemple de bouteille de Klein

Source : Wikipedia

Les tests ci-dessus montrent clairement que si LLaMA-Mesh (versions en ligne et locale) excelle dans les conceptions créatives et simples, il se heurte à des limites pour les formes géométriques précises et les formes mathématiques très complexes. Au fur et à mesure que le modèle évolue, il sera passionnant de voir comment ces capacités se développent.

Conclusion

Dans ce guide, nous avons exploré le nouveau modèle LLaMa-Mesh de Nvidia et réalisé quelques exemples sur leur plateforme de démonstration. Bien que le modèle n'en soit qu'à ses débuts, il est extrêmement prometteur pour les professionnels et les passionnés qui ont besoin de solutions rapides et intuitives pour générer des maillages en 3D.

Au fur et à mesure de l'évolution du cadre, les futures mises à jour pourront apporter des fonctionnalités supplémentaires, telles que la prise en charge de géométries plus complexes ou la compatibilité avec les imprimantes 3D.


Dimitri Didmanidze's photo
Author
Dimitri Didmanidze
LinkedIn
Je suis Dimitri Didmanidze, un data scientist qui poursuit actuellement un master en mathématiques avec une spécialisation en apprentissage automatique. Mon parcours académique a également inclus des recherches sur les capacités des modèles basés sur les transformateurs et l'enseignement au niveau universitaire, ce qui a enrichi ma compréhension de concepts théoriques complexes. J'ai également travaillé dans le secteur bancaire, où j'ai appliqué ces principes pour relever des défis concrets en matière de données.
Sujets

Apprenez le lama avec ces cours !

cursus

Les fondamentaux du lama

5 heures hr
Expérimentez Llama 3 pour exécuter l'inférence sur des modèles pré-entraînés, les affiner sur des ensembles de données personnalisés et optimiser les performances.
Afficher les détailsRight Arrow
Commencer le cours
Certification disponible

cours

Travailler avec le lama 3

4 hr
3.8K
Explorez les dernières techniques pour exécuter le LLM Llama localement, le peaufiner et l'intégrer dans votre pile.
Voir plusRight Arrow