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 </dev/null | grep "release" | awk '{print $5}' | cut -d',' -f1) + echo "${GREEN}✓ CUDA version: $CUDA_VERSION${RESET}" + else + echo "${YELLOW}⚠ CUDA not found in /usr/local/cuda${RESET}" + fi +} + +# Function to setup environment variables +setup_environment() { + echo "${BLUE}Setting up environment variables...${RESET}" + + # Create config directory + CONFIG_DIR="$HOME/.config/jetson-examples" + mkdir -p "$CONFIG_DIR" + + # Create environment config file + ENV_FILE="$CONFIG_DIR/env.conf" + cat > "$ENV_FILE" <> "$HOME/.bashrc" + echo "# Jetson Examples Environment" >> "$HOME/.bashrc" + echo "[ -f \"$ENV_FILE\" ] && source \"$ENV_FILE\"" >> "$HOME/.bashrc" + echo "${GREEN}✓ Added to .bashrc${RESET}" + fi +} + +# Main setup flow +main() { + echo "" + + # Check if running on Jetson + if ! check_jetson; then + echo "${YELLOW}⚠ Warning: Not running on a Jetson device${RESET}" + read -p "Continue anyway? (y/N): " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + exit 1 + fi + fi + + echo "" + detect_jetpack_version + + echo "" + check_system_resources + + echo "" + install_basic_deps + + echo "" + setup_docker + + echo "" + check_cuda + + echo "" + setup_environment + + echo "" + echo "${GREEN}========================================${RESET}" + echo "${GREEN} Setup completed successfully! ${RESET}" + echo "${GREEN}========================================${RESET}" + echo "" + echo "Next steps:" + echo "1. Source your environment: ${BLUE}source ~/.bashrc${RESET}" + echo "2. Check system status: ${BLUE}reComputer check${RESET}" + echo "3. List available examples: ${BLUE}reComputer list${RESET}" + echo "4. Run an example: ${BLUE}reComputer run llava${RESET}" + echo "" +} + +# Run main function +main "$@" \ No newline at end of file diff --git a/reComputer/scripts/stable-diffusion-webui/config.yaml b/reComputer/scripts/stable-diffusion-webui/config.yaml index 91b8e70..28ae826 100644 --- a/reComputer/scripts/stable-diffusion-webui/config.yaml +++ b/reComputer/scripts/stable-diffusion-webui/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/text-generation-webui/config.yaml b/reComputer/scripts/text-generation-webui/config.yaml index 91b8e70..28ae826 100644 --- a/reComputer/scripts/text-generation-webui/config.yaml +++ b/reComputer/scripts/text-generation-webui/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/ultralytics-yolo/config.yaml b/reComputer/scripts/ultralytics-yolo/config.yaml index 21df9cc..8a13659 100644 --- a/reComputer/scripts/ultralytics-yolo/config.yaml +++ b/reComputer/scripts/ultralytics-yolo/config.yaml @@ -1,34 +1,22 @@ -# The tested JetPack versions. ALLOWED_L4T_VERSIONS: - - 32.6.1 - - 35.3.1 - - 35.4.1 - - 35.5.0 - - 36.3.0 - - 36.4.0 - - 36.4.3 -REQUIRED_DISK_SPACE: 16 # in GB +- 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 +REQUIRED_DISK_SPACE: 16 REQUIRED_MEM_SPACE: 2 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/update.sh b/reComputer/scripts/update.sh index 428500b..14d9b03 100644 --- a/reComputer/scripts/update.sh +++ b/reComputer/scripts/update.sh @@ -1,27 +1,244 @@ #!/bin/bash -echo "--update jetson-containers repo--" -BASE_PATH=/home/$USER/reComputer -mkdir -p $BASE_PATH/ - -JETSON_REPO_PATH="$BASE_PATH/jetson-containers" -BASE_JETSON_LAB_GIT="https://github.com/dusty-nv/jetson-containers/tree/d1573a3e8d7ba3fef36ebb23a7391e60eaf64db7" - -if [ -d $JETSON_REPO_PATH ]; then - echo "jetson-ai-lab existed." - # 5 publish to Test PyPI - read -p "follow the newest version maybe bring bugs, are you sure about the update? (y/n): " choice - if [[ $choice == "y" || $choice == "Y" ]]; then - cd $JETSON_REPO_PATH - git pull - pip3 install -r requirements.txt + +# 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 Containers Update Manager ${RESET}" +echo "${BLUE}========================================${RESET}" + +# Use environment variable if set, otherwise use default +BASE_PATH=${BASE_PATH:-/home/$USER/reComputer} +JETSON_REPO_PATH="${JETSON_REPO_PATH:-$BASE_PATH/jetson-containers}" + +# Official jetson-containers repository +JETSON_CONTAINERS_REPO="https://github.com/dusty-nv/jetson-containers.git" + +# Function to check current version +check_version() { + if [ -d "$JETSON_REPO_PATH/.git" ]; then + cd "$JETSON_REPO_PATH" + CURRENT_COMMIT=$(git rev-parse --short HEAD) + CURRENT_BRANCH=$(git branch --show-current) + echo "${GREEN}Current version:${RESET}" + echo " Branch: $CURRENT_BRANCH" + echo " Commit: $CURRENT_COMMIT" + echo " Date: $(git log -1 --format=%cd --date=short)" + + # Check for updates + git fetch origin >/dev/null 2>&1 + LOCAL=$(git rev-parse HEAD) + REMOTE=$(git rev-parse origin/$CURRENT_BRANCH) + + if [ "$LOCAL" != "$REMOTE" ]; then + echo "" + echo "${YELLOW}⚠ Updates available!${RESET}" + echo " New commits: $(git rev-list HEAD..origin/$CURRENT_BRANCH --count)" + return 1 + else + echo "" + echo "${GREEN}✓ Already up to date${RESET}" + return 0 + fi + else + echo "${YELLOW}⚠ jetson-containers not found at $JETSON_REPO_PATH${RESET}" + return 2 + fi +} + +# Function to backup current installation +backup_installation() { + BACKUP_DIR="$BASE_PATH/backups/jetson-containers-$(date +%Y%m%d-%H%M%S)" + echo "${BLUE}Creating backup at $BACKUP_DIR...${RESET}" + mkdir -p "$BASE_PATH/backups" + cp -r "$JETSON_REPO_PATH" "$BACKUP_DIR" + echo "${GREEN}✓ Backup created${RESET}" +} + +# Function to update jetson-containers +update_jetson_containers() { + echo "" + echo "${BLUE}Updating jetson-containers...${RESET}" + + cd "$JETSON_REPO_PATH" + + # Stash any local changes + if [[ -n $(git status -s) ]]; then + echo "${YELLOW}Stashing local changes...${RESET}" + git stash push -m "Auto-stash before update $(date)" + fi + + # Pull updates + echo "Pulling latest changes..." + if git pull origin $(git branch --show-current); then + echo "${GREEN}✓ Successfully updated${RESET}" + + # Update Python dependencies + if [ -f "requirements.txt" ]; then + echo "" + echo "${BLUE}Updating Python dependencies...${RESET}" + pip3 install -r requirements.txt --upgrade + echo "${GREEN}✓ Dependencies updated${RESET}" + fi + + # Show what's new + echo "" + echo "${BLUE}Recent changes:${RESET}" + git log --oneline -5 + + return 0 else - echo "skip update." + echo "${RED}✗ Update failed${RESET}" + return 1 fi -else - echo "jetson-ai-lab does not installed. start init..." - cd $BASE_PATH/ - git clone --depth=1 $BASE_JETSON_LAB_GIT - cd $JETSON_REPO_PATH - sudo apt update; sudo apt install -y python3-pip - pip3 install -r requirements.txt -fi \ No newline at end of file +} + +# Function to install jetson-containers +install_jetson_containers() { + echo "" + echo "${BLUE}Installing jetson-containers...${RESET}" + + mkdir -p "$BASE_PATH" + cd "$BASE_PATH" + + echo "Cloning repository..." + if git clone --depth=1 "$JETSON_CONTAINERS_REPO"; then + cd "$JETSON_REPO_PATH" + + # Install dependencies + echo "" + echo "${BLUE}Installing dependencies...${RESET}" + sudo apt update + sudo apt install -y python3-pip + + if [ -f "requirements.txt" ]; then + pip3 install -r requirements.txt + fi + + echo "${GREEN}✓ Installation complete${RESET}" + return 0 + else + echo "${RED}✗ Installation failed${RESET}" + return 1 + fi +} + +# Function to rollback to backup +rollback() { + echo "" + echo "${BLUE}Available backups:${RESET}" + + if [ -d "$BASE_PATH/backups" ]; then + ls -1 "$BASE_PATH/backups" | nl + echo "" + read -p "Enter backup number to restore (or 0 to cancel): " choice + + if [ "$choice" -ne 0 ]; then + BACKUP=$(ls -1 "$BASE_PATH/backups" | sed -n "${choice}p") + if [ -n "$BACKUP" ]; then + echo "${YELLOW}Restoring from $BACKUP...${RESET}" + rm -rf "$JETSON_REPO_PATH" + cp -r "$BASE_PATH/backups/$BACKUP" "$JETSON_REPO_PATH" + echo "${GREEN}✓ Rollback complete${RESET}" + fi + fi + else + echo "${YELLOW}No backups found${RESET}" + fi +} + +# Main update flow +main() { + echo "" + + if [ -d "$JETSON_REPO_PATH" ]; then + # Check current version + check_version + STATUS=$? + + if [ $STATUS -eq 1 ]; then + # Updates available + echo "" + echo "Options:" + echo " 1) Update to latest version" + echo " 2) Update with backup" + echo " 3) Show detailed changes" + echo " 4) Skip update" + echo "" + read -p "Choose option (1-4): " choice + + case $choice in + 1) + update_jetson_containers + ;; + 2) + backup_installation + update_jetson_containers + ;; + 3) + cd "$JETSON_REPO_PATH" + git log HEAD..origin/$(git branch --show-current) --oneline --graph + echo "" + read -p "Continue with update? (y/N): " confirm + if [[ $confirm == "y" || $confirm == "Y" ]]; then + update_jetson_containers + fi + ;; + 4) + echo "${YELLOW}Update skipped${RESET}" + ;; + *) + echo "${RED}Invalid option${RESET}" + ;; + esac + elif [ $STATUS -eq 0 ]; then + # Already up to date + echo "" + echo "Options:" + echo " 1) Force reinstall" + echo " 2) Rollback to backup" + echo " 3) Exit" + echo "" + read -p "Choose option (1-3): " choice + + case $choice in + 1) + backup_installation + rm -rf "$JETSON_REPO_PATH" + install_jetson_containers + ;; + 2) + rollback + ;; + 3) + echo "${GREEN}Done${RESET}" + ;; + *) + echo "${RED}Invalid option${RESET}" + ;; + esac + fi + else + # Not installed + echo "${YELLOW}jetson-containers is not installed${RESET}" + echo "" + read -p "Install now? (y/N): " choice + if [[ $choice == "y" || $choice == "Y" ]]; then + install_jetson_containers + else + echo "${YELLOW}Installation skipped${RESET}" + fi + fi + + echo "" + echo "${GREEN}========================================${RESET}" + echo "${GREEN} Update Complete ${RESET}" + echo "${GREEN}========================================${RESET}" +} + +# Run main function +main "$@" \ No newline at end of file diff --git a/reComputer/scripts/update_jetpack6_support.py b/reComputer/scripts/update_jetpack6_support.py new file mode 100644 index 0000000..af05632 --- /dev/null +++ b/reComputer/scripts/update_jetpack6_support.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python3 +""" +Update all config.yaml files to support JetPack 6.0 and 6.1 +""" + +import os +import yaml +import glob + +# JetPack 6.x L4T versions +# 36.2.0 = JetPack 6.0 DP (Developer Preview) +# 36.3.0 = JetPack 6.0 GA (General Availability) +# 36.4.0 = JetPack 6.1 +# 36.4.3 = JetPack 6.2 (estimated) +# 36.4.4 = JetPack 6.2.1 +JETPACK_6_VERSIONS = ["36.2.0", "36.3.0", "36.4.0", "36.4.3", "36.4.4"] + +def update_config_file(filepath): + """Update a single config.yaml file to support JetPack 6.x""" + updated = False + + try: + with open(filepath, 'r') as f: + config = yaml.safe_load(f) + + if 'ALLOWED_L4T_VERSIONS' in config: + current_versions = config['ALLOWED_L4T_VERSIONS'] + + # Add JetPack 6.x versions if not present + for version in JETPACK_6_VERSIONS: + if version not in current_versions: + current_versions.append(version) + updated = True + + if updated: + # Sort versions + config['ALLOWED_L4T_VERSIONS'] = sorted(current_versions) + + # Write back to file + with open(filepath, 'w') as f: + yaml.dump(config, f, default_flow_style=False, sort_keys=False) + + print(f"✅ Updated: {filepath}") + return True + else: + print(f"ℹ️ Already supported: {filepath}") + return False + except Exception as e: + print(f"❌ Error updating {filepath}: {e}") + return False + + return False + +def main(): + """Update all config.yaml files in the scripts directory""" + script_dir = os.path.dirname(os.path.abspath(__file__)) + config_files = glob.glob(os.path.join(script_dir, "*/config.yaml")) + + print("🚀 Updating config files for JetPack 6.0 support...") + print(f" Adding L4T versions: {', '.join(JETPACK_6_VERSIONS)}") + print("-" * 60) + + updated_count = 0 + for config_file in config_files: + if update_config_file(config_file): + updated_count += 1 + + print("-" * 60) + print(f"✨ Updated {updated_count}/{len(config_files)} config files") + + # Create a compatibility matrix + create_compatibility_matrix() + +def create_compatibility_matrix(): + """Create a compatibility matrix for all examples""" + script_dir = os.path.dirname(os.path.abspath(__file__)) + config_files = glob.glob(os.path.join(script_dir, "*/config.yaml")) + + matrix = {} + + for config_file in config_files: + example_name = os.path.basename(os.path.dirname(config_file)) + + try: + with open(config_file, 'r') as f: + config = yaml.safe_load(f) + + matrix[example_name] = { + 'l4t_versions': config.get('ALLOWED_L4T_VERSIONS', []), + 'disk_space': config.get('REQUIRED_DISK_SPACE', 'N/A'), + 'memory': config.get('REQUIRED_MEM_SPACE', 'N/A'), + 'jetpack_6_compatible': any(v in config.get('ALLOWED_L4T_VERSIONS', []) + for v in JETPACK_6_VERSIONS) + } + except: + pass + + # Save compatibility matrix + matrix_file = os.path.join(script_dir, "../compatibility_matrix.yaml") + with open(matrix_file, 'w') as f: + yaml.dump(matrix, f, default_flow_style=False) + + print(f"\n📊 Compatibility matrix saved to: {matrix_file}") + + # Print summary + jp6_compatible = sum(1 for ex in matrix.values() if ex['jetpack_6_compatible']) + print(f"\n📈 JetPack 6.0 Compatibility Summary:") + print(f" Compatible examples: {jp6_compatible}/{len(matrix)}") + + # List incompatible examples + incompatible = [name for name, info in matrix.items() if not info['jetpack_6_compatible']] + if incompatible: + print(f" ⚠️ Incompatible examples: {', '.join(incompatible)}") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/reComputer/scripts/whisper/config.yaml b/reComputer/scripts/whisper/config.yaml index 91b8e70..28ae826 100644 --- a/reComputer/scripts/whisper/config.yaml +++ b/reComputer/scripts/whisper/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/yolov10/config.yaml b/reComputer/scripts/yolov10/config.yaml index cd4ba9f..c170a6a 100644 --- a/reComputer/scripts/yolov10/config.yaml +++ b/reComputer/scripts/yolov10/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: 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/yolov8-rail-inspection/config.yaml b/reComputer/scripts/yolov8-rail-inspection/config.yaml index cd4ba9f..c170a6a 100644 --- a/reComputer/scripts/yolov8-rail-inspection/config.yaml +++ b/reComputer/scripts/yolov8-rail-inspection/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: 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"