N150 N300 T3K P100 P150 P300C Galaxy 15 min Validated

Modern Setup with tt-installer 2.0

Welcome to the fastest way to get started with Tenstorrent!

tt-installer 2.0 is Tenstorrent's official one-command installation tool that sets up your entire development environment in minutes. It replaces manual installation with an automated, production-tested approach.

What is tt-installer 2.0?

tt-installer 2.0 is a comprehensive installation script that:

⚠️ IMPORTANT: Cloud and Container Environments

If you're running in a cloud VM, Kubernetes, Docker, or any containerized environment:

  • Use --mode-container flag or explicitly skip firmware/KMD updates
  • DO NOT attempt to update firmware or kernel drivers unless you have full system control
  • Host-level changes (KMD, HugePages, firmware) must be done on bare metal or with explicit cloud provider support
  • See Container Mode section below for detailed guidance

Rule of thumb: If you're SSH'd into a cloud instance or running inside a container, use --mode-container or --no-install-kmd --no-update-firmware flags.

Why Use tt-installer Instead of Manual Setup?

Traditional approach (manual):

Modern approach (tt-installer 2.0):

What Gets Installed

tt-installer 2.0 sets up:

  1. System packages - Build tools, dependencies (via apt/yum)

  2. Python environment - Virtual environment with pip/pipx

  3. Kernel-Mode Driver (KMD) - Tenstorrent hardware driver

  4. Firmware updater (tt-flash) - Updates your card's firmware to latest

  5. HugePages - Kernel memory configuration for fast hardware access

  6. System Management Interface (tt-smi) - Monitor your Tenstorrent devices

  7. Podman - Container runtime for tt-metalium

  8. tt-metalium containers - Two options:

    • Standard container (1GB) - For TT-NN inference and development
    • Model Demos container (10GB) - Includes full tt-metal build and demos
  9. tt-inference-server - Production inference serving

  10. SFPI - Scalar Floating Point Interface for kernel development

Quick Start: One-Command Installation

The fastest way to get started:

/bin/bash -c "$(curl -fsSL https://github.com/tenstorrent/tt-installer/releases/latest/download/install.sh)"

What happens:

  1. Downloads the latest installer script
  2. Prompts you to choose Python environment strategy
  3. Asks if you want the Model Demos container (10GB) or just standard (1GB)
  4. Installs everything automatically
  5. May ask to reboot (required for kernel driver)

Safety note: Always review scripts before running them. You can inspect the installer at: https://github.com/tenstorrent/tt-installer/releases/latest/download/install.sh

🚀 Run Quick Install

Step 1: Download and Inspect the Installer

For more control, download the installer first:

cd ~
curl -fsSL https://github.com/tenstorrent/tt-installer/releases/latest/download/install.sh -O
chmod +x install.sh

Then review it:

less install.sh

📥 Download Installer
cd ~ && curl -fsSL https://github.com/tenstorrent/tt-installer/releases/latest/download/install.sh -O && chmod +x install.sh

Step 2: Run Interactive Installation

Run the installer with prompts to customize your setup:

cd ~
./install.sh

You'll be asked:

Recommended choices for most users:

⚙️ Run Interactive Install
cd ~ && ./install.sh

Step 3: Non-Interactive Installation (Optional)

For automated deployments or cloud environments, use non-interactive mode:

./install.sh --mode-non-interactive \
  --python-choice=new-venv \
  --install-metalium-models-container=off \
  --reboot-option=never

Key flags:

🤖 Run Non-Interactive Install
cd ~ && ./install.sh --mode-non-interactive --python-choice=new-venv --install-metalium-models-container=off --reboot-option=never

Step 4: Verify Installation

After installation (and reboot if prompted), verify everything works:

Check Hardware Detection

tt-smi

You should see your Tenstorrent device(s) listed with:

🔍 Run tt-smi
tt-smi

Test tt-metalium Container

Run a simple test inside the container:

tt-metalium "python3 -c 'import ttnn; print(ttnn.__version__)'"

This verifies:

🧪 Test tt-metalium
tt-metalium "python3 -c \

Using tt-metalium Containers

tt-installer provides two ways to use tt-metalium:

Interactive Shell

Launch an interactive session:

tt-metalium

This:

Run Commands Directly

Execute commands without entering the shell:

# Check TTNN version
tt-metalium "python3 -c 'import ttnn; print(ttnn.__version__)'"

# Run a Python script
tt-metalium "python3 ~/my-inference-script.py"

# Use pytest (for demos)
tt-metalium "pytest models/demos/wormhole/llama31_8b/demo/demo.py"

Key benefit: Your files in ~ are automatically accessible inside the container!

Standard vs Model Demos Container

Standard container (1GB) - tt-metalium:

Model Demos container (10GB) - tt-metalium-models:

Recommendation:

Advanced Options

Pin Specific Versions

Install specific versions of components:

./install.sh \
  --kmd-version=1.34 \
  --fw-version=80.18.3.0 \
  --smi-version=2.0.0 \
  --metalium-image-tag=v0.53.0-rc36

Skip Components

Customize what gets installed:

./install.sh \
  --no-install-kmd \              # Skip kernel driver (for containers)
  --no-install-hugepages \        # Skip HugePages config
  --no-install-podman \           # Skip Podman (if you have Docker)
  --no-install-metalium-container # Skip container download

Container Mode

When running inside a container (like Docker) or cloud environment, use container mode:

./install.sh --mode-container

This automatically:

Cloud Environment Best Practices

When running in cloud VMs (AWS, GCP, Azure, etc.):

  1. Bare Metal Instances Only: Tenstorrent hardware requires PCIe passthrough - only works on bare metal instances, not virtualized VMs
  2. Provider-Managed Drivers: If your cloud provider pre-installs KMD and firmware, use:
    ./install.sh --no-install-kmd --no-update-firmware --no-install-hugepages
    
  3. Container Orchestration (Kubernetes): For pods running tt-metalium:
    ./install.sh --mode-container
    
    • KMD must be installed on host nodes
    • HugePages configured via Kubernetes DaemonSet
    • Firmware managed by cluster admins

When NOT to tamper with firmware/KMD:

Safe operations in restricted environments:

Custom Python Environment

Specify where to create the Python venv:

./install.sh \
  --python-choice=new-venv \
  --new-venv-location=$HOME/my-custom-venv

Custom Container Image

Use a different container image or registry:

./install.sh \
  --metalium-image-url=myregistry.example.com/tt-metalium \
  --metalium-image-tag=custom-build-123

Use UV Instead of Pip

For faster Python package installation:

./install.sh --use-uv=on

uv is a faster alternative to pip written in Rust.

Post-Installation: Next Steps

After installation completes, you're ready to:

  1. Explore Lessons 3-12 - This walkthrough teaches you how to:

    • Download and run LLMs (Lesson 3)
    • Build chat interfaces (Lessons 4-5)
    • Deploy production vLLM servers (Lessons 6-7)
    • Generate images with Stable Diffusion (Lesson 8)
    • Create coding assistants (Lesson 9)
    • Use TT-Jukebox for model management (Lesson 10)
    • Compile models with tt-forge-fe" target="_blank" rel="noreferrer">TT-Forge (Lesson 11)
    • Use JAX with TT-XLA (Lesson 12)
  2. Try Model Demos (if you installed Model Demos container):

    tt-metalium-models
    cd tt-metal/models/demos
    pytest wormhole/llama31_8b/demo/demo.py
    

3. **Read Official Documentation**:
   - [TT-Metalium Docs](https://docs.tenstorrent.com/tt-metal/latest/)
   - [TTNN Examples](https://docs.tenstorrent.com/tt-metal/latest/ttnn/ttnn/usage.html)
   - [tt-installer Wiki](https://github.com/tenstorrent/tt-installer/wiki)

4. **Join the Community**:
   - [Discord](https://discord.gg/tenstorrent)
   - [GitHub Discussions](https://github.com/tenstorrent/tt-metal/discussions)

## Troubleshooting

### Installation fails with "Permission denied"

**Problem:** Installer requires sudo permissions.

**Solution:** Run with sudo or ensure your user is in sudoers file:
```bash
sudo ./install.sh

"tt-smi: command not found" after installation

Problem: Python environment not activated or PATH not updated.

Solution:

# If using pipx (default)
pipx ensurepath
source ~/.bashrc

# If using venv
source ~/.tenstorrent-venv/bin/activate

Kernel driver not loading

Problem: Reboot required after KMD installation.

Solution:

sudo reboot
# After reboot, verify:
lsmod | grep tenstorrent

Container fails to start

Problem: Podman not configured or device permissions issue.

Solution:

# Check Podman status
podman info

# Check device permissions
ls -l /dev/tenstorrent/

# Re-run installer to fix permissions
./install.sh --no-install-kmd --no-install-hugepages

Firmware update fails

Problem: Device not detected or firmware file corrupted.

Solution:

# Verify device detection first
tt-smi

# Force firmware update
./install.sh --update-firmware=force --no-install-kmd

HugePages not configured

Problem: Installation skipped HugePages or reboot didn't apply changes.

Solution:

# Check current HugePages
cat /proc/meminfo | grep Huge

# Re-run installer to configure
./install.sh --no-install-kmd --no-install-podman

# Then reboot
sudo reboot

Model Demos container too large

Problem: 10GB download too slow or disk space limited.

Solution: Use standard container only:

./install.sh --install-metalium-models-container=off

You can always add it later:

./install.sh --no-install-kmd --no-install-hugepages --install-metalium-models-container=on

Supported Operating Systems

OS Version Status Notes
Ubuntu 24.04 LTS ✅ Recommended Latest Ubuntu LTS
Ubuntu 22.04 LTS ✅ Recommended Most tested, preferred by Tenstorrent
Ubuntu 20.04 LTS ⚠️ Deprecated Support will be removed; Metalium cannot be installed
Debian 12.10.0 ✅ Supported Requires curl and rustup for modern Rust
Fedora 41-42 ✅ Supported May require restart after base packages
Other DEB Various ⚠️ Unsupported May work but not tested
Other RPM Various ⚠️ Unsupported May work but not tested

Recommended: Ubuntu 22.04.5 LTS for best compatibility.

Comparison: tt-installer vs Manual Setup

Feature tt-installer 2.0 Manual Setup (Old Lessons 1-2)
Time 5-15 minutes 1-2 hours
Complexity One command 15+ manual steps
Kernel driver ✅ Automatic ❌ Manual DKMS configuration
Firmware ✅ Auto-updated ❌ Manual tt-flash usage
HugePages ✅ Auto-configured ❌ Manual sysctl.conf editing
tt-metalium ✅ Container (1GB) ❌ Build from source (20+ min)
Python env ✅ Auto-created ❌ Manual venv setup
Updates ✅ Re-run installer ❌ Rebuild everything
Rollback ✅ Version pinning ❌ Complex git operations
Production ✅ Ready ❌ Requires hardening

When to Use Manual Setup Instead

tt-installer is recommended for most users, but manual setup may be preferred if:

For 95% of users, tt-installer is the right choice.

Frequently Asked Questions

Q: Can I use tt-installer inside a Docker container?

A: Yes, but use --mode-container flag:

./install.sh --mode-container

This skips host-level changes (KMD, firmware, HugePages) that must be done on the host system. The container can still run tt-metalium and use devices if the host has proper drivers installed.

Q: I'm running in AWS/GCP/Azure - should I update firmware?

A: No, not unless you're on a bare metal instance and have full control. Cloud providers may manage firmware and drivers for you. Use:

./install.sh --no-install-kmd --no-update-firmware

Check with your cloud provider's documentation for Tenstorrent support.

Q: What's the difference between --mode-container and --no-install-kmd?

A:

You can combine flags for fine-grained control:

./install.sh --no-install-kmd --no-update-firmware --no-install-hugepages

Q: Can I run tt-metalium without KMD installed?

A: No. The Tenstorrent kernel driver must be installed on the host system for hardware access. Containers can use devices if the host has KMD loaded.

Q: How do I know if I'm in a restricted environment?

A: If any of these are true, you're likely restricted:

Use --mode-container or skip flags in these cases.

Q: What if firmware update fails in my cloud environment?

A: Firmware updates require direct hardware access and may not work in cloud environments. Options:

  1. Skip firmware updates: ./install.sh --no-update-firmware
  2. Use cloud provider's firmware (if pre-installed)
  3. Contact cloud provider support for Tenstorrent firmware management
  4. If on bare metal with full control, ensure proper PCIe access

Q: Can I use tt-installer in Kubernetes?

A: Yes, with proper setup:

See Using tt-metalium Container for Kubernetes examples.

Resources

Official Documentation:

Community:

Next Steps:


Congratulations! You now have a complete Tenstorrent development environment.

The next lessons will teach you how to use this environment to run inference, build applications, and deploy production services.