Pular para o conteúdo principal

Malha Llama da Nvidia: Um guia com exemplos

Saiba mais sobre o modelo de geração de malha 3D da NVIDIA, LLaMA-Mesh, incluindo seus recursos, limitações, instruções de configuração e exemplos.
Actualizado 16 de jan. de 2025  · 8 min de leitura

Recentemente, a NVIDIA lançou um modelo inovador chamado LLaMA-Meshque é capaz de gerar malhas 3D a partir de descrições de texto simples.

Também funciona de forma inversa: com uma malha 3D, o modelo pode identificar o objeto.

Esse é um avanço significativo para o aprendizado de máquina, já que a compreensão do espaço 3D é uma etapa crucial para a AGI. O LLaMA-Mesh também é uma ferramenta valiosa para profissionais e entusiastas que trabalham frequentemente com softwares como o Blender, tornando mais rápido o processo de geração e uso de malhas 3D.

Neste breve guia, explicarei os recursos do modelo e apresentarei alguns exemplos para ajudar você a entender seu potencial e suas limitações.

O que é o LLaMa-Mesh?

O LLaMA-Mesh é um modelo inovador desenvolvido pela NVIDIA que amplia os recursos de modelos de linguagem grandes (LLMs) para o domínio 3D.

Diferentemente de qualquer outro modelo anterior, o LLaMA-Mesh unifica as modalidades de texto e 3D, permitindo que os usuários criem malhas 3D por meio de simples comandos de linguagem natural. 

Por baixo do capô, o modelo é um ajuste fino de LLaMa-3.1-8B-Instruct. O modelo funciona codificando dados de malha 3D em um formato baseado em texto, especificamente usando o padrão de arquivo OBJ, que descreve vértices e faces como texto simples.

Como acessar o LLaMa-Mesh

Há três maneiras de você usar o modelo:

  1. Você pode executar o modelo localmente por meio do Hugging Face - o repositório está disponível aqui.
  2. Para você que domina o Blender e deseja usar o modelo nele, ele está disponível como um complemento do Blender.
  3. Os autores também criaram uma demonstração on-line na plataforma Hugging Face que eu usarei para gerar malhas experimentais para o guia.

Esta é a aparência do WebApp de demonstração:

Nvidia Llama Mesh

A demonstração on-line suporta até 4096 tokens, enquanto o modelo completo suporta 8K. Portanto, precisamos executar o modelo localmente para experimentar todos os seus recursos.

Em seguida, vou gerar três exemplos de formas de dificuldade crescente para testar as limitações do modelo. Executarei os exemplos nas versões de token 4K e 8K do modelo para ver como eles diferem.

Como configurar o LLaMa-Mesh para uso local ou na nuvem

Neste guia, demonstrarei como executar o modelo usando o tempo de execução da GPU A100 do Google Colab. Se você tiver poder computacional suficiente localmente, o mesmo código poderá ser adaptado para ser executado em seu hardware pessoal. O repositório do Hugging Face está disponível aqui.

Para começar, precisamos importar as bibliotecas necessárias e baixar o modelo e o tokenizador:

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

Também precisamos definir o endereço pad_token:

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

Por fim, precisamos tokenizar o prompt e alimentá-lo em um modelo para inferência (tudo isso é um fluxo de trabalho padrão do Huggingface que funciona com praticamente qualquer outro modelo):

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

Os autores não especificam os hiperparâmetros que usam na demonstração do aplicativo Web, portanto, para ser justo, usarei os padrões para nossa comparação.

Exemplos de LLaMa-Mesh

Agora, analisarei três exemplos de dificuldade crescente e compararei o resultado do aplicativo de demonstração com o resultado que obtive ao executar o modelo no Colab.

Exemplo 1: Uma cadeira

Começaremos com algo simples, mas criativo: uma cadeira de design. Aqui está o prompt (estou adicionando uma solicitação para que a malha seja gerada no formato OBJ no final, porque o modelo em execução local às vezes se recusa a gerar algo diferente):

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

Aqui está o objeto gerado na demonstração on-line:

Exemplo de malha nvidia llama - Visualização de malha 3D de uma cadeira

Sem dúvida, é uma cadeira legal e estranha, embora se pareça mais com a cadeira de um diretor de cinema do que com a de um designer.

Agora, vamos tentar executar o prompt localmente e visualizar o resultado. É isso que você recebe:

Exemplo de malha nvidia llama - Visualização de malha 3D de uma cadeira

Visualização de malha 3D de uma cadeira

A malha com um contexto maior parece mais detalhada. No entanto, na minha opinião, a cadeira se parece mais com um sofá.

Exemplo 2: Um toro

Em seguida, vamos tentar um objeto geométrico: um toro (um donut 3D). O prompt para este exemplo é:

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

Esta é a aparência da malha gerada por um modelo 4096:

Exemplo de toro de malha da nvidia llama

Toro gerado pelo modelo

Por outro lado, aqui está a visualização da malha gerada pelo modelo em execução no Colab:

Exemplo de toro de malha da nvidia llama

Toro gerado pelo modelo

Como você pode ver, essa malha tem muito mais polígonos. No entanto, ele ainda não tem um furo no meio. É assim que um toro deve se parecer:

exemplo de um toro

Fonte: Wikipédia

Exemplo 3: Frasco de Klein

Por fim, vamos ultrapassar os limites com uma garrafa de Klein, uma estrutura 3D complexa. O prompt para isso será:

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

O modelo on-line continua gerando uma malha infinitamente com essa entrada, até que finalmente se esgota e apresenta um erro.

Executar o prompt localmente com uma janela de contexto maior corrige o problema, mas a malha que você obtém não se parece em nada com uma garrafa de Klein:

exemplo de malha nvidia llama de uma garrafa de klein

Garrafa de Klein gerada pelo modelo

Para quem estiver interessado, o frasco de Klein é assim:

Exemplo de garrafa de Klein

Fonte: Wikipédia

Com base nos testes acima, fica claro que, embora o LLaMA-Mesh (versões on-line e local) seja excelente em designs criativos e simples, ele enfrenta limitações com formas geométricas precisas e matemáticas altamente complexas. À medida que o modelo evolui, será interessante ver como esses recursos se expandem.

Conclusão

Neste guia, exploramos o novo modelo LLaMa-Mesh da Nvidia e fizemos alguns exemplos em sua plataforma de demonstração. Embora o modelo esteja em seus estágios iniciais, ele ainda é muito promissor para profissionais e entusiastas que precisam de soluções rápidas e intuitivas para gerar malhas 3D.

À medida que a estrutura evolui, futuras atualizações podem trazer recursos expandidos, como o manuseio de geometrias mais complexas ou a compatibilidade com impressoras 3D.


Dimitri Didmanidze's photo
Author
Dimitri Didmanidze
LinkedIn
Eu sou Dimitri Didmanidze, um cientista de dados que atualmente está fazendo mestrado em matemática com foco em machine learning. Minha jornada acadêmica também incluiu pesquisas sobre os recursos de modelos baseados em transformadores e ensino em nível universitário, enriquecendo minha compreensão de conceitos teóricos complexos. Também trabalhei no setor bancário, onde apliquei esses princípios para enfrentar desafios de dados do mundo real.
Temas

Aprenda Llama com estes cursos!

programa

Llama Fundamentals

5 hours hr
Experiment with Llama 3 to run inference on pre-trained models, fine-tune them on custom datasets, and optimize performance.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

Introdução ao LLaMA da Meta AI

O LLaMA, uma estrutura revolucionária de código aberto, tem como objetivo tornar mais acessível a pesquisa de modelos de linguagem de grande porte.
Abid Ali Awan's photo

Abid Ali Awan

8 min

Machine Learning

blog

25 projetos de aprendizado de máquina para todos os níveis

Projetos de aprendizado de máquina para iniciantes, estudantes do último ano e profissionais. A lista consiste em projetos guiados, tutoriais e exemplos de código-fonte.
Abid Ali Awan's photo

Abid Ali Awan

15 min

tutorial

Guia para iniciantes do LlaMA-Factory WebUI: Ajuste fino dos LLMs

Saiba como fazer o ajuste fino dos LLMs em conjuntos de dados personalizados, avaliar o desempenho e exportar e servir modelos com facilidade usando a estrutura com pouco ou nenhum código do LLaMA-Factory.
Abid Ali Awan's photo

Abid Ali Awan

12 min

tutorial

Guia de Introdução ao Ajuste Fino de LLMs

O ajuste fino dos grandes modelos de linguagem (LLMs, Large Language Models) revolucionou o processamento de linguagem natural (PLN), oferecendo recursos sem precedentes em tarefas como tradução de idiomas, análise de sentimentos e geração de textos. Essa abordagem transformadora aproveita modelos pré-treinados como o GPT-2, aprimorando seu desempenho em domínios específicos pelo processo de ajuste fino.
Josep Ferrer's photo

Josep Ferrer

12 min

tutorial

Llama.cpp Tutorial: Um guia completo para inferência e implementação eficientes de LLM

Este guia abrangente sobre o Llama.cpp guiará você pelos fundamentos da configuração do seu ambiente de desenvolvimento, compreendendo suas principais funcionalidades e aproveitando seus recursos para solucionar casos de uso no mundo real.
Zoumana Keita 's photo

Zoumana Keita

11 min

tutorial

RAG With Llama 3.1 8B, Ollama e Langchain: Tutorial

Aprenda a criar um aplicativo RAG com o Llama 3.1 8B usando Ollama e Langchain, configurando o ambiente, processando documentos, criando embeddings e integrando um retriever.
Ryan Ong's photo

Ryan Ong

12 min

Ver maisVer mais