| # CRAYON Installation Guide |
|
|
| ## Quick Install (CPU Only) |
|
|
| ```bash |
| pip install xerv-crayon |
| ``` |
|
|
| ## CUDA Installation (NVIDIA GPUs) |
|
|
| ### Prerequisites |
| 1. **NVIDIA GPU** with CUDA support (Pascal architecture or newer) |
| 2. **CUDA Toolkit** 12.1+ recommended |
| 3. **PyTorch with CUDA support** |
|
|
| ### Step 1: Install CUDA Toolkit |
| Download and install from: https://developer.nvidia.com/cuda-downloads |
|
|
| **Windows:** |
| - Install to default location: `C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x` |
| - Add to PATH: `C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin` |
|
|
| **Linux:** |
| ```bash |
| export CUDA_HOME=/usr/local/cuda |
| export PATH=$CUDA_HOME/bin:$PATH |
| ``` |
|
|
| ### Step 2: Install PyTorch CUDA |
| ```bash |
| # Uninstall CPU-only version first |
| pip uninstall torch torchvision torchaudio |
| |
| # Install CUDA version |
| pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 |
| ``` |
|
|
| ### Step 3: Install CRAYON with CUDA |
| ```bash |
| # Development install (recommended) |
| git clone https://github.com/Electroiscoding/CRAYON.git |
| cd CRAYON |
| pip install -e . --verbose |
| |
| # Or production install |
| pip install xerv-crayon --verbose |
| ``` |
|
|
| ### Step 4: Verify Installation |
| ```python |
| from crayon.core.vocabulary import CrayonVocab |
| |
| # Should show green message if CUDA is available |
| vocab = CrayonVocab(device="auto") |
| print(f"Active device: {vocab.device}") |
| ``` |
|
|
| ## ROCm Installation (AMD GPUs) |
|
|
| ### Prerequisites |
| 1. **AMD GPU** with ROCm support |
| 2. **ROCm Toolkit** 5.4+ recommended |
|
|
| ### Installation |
| ```bash |
| # Set ROCm environment |
| export ROCM_HOME=/opt/rocm |
| export HIP_VISIBLE_DEVICES=0 |
| |
| # Install CRAYON |
| pip install -e . --verbose |
| ``` |
|
|
| ## Troubleshooting |
|
|
| ### CUDA Extension Not Compiled |
|
|
| If you see: |
| ``` |
| WARNING:crayon.vocab:CUDA extension not compiled. Falling back to CPU. |
| ``` |
|
|
| Run this diagnostic: |
| ```python |
| from crayon.core.vocabulary import CrayonVocab |
| vocab = CrayonVocab(device="cpu") # Initialize first |
| print(vocab._get_cuda_import_error()) # Get detailed fix instructions |
| ``` |
|
|
| ### Common Issues |
|
|
| #### 1. "NVCC not found" |
| **Solution:** Install CUDA Toolkit and add to PATH |
|
|
| #### 2. "PyTorch CUDA not available" |
| **Solution:** Install CUDA version of PyTorch: |
| ```bash |
| pip uninstall torch |
| pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 |
| ``` |
|
|
| #### 3. "CUDA_HOME not set" |
| **Solution:** Set environment variable: |
| - **Windows:** `CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x` |
| - **Linux:** `export CUDA_HOME=/usr/local/cuda` |
|
|
| #### 4. Build fails with "out of memory" |
| **Solution:** Limit build jobs: |
| ```bash |
| export MAX_JOBS=1 |
| pip install -e . --verbose |
| ``` |
|
|
| ### Forced Builds |
|
|
| If you have CUDA installed but no GPU, force build: |
| ```bash |
| # Windows |
| set CRAYON_FORCE_CUDA=1 |
| pip install -e . --force-reinstall |
| |
| # Linux/Mac |
| export CRAYON_FORCE_CUDA=1 |
| pip install -e . --force-reinstall |
| ``` |
|
|
| ### Generic Wheel Build (for distribution) |
| ```bash |
| export CRAYON_GENERIC_BUILD=1 |
| python -m build |
| ``` |
|
|
| ## Performance Verification |
|
|
| ```python |
| import time |
| from crayon.core.vocabulary import CrayonVocab |
| |
| # Test with different backends |
| for device in ["cpu", "cuda"]: |
| try: |
| vocab = CrayonVocab(device=device) |
| vocab.load_profile("lite") |
| |
| start = time.time() |
| tokens = vocab.tokenize("Hello world! " * 1000) |
| elapsed = time.time() - start |
| |
| print(f"{device.upper()}: {elapsed:.6f}s for {len(tokens)} tokens") |
| except Exception as e: |
| print(f"{device.upper()}: {e}") |
| ``` |
|
|
| ## Getting Help |
|
|
| - **Issues:** https://github.com/Electroiscoding/CRAYON/issues |
| - **Discussions:** https://github.com/Electroiscoding/CRAYON/discussions |
| - **Documentation:** https://github.com/Electroiscoding/CRAYON#readme |
|
|
| ## Environment Variables |
|
|
| | Variable | Purpose | Example | |
| |----------|---------|---------| |
| | `CRAYON_DEVICE` | Force device selection | `cuda`, `cpu`, `rocm` | |
| | `CRAYON_FORCE_CUDA` | Force CUDA build | `1` | |
| | `CRAYON_FORCE_ROCM` | Force ROCm build | `1` | |
| | `CRAYON_FORCE_CPU` | CPU-only build | `1` | |
| | `CRAYON_GENERIC_BUILD` | Build for all GPU archs | `1` | |
| | `CRAYON_PROFILE_DIR` | Custom profile directory | `/path/to/profiles` | |
| | `MAX_JOBS` | Limit build parallelism | `1` | |
|
|