Files
OCR/openspec/changes/add-gpu-acceleration-support/specs/environment-setup/spec.md
egg 6452797abe feat: add GPU acceleration support OpenSpec proposal
新增 GPU 加速支援的 OpenSpec 變更提案

主要內容:
- 在環境建置腳本中加入 GPU 偵測功能
- 自動安裝對應 CUDA 版本的 PaddlePaddle GPU 套件
- 在 OCR 處理程式中加入 GPU 可用性偵測
- 自動啟用 GPU 加速(可用時)或使用 CPU(不可用時)
- 支援強制 CPU 模式選項
- 加入 GPU 狀態報告到健康檢查 API

變更範圍:
- 新增 capability: environment-setup (環境設置)
- 修改 capability: ocr-processing (加入 GPU 支援)

實作任務包含:
1. 環境設置腳本增強 (GPU 偵測、CUDA 安裝)
2. 配置更新 (GPU 相關環境變數)
3. OCR 服務 GPU 整合 (自動偵測、記憶體管理)
4. 健康檢查與監控 (GPU 狀態報告)
5. 文檔更新
6. 測試與效能評估
7. 錯誤處理與邊界情況

預期效果:
- GPU 系統: 3-10x OCR 處理速度提升
- CPU 系統: 無影響,向後相容
- 自動硬體偵測與優化配置

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 07:34:06 +08:00

78 lines
3.5 KiB
Markdown

# Environment Setup Specification
## ADDED Requirements
### Requirement: GPU Detection and CUDA Installation
The system SHALL automatically detect compatible GPU hardware during environment setup and install appropriate PaddlePaddle packages (GPU-enabled or CPU-only) based on hardware availability.
#### Scenario: GPU detected with CUDA support
- **WHEN** setup script runs on system with NVIDIA GPU and CUDA drivers
- **THEN** the script detects GPU using `nvidia-smi` command
- **AND** determines CUDA version from driver
- **AND** installs `paddlepaddle-gpu` with matching CUDA version
- **AND** verifies GPU availability through Python
- **AND** displays GPU information (device name, CUDA version, memory)
#### Scenario: No GPU detected
- **WHEN** setup script runs on system without compatible GPU
- **THEN** the script detects absence of GPU hardware
- **AND** installs CPU-only `paddlepaddle` package
- **AND** displays message that CPU mode will be used
- **AND** continues setup without errors
#### Scenario: GPU detected but no CUDA drivers
- **WHEN** setup script detects NVIDIA GPU but CUDA drivers are missing
- **THEN** the script displays warning about missing drivers
- **AND** provides installation instructions for CUDA drivers
- **AND** falls back to CPU-only installation
- **AND** suggests re-running setup after driver installation
#### Scenario: CUDA version mismatch
- **WHEN** detected CUDA version is not compatible with available PaddlePaddle packages
- **THEN** the script displays available CUDA versions
- **AND** installs closest compatible PaddlePaddle GPU package
- **AND** warns user about potential compatibility issues
- **AND** provides instructions to upgrade/downgrade CUDA if needed
#### Scenario: Manual CUDA version override
- **WHEN** user sets CUDA_VERSION environment variable before running setup
- **THEN** the script uses specified CUDA version instead of auto-detection
- **AND** installs corresponding PaddlePaddle GPU package
- **AND** skips automatic CUDA detection
- **AND** displays warning if specified version differs from detected version
### Requirement: GPU Verification
The system SHALL verify GPU functionality after installation and provide clear status reporting.
#### Scenario: Successful GPU setup verification
- **WHEN** PaddlePaddle GPU installation completes
- **THEN** the script runs GPU availability test using Python
- **AND** confirms CUDA devices are accessible
- **AND** displays GPU count, device names, and memory capacity
- **AND** marks GPU setup as successful
#### Scenario: GPU verification fails
- **WHEN** GPU verification test fails after installation
- **THEN** the script displays detailed error message
- **AND** provides troubleshooting steps
- **AND** suggests fallback to CPU mode
- **AND** does not fail entire setup process
### Requirement: Environment Configuration for GPU
The system SHALL create appropriate configuration settings for GPU usage in environment files.
#### Scenario: GPU-enabled configuration
- **WHEN** GPU is successfully detected and verified
- **THEN** the setup script adds GPU settings to `.env.local`
- **AND** sets `FORCE_CPU_MODE=false`
- **AND** sets detected `CUDA_VERSION`
- **AND** sets recommended `GPU_MEMORY_FRACTION` (e.g., 0.8)
- **AND** adds GPU-related comments and documentation
#### Scenario: CPU-only configuration
- **WHEN** no GPU is detected or verification fails
- **THEN** the setup script creates CPU-only configuration
- **AND** sets `FORCE_CPU_MODE=true`
- **AND** omits or comments out GPU-specific settings
- **AND** adds note about GPU requirements