Safetensors
English
Bioinspired3D / README.md
rachelkluu's picture
Update README.md
1a0e96a verified
|
raw
history blame
5.74 kB
---
datasets:
- lamm-mit/Bioinspired3D
language:
- en
base_model:
- meta-llama/Llama-3.2-3B-Instruct
---
# Bioinspired3D
Fine-tuned version of meta-llama/Llama-3.2-3B-Instruct using LoRA adapters for Blender code generation for bioinspired 3D models.
## Abstract
Generative AI has made rapid progress in text, image, and video synthesis, yet text-to-3D modeling for
scientific design remains particularly challenging due to limited controllability and high computational
cost. Most existing 3D generative methods rely on meshes, voxels, or point clouds which can be costly
to train and difficult to control. We introduce Bioinspired123D, a lightweight and modular code-
as-geometry pipeline that generates fabricable 3D structures directly through parametric programs
rather than dense visual representations. At the core of Bioinspired123D is Bioinspired3D, a compact
language model finetuned to translate natural language design cues into Blender Python scripts
encoding smooth, biologically inspired geometries. We curate a domain-specific dataset of over
4,000 bioinspired and geometric design scripts spanning helical, cellular, and tubular motifs with
parametric variability. The dataset is expanded and validated through an automated LLM-driven,
Blender-based quality control pipeline. Bioinspired3D is then embedded in a graph-based agentic
framework that integrates multimodal retrieval-augmented generation and a vision–language model
critic to iteratively evaluate, critique, and repair generated scripts. We evaluate performance on a new
benchmark for 3D geometry script generation and show that Bioinspired123D demonstrates a near
fourfold improvement over its unfinetuned base model, while also outperforming substantially larger
state-of-the-art language models despite using far fewer parameters and compute. By prioritizing
code-as-geometry representations, Bioinspired123D enables compute-efficient, controllable, and
interpretable text-to-3D generation, lowering barriers to AI driven scientific discovery in materials
and structural design.
## What’s in this repo (Hugging Face)
This Hugging Face release contains **Bioinspired3D only**: a LoRA adapter that you load on top of the base model to generate **Blender Python scripts from natural-language prompts**.
For the full **Bioinspired123D** agentic framework (retrieval + VLM critic + iterative repair), see the GitHub repo:
https://github.com/lamm-mit/Bioinspired123D
## Usage
### Install
```bash
pip install -U transformers accelerate peft torch
```
### Load the base model + LoRA adapter
```bash
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import torch
BASE_MODEL = "meta-llama/Llama-3.2-3B-Instruct"
LORA_ADAPTER = "rachelkluu/bioinspired3D"
# Set this to your preferred device, e.g. "cuda:0" or "cpu"
DEVICE_3D = "cuda:0"
bio3d_tok = AutoTokenizer.from_pretrained(BASE_MODEL)
base_model = AutoModelForCausalLM.from_pretrained(
BASE_MODEL,
torch_dtype=torch.float16,
device_map={"": DEVICE_3D},
)
bio3d_model = PeftModel.from_pretrained(base_model, LORA_ADAPTER)
bio3d_model.eval()
def format_input(prompt: str) -> str:
return (
"<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n"
"You are a helpful assistant<|eot_id|>"
"<|start_header_id|>user<|end_header_id|>\n\n"
f"{prompt}<|eot_id|>"
"<|start_header_id|>assistant<|end_header_id|>\n\n"
)
```
### Load utility functions
```bash
def extract_blender_code(model_out: str) -> str:
matches = list(re.finditer(r"```python\s*(.*?)```", model_out, flags=re.DOTALL))
if matches:
return matches[-1].group(1).strip()
pos = model_out.rfind("import bpy")
return model_out[pos:].strip() if pos != -1 else model_out.strip()
def clean_blender_code(text: str) -> str:
if not text:
return "import bpy"
code = text.strip()
code = code.replace("```python", "").replace("```", "")
code = re.sub(r"[\x00-\x08\x0b-\x1f]", "", code)
if not code.lstrip().startswith("import bpy"):
code = "import bpy\n" + code
return code
```
### Generate Blender code from a natural-language prompt
```bash
prompt = """Write Blender code to make a cellular structure."""
formatted = format_input(prompt)
inputs = bio3d_tok(formatted, return_tensors="pt").to(bio3d_model.device)
with torch.no_grad():
outputs = bio3d_model.generate(
**inputs,
max_new_tokens=2048,
do_sample=True,
temperature=0.1,
top_p=0.9,
)
raw = bio3d_tok.decode(outputs[0], skip_special_tokens=True)
raw_code = extract_blender_code(raw)
blender_code = clean_blender_code(raw_code)
print(blender_code)
```
### Prompting tips
Input: Natural language design intent (for example: “tubular structure with noisy placement”, “helical material with cylindrical fibers”, “smoothed cellular structure”).
Output: A Blender Python script (intended to be executed in Blender) that constructs the requested geometry.
To encourage explicit reasoning, append a variant of: “Think step by step.” to the end of your prompt. For example: "Write Blender code to make a tubular structure with z-aligned tubules. Think step by step."
### Notes:
This adapter is meant to be used with the specified base model. Generated scripts should be treated like code: run in a sandboxed environment and validate geometry as needed.
## Citation
If you use Bioinspired3D or the broader Bioinspired123D framework in your work, please cite:
```bibtex
@article{luu2026bioinspired123d,
title={Bioinspired123D: Generative 3D Modeling System for Bioinspired Structures},
author={Luu, Rachel K. and Buehler, Markus J.},
year={2026}
}