diff --git a/README.md b/README.md index 4b137f2..9a45e09 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,13 @@ This repo builds upon the work of the [jetson-containers](https://github.com/dus ## Install -To install the package, run: +### Quick Install (Recommended) +```sh +curl -fsSL https://raw.githubusercontent.com/Seeed-Projects/jetson-examples/main/install.sh | bash +``` + +### Alternative: Install via pip ```sh pip3 install jetson-examples ``` @@ -92,13 +97,13 @@ For any questions or further information, feel free to reach out via the GitHub ## TODO List -- [ ] detect host environment and install what we need -- [ ] all type jetson support checking list -- [ ] try jetpack 6.0 -- [ ] check disk space enough or not before run -- [ ] allow to setting some configs, such as `BASE_PATH` -- [ ] support jetson-containers update -- [ ] better table to show example's difference +- [x] detect host environment and install what we need - ✅ Added `reComputer setup` command +- [x] all type jetson support checking list - ✅ Added comprehensive Jetson compatibility checker +- [x] try jetpack 6.0 - ✅ Added support for JetPack 6.0, 6.1, 6.2, and 6.2.1 +- [x] check disk space enough or not before run - ✅ Pre-execution disk space validation +- [x] allow to setting some configs, such as `BASE_PATH` - ✅ Added `reComputer config` system +- [x] support jetson-containers update - ✅ Enhanced update manager with backup/rollback +- [x] better table to show example's difference - ✅ Added `reComputer list --detailed` diff --git a/install.sh b/install.sh index 61c4bf0..4b64d70 100755 --- a/install.sh +++ b/install.sh @@ -1,7 +1,91 @@ #!/bin/bash -# TODO: make sure python3 in host is OK -cd /tmp && \ -git clone https://github.com/Seeed-Projects/jetson-examples && \ -cd jetson-examples && \ -pip install . && \ -echo "reComputer installed. try 'reComputer run whisper' to enjoy!" \ No newline at end of file + +# Installation script for jetson-examples +# Usage: curl -fsSL https://raw.githubusercontent.com/Seeed-Projects/jetson-examples/main/install.sh | bash +set -e + +# Color definitions +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +echo -e "${GREEN}========================================${NC}" +echo -e "${GREEN} Jetson Examples Installation ${NC}" +echo -e "${GREEN}========================================${NC}" +echo "" + +# Check Python3 +if ! command -v python3 &> /dev/null; then + echo -e "${RED}Error: Python3 is not installed${NC}" + echo "Please install Python3 first:" + echo " sudo apt update && sudo apt install -y python3 python3-pip" + exit 1 +fi + +PYTHON_VERSION=$(python3 --version | cut -d' ' -f2) +echo -e "${GREEN}✓${NC} Python3 found: $PYTHON_VERSION" + +# Check pip +if ! command -v pip3 &> /dev/null && ! command -v pip &> /dev/null; then + echo -e "${YELLOW}Installing pip3...${NC}" + sudo apt update + sudo apt install -y python3-pip +fi + +# Check if running on Jetson (optional but recommended) +if [ -f "/proc/device-tree/model" ]; then + MODEL=$(tr -d '\0' < /proc/device-tree/model) + echo -e "${GREEN}✓${NC} Jetson device detected: $MODEL" +else + echo -e "${YELLOW}⚠ Warning: Not running on a Jetson device${NC}" + read -p "Continue installation anyway? (y/N): " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + exit 1 + fi +fi + +# Create temp directory for installation +TEMP_DIR=$(mktemp -d) +trap "rm -rf $TEMP_DIR" EXIT + +echo "" +echo "Downloading jetson-examples..." +cd "$TEMP_DIR" + +# Clone the repository +REPO_URL="${JETSON_EXAMPLES_REPO:-https://github.com/Seeed-Projects/jetson-examples}" +echo "Repository: $REPO_URL" + +if ! git clone --depth=1 "$REPO_URL"; then + echo -e "${RED}Error: Failed to clone repository${NC}" + exit 1 +fi + +cd jetson-examples + +# Install the package +echo "" +echo "Installing jetson-examples..." +if pip3 install --user .; then + echo "" + echo -e "${GREEN}========================================${NC}" + echo -e "${GREEN} Installation Completed! ${NC}" + echo -e "${GREEN}========================================${NC}" + echo "" + echo "reComputer has been installed successfully!" + echo "" + echo "Getting started:" + echo " reComputer help - Show available commands" + echo " reComputer check - Check system compatibility" + echo " reComputer setup - Setup environment" + echo " reComputer list - List available examples" + echo " reComputer run llava - Run an example" + echo "" + echo -e "${GREEN}Enjoy using jetson-examples!${NC}" +else + echo -e "${RED}Error: Installation failed${NC}" + echo "Please check the error messages above" + exit 1 +fi \ No newline at end of file diff --git a/reComputer/EXAMPLES_TABLE.md b/reComputer/EXAMPLES_TABLE.md new file mode 100644 index 0000000..1d8f647 --- /dev/null +++ b/reComputer/EXAMPLES_TABLE.md @@ -0,0 +1,67 @@ +# Jetson Examples Comparison + +## Example Overview + +| Example | Type | Disk Space | Memory | JetPack Support | Description | +|-----------------------------|------------------|--------------|----------|-------------------|--------------------------------------------------------| +| audiocraft | Audio | 25GB | 7GB | 5.1.1...6.2.1 | 💡 In this demo, we refer to jetson-container to de... | +| whisper | Audio | 25GB | 7GB | 5.1.1...6.2.1 | | +| comfyui | Computer Vision | 30GB | 15GB | 5.1.1...6.2.1 |
| +| depth-anything | Computer Vision | 20GB | 4GB | 5.1.1...6.2.1 | This project provides an one-click deployment of t... | +| depth-anything-v2 | Computer Vision | 15GB | 4GB | 5.1.1...6.2.1 | This project provides an one-click deployment of t... | +| ultralytics-yolo | Computer Vision | 16GB | 2GB | 5.1.1...6.2.1 |
| +| yolov10 | Computer Vision | 20GB | 4GB | 5.1.1...6.2.1 | 💡 Here's an example of quickly deploying YOLOv10 o... | +| yolov8-rail-inspection | Computer Vision | 20GB | 4GB | 5.1.1...6.2.1 | | +| stable-diffusion-webui | Image Generation | 25GB | 7GB | 5.1.1...6.2.1 | | +| Sheared-LLaMA-2.7B-ShareGPT | LLM/VLM | 25GB | 7GB | 5.1.1...6.2.1 | | +| llama-factory | LLM/VLM | 25GB | 7GB | 5.1.1...6.2.1 | Now you can tailor a custom private local LLM to m... | +| llama3 | LLM/VLM | 15GB | 7GB | 5.1.1...6.2.1 | | +| llama3.2 | LLM/VLM | 15GB | 7GB | 5.1.1...6.2.1 | | +| llava | LLM/VLM | 15GB | 7GB | 5.1.1...6.2.1 | | +| llava-v1.5-7b | LLM/VLM | 25GB | 7GB | 5.1.1...6.2.1 | | +| llava-v1.6-vicuna-7b | LLM/VLM | 25GB | 7GB | 5.1.1...6.2.1 | | +| ollama | LLM/VLM | 15GB | 7GB | 5.1.1...6.2.1 | | +| deep-live-cam | Unknown | 40GB | 20GB | 6.0...6.2.1 | This project provides a one-click deployment of th... | +| nanoowl | Unknown | 25GB | 7GB | 5.1.1...6.2.1 | | +| text-generation-webui | Unknown | 25GB | 7GB | 5.1.1...6.2.1 | | +| nanodb | Vector Database | 80GB | 15GB | 5.1.1...6.2.1 | | + +## JetPack Compatibility Matrix + +| Example | JP 5.1.1 | JP 5.1.2 | JP 5.1.3 | JP 6.0 DP | JP 6.0 | JP 6.1 | JP 6.2 | JP 6.2.1 | +|-----------------------------|------------|------------|------------|-------------|----------|----------|----------|------------| +| audiocraft | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| whisper | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| comfyui | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| depth-anything | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| depth-anything-v2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| ultralytics-yolo | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| yolov10 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| yolov8-rail-inspection | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| stable-diffusion-webui | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Sheared-LLaMA-2.7B-ShareGPT | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| llama-factory | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| llama3 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| llama3.2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| llava | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| llava-v1.5-7b | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| llava-v1.6-vicuna-7b | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| ollama | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| deep-live-cam | | | | ✓ | ✓ | ✓ | ✓ | ✓ | +| nanoowl | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| text-generation-webui | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| nanodb | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | + +## Resource Requirements by Category + +| Category | Examples | Min Disk | Max Disk | Min Memory | Max Memory | +|------------------|------------|------------|------------|--------------|--------------| +| Audio | 2 | 25GB | 25GB | 7GB | 7GB | +| Computer Vision | 6 | 15GB | 30GB | 2GB | 15GB | +| Image Generation | 1 | 25GB | 25GB | 7GB | 7GB | +| LLM/VLM | 8 | 15GB | 25GB | 7GB | 7GB | +| Unknown | 3 | 25GB | 40GB | 7GB | 20GB | +| Vector Database | 1 | 80GB | 80GB | 15GB | 15GB | + +--- +*Generated automatically by `reComputer/scripts/generate_example_table.py`* diff --git a/reComputer/compatibility_matrix.yaml b/reComputer/compatibility_matrix.yaml new file mode 100644 index 0000000..02cc917 --- /dev/null +++ b/reComputer/compatibility_matrix.yaml @@ -0,0 +1,271 @@ +Sheared-LLaMA-2.7B-ShareGPT: + disk_space: 25 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +audiocraft: + disk_space: 25 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +comfyui: + disk_space: 30 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 15 +deep-live-cam: + disk_space: 40 + jetpack_6_compatible: true + l4t_versions: + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 20 +depth-anything: + disk_space: 20 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 4 +depth-anything-v2: + disk_space: 15 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 4 +llama-factory: + disk_space: 25 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +llama3: + disk_space: 15 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +llama3.2: + disk_space: 15 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +llava: + disk_space: 15 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +llava-v1.5-7b: + disk_space: 25 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +llava-v1.6-vicuna-7b: + disk_space: 25 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +nanodb: + disk_space: 80 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 15 +nanoowl: + disk_space: 25 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +ollama: + disk_space: 15 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +stable-diffusion-webui: + disk_space: 25 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +text-generation-webui: + disk_space: 25 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +ultralytics-yolo: + disk_space: 16 + jetpack_6_compatible: true + l4t_versions: + - 32.6.1 + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 2 +whisper: + disk_space: 25 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 7 +yolov10: + disk_space: 20 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 4 +yolov8-rail-inspection: + disk_space: 20 + jetpack_6_compatible: true + l4t_versions: + - 35.3.1 + - 35.4.1 + - 35.5.0 + - 36.2.0 + - 36.3.0 + - 36.4.0 + - 36.4.3 + - 36.4.4 + memory: 4 diff --git a/reComputer/config.py b/reComputer/config.py new file mode 100644 index 0000000..100e842 --- /dev/null +++ b/reComputer/config.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python3 +""" +Configuration management for jetson-examples +Allows users to set custom paths and preferences +""" + +import os +import json +import sys +from pathlib import Path + +DEFAULT_CONFIG = { + "BASE_PATH": os.path.expanduser("~/git"), # Use git directory as base + "JETSON_REPO_PATH": None, # Will be set based on BASE_PATH + "AUTO_UPDATE": True, + "DEFAULT_DOCKER_RUNTIME": "nvidia", + "MAX_DISK_WARNING_GB": 5, + "VERBOSE": False, + "PARALLEL_DOWNLOADS": True, + "CACHE_DIR": None, # Will be set based on BASE_PATH +} + +CONFIG_FILE = os.path.expanduser("~/.config/jetson-examples/config.json") + +class Config: + def __init__(self): + self.config_dir = os.path.dirname(CONFIG_FILE) + self.config = DEFAULT_CONFIG.copy() + self.load() + + def load(self): + """Load configuration from file""" + if os.path.exists(CONFIG_FILE): + try: + with open(CONFIG_FILE, 'r') as f: + user_config = json.load(f) + self.config.update(user_config) + except Exception as e: + print(f"Warning: Could not load config: {e}") + + # Set derived paths + if self.config["JETSON_REPO_PATH"] is None: + self.config["JETSON_REPO_PATH"] = os.path.join( + self.config["BASE_PATH"], "jetson-containers" + ) + if self.config["CACHE_DIR"] is None: + self.config["CACHE_DIR"] = os.path.join( + self.config["BASE_PATH"], ".cache" + ) + + def save(self): + """Save current configuration to file""" + os.makedirs(self.config_dir, exist_ok=True) + with open(CONFIG_FILE, 'w') as f: + json.dump(self.config, f, indent=2) + print(f"Configuration saved to {CONFIG_FILE}") + + def get(self, key, default=None): + """Get configuration value""" + return self.config.get(key, default) + + def set(self, key, value): + """Set configuration value""" + self.config[key] = value + + def update(self, updates): + """Update multiple configuration values""" + self.config.update(updates) + + def reset(self): + """Reset to default configuration""" + self.config = DEFAULT_CONFIG.copy() + print("Configuration reset to defaults") + + def show(self): + """Display current configuration""" + print("\nCurrent Configuration:") + print("-" * 40) + for key, value in self.config.items(): + print(f" {key}: {value}") + print("-" * 40) + + def export_env(self): + """Export configuration as environment variables""" + exports = [] + for key, value in self.config.items(): + if value is not None: + exports.append(f"export JETSON_{key}='{value}'") + return "\n".join(exports) + + def validate(self): + """Validate configuration values""" + errors = [] + + # Check BASE_PATH + base_path = self.config.get("BASE_PATH") + if not base_path: + errors.append("BASE_PATH is not set") + elif not os.path.isabs(os.path.expanduser(base_path)): + errors.append(f"BASE_PATH must be an absolute path: {base_path}") + + # Check disk space warning threshold + max_disk = self.config.get("MAX_DISK_WARNING_GB", 5) + if not isinstance(max_disk, (int, float)) or max_disk < 0: + errors.append(f"MAX_DISK_WARNING_GB must be a positive number: {max_disk}") + + if errors: + print("Configuration validation errors:") + for error in errors: + print(f" - {error}") + return False + return True + +def main(): + """CLI for configuration management""" + import argparse + + parser = argparse.ArgumentParser(description="Manage jetson-examples configuration") + subparsers = parser.add_subparsers(dest='command', help='Commands') + + # Show command + parser_show = subparsers.add_parser('show', help='Show current configuration') + + # Get command + parser_get = subparsers.add_parser('get', help='Get a configuration value') + parser_get.add_argument('key', help='Configuration key') + + # Set command + parser_set = subparsers.add_parser('set', help='Set a configuration value') + parser_set.add_argument('key', help='Configuration key') + parser_set.add_argument('value', help='Configuration value') + + # Reset command + parser_reset = subparsers.add_parser('reset', help='Reset to default configuration') + + # Export command + parser_export = subparsers.add_parser('export', help='Export as environment variables') + + # Validate command + parser_validate = subparsers.add_parser('validate', help='Validate configuration') + + args = parser.parse_args() + + config = Config() + + if args.command == 'show' or args.command is None: + config.show() + elif args.command == 'get': + value = config.get(args.key) + if value is not None: + print(value) + else: + print(f"Key '{args.key}' not found") + sys.exit(1) + elif args.command == 'set': + # Try to parse value as JSON for complex types + try: + import json + value = json.loads(args.value) + except: + value = args.value + + # Convert string booleans + if value == "true": + value = True + elif value == "false": + value = False + + config.set(args.key, value) + config.save() + print(f"Set {args.key} = {value}") + elif args.command == 'reset': + config.reset() + config.save() + elif args.command == 'export': + print(config.export_env()) + elif args.command == 'validate': + if config.validate(): + print("Configuration is valid") + else: + sys.exit(1) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/reComputer/examples_info.json b/reComputer/examples_info.json new file mode 100644 index 0000000..f2cb0da --- /dev/null +++ b/reComputer/examples_info.json @@ -0,0 +1,712 @@ +[ + { + "name": "audiocraft", + "type": "Audio", + "models": [], + "disk_gb": 25, + "memory_gb": 7, + "l4t_versions": [ + "35.3.1", + "35.4.1", + "35.5.0", + "36.2.0", + "36.3.0", + "36.4.0", + "36.4.3", + "36.4.4" + ], + "jetpack_versions": [ + "5.1.1", + "5.1.2", + "5.1.3", + "6.0", + "6.0 DP", + "6.1", + "6.2", + "6.2.1" + ], + "cuda_required": false, + "docker_image_size": "N/A", + "description": "\ud83d\udca1 In this demo, we refer to jetson-container to deploy audiocraft on Jetson devices. And generate mu", + "features": [], + "dependencies": [ + "nvidia-jetpack" + ] + }, + { + "name": "whisper", + "type": "Audio", + "models": [], + "disk_gb": 25, + "memory_gb": 7, + "l4t_versions": [ + "35.3.1", + "35.4.1", + "35.5.0", + "36.2.0", + "36.3.0", + "36.4.0", + "36.4.3", + "36.4.4" + ], + "jetpack_versions": [ + "5.1.1", + "5.1.2", + "5.1.3", + "6.0", + "6.0 DP", + "6.1", + "6.2", + "6.2.1" + ], + "cuda_required": false, + "docker_image_size": "N/A", + "description": "", + "features": [], + "dependencies": [ + "nvidia-jetpack" + ] + }, + { + "name": "comfyui", + "type": "Computer Vision", + "models": [], + "disk_gb": 30, + "memory_gb": 15, + "l4t_versions": [ + "35.3.1", + "35.4.1", + "35.5.0", + "36.2.0", + "36.3.0", + "36.4.0", + "36.4.3", + "36.4.4" + ], + "jetpack_versions": [ + "5.1.1", + "5.1.2", + "5.1.3", + "6.0", + "6.0 DP", + "6.1", + "6.2", + "6.2.1" + ], + "cuda_required": false, + "docker_image_size": "N/A", + "description": "
", + "features": [], + "dependencies": [ + "nvidia-jetpack" + ] + }, + { + "name": "depth-anything", + "type": "Computer Vision", + "models": [], + "disk_gb": 20, + "memory_gb": 4, + "l4t_versions": [ + "35.3.1", + "35.4.1", + "35.5.0", + "36.2.0", + "36.3.0", + "36.4.0", + "36.4.3", + "36.4.4" + ], + "jetpack_versions": [ + "5.1.1", + "5.1.2", + "5.1.3", + "6.0", + "6.0 DP", + "6.1", + "6.2", + "6.2.1" + ], + "cuda_required": false, + "docker_image_size": "N/A", + "description": "This project provides an one-click deployment of the Depth Anything monocular depth estimation model", + "features": [], + "dependencies": [ + "nvidia-jetpack" + ] + }, + { + "name": "depth-anything-v2", + "type": "Computer Vision", + "models": [], + "disk_gb": 15, + "memory_gb": 4, + "l4t_versions": [ + "35.3.1", + "35.4.1", + "35.5.0", + "36.2.0", + "36.3.0", + "36.4.0", + "36.4.3", + "36.4.4" + ], + "jetpack_versions": [ + "5.1.1", + "5.1.2", + "5.1.3", + "6.0", + "6.0 DP", + "6.1", + "6.2", + "6.2.1" + ], + "cuda_required": false, + "docker_image_size": "N/A", + "description": "This project provides an one-click deployment of the Depth Anything V2 monocular depth estimation mo", + "features": [], + "dependencies": [ + "nvidia-jetpack" + ] + }, + { + "name": "ultralytics-yolo", + "type": "Computer Vision", + "models": [], + "disk_gb": 16, + "memory_gb": 2, + "l4t_versions": [ + "32.6.1", + "35.3.1", + "35.4.1", + "35.5.0", + "36.2.0", + "36.3.0", + "36.4.0", + "36.4.3", + "36.4.4" + ], + "jetpack_versions": [ + "5.1.1", + "5.1.2", + "5.1.3", + "6.0", + "6.0 DP", + "6.1", + "6.2", + "6.2.1" + ], + "cuda_required": false, + "docker_image_size": "N/A", + "description": "
",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "yolov10",
+ "type": "Computer Vision",
+ "models": [],
+ "disk_gb": 20,
+ "memory_gb": 4,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "\ud83d\udca1 Here's an example of quickly deploying YOLOv10 on a Jetson device.",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "yolov8-rail-inspection",
+ "type": "Computer Vision",
+ "models": [],
+ "disk_gb": 20,
+ "memory_gb": 4,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "stable-diffusion-webui",
+ "type": "Image Generation",
+ "models": [],
+ "disk_gb": 25,
+ "memory_gb": 7,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "Sheared-LLaMA-2.7B-ShareGPT",
+ "type": "LLM/VLM",
+ "models": [],
+ "disk_gb": 25,
+ "memory_gb": 7,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "llama-factory",
+ "type": "LLM/VLM",
+ "models": [],
+ "disk_gb": 25,
+ "memory_gb": 7,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "Now you can tailor a custom private local LLM to meet your requirements.",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "llama3",
+ "type": "LLM/VLM",
+ "models": [],
+ "disk_gb": 15,
+ "memory_gb": 7,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "llama3.2",
+ "type": "LLM/VLM",
+ "models": [],
+ "disk_gb": 15,
+ "memory_gb": 7,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "llava",
+ "type": "LLM/VLM",
+ "models": [],
+ "disk_gb": 15,
+ "memory_gb": 7,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "llava-v1.5-7b",
+ "type": "LLM/VLM",
+ "models": [],
+ "disk_gb": 25,
+ "memory_gb": 7,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "llava-v1.6-vicuna-7b",
+ "type": "LLM/VLM",
+ "models": [],
+ "disk_gb": 25,
+ "memory_gb": 7,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "ollama",
+ "type": "LLM/VLM",
+ "models": [],
+ "disk_gb": 15,
+ "memory_gb": 7,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "deep-live-cam",
+ "type": "Unknown",
+ "models": [],
+ "disk_gb": 40,
+ "memory_gb": 20,
+ "l4t_versions": [
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "This project provides a one-click deployment of the Deep Live Cam AI face-swapping project on the [S",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack",
+ "x11-xserver-utils"
+ ]
+ },
+ {
+ "name": "nanoowl",
+ "type": "Unknown",
+ "models": [],
+ "disk_gb": 25,
+ "memory_gb": 7,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "text-generation-webui",
+ "type": "Unknown",
+ "models": [],
+ "disk_gb": 25,
+ "memory_gb": 7,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ },
+ {
+ "name": "nanodb",
+ "type": "Vector Database",
+ "models": [],
+ "disk_gb": 80,
+ "memory_gb": 15,
+ "l4t_versions": [
+ "35.3.1",
+ "35.4.1",
+ "35.5.0",
+ "36.2.0",
+ "36.3.0",
+ "36.4.0",
+ "36.4.3",
+ "36.4.4"
+ ],
+ "jetpack_versions": [
+ "5.1.1",
+ "5.1.2",
+ "5.1.3",
+ "6.0",
+ "6.0 DP",
+ "6.1",
+ "6.2",
+ "6.2.1"
+ ],
+ "cuda_required": false,
+ "docker_image_size": "N/A",
+ "description": "",
+ "features": [],
+ "dependencies": [
+ "nvidia-jetpack"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/reComputer/main.py b/reComputer/main.py
index ca11c42..3c4769d 100644
--- a/reComputer/main.py
+++ b/reComputer/main.py
@@ -1,6 +1,7 @@
import os
import subprocess
import sys
+from .config import Config
def path_of_script(name):
@@ -18,40 +19,82 @@ def list_all_examples(folder_path):
def run_script():
+ # Load configuration
+ config = Config()
+
+ # Export configuration as environment variables for shell scripts
+ env = os.environ.copy()
+ env.update({
+ "BASE_PATH": config.get("BASE_PATH"),
+ "JETSON_REPO_PATH": config.get("JETSON_REPO_PATH"),
+ })
if len(sys.argv) == 3:
if sys.argv[1] == "run":
example_name = sys.argv[2]
# TODO: maybe use python instead of shell is better
- subprocess.run(["bash", path_of_script("run.sh"), example_name])
+ subprocess.run(["bash", path_of_script("run.sh"), example_name], env=env)
elif sys.argv[1] == "clean":
example_name = sys.argv[2]
- subprocess.run(["bash", path_of_script("clean.sh"), example_name])
+ subprocess.run(["bash", path_of_script("clean.sh"), example_name], env=env)
+ elif sys.argv[1] == "list" and sys.argv[2] == "--detailed":
+ # Run the table generator script
+ script_path = path_of_script("generate_example_table.py")
+ if os.path.exists(script_path):
+ subprocess.run(["python3", script_path])
+ else:
+ print("Detailed table generator not found")
else:
print("Only Support `run` or `clean` for now. try `reComputer run llava` .")
elif len(sys.argv) == 2:
if sys.argv[1] == "check":
- subprocess.run(["bash", path_of_script("check.sh")])
+ subprocess.run(["bash", path_of_script("check.sh")], env=env)
+ elif sys.argv[1] == "setup":
+ subprocess.run(["bash", path_of_script("setup.sh")], env=env)
elif sys.argv[1] == "update":
- subprocess.run(["bash", path_of_script("update.sh")])
+ subprocess.run(["bash", path_of_script("update.sh")], env=env)
+ elif sys.argv[1] == "config":
+ # Handle configuration commands
+ from . import config as config_module
+ config_module.main()
elif sys.argv[1] == "list":
- example_folder = os.path.join(os.path.dirname(__file__), "scripts")
- directories = list_all_examples(example_folder)
- print("example list:")
- index = 1
- for directory in directories:
- print("{:03d}".format(index), "|", directory)
- index += 1
- print("-end-")
+ # Check if detailed list is requested
+ if len(sys.argv) > 2 and sys.argv[2] == "--detailed":
+ # Run the table generator script
+ script_path = path_of_script("generate_example_table.py")
+ if os.path.exists(script_path):
+ subprocess.run(["python3", script_path])
+ else:
+ print("Detailed table generator not found")
+ else:
+ # Simple list
+ example_folder = os.path.join(os.path.dirname(__file__), "scripts")
+ directories = list_all_examples(example_folder)
+ print("Example list:")
+ print("-" * 40)
+ index = 1
+ for directory in directories:
+ print("{:03d}".format(index), "|", directory)
+ index += 1
+ print("-" * 40)
+ print("\nFor detailed comparison: reComputer list --detailed")
else:
print("reComputer help:")
print("---")
print("`reComputer check` | check system.")
+ print("`reComputer setup` | setup environment and install dependencies.")
+ print("`reComputer config` | manage configuration settings.")
print("`reComputer update` | update jetson-ai-lab.")
print("`reComputer list` | list all examples.")
print("`reComputer run xxx` | run an example.")
print("`reComputer clean xxx` | clean an example's data.")
print("---")
+ print("")
+ print("Configuration commands:")
+ print(" `reComputer config show` | show current configuration")
+ print(" `reComputer config set KEY VAL` | set configuration value")
+ print(" `reComputer config get KEY` | get configuration value")
+ print(" `reComputer config reset` | reset to defaults")
else:
print("Error Usage! try `reComputer help`.")
diff --git a/reComputer/scripts/Sheared-LLaMA-2.7B-ShareGPT/config.yaml b/reComputer/scripts/Sheared-LLaMA-2.7B-ShareGPT/config.yaml
index 91b8e70..28ae826 100644
--- a/reComputer/scripts/Sheared-LLaMA-2.7B-ShareGPT/config.yaml
+++ b/reComputer/scripts/Sheared-LLaMA-2.7B-ShareGPT/config.yaml
@@ -1,31 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
- - 36.3.0
-REQUIRED_DISK_SPACE: 25 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 25
REQUIRED_MEM_SPACE: 7
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/audiocraft/config.yaml b/reComputer/scripts/audiocraft/config.yaml
index 91b8e70..28ae826 100644
--- a/reComputer/scripts/audiocraft/config.yaml
+++ b/reComputer/scripts/audiocraft/config.yaml
@@ -1,31 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
- - 36.3.0
-REQUIRED_DISK_SPACE: 25 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 25
REQUIRED_MEM_SPACE: 7
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/check.sh b/reComputer/scripts/check.sh
index b0a0c3b..3aee3a5 100644
--- a/reComputer/scripts/check.sh
+++ b/reComputer/scripts/check.sh
@@ -1,5 +1,40 @@
+#!/bin/bash
+
script_dir=$(dirname "$0")
-docker --version && \
-python3 -V && \
-python -V && \
-echo "now we can use more shell in $script_dir"
\ No newline at end of file
+
+echo "================================"
+echo " System Check Results"
+echo "================================"
+echo ""
+
+# Check Docker
+echo -n "Docker: "
+if command -v docker &> /dev/null; then
+ docker --version
+else
+ echo "Not installed"
+fi
+
+# Check Python3
+echo -n "Python3: "
+if command -v python3 &> /dev/null; then
+ python3 -V
+else
+ echo "Not installed"
+fi
+
+# Check Python
+echo -n "Python: "
+if command -v python &> /dev/null; then
+ python -V
+else
+ echo "Not installed (optional)"
+fi
+
+# Run Jetson compatibility check
+if [ -f "$script_dir/jetson_compatibility.py" ]; then
+ python3 "$script_dir/jetson_compatibility.py"
+fi
+
+echo ""
+echo "Script directory: $script_dir"
\ No newline at end of file
diff --git a/reComputer/scripts/comfyui/config.yaml b/reComputer/scripts/comfyui/config.yaml
index 93549ce..bf82fe8 100644
--- a/reComputer/scripts/comfyui/config.yaml
+++ b/reComputer/scripts/comfyui/config.yaml
@@ -1,30 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
-REQUIRED_DISK_SPACE: 30 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 30
REQUIRED_MEM_SPACE: 15
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/deep-live-cam/config.yaml b/reComputer/scripts/deep-live-cam/config.yaml
index 71baca3..bda30a2 100644
--- a/reComputer/scripts/deep-live-cam/config.yaml
+++ b/reComputer/scripts/deep-live-cam/config.yaml
@@ -1,30 +1,19 @@
-
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 36.3.0
-REQUIRED_DISK_SPACE: 40 # in GB
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 40
REQUIRED_MEM_SPACE: 20
PACKAGES:
- - nvidia-jetpack
- - x11-xserver-utils
-DOCKER:
+- nvidia-jetpack
+- x11-xserver-utils
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/depth-anything-v2/config.yaml b/reComputer/scripts/depth-anything-v2/config.yaml
index ed40ea2..ee32483 100644
--- a/reComputer/scripts/depth-anything-v2/config.yaml
+++ b/reComputer/scripts/depth-anything-v2/config.yaml
@@ -1,31 +1,21 @@
-
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
-REQUIRED_DISK_SPACE: 15 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 15
REQUIRED_MEM_SPACE: 4
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/depth-anything/config.yaml b/reComputer/scripts/depth-anything/config.yaml
index 4611e18..c170a6a 100644
--- a/reComputer/scripts/depth-anything/config.yaml
+++ b/reComputer/scripts/depth-anything/config.yaml
@@ -1,30 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
-REQUIRED_DISK_SPACE: 20 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 20
REQUIRED_MEM_SPACE: 4
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/generate_example_table.py b/reComputer/scripts/generate_example_table.py
new file mode 100644
index 0000000..0066e23
--- /dev/null
+++ b/reComputer/scripts/generate_example_table.py
@@ -0,0 +1,238 @@
+#!/usr/bin/env python3
+"""
+Generate comprehensive example comparison table
+Shows detailed information about each example
+"""
+
+import os
+import yaml
+import json
+import glob
+from tabulate import tabulate
+from pathlib import Path
+
+def get_example_info(config_path):
+ """Extract information from an example's config.yaml"""
+ example_dir = os.path.dirname(config_path)
+ example_name = os.path.basename(example_dir)
+
+ info = {
+ 'name': example_name,
+ 'type': 'Unknown',
+ 'models': [],
+ 'disk_gb': 'N/A',
+ 'memory_gb': 'N/A',
+ 'l4t_versions': [],
+ 'jetpack_versions': [],
+ 'cuda_required': False,
+ 'docker_image_size': 'N/A',
+ 'description': '',
+ 'features': [],
+ 'dependencies': []
+ }
+
+ # Read config.yaml
+ try:
+ with open(config_path, 'r') as f:
+ config = yaml.safe_load(f)
+
+ info['disk_gb'] = config.get('REQUIRED_DISK_SPACE', 'N/A')
+ info['memory_gb'] = config.get('REQUIRED_MEM_SPACE', 'N/A')
+ info['l4t_versions'] = config.get('ALLOWED_L4T_VERSIONS', [])
+ info['dependencies'] = config.get('PACKAGES', [])
+
+ # Map L4T to JetPack versions
+ l4t_to_jetpack = {
+ '35.3.1': '5.1.1',
+ '35.4.1': '5.1.2',
+ '35.5.0': '5.1.3',
+ '36.2.0': '6.0 DP',
+ '36.3.0': '6.0',
+ '36.4.0': '6.1',
+ '36.4.3': '6.2',
+ '36.4.4': '6.2.1'
+ }
+
+ jetpack_versions = set()
+ for l4t in info['l4t_versions']:
+ if l4t in l4t_to_jetpack:
+ jetpack_versions.add(l4t_to_jetpack[l4t])
+ info['jetpack_versions'] = sorted(list(jetpack_versions))
+
+ except Exception as e:
+ print(f"Error reading {config_path}: {e}")
+
+ # Read README if exists
+ readme_path = os.path.join(example_dir, 'README.md')
+ if os.path.exists(readme_path):
+ try:
+ with open(readme_path, 'r') as f:
+ content = f.read()
+ # Extract first paragraph as description
+ lines = content.split('\n')
+ for line in lines:
+ if line.strip() and not line.startswith('#'):
+ info['description'] = line.strip()[:100]
+ break
+ except:
+ pass
+
+ # Categorize by name patterns
+ name_lower = example_name.lower()
+ if 'llama' in name_lower or 'llava' in name_lower or 'gpt' in name_lower:
+ info['type'] = 'LLM/VLM'
+ elif 'yolo' in name_lower or 'depth' in name_lower or 'comfy' in name_lower:
+ info['type'] = 'Computer Vision'
+ elif 'stable-diffusion' in name_lower:
+ info['type'] = 'Image Generation'
+ elif 'whisper' in name_lower or 'audio' in name_lower or 'tts' in name_lower:
+ info['type'] = 'Audio'
+ elif 'ollama' in name_lower:
+ info['type'] = 'Inference Server'
+ elif 'nanodb' in name_lower:
+ info['type'] = 'Vector Database'
+
+ return info
+
+def generate_markdown_table(examples):
+ """Generate a markdown table from example information"""
+ # Sort by type then name
+ examples.sort(key=lambda x: (x['type'], x['name']))
+
+ # Create detailed table
+ headers = ['Example', 'Type', 'Disk Space', 'Memory', 'JetPack Support', 'Description']
+ rows = []
+
+ for ex in examples:
+ # Format JetPack versions
+ if ex['jetpack_versions']:
+ if len(ex['jetpack_versions']) > 3:
+ jp_support = f"{ex['jetpack_versions'][0]}...{ex['jetpack_versions'][-1]}"
+ else:
+ jp_support = ', '.join(ex['jetpack_versions'])
+ else:
+ jp_support = 'Unknown'
+
+ # Format disk/memory
+ disk = f"{ex['disk_gb']}GB" if ex['disk_gb'] != 'N/A' else 'N/A'
+ memory = f"{ex['memory_gb']}GB" if ex['memory_gb'] != 'N/A' else 'N/A'
+
+ # Truncate description
+ desc = ex['description'][:50] + '...' if len(ex['description']) > 50 else ex['description']
+
+ rows.append([
+ ex['name'],
+ ex['type'],
+ disk,
+ memory,
+ jp_support,
+ desc
+ ])
+
+ return tabulate(rows, headers, tablefmt='github')
+
+def generate_compatibility_matrix(examples):
+ """Generate a JetPack compatibility matrix"""
+ jetpack_versions = ['5.1.1', '5.1.2', '5.1.3', '6.0 DP', '6.0', '6.1', '6.2', '6.2.1']
+
+ headers = ['Example'] + [f'JP {v}' for v in jetpack_versions]
+ rows = []
+
+ for ex in examples:
+ row = [ex['name']]
+ for jp in jetpack_versions:
+ if jp in ex['jetpack_versions']:
+ row.append('✓')
+ else:
+ row.append('')
+ rows.append(row)
+
+ return tabulate(rows, headers, tablefmt='github')
+
+def generate_resource_requirements(examples):
+ """Generate resource requirements summary"""
+ headers = ['Category', 'Examples', 'Min Disk', 'Max Disk', 'Min Memory', 'Max Memory']
+
+ # Group by type
+ by_type = {}
+ for ex in examples:
+ if ex['type'] not in by_type:
+ by_type[ex['type']] = []
+ by_type[ex['type']].append(ex)
+
+ rows = []
+ for cat, exs in sorted(by_type.items()):
+ disk_values = [e['disk_gb'] for e in exs if e['disk_gb'] != 'N/A']
+ mem_values = [e['memory_gb'] for e in exs if e['memory_gb'] != 'N/A']
+
+ min_disk = min(disk_values) if disk_values else 'N/A'
+ max_disk = max(disk_values) if disk_values else 'N/A'
+ min_mem = min(mem_values) if mem_values else 'N/A'
+ max_mem = max(mem_values) if mem_values else 'N/A'
+
+ rows.append([
+ cat,
+ len(exs),
+ f"{min_disk}GB" if min_disk != 'N/A' else 'N/A',
+ f"{max_disk}GB" if max_disk != 'N/A' else 'N/A',
+ f"{min_mem}GB" if min_mem != 'N/A' else 'N/A',
+ f"{max_mem}GB" if max_mem != 'N/A' else 'N/A'
+ ])
+
+ return tabulate(rows, headers, tablefmt='github')
+
+def main():
+ """Generate comprehensive example tables"""
+ script_dir = os.path.dirname(os.path.abspath(__file__))
+ config_files = glob.glob(os.path.join(script_dir, "*/config.yaml"))
+
+ print("📊 Analyzing examples...")
+ examples = []
+ for config_file in config_files:
+ info = get_example_info(config_file)
+ examples.append(info)
+
+ print(f"Found {len(examples)} examples\n")
+
+ # Generate main comparison table
+ print("=" * 80)
+ print("EXAMPLE COMPARISON TABLE")
+ print("=" * 80)
+ print(generate_markdown_table(examples))
+
+ print("\n" + "=" * 80)
+ print("JETPACK COMPATIBILITY MATRIX")
+ print("=" * 80)
+ print(generate_compatibility_matrix(examples))
+
+ print("\n" + "=" * 80)
+ print("RESOURCE REQUIREMENTS SUMMARY")
+ print("=" * 80)
+ print(generate_resource_requirements(examples))
+
+ # Save to files
+ output_dir = os.path.join(script_dir, "..")
+
+ # Save detailed JSON
+ json_file = os.path.join(output_dir, "examples_info.json")
+ with open(json_file, 'w') as f:
+ json.dump(examples, f, indent=2)
+ print(f"\n📄 Detailed info saved to: {json_file}")
+
+ # Save markdown tables
+ md_file = os.path.join(output_dir, "EXAMPLES_TABLE.md")
+ with open(md_file, 'w') as f:
+ f.write("# Jetson Examples Comparison\n\n")
+ f.write("## Example Overview\n\n")
+ f.write(generate_markdown_table(examples))
+ f.write("\n\n## JetPack Compatibility Matrix\n\n")
+ f.write(generate_compatibility_matrix(examples))
+ f.write("\n\n## Resource Requirements by Category\n\n")
+ f.write(generate_resource_requirements(examples))
+ f.write("\n\n---\n")
+ f.write("*Generated automatically by `reComputer/scripts/generate_example_table.py`*\n")
+
+ print(f"📄 Markdown tables saved to: {md_file}")
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
diff --git a/reComputer/scripts/jetson_compatibility.py b/reComputer/scripts/jetson_compatibility.py
new file mode 100644
index 0000000..8ed9eac
--- /dev/null
+++ b/reComputer/scripts/jetson_compatibility.py
@@ -0,0 +1,379 @@
+#!/usr/bin/env python3
+"""
+Jetson Compatibility Checker
+Provides comprehensive compatibility information for all Jetson models
+"""
+
+import os
+import subprocess
+import json
+
+# Comprehensive Jetson model mapping
+JETSON_MODELS = {
+ # Jetson Nano series
+ "jetson-nano": {
+ "name": "Jetson Nano",
+ "variants": ["Developer Kit", "2GB Developer Kit", "Production Module"],
+ "compute": "5.3",
+ "memory": ["4GB", "2GB"],
+ "l4t_versions": ["32.4.3", "32.5.0", "32.5.1", "32.5.2", "32.6.1", "32.7.1", "32.7.2", "32.7.3"],
+ "jetpack": ["4.4", "4.4.1", "4.5", "4.5.1", "4.6", "4.6.1", "4.6.2", "4.6.3"],
+ "cuda": "10.2",
+ "status": "production"
+ },
+
+ # Jetson TX1
+ "jetson-tx1": {
+ "name": "Jetson TX1",
+ "variants": ["Developer Kit", "Production Module"],
+ "compute": "5.3",
+ "memory": ["4GB"],
+ "l4t_versions": ["28.2", "28.2.1", "28.3", "28.3.1", "28.3.2", "28.4", "28.5"],
+ "jetpack": ["3.2", "3.2.1", "3.3", "3.3.1", "3.3.2", "3.3.3"],
+ "cuda": "10.0",
+ "status": "legacy"
+ },
+
+ # Jetson TX2 series
+ "jetson-tx2": {
+ "name": "Jetson TX2",
+ "variants": ["Developer Kit", "TX2 4GB", "TX2i", "TX2 NX"],
+ "compute": "6.2",
+ "memory": ["8GB", "4GB"],
+ "l4t_versions": ["32.4.3", "32.5.0", "32.5.1", "32.5.2", "32.6.1", "32.7.1", "32.7.2", "32.7.3"],
+ "jetpack": ["4.4", "4.4.1", "4.5", "4.5.1", "4.6", "4.6.1", "4.6.2", "4.6.3"],
+ "cuda": "10.2",
+ "status": "production"
+ },
+
+ # Jetson Xavier NX
+ "jetson-xavier-nx": {
+ "name": "Jetson Xavier NX",
+ "variants": ["Developer Kit", "Production Module 16GB", "Production Module 8GB"],
+ "compute": "7.2",
+ "memory": ["16GB", "8GB"],
+ "l4t_versions": ["32.4.3", "32.5.0", "32.5.1", "32.5.2", "32.6.1", "32.7.1", "32.7.2", "32.7.3",
+ "35.1.0", "35.2.1", "35.3.1", "35.4.1", "35.5.0"],
+ "jetpack": ["4.4", "4.4.1", "4.5", "4.5.1", "4.6", "4.6.1", "4.6.2", "4.6.3",
+ "5.0.2", "5.1", "5.1.1", "5.1.2", "5.1.3"],
+ "cuda": ["10.2", "11.4"],
+ "status": "production"
+ },
+
+ # Jetson AGX Xavier
+ "jetson-agx-xavier": {
+ "name": "Jetson AGX Xavier",
+ "variants": ["Developer Kit 32GB", "Industrial 32GB", "Series 64GB", "Series 32GB", "Series 16GB", "Series 8GB"],
+ "compute": "7.2",
+ "memory": ["64GB", "32GB", "16GB", "8GB"],
+ "l4t_versions": ["32.4.3", "32.5.0", "32.5.1", "32.5.2", "32.6.1", "32.7.1", "32.7.2", "32.7.3",
+ "35.1.0", "35.2.1", "35.3.1", "35.4.1", "35.5.0"],
+ "jetpack": ["4.4", "4.4.1", "4.5", "4.5.1", "4.6", "4.6.1", "4.6.2", "4.6.3",
+ "5.0.2", "5.1", "5.1.1", "5.1.2", "5.1.3"],
+ "cuda": ["10.2", "11.4"],
+ "status": "production"
+ },
+
+ # Jetson AGX Orin
+ "jetson-agx-orin": {
+ "name": "Jetson AGX Orin",
+ "variants": ["Developer Kit", "64GB", "32GB", "Industrial"],
+ "compute": "8.7",
+ "memory": ["64GB", "32GB"],
+ "l4t_versions": ["34.1.0", "34.1.1", "35.1.0", "35.2.1", "35.3.1", "35.4.1", "35.5.0",
+ "36.2.0", "36.3.0", "36.4.0", "36.4.3", "36.4.4"],
+ "jetpack": ["5.0", "5.0.1", "5.0.2", "5.1", "5.1.1", "5.1.2", "5.1.3",
+ "6.0 DP", "6.0", "6.1", "6.2", "6.2.1"],
+ "cuda": ["11.4", "12.2", "12.6"],
+ "status": "production"
+ },
+
+ # Jetson Orin NX
+ "jetson-orin-nx": {
+ "name": "Jetson Orin NX",
+ "variants": ["16GB", "8GB"],
+ "compute": "8.7",
+ "memory": ["16GB", "8GB"],
+ "l4t_versions": ["35.2.1", "35.3.1", "35.4.1", "35.5.0", "36.2.0", "36.3.0", "36.4.0", "36.4.3", "36.4.4"],
+ "jetpack": ["5.1", "5.1.1", "5.1.2", "5.1.3", "6.0 DP", "6.0", "6.1", "6.2", "6.2.1"],
+ "cuda": ["11.4", "12.2", "12.6"],
+ "status": "production"
+ },
+
+ # Jetson Orin Nano
+ "jetson-orin-nano": {
+ "name": "Jetson Orin Nano",
+ "variants": ["Developer Kit", "8GB", "4GB"],
+ "compute": "8.7",
+ "memory": ["8GB", "4GB"],
+ "l4t_versions": ["35.3.1", "35.4.1", "35.5.0", "36.2.0", "36.3.0", "36.4.0", "36.4.3", "36.4.4"],
+ "jetpack": ["5.1.1", "5.1.2", "5.1.3", "6.0 DP", "6.0", "6.1", "6.2", "6.2.1"],
+ "cuda": ["11.4", "12.2", "12.6"],
+ "status": "production"
+ }
+}
+
+# L4T to JetPack version mapping
+L4T_TO_JETPACK = {
+ # JetPack 3.x
+ "28.2": "3.2",
+ "28.2.1": "3.2.1",
+ "28.3": "3.3",
+ "28.3.1": "3.3.1",
+ "28.3.2": "3.3.2",
+ "28.4": "3.3.3",
+
+ # JetPack 4.x
+ "32.1": "4.2",
+ "32.2": "4.2.1",
+ "32.2.1": "4.2.2",
+ "32.2.3": "4.2.3",
+ "32.3.1": "4.3",
+ "32.4.2": "4.4 DP",
+ "32.4.3": "4.4",
+ "32.4.4": "4.4.1",
+ "32.5.0": "4.5",
+ "32.5.1": "4.5.1",
+ "32.5.2": "4.5.1",
+ "32.6.1": "4.6",
+ "32.7.1": "4.6.1",
+ "32.7.2": "4.6.2",
+ "32.7.3": "4.6.3",
+ "32.7.4": "4.6.4",
+
+ # JetPack 5.x
+ "34.1.0": "5.0",
+ "34.1.1": "5.0.1",
+ "35.1.0": "5.0.2",
+ "35.2.1": "5.1",
+ "35.3.1": "5.1.1",
+ "35.4.1": "5.1.2",
+ "35.5.0": "5.1.3",
+
+ # JetPack 6.x
+ "36.2.0": "6.0 DP",
+ "36.3.0": "6.0",
+ "36.4.0": "6.1",
+ "36.4.3": "6.2",
+ "36.4.4": "6.2.1"
+}
+
+class JetsonCompatibilityChecker:
+ def __init__(self):
+ self.model = None
+ self.l4t_version = None
+ self.jetpack_version = None
+ self.cuda_version = None
+ self.memory = None
+
+ def detect_jetson_model(self):
+ """Detect the current Jetson model"""
+ try:
+ if os.path.exists("/proc/device-tree/model"):
+ with open("/proc/device-tree/model", "r") as f:
+ model_string = f.read().strip().lower()
+
+ # Map model strings to our model keys
+ if "nano" in model_string:
+ if "orin" in model_string:
+ self.model = "jetson-orin-nano"
+ else:
+ self.model = "jetson-nano"
+ elif "tx1" in model_string:
+ self.model = "jetson-tx1"
+ elif "tx2" in model_string:
+ self.model = "jetson-tx2"
+ elif "xavier nx" in model_string or "nx" in model_string:
+ if "orin" in model_string:
+ self.model = "jetson-orin-nx"
+ else:
+ self.model = "jetson-xavier-nx"
+ elif "xavier" in model_string or "agx" in model_string:
+ if "orin" in model_string:
+ self.model = "jetson-agx-orin"
+ else:
+ self.model = "jetson-agx-xavier"
+ elif "orin nx" in model_string:
+ self.model = "jetson-orin-nx"
+ elif "orin" in model_string:
+ self.model = "jetson-agx-orin"
+
+ return self.model
+ except:
+ pass
+ return None
+
+ def detect_l4t_version(self):
+ """Detect L4T version"""
+ try:
+ if os.path.exists("/etc/nv_tegra_release"):
+ with open("/etc/nv_tegra_release", "r") as f:
+ version_string = f.read()
+ # Parse L4T version
+ import re
+ match = re.search(r'R(\d+) \(release\), REVISION: ([\d.]+)', version_string)
+ if match:
+ release = match.group(1)
+ revision = match.group(2)
+ self.l4t_version = f"{release}.{revision}"
+ self.jetpack_version = L4T_TO_JETPACK.get(self.l4t_version, "Unknown")
+ return self.l4t_version
+ except:
+ pass
+ return None
+
+ def detect_cuda_version(self):
+ """Detect CUDA version"""
+ # Try nvcc in PATH first
+ try:
+ result = subprocess.run(['nvcc', '--version'], capture_output=True, text=True)
+ if result.returncode == 0:
+ import re
+ match = re.search(r'release ([\d.]+)', result.stdout)
+ if match:
+ self.cuda_version = match.group(1)
+ return self.cuda_version
+ except:
+ pass
+
+ # Try standard CUDA locations
+ cuda_paths = ['/usr/local/cuda/bin/nvcc', '/usr/local/cuda-12/bin/nvcc',
+ '/usr/local/cuda-11/bin/nvcc', '/usr/local/cuda-12.6/bin/nvcc']
+ for cuda_path in cuda_paths:
+ if os.path.exists(cuda_path):
+ try:
+ result = subprocess.run([cuda_path, '--version'], capture_output=True, text=True)
+ if result.returncode == 0:
+ import re
+ match = re.search(r'release ([\d.]+)', result.stdout)
+ if match:
+ self.cuda_version = match.group(1)
+ return self.cuda_version
+ except:
+ pass
+
+ return None
+
+ def detect_memory(self):
+ """Detect system memory"""
+ try:
+ with open('/proc/meminfo', 'r') as f:
+ for line in f:
+ if line.startswith('MemTotal'):
+ mem_kb = int(line.split()[1])
+ mem_gb = round(mem_kb / (1024 * 1024))
+ self.memory = f"{mem_gb}GB"
+ return self.memory
+ except:
+ pass
+ return None
+
+ def check_compatibility(self, example_requirements):
+ """Check if current system is compatible with example requirements"""
+ compatibility = {
+ "compatible": True,
+ "warnings": [],
+ "errors": []
+ }
+
+ if not self.model:
+ compatibility["errors"].append("Could not detect Jetson model")
+ compatibility["compatible"] = False
+ return compatibility
+
+ model_info = JETSON_MODELS.get(self.model)
+ if not model_info:
+ compatibility["warnings"].append(f"Unknown Jetson model: {self.model}")
+
+ # Check L4T version
+ if "l4t_versions" in example_requirements:
+ required_l4t = example_requirements["l4t_versions"]
+ if self.l4t_version not in required_l4t:
+ compatibility["errors"].append(f"L4T version {self.l4t_version} not supported. Required: {required_l4t}")
+ compatibility["compatible"] = False
+
+ # Check memory
+ if "min_memory" in example_requirements:
+ required_mem = example_requirements["min_memory"]
+ current_mem = int(self.memory.replace("GB", ""))
+ if current_mem < required_mem:
+ compatibility["errors"].append(f"Insufficient memory: {self.memory}. Required: {required_mem}GB")
+ compatibility["compatible"] = False
+
+ # Check CUDA
+ if "cuda_version" in example_requirements:
+ required_cuda = example_requirements["cuda_version"]
+ if self.cuda_version:
+ current_cuda_major = float('.'.join(self.cuda_version.split('.')[:2]))
+ required_cuda_major = float('.'.join(required_cuda.split('.')[:2]))
+ if current_cuda_major < required_cuda_major:
+ compatibility["warnings"].append(f"CUDA version {self.cuda_version} may not be optimal. Recommended: {required_cuda}")
+
+ return compatibility
+
+ def generate_compatibility_report(self):
+ """Generate a comprehensive compatibility report"""
+ report = {
+ "system_info": {
+ "model": self.model,
+ "model_name": JETSON_MODELS.get(self.model, {}).get("name", "Unknown"),
+ "l4t_version": self.l4t_version,
+ "jetpack_version": self.jetpack_version,
+ "cuda_version": self.cuda_version,
+ "memory": self.memory
+ },
+ "model_capabilities": JETSON_MODELS.get(self.model, {}),
+ "supported_examples": [],
+ "unsupported_examples": []
+ }
+
+ return report
+
+ def print_report(self):
+ """Print a formatted compatibility report"""
+ print("\n" + "="*60)
+ print(" JETSON COMPATIBILITY REPORT")
+ print("="*60)
+
+ print("\n📊 SYSTEM INFORMATION:")
+ print(f" Model: {JETSON_MODELS.get(self.model, {}).get('name', 'Unknown')}")
+ print(f" L4T Version: {self.l4t_version or 'Not detected'}")
+ print(f" JetPack: {self.jetpack_version or 'Not detected'}")
+ print(f" CUDA: {self.cuda_version or 'Not detected'}")
+ print(f" Memory: {self.memory or 'Not detected'}")
+
+ if self.model and self.model in JETSON_MODELS:
+ model_info = JETSON_MODELS[self.model]
+ print("\n🔧 MODEL CAPABILITIES:")
+ print(f" Compute Capability: {model_info['compute']}")
+ print(f" Variants: {', '.join(model_info['variants'])}")
+ print(f" Status: {model_info['status']}")
+ print(f" Supported L4T: {', '.join(model_info['l4t_versions'][:3])}...")
+ print(f" Supported JetPack: {', '.join(model_info['jetpack'][:3])}...")
+
+ print("\n" + "="*60)
+
+def main():
+ checker = JetsonCompatibilityChecker()
+
+ # Detect system information
+ checker.detect_jetson_model()
+ checker.detect_l4t_version()
+ checker.detect_cuda_version()
+ checker.detect_memory()
+
+ # Print report
+ checker.print_report()
+
+ # Generate JSON report for programmatic use
+ report = checker.generate_compatibility_report()
+
+ # Save report to file
+ report_file = os.path.expanduser("~/.config/jetson-examples/compatibility_report.json")
+ os.makedirs(os.path.dirname(report_file), exist_ok=True)
+ with open(report_file, 'w') as f:
+ json.dump(report, f, indent=2)
+ print(f"\n📄 Full report saved to: {report_file}\n")
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
diff --git a/reComputer/scripts/llama-factory/config.yaml b/reComputer/scripts/llama-factory/config.yaml
index ac2d644..28ae826 100644
--- a/reComputer/scripts/llama-factory/config.yaml
+++ b/reComputer/scripts/llama-factory/config.yaml
@@ -1,30 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
-REQUIRED_DISK_SPACE: 25 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 25
REQUIRED_MEM_SPACE: 7
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/llama3.2/config.yaml b/reComputer/scripts/llama3.2/config.yaml
index 6d4ac7e..40fb45a 100644
--- a/reComputer/scripts/llama3.2/config.yaml
+++ b/reComputer/scripts/llama3.2/config.yaml
@@ -1,32 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
- - 36.3.0
- - 36.4.0
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
REQUIRED_DISK_SPACE: 15
REQUIRED_MEM_SPACE: 7
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/llama3/config.yaml b/reComputer/scripts/llama3/config.yaml
index 1f30943..40fb45a 100644
--- a/reComputer/scripts/llama3/config.yaml
+++ b/reComputer/scripts/llama3/config.yaml
@@ -1,31 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
- - 36.3.0
-REQUIRED_DISK_SPACE: 15 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 15
REQUIRED_MEM_SPACE: 7
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/llava-v1.5-7b/config.yaml b/reComputer/scripts/llava-v1.5-7b/config.yaml
index 91b8e70..28ae826 100644
--- a/reComputer/scripts/llava-v1.5-7b/config.yaml
+++ b/reComputer/scripts/llava-v1.5-7b/config.yaml
@@ -1,31 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
- - 36.3.0
-REQUIRED_DISK_SPACE: 25 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 25
REQUIRED_MEM_SPACE: 7
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/llava-v1.6-vicuna-7b/config.yaml b/reComputer/scripts/llava-v1.6-vicuna-7b/config.yaml
index 91b8e70..28ae826 100644
--- a/reComputer/scripts/llava-v1.6-vicuna-7b/config.yaml
+++ b/reComputer/scripts/llava-v1.6-vicuna-7b/config.yaml
@@ -1,31 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
- - 36.3.0
-REQUIRED_DISK_SPACE: 25 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 25
REQUIRED_MEM_SPACE: 7
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/llava/config.yaml b/reComputer/scripts/llava/config.yaml
index 1f30943..40fb45a 100644
--- a/reComputer/scripts/llava/config.yaml
+++ b/reComputer/scripts/llava/config.yaml
@@ -1,31 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
- - 36.3.0
-REQUIRED_DISK_SPACE: 15 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 15
REQUIRED_MEM_SPACE: 7
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/nanodb/config.yaml b/reComputer/scripts/nanodb/config.yaml
index 831ea28..ea5bcd4 100644
--- a/reComputer/scripts/nanodb/config.yaml
+++ b/reComputer/scripts/nanodb/config.yaml
@@ -1,31 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
- - 36.3.0
-REQUIRED_DISK_SPACE: 80 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 80
REQUIRED_MEM_SPACE: 15
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/nanoowl/config.yaml b/reComputer/scripts/nanoowl/config.yaml
index 91b8e70..28ae826 100644
--- a/reComputer/scripts/nanoowl/config.yaml
+++ b/reComputer/scripts/nanoowl/config.yaml
@@ -1,31 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
- - 36.3.0
-REQUIRED_DISK_SPACE: 25 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 25
REQUIRED_MEM_SPACE: 7
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/ollama/config.yaml b/reComputer/scripts/ollama/config.yaml
index 1f30943..40fb45a 100644
--- a/reComputer/scripts/ollama/config.yaml
+++ b/reComputer/scripts/ollama/config.yaml
@@ -1,31 +1,21 @@
-# The tested JetPack versions.
ALLOWED_L4T_VERSIONS:
- - 35.3.1
- - 35.4.1
- - 35.5.0
- - 36.3.0
-REQUIRED_DISK_SPACE: 15 # in GB
+- 35.3.1
+- 35.4.1
+- 35.5.0
+- 36.2.0
+- 36.3.0
+- 36.4.0
+- 36.4.3
+- 36.4.4
+REQUIRED_DISK_SPACE: 15
REQUIRED_MEM_SPACE: 7
PACKAGES:
- - nvidia-jetpack
-DOCKER:
+- nvidia-jetpack
+DOCKER:
ENABLE: true
- DAEMON: |
- {
- "default-runtime": "nvidia",
- "runtimes": {
- "nvidia": {
- "path": "nvidia-container-runtime",
- "runtimeArgs": []
- }
- },
- "storage-driver": "overlay2",
- "data-root": "/var/lib/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m",
- "max-file": "3"
- },
- "no-new-privileges": true,
- "experimental": false
- }
+ DAEMON: "{\n \"default-runtime\": \"nvidia\",\n \"runtimes\": {\n \"nvidia\"\
+ : {\n \"path\": \"nvidia-container-runtime\",\n \"runtimeArgs\": []\n\
+ \ }\n },\n \"storage-driver\": \"overlay2\",\n \"data-root\": \"/var/lib/docker\"\
+ ,\n \"log-driver\": \"json-file\",\n \"log-opts\": {\n \"max-size\": \"100m\"\
+ ,\n \"max-file\": \"3\"\n },\n \"no-new-privileges\": true,\n \"experimental\"\
+ : false\n}\n"
diff --git a/reComputer/scripts/run.sh b/reComputer/scripts/run.sh
index dd02e58..fe7cc3f 100644
--- a/reComputer/scripts/run.sh
+++ b/reComputer/scripts/run.sh
@@ -21,15 +21,102 @@ check_is_jetson_or_not() {
exit 1
fi
}
+
+check_disk_space() {
+ local example_name=$1
+ local config_file="$script_dir/$example_name/config.yaml"
+
+ if [ -f "$config_file" ]; then
+ # Check if yq is installed
+ if command -v yq &> /dev/null; then
+ required_space=$(yq -r '.REQUIRED_DISK_SPACE' "$config_file" 2>/dev/null || echo "10")
+ else
+ # Default to 10GB if yq not available
+ required_space=10
+ fi
+ else
+ # Default requirement if no config
+ required_space=10
+ fi
+
+ # Get available disk space in GB
+ available_space=$(df -BG --output=avail / | tail -1 | sed 's/[^0-9]*//g')
+
+ echo "Disk space check:"
+ echo " Required: ${required_space}GB"
+ echo " Available: ${available_space}GB"
+
+ if [ "$available_space" -lt "$required_space" ]; then
+ echo ""
+ echo "ERROR: Insufficient disk space!"
+ echo "This example requires at least ${required_space}GB of free disk space."
+ echo "You only have ${available_space}GB available."
+ echo ""
+ echo "Please free up disk space and try again."
+ exit 1
+ else
+ echo " Status: ✓ OK"
+ fi
+}
+
check_is_jetson_or_not
echo "run example:$1"
-BASE_PATH=/home/$USER/reComputer
+# Use environment variables if set, otherwise use defaults
+BASE_PATH=${BASE_PATH:-/home/$USER/reComputer}
+JETSON_REPO_PATH=${JETSON_REPO_PATH:-$BASE_PATH/jetson-containers}
-cd $JETSON_REPO_PATH
script_dir=$(dirname "$0")
+# Check disk space before proceeding
+check_disk_space "$1"
+
+# Check if jetson-containers exists
+if [ ! -d "$JETSON_REPO_PATH" ]; then
+ echo "ERROR: jetson-containers not found at $JETSON_REPO_PATH"
+ echo ""
+ echo "Searching for existing jetson-containers installation..."
+
+ # Search for jetson-containers in common locations
+ SEARCH_PATHS=(
+ "/home/$USER/git/jetson-containers"
+ "/home/$USER/jetson-containers"
+ "/opt/jetson-containers"
+ "$HOME/reComputer/jetson-containers"
+ )
+
+ FOUND_PATH=""
+ for search_path in "${SEARCH_PATHS[@]}"; do
+ if [ -d "$search_path" ]; then
+ echo "Found jetson-containers at: $search_path"
+ FOUND_PATH="$search_path"
+ break
+ fi
+ done
+
+ if [ -n "$FOUND_PATH" ]; then
+ JETSON_REPO_PATH="$FOUND_PATH"
+ echo "Using found path: $JETSON_REPO_PATH"
+ echo ""
+ echo "To make this permanent, run:"
+ echo " reComputer config set JETSON_REPO_PATH $FOUND_PATH"
+ echo ""
+ else
+ echo "jetson-containers not found in common locations."
+ echo ""
+ echo "Please install jetson-containers by running:"
+ echo " reComputer update"
+ echo ""
+ echo "Or manually clone it:"
+ echo " git clone https://github.com/dusty-nv/jetson-containers.git"
+ echo " reComputer config set JETSON_REPO_PATH /path/to/jetson-containers"
+ exit 1
+ fi
+fi
+
+cd $JETSON_REPO_PATH
+
init_script=$script_dir/$1/init.sh
if [ -f $init_script ]; then
echo "----example init----"
diff --git a/reComputer/scripts/setup.sh b/reComputer/scripts/setup.sh
new file mode 100644
index 0000000..256fec4
--- /dev/null
+++ b/reComputer/scripts/setup.sh
@@ -0,0 +1,276 @@
+#!/bin/bash
+
+# Setup script for jetson-examples
+# This script detects the host environment and installs necessary dependencies
+
+set -e
+
+# Color definitions
+RED=$(tput setaf 1)
+GREEN=$(tput setaf 2)
+YELLOW=$(tput setaf 3)
+BLUE=$(tput setaf 4)
+RESET=$(tput sgr0)
+
+echo "${BLUE}========================================${RESET}"
+echo "${BLUE} Jetson Examples Environment Setup ${RESET}"
+echo "${BLUE}========================================${RESET}"
+
+# Function to check if running on Jetson
+check_jetson() {
+ if [ -f "/proc/device-tree/model" ]; then
+ model=$(tr -d '\0' < /proc/device-tree/model | tr '[:upper:]' '[:lower:]')
+ if [[ $model =~ jetson|orin|nv|agx|xavier|nano|tx2|tx1 ]]; then
+ echo "${GREEN}✓ Jetson device detected: $model${RESET}"
+ return 0
+ else
+ echo "${YELLOW}⚠ Device may not be a Jetson: $model${RESET}"
+ return 1
+ fi
+ else
+ echo "${RED}✗ Not running on a Jetson device${RESET}"
+ return 1
+ fi
+}
+
+# Function to detect L4T/JetPack version
+detect_jetpack_version() {
+ echo "${BLUE}Detecting JetPack version...${RESET}"
+
+ if [ -f "/etc/nv_tegra_release" ]; then
+ L4T_VERSION_STRING=$(head -n 1 /etc/nv_tegra_release)
+ L4T_RELEASE=$(echo "$L4T_VERSION_STRING" | cut -f 2 -d ' ' | grep -Po '(?<=R)[^;]+')
+ L4T_REVISION=$(echo "$L4T_VERSION_STRING" | cut -f 2 -d ',' | grep -Po '(?<=REVISION: )[^;]+')
+ L4T_VERSION="$L4T_RELEASE.$L4T_REVISION"
+ echo "${GREEN}✓ L4T Version: $L4T_VERSION${RESET}"
+
+ # Map L4T to JetPack version
+ case "$L4T_VERSION" in
+ "32.7.1"|"32.7.2"|"32.7.3") JETPACK_VERSION="4.6.x" ;;
+ "34.1.0"|"34.1.1") JETPACK_VERSION="5.0.x" ;;
+ "35.1.0") JETPACK_VERSION="5.0.2" ;;
+ "35.2.1") JETPACK_VERSION="5.1" ;;
+ "35.3.1") JETPACK_VERSION="5.1.1" ;;
+ "35.4.1") JETPACK_VERSION="5.1.2" ;;
+ "35.5.0") JETPACK_VERSION="5.1.3" ;;
+ "36.2.0") JETPACK_VERSION="6.0 DP" ;;
+ "36.3.0") JETPACK_VERSION="6.0" ;;
+ "36.4.0") JETPACK_VERSION="6.1" ;;
+ "36.4.3") JETPACK_VERSION="6.2" ;;
+ "36.4.4") JETPACK_VERSION="6.2.1" ;;
+ *) JETPACK_VERSION="Unknown" ;;
+ esac
+ echo "${GREEN}✓ JetPack Version: $JETPACK_VERSION${RESET}"
+ else
+ echo "${YELLOW}⚠ Could not detect L4T version${RESET}"
+ fi
+}
+
+# Function to check system resources
+check_system_resources() {
+ echo "${BLUE}Checking system resources...${RESET}"
+
+ # Check disk space
+ DISK_AVAILABLE=$(df -BG --output=avail / | tail -1 | sed 's/[^0-9]*//g')
+ if [ "$DISK_AVAILABLE" -lt 20 ]; then
+ echo "${YELLOW}⚠ Low disk space: ${DISK_AVAILABLE}GB available (minimum 20GB recommended)${RESET}"
+ else
+ echo "${GREEN}✓ Disk space: ${DISK_AVAILABLE}GB available${RESET}"
+ fi
+
+ # Check memory
+ MEM_TOTAL=$(free -g | awk '/^Mem:/{print $2}')
+ echo "${GREEN}✓ Memory: ${MEM_TOTAL}GB total${RESET}"
+
+ # Check swap
+ SWAP_TOTAL=$(free -g | awk '/^Swap:/{print $2}')
+ if [ "$SWAP_TOTAL" -eq 0 ]; then
+ echo "${YELLOW}⚠ No swap configured (recommended for AI workloads)${RESET}"
+ else
+ echo "${GREEN}✓ Swap: ${SWAP_TOTAL}GB configured${RESET}"
+ fi
+}
+
+# Function to install basic dependencies
+install_basic_deps() {
+ echo "${BLUE}Installing basic dependencies...${RESET}"
+
+ # Update package list
+ sudo apt-get update
+
+ # Install essential packages
+ PACKAGES=(
+ "python3-pip"
+ "python3-dev"
+ "curl"
+ "wget"
+ "git"
+ "build-essential"
+ "cmake"
+ "pkg-config"
+ "jq"
+ )
+
+ for pkg in "${PACKAGES[@]}"; do
+ if dpkg -l | grep -qw "$pkg"; then
+ echo "${GREEN}✓ $pkg already installed${RESET}"
+ else
+ echo "Installing $pkg..."
+ sudo apt-get install -y "$pkg"
+ fi
+ done
+
+ # Install Python packages
+ echo "${BLUE}Installing Python dependencies...${RESET}"
+ pip3 install --upgrade pip
+
+ # Install yq for YAML parsing
+ if ! command -v yq &> /dev/null; then
+ echo "Installing yq..."
+ pip3 install yq
+ else
+ echo "${GREEN}✓ yq already installed${RESET}"
+ fi
+}
+
+# Function to setup Docker
+setup_docker() {
+ echo "${BLUE}Setting up Docker...${RESET}"
+
+ if ! command -v docker &> /dev/null; then
+ echo "Installing Docker..."
+ sudo apt-get install -y docker.io
+ sudo systemctl enable docker
+ sudo systemctl start docker
+ else
+ echo "${GREEN}✓ Docker already installed${RESET}"
+ fi
+
+ # Add user to docker group
+ if ! groups $USER | grep -q docker; then
+ echo "Adding $USER to docker group..."
+ sudo usermod -aG docker $USER
+ echo "${YELLOW}⚠ Please log out and back in for group changes to take effect${RESET}"
+ else
+ echo "${GREEN}✓ User already in docker group${RESET}"
+ fi
+
+ # Configure Docker for NVIDIA runtime
+ DAEMON_JSON="/etc/docker/daemon.json"
+ if [ ! -f "$DAEMON_JSON" ] || ! grep -q "nvidia" "$DAEMON_JSON"; then
+ echo "Configuring Docker for NVIDIA runtime..."
+ sudo tee "$DAEMON_JSON" > /dev/null <