| --- |
| title: ROCmPort AI |
| emoji: ⚡ |
| colorFrom: red |
| colorTo: yellow |
| sdk: gradio |
| app_file: app.py |
| pinned: false |
| license: mit |
| short_description: CUDA-to-ROCm migration scanner for PyTorch, HF & vLLM repos |
| --- |
| |
| # ⚡ ROCmPort AI |
|
|
| > **AMD Developer Hackathon — lablab.ai** | Track: AI Agents & Agentic Workflows |
|
|
| ROCmPort AI is a **CUDA-to-ROCm migration scanner** powered by a three-agent CrewAI pipeline and Qwen3-Coder running on AMD Instinct GPUs. Drop in any CUDA-first PyTorch, Hugging Face, or vLLM repository and get a full AMD readiness report in seconds. |
|
|
| ## What it does |
|
|
| ```mermaid |
| graph LR |
| User([User Repo]) --> Gradio[Gradio UI] |
| Gradio --> Pipeline{Pipeline} |
| |
| subgraph Agentic Workflow |
| Pipeline --> Auditor[CUDA Auditor] |
| Auditor --> Engineer[ROCm Engineer] |
| Engineer --> Reporter[Report Writer] |
| end |
| |
| Reporter --> LLM[(Qwen3-Coder on AMD Instinct)] |
| LLM --> Reporter |
| |
| Pipeline --> Scanner[Deterministic Scanner] |
| Scanner --> Patcher[Patcher] |
| Patcher --> Artifacts[Artifact Generator] |
| |
| Reporter --> Final([Migration Artifacts & Patch]) |
| Artifacts --> Final |
| ``` |
|
|
| | Output | Description | |
| |---|---| |
| | **AMD Readiness Score** | Before/after scores across 5 categories | |
| | **Findings table** | File + line references for every CUDA blocker | |
| | **ROCm patch diff** | Auto-generated unified diff to apply deterministic fixes | |
| | **Dockerfile.rocm** | ROCm-enabled container using vllm/vllm-openai-rocm | |
| | **AMD Developer Cloud Runbook** | Exact validation commands for AMD Instinct GPUs | |
| | **Migration report** | Narrative report (CrewAI + Qwen when configured) | |
| | **Benchmark schema** | Structured result to fill after AMD Developer Cloud run | |
| | **Artifact ZIP** | All outputs bundled for download | |
|
|
| ## Three-agent pipeline |
|
|
| When `QWEN_BASE_URL` and `QWEN_API_KEY` are set (pointing to a Qwen3-Coder endpoint on AMD Instinct MI300X via vLLM), three CrewAI agents collaborate: |
|
|
| 1. **CUDA Migration Auditor** — scans every file for blockers using `scan_cuda_repository` tool |
| 2. **ROCm Migration Engineer** — generates the patch diff using `generate_rocm_patch` tool |
| 3. **Migration Report Writer** — synthesises findings into an actionable Markdown report |
|
|
| Without those env vars the app falls back to the fully deterministic scanner + patcher (which always runs). |
|
|
| ## Run locally |
|
|
| ```bash |
| pip install -r requirements.txt |
| python app.py |
| ``` |
|
|
| App listens on `http://127.0.0.1:7860`. |
|
|
| ## Enable the full CrewAI + Qwen pipeline |
|
|
| ```bash |
| # Windows |
| set QWEN_BASE_URL=https://your-amd-instinct-endpoint/v1 |
| set QWEN_API_KEY=your-token |
| set QWEN_MODEL=Qwen/Qwen3-Coder-Next-FP8 |
| python app.py |
| |
| # Linux / macOS |
| QWEN_BASE_URL=https://your-amd-instinct-endpoint/v1 \ |
| QWEN_API_KEY=your-token \ |
| QWEN_MODEL=Qwen/Qwen3-Coder-Next-FP8 \ |
| python app.py |
| ``` |
|
|
| ## Tests |
|
|
| ```bash |
| python -m pytest tests/ -v |
| ``` |
|
|
| 7 tests cover the scanner, pipeline, and CrewAI agent layer. |
|
|
| ## AMD Benchmark |
|
|
| The `data/benchmark_result.json` is a transparent **pending benchmark schema** — not a fabricated result. Run the generated AMD Developer Cloud runbook (shown in the app's Runbook tab) on an AMD Instinct MI300X instance to capture real throughput, latency, and VRAM figures, then replace the file. |
|
|
| ## Deploy to Hugging Face Spaces |
|
|
| ```bash |
| python scripts/deploy_to_hf.py --token hf_... --username YourHFUsername |
| ``` |
|
|
| ## Tech stack |
|
|
| - **AMD Developer Cloud** + **AMD Instinct MI300X** for GPU compute |
| - **ROCm** — open-source GPU computing platform |
| - **CrewAI** — multi-agent orchestration |
| - **Qwen3-Coder-Next-FP8** — code-specialist LLM on AMD hardware |
| - **vLLM (ROCm build)** — high-throughput serving |
| - **Hugging Face** — model hub + Space hosting |
| - **Gradio 5** — web UI |
|
|