Skip to main content

Unfold any HuggingFace transformer into an interactive architecture diagram, inline in Jupyter.

Project description

MODEL UNFOLDER

your one click model unfolder

PyPI

from model_unfolder import unfold
unfold("meta-llama/Meta-Llama-3-8B")

Meta-Llama-3-8B architecture diagram


Install

pip install model-unfolder

# for local development
pip install -e .
pip install transformers   # only required to load by model ID

Three ways to call it

from model_unfolder import unfold

# 1) by HuggingFace model ID — only config.json is downloaded, never weights
unfold("meta-llama/Meta-Llama-3-8B")
unfold("deepseek-ai/DeepSeek-V3")

# 2) from a transformers AutoConfig
from transformers import AutoConfig
unfold(AutoConfig.from_pretrained("Qwen/Qwen2.5-7B", trust_remote_code=True))

# 3) from a raw config.json dict — no transformers install needed
import json
unfold(json.load(open("config.json")))

Built on transformers

Pass a model ID and unfold calls transformers.AutoConfig.from_pretrained(model_id) under the hood (parser.py). It only retries with trust_remote_code=True when Transformers says the config requires remote code.

Auth-token from your environment

Gated models (Llama-3, Mistral, Gemma, …) need a HuggingFace token. unfold reuses whatever transformers / huggingface_hub already see:

# Either set an env var
export HF_TOKEN="hf_xxxxxxxx"            # also accepted: HUGGING_FACE_HUB_TOKEN

# or use the CLI cache (persists across sessions)
huggingface-cli login

# or load a .env in your notebook
# >>> from dotenv import load_dotenv; load_dotenv()

No extra config in model_unfolder itself.

Save / export

diagram = unfold(cfg)
diagram.save("model.html")   # standalone interactive HTML
diagram.save("model.json")   # expanded architecture JSON (no rendering)
diagram.param_count()        # {"total": ..., "active": ..., "per_layer": [...]}
diagram.to_ir()              # full IR dict

Param estimates are close to published numbers — DeepSeek-V3 reports ~675B (~41B active), Llama-3-8B reports 8.03B.

Models supported

Transformers

Family Models
DeepSeek DeepSeek-V2, DeepSeek-V3 (+ MTP head), Kimi K2
Llama Llama 3 / 3.1 / 3.2 / 3.3, OLMo-2, Llama 4 Scout / Maverick (MoE + iRoPE NoPE layers)
Mistral Mistral 7B, Mixtral 8x7B / 8x22B, Mistral Medium 3.5
Qwen Qwen2 / 2.5, Qwen2-MoE, Qwen3, Qwen3-MoE, Qwen3.5 / 3.6 (+ MTP)
Gemma Gemma 2 9B / 27B (interleaved local+global), Gemma 3 / 3n (+ PLE), Gemma 4 31B / E2B / E4B (+ PLE), RecurrentGemma 2B / 9B (LRU + local attention)
Cohere Command R, Command R+, Command R7B (QK-Norm attention)
Jamba Jamba (SSM + attention hybrid, MoE)
Zamba Zamba 7B, Zamba2 2.7B / 7B (Mamba SSM + weight-shared attention)
Mamba Mamba 130M–2.8B, Mamba-2 (pure SSM, no attention)
Falcon Falcon 7B / 40B (parallel attn+FFN), Falcon-H1 (Mamba-2 SSM)
MiniMax MiniMax-Text-01 (lightning + softmax hybrid, MoE)
RWKV RWKV-4 / 5 / 6 (pure recurrent, no attention)

Diffusors

Coming soon.

Custom

Drop a request in issues.

License

Apache 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

model_unfolder-0.2.9.tar.gz (122.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

model_unfolder-0.2.9-py3-none-any.whl (151.9 kB view details)

Uploaded Python 3

File details

Details for the file model_unfolder-0.2.9.tar.gz.

File metadata

  • Download URL: model_unfolder-0.2.9.tar.gz
  • Upload date:
  • Size: 122.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for model_unfolder-0.2.9.tar.gz
Algorithm Hash digest
SHA256 2001181ec3a478472e15b0a621ba4a14c46855ca6af8f1e5c9ae9cb65d29df28
MD5 7b9bd7dbf779a9fd4f5e7b3cf3de3e9c
BLAKE2b-256 5892bf4f60706b357dfc4a9d68baf37ce7b5dc62de69b57d7830a1d6e2f5d85e

See more details on using hashes here.

Provenance

The following attestation bundles were made for model_unfolder-0.2.9.tar.gz:

Publisher: release.yml on SoumilB7/unfold

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file model_unfolder-0.2.9-py3-none-any.whl.

File metadata

  • Download URL: model_unfolder-0.2.9-py3-none-any.whl
  • Upload date:
  • Size: 151.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for model_unfolder-0.2.9-py3-none-any.whl
Algorithm Hash digest
SHA256 e9958d4937995bfb8aa0ed80718f6d8a3826e6dcf301f9012d59cdaf5158309c
MD5 5b5f1b45345d42b4aeba6282d838b33e
BLAKE2b-256 3cc937edf04a180c8b9cc85221cfc7bf6f3ee34de7b60ca7423a964eba3ca0e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for model_unfolder-0.2.9-py3-none-any.whl:

Publisher: release.yml on SoumilB7/unfold

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page