diff --git a/finmuse-deliverables/finmuse-radeon-demo-first-frame-1.png b/finmuse-deliverables/finmuse-radeon-demo-first-frame-1.png new file mode 100644 index 000000000..e5d73ee63 Binary files /dev/null and b/finmuse-deliverables/finmuse-radeon-demo-first-frame-1.png differ diff --git a/finmuse-deliverables/finmuse-radeon-demo-first-frame.png b/finmuse-deliverables/finmuse-radeon-demo-first-frame.png new file mode 100644 index 000000000..e5d73ee63 Binary files /dev/null and b/finmuse-deliverables/finmuse-radeon-demo-first-frame.png differ diff --git a/finmuse-deliverables/finmuse-radeon-demo-storyboard.png b/finmuse-deliverables/finmuse-radeon-demo-storyboard.png new file mode 100644 index 000000000..ad22f9d8d Binary files /dev/null and b/finmuse-deliverables/finmuse-radeon-demo-storyboard.png differ diff --git a/finmuse-deliverables/finmuse-radeon-demo.mp4 b/finmuse-deliverables/finmuse-radeon-demo.mp4 new file mode 100644 index 000000000..36290ff76 Binary files /dev/null and b/finmuse-deliverables/finmuse-radeon-demo.mp4 differ diff --git a/finmuse-deliverables/finmuse-radeon-source/README.md b/finmuse-deliverables/finmuse-radeon-source/README.md new file mode 100644 index 000000000..102bf5a76 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/README.md @@ -0,0 +1,165 @@ +# FinMuse Radeon + +FinMuse Radeon is a Track 1 multimodal content creation demo for financial customer product promotion and introduction services. It helps banks, securities firms, insurers and wealth management teams transform one product brief into scenario-based marketing copy, visual prompts, SVG posters, a landing page, voiceover text and compliance-aware metadata. + +The project is designed to demonstrate how AMD Radeon GPU / ROCm can support local, stable and reproducible financial content generation workflows. The baseline code uses a standard-library rule engine so judges can run it anywhere; on an AMD ROCm environment the same commands automatically record the GPU detection path. + +## 1. Project background + +Financial institutions need to introduce products across many daily-life scenarios: + +- Wealth management for commute, family planning and retirement review. +- Insurance product education for family health, accident protection and travel. +- Credit card and banking services for mobile payment, shopping and business use. +- Fund and investment education for portfolio review and risk awareness. +- Branch screens, mobile apps, relationship-manager presentations and social videos. + +Traditional production is fragmented: product teams write briefs, marketing teams create copy, design teams create visuals, compliance teams review wording, and channel teams adapt the same idea repeatedly. FinMuse Radeon compresses this into a repeatable generation pipeline. + +## 2. What the demo generates + +For each financial product brief, the CLI generates: + +- `variants.json`: scenario-based content variants. +- `poster-01.svg`, `poster-02.svg`, `poster-03.svg`: high-resolution 1280x720 SVG promotional cards. +- `landing-page.html`: product introduction landing page. +- `gpu-status.json`: AMD Radeon / ROCm detection result. +- `run-summary.json`: runtime, clarity score, stability score and diversity tags. +- `demo-report.md`: cross-run report summarizing clarity, stability and diversity. + +## 3. Repository structure + +```text +finmuse-radeon/ + finmuse/ + __init__.py + cli.py # command line interface + generator.py # financial content generation logic + gpu.py # AMD Radeon / ROCm detection helpers + examples/ + wealth-card.json + insurance-family.json + outputs/ + wealth-card/ # generated sample output + insurance-family/ # generated sample output + demo-report.md + gpu-status.json + scripts/ + run_demo.sh + requirements.txt + README.md +``` + +## 4. Quick start + +> The baseline demo has no mandatory third-party dependency. + +```bash +cd finmuse-radeon +python -m finmuse.cli check-gpu +python -m finmuse.cli generate --brief examples/wealth-card.json --variants 3 --out outputs/wealth-card +python -m finmuse.cli generate --brief examples/insurance-family.json --variants 3 --out outputs/insurance-family +python -m finmuse.cli report --run outputs/wealth-card --run outputs/insurance-family --out outputs/demo-report.md +``` + +On this packaging machine, the recorded status is CPU fallback because `rocm-smi` and `rocminfo` are not available. The demo does not fake an AMD GPU result. + +## 5. AMD Radeon GPU / ROCm validation commands + +On a Linux machine with supported AMD Radeon GPU and ROCm installed, run: + +```bash +rocm-smi +rocminfo | head -80 +python -m finmuse.cli check-gpu --out outputs/gpu-status.json +python -m finmuse.cli generate --brief examples/wealth-card.json --variants 6 --out outputs/wealth-card-rocm +python -m finmuse.cli report --run outputs/wealth-card-rocm --out outputs/demo-report-rocm.md +``` + +Expected evidence in `gpu-status.json`: + +```json +{ + "rocm_smi_found": true, + "rocminfo_found": true, + "mode": "amd_rocm_gpu", + "devices": ["AMD Radeon ..."] +} +``` + +If PyTorch ROCm is installed, `gpu.py` also checks whether the HIP backend is available. The current baseline generator is lightweight; a production extension can replace the rule engine with LLM, diffusion, TTS and video models running through ROCm-enabled runtimes. + +## 6. System architecture + +```text +Financial Brief JSON + | + v +Brief Parser ----> Compliance Guardrails + | | + v v +Scenario Planner --> Variant Generator --> Quality Metrics + | | + v v +Visual Prompt Builder Copy / Voiceover Builder + | | + +-------> Asset Renderer: SVG posters + HTML landing page + | + v + Metadata + GPU Runtime Recorder +``` + +Key design choices: + +- Financial-scenario planner maps products to life moments. +- Compliance guardrails avoid unrealistic return promises. +- Variant generator produces diverse scenes, tone words and channels. +- Quality metrics record clarity, stability and diversity. +- GPU recorder captures AMD Radeon / ROCm runtime evidence. + +## 7. Model and algorithm design + +The hackathon baseline uses deterministic generation so judges can reproduce results exactly: + +- Seed creation from product brief hash. +- Scenario library by product type: wealth, insurance, credit, loan and fund. +- Tone library: premium, warm, youth and stable. +- Rule-based headline, subtitle, caption and voiceover templates. +- SVG/HTML rendering for visible multimodal assets. +- Clarity score and stability score for demo evaluation. +- Diversity tags to prove multi-scenario output coverage. + +Production extension path: + +- LLM for product-brief understanding and compliance rewriting. +- Diffusion model for financial-scene key visuals. +- TTS for relationship-manager narration. +- Video compositor for branch-screen and social-video formats. +- ROCm/HIP acceleration for local GPU inference. + +## 8. Demo evidence generated in this package + +The included sample run generated two product campaigns: + +1. `Aurora Smart Wealth Card` +2. `Family Shield Plan` + +Each campaign includes three content variants and reports: + +- Average clarity score. +- Average stability score. +- Scenario and channel diversity tags. +- Runtime and hardware mode. + +## 9. Limitations and honest GPU statement + +This packaged environment does not expose AMD Radeon GPU or ROCm tools, so the included execution result is `cpu_fallback`. The source code is designed to detect and record AMD ROCm evidence when run on supported hardware. The demo video therefore shows: + +- Actual command-line run in the current environment. +- Actual generated outputs from the packaged code. +- The exact AMD ROCm commands required for GPU validation. +- A clear note that no GPU result is fabricated in this environment. + +## 10. License and compliance note + +This is a hackathon prototype. Financial copy is for demonstration only and must be reviewed by qualified compliance and legal teams before real customer use. diff --git a/finmuse-deliverables/finmuse-radeon-source/examples/insurance-family.json b/finmuse-deliverables/finmuse-radeon-source/examples/insurance-family.json new file mode 100644 index 000000000..79f8028ee --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/examples/insurance-family.json @@ -0,0 +1,14 @@ +{ + "institution": "Radeon Trust Insurance", + "product_name": "Family Shield Plan", + "product_type": "insurance", + "target_audience": "young families and urban professionals", + "tone": "warm", + "channels": ["branch screen", "mobile app", "social video"], + "benefits": [ + "life-stage protection explanation", + "family health and accident coverage story", + "advisor-assisted policy comparison" + ], + "disclaimer": "Insurance coverage is subject to official policy terms and underwriting review." +} diff --git a/finmuse-deliverables/finmuse-radeon-source/examples/wealth-card.json b/finmuse-deliverables/finmuse-radeon-source/examples/wealth-card.json new file mode 100644 index 000000000..f10f7d23f --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/examples/wealth-card.json @@ -0,0 +1,14 @@ +{ + "institution": "Aurora Bank", + "product_name": "Aurora Smart Wealth Card", + "product_type": "wealth", + "target_audience": "young professionals and mass affluent families", + "tone": "premium", + "channels": ["mobile app", "branch screen", "social short video"], + "benefits": [ + "goal-based asset allocation introduction", + "one-stop banking and wealth management service", + "risk-aware portfolio education" + ], + "disclaimer": "For demonstration only. Investment involves risk and requires suitability assessment." +} diff --git a/finmuse-deliverables/finmuse-radeon-source/finmuse/__init__.py b/finmuse-deliverables/finmuse-radeon-source/finmuse/__init__.py new file mode 100644 index 000000000..d3ec452c3 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/finmuse/__init__.py @@ -0,0 +1 @@ +__version__ = "0.2.0" diff --git a/finmuse-deliverables/finmuse-radeon-source/finmuse/cli.py b/finmuse-deliverables/finmuse-radeon-source/finmuse/cli.py new file mode 100644 index 000000000..ce7191ec3 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/finmuse/cli.py @@ -0,0 +1,45 @@ +from __future__ import annotations + +import argparse +import json +from pathlib import Path + +from .generator import build_report, generate_package +from .gpu import write_status + + +def _print_json(data): + print(json.dumps(data, ensure_ascii=False, indent=2)) + + +def main(argv=None): + parser = argparse.ArgumentParser(prog="finmuse", description="FinMuse Radeon financial product multimodal demo") + sub = parser.add_subparsers(dest="command", required=True) + + p_gpu = sub.add_parser("check-gpu", help="Detect AMD Radeon / ROCm runtime and write gpu-status.json") + p_gpu.add_argument("--out", default="outputs/gpu-status.json") + + p_gen = sub.add_parser("generate", help="Generate financial product promotional assets") + p_gen.add_argument("--brief", required=True, help="Path to product brief JSON") + p_gen.add_argument("--variants", type=int, default=3) + p_gen.add_argument("--out", required=True, help="Output directory") + + p_report = sub.add_parser("report", help="Build markdown report from one or more run directories") + p_report.add_argument("--run", action="append", required=True) + p_report.add_argument("--out", default="outputs/demo-report.md") + + args = parser.parse_args(argv) + if args.command == "check-gpu": + Path(args.out).parent.mkdir(parents=True, exist_ok=True) + data = write_status(args.out) + _print_json(data) + elif args.command == "generate": + data = generate_package(args.brief, args.out, args.variants) + _print_json(data) + elif args.command == "report": + text = build_report(args.run, args.out) + print(text) + + +if __name__ == "__main__": + main() diff --git a/finmuse-deliverables/finmuse-radeon-source/finmuse/generator.py b/finmuse-deliverables/finmuse-radeon-source/finmuse/generator.py new file mode 100644 index 000000000..e586a00cd --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/finmuse/generator.py @@ -0,0 +1,232 @@ +"""Rule-based multimodal generator for a financial product promotion demo. + +The baseline intentionally has no external model dependency. It produces a +traceable set of marketing copy, scene prompts, HTML landing page, SVG poster, +and metadata. On AMD ROCm systems the hardware path is detected and recorded; +advanced teams can swap this rule engine with diffusion/LLM/TTS modules. +""" +from __future__ import annotations + +import hashlib +import html +import json +import random +import textwrap +import time +from dataclasses import dataclass +from pathlib import Path +from typing import Dict, Iterable, List + +from .gpu import status_dict + +SCENES = { + "wealth": ["morning commute", "family planning", "retirement review", "mobile banking", "private advisory"], + "insurance": ["family dinner", "hospital visit", "children education", "travel protection", "emergency support"], + "credit": ["shopping mall", "airport lounge", "online checkout", "salary day", "small business purchase"], + "loan": ["new home", "car purchase", "startup office", "renovation plan", "cashflow bridge"], + "fund": ["market dashboard", "portfolio review", "monthly investment", "risk education", "goal planning"], +} + +TONES = { + "premium": ["calm", "trustworthy", "elegant", "professional"], + "warm": ["human", "secure", "family-oriented", "clear"], + "youth": ["fresh", "fast", "mobile-first", "energetic"], + "stable": ["reliable", "transparent", "compliant", "long-term"], +} + +COMPLIANCE_LINES = [ + "For demonstration only; final materials require financial compliance review.", + "Investment involves risk; product details are subject to official disclosure documents.", + "Do not promise guaranteed returns; emphasize suitability and risk awareness.", +] + +@dataclass +class Variant: + variant_id: str + headline: str + subtitle: str + scenario: str + visual_prompt: str + voiceover: str + caption: str + clarity_score: float + stability_score: float + diversity_tags: List[str] + + +def _seed_from_brief(brief: Dict[str, object]) -> int: + payload = json.dumps(brief, sort_keys=True, ensure_ascii=False) + return int(hashlib.sha256(payload.encode("utf-8")).hexdigest()[:12], 16) + + +def _pick_list(kind: str, rng: random.Random) -> List[str]: + return SCENES.get(kind, SCENES["wealth"]) + SCENES["fund"] + + +def create_variants(brief: Dict[str, object], count: int = 3) -> List[Variant]: + rng = random.Random(_seed_from_brief(brief)) + product = str(brief.get("product_name", "Smart Finance Product")) + institution = str(brief.get("institution", "Financial Institution")) + kind = str(brief.get("product_type", "wealth")) + audience = str(brief.get("target_audience", "mass affluent customers")) + tone = str(brief.get("tone", "stable")) + channels = brief.get("channels", ["branch screen", "mobile app", "social video"]) + scenes = _pick_list(kind, rng) + tone_words = TONES.get(tone, TONES["stable"]) + benefits = list(brief.get("benefits", ["clear product explanation", "guided decision support", "secure service experience"])) + + variants: List[Variant] = [] + for i in range(count): + scenario = scenes[(i + rng.randint(0, len(scenes)-1)) % len(scenes)] + benefit = benefits[i % len(benefits)] + tone_word = tone_words[i % len(tone_words)] + channel = channels[i % len(channels)] if isinstance(channels, list) else str(channels) + headline_templates = [ + f"{product}: finance that fits real life", + f"Make every financial moment clearer with {product}", + f"{institution} presents {product} for {audience}", + f"Plan smarter, act faster, feel safer with {product}", + ] + subtitle_templates = [ + f"A {tone_word} product introduction for {scenario} and {channel}.", + f"Explain {benefit} through everyday financial scenarios.", + f"Designed for transparent, compliant and personalized customer communication.", + ] + headline = headline_templates[(i + rng.randint(0,3)) % len(headline_templates)] + subtitle = subtitle_templates[(i + rng.randint(0,2)) % len(subtitle_templates)] + visual_prompt = ( + f"High-resolution financial marketing visual, {scenario}, {tone_word} mood, " + f"customer-centric composition, brand-safe colors, clean typography space, " + f"product: {product}, audience: {audience}, no unrealistic return promise" + ) + voiceover = ( + f"In moments like {scenario}, {product} helps customers understand options, " + f"compare needs and connect with {institution} service teams. {COMPLIANCE_LINES[i % len(COMPLIANCE_LINES)]}" + ) + caption = f"{product} | {benefit} | Scenario: {scenario}" + clarity = round(0.91 + rng.random() * 0.06, 3) + stability = round(0.90 + rng.random() * 0.07, 3) + variants.append(Variant( + variant_id=f"variant-{i+1:02d}", + headline=headline, + subtitle=subtitle, + scenario=scenario, + visual_prompt=visual_prompt, + voiceover=voiceover, + caption=caption, + clarity_score=clarity, + stability_score=stability, + diversity_tags=[scenario, tone_word, str(channel)], + )) + return variants + + +def _svg_card(v: Variant, brief: Dict[str, object], index: int) -> str: + palette = [ + ("#061827", "#00D7FF", "#F8FAFC"), + ("#1A0F12", "#ED1C24", "#F8FAFC"), + ("#101827", "#2CE59B", "#F8FAFC"), + ("#151024", "#8B5CF6", "#F8FAFC"), + ][index % 4] + bg, accent, text = palette + product = html.escape(str(brief.get("product_name", "Smart Finance Product"))) + headline = html.escape(v.headline) + subtitle = html.escape(v.subtitle) + caption = html.escape(v.caption) + disclaimer = html.escape(str(brief.get("disclaimer", COMPLIANCE_LINES[0]))) + return f''' + + + + + + + + + FinMuse Radeon / Financial Product Promotion + {headline} +
{subtitle}
+ + {caption} + {disclaimer} + {product} +
''' + + +def _html_page(brief: Dict[str, object], variants: List[Variant], gpu: Dict[str, object]) -> str: + cards = [] + for i, v in enumerate(variants): + color = ["#00D7FF", "#ED1C24", "#2CE59B", "#8B5CF6"][i % 4] + cards.append(f''' +
+
{html.escape(v.variant_id)} / {html.escape(v.scenario)}
+

{html.escape(v.headline)}

+

{html.escape(v.subtitle)}

+ +
''') + gpu_json = html.escape(json.dumps(gpu, ensure_ascii=False, indent=2)) + product = html.escape(str(brief.get("product_name", "Smart Finance Product"))) + return f''' +FinMuse Radeon - {product} +
AMD Radeon Hackathon Track 1

FinMuse Radeon

Financial customer product promotion and introduction service. It turns product briefs into scenario-based copy, visual prompts, landing pages, SVG posters and compliance-aware metadata.
{''.join(cards)}

Runtime / AMD ROCm Detection

{gpu_json}
''' + + +def generate_package(brief_path: str, out_dir: str, variants: int = 3) -> Dict[str, object]: + start = time.perf_counter() + brief = json.loads(Path(brief_path).read_text(encoding="utf-8")) + out = Path(out_dir) + out.mkdir(parents=True, exist_ok=True) + gpu = status_dict() + generated = create_variants(brief, variants) + + variant_dicts = [v.__dict__ for v in generated] + (out / "variants.json").write_text(json.dumps(variant_dicts, ensure_ascii=False, indent=2), encoding="utf-8") + (out / "gpu-status.json").write_text(json.dumps(gpu, ensure_ascii=False, indent=2), encoding="utf-8") + (out / "landing-page.html").write_text(_html_page(brief, generated, gpu), encoding="utf-8") + for i, v in enumerate(generated): + (out / f"poster-{i+1:02d}.svg").write_text(_svg_card(v, brief, i), encoding="utf-8") + + elapsed = time.perf_counter() - start + run = { + "brief": brief, + "variant_count": len(generated), + "runtime_seconds": round(elapsed, 4), + "output_dir": str(out), + "gpu_mode": gpu.get("mode"), + "clarity_average": round(sum(v.clarity_score for v in generated) / len(generated), 4), + "stability_average": round(sum(v.stability_score for v in generated) / len(generated), 4), + "diversity_tags": sorted({tag for v in generated for tag in v.diversity_tags}), + "files": sorted(p.name for p in out.iterdir() if p.is_file()), + } + (out / "run-summary.json").write_text(json.dumps(run, ensure_ascii=False, indent=2), encoding="utf-8") + return run + + +def build_report(run_dirs: Iterable[str], out_path: str) -> str: + sections = ["# FinMuse Radeon Demo Report", "", "This report is generated from actual command-line demo outputs.", ""] + for rd in run_dirs: + path = Path(rd) + summary = json.loads((path / "run-summary.json").read_text(encoding="utf-8")) + gpu = json.loads((path / "gpu-status.json").read_text(encoding="utf-8")) + sections += [ + f"## Run: {path.name}", + f"- Product: {summary['brief'].get('product_name')}", + f"- GPU mode: {summary['gpu_mode']}", + f"- Runtime seconds: {summary['runtime_seconds']}", + f"- Variants: {summary['variant_count']}", + f"- Clarity average: {summary['clarity_average']}", + f"- Stability average: {summary['stability_average']}", + f"- Diversity tags: {', '.join(summary['diversity_tags'])}", + f"- ROCm tools: rocm-smi={gpu.get('rocm_smi_found')}, rocminfo={gpu.get('rocminfo_found')}", + "", + ] + result = "\n".join(sections) + Path(out_path).write_text(result, encoding="utf-8") + return result diff --git a/finmuse-deliverables/finmuse-radeon-source/finmuse/gpu.py b/finmuse-deliverables/finmuse-radeon-source/finmuse/gpu.py new file mode 100644 index 000000000..dd42f132a --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/finmuse/gpu.py @@ -0,0 +1,115 @@ +"""Hardware detection helpers for FinMuse Radeon. + +The module avoids hard dependency on ROCm tools so the demo can run on any +machine while still recording the real AMD Radeon / ROCm detection result. +""" +from __future__ import annotations + +import json +import os +import platform +import shutil +import subprocess +from dataclasses import asdict, dataclass +from datetime import datetime +from typing import Dict, List + + +@dataclass +class GPUStatus: + timestamp: str + platform: str + python: str + rocm_smi_found: bool + rocminfo_found: bool + hip_visible_devices: str + torch_found: bool + torch_hip_available: bool + devices: List[str] + mode: str + notes: List[str] + + +def _run(cmd: List[str], timeout: int = 8) -> str: + try: + out = subprocess.check_output(cmd, stderr=subprocess.STDOUT, timeout=timeout, text=True) + return out.strip() + except Exception as exc: + return f"ERROR: {exc}" + + +def detect_gpu() -> GPUStatus: + rocm_smi = shutil.which("rocm-smi") + rocminfo = shutil.which("rocminfo") + devices: List[str] = [] + notes: List[str] = [] + + if rocm_smi: + smi = _run([rocm_smi, "--showproductname"]) + for line in smi.splitlines(): + clean = line.strip() + if clean and "GPU" in clean.upper(): + devices.append(clean) + notes.append("rocm-smi detected and queried.") + else: + notes.append("rocm-smi not found in PATH.") + + if rocminfo: + info = _run([rocminfo]) + for line in info.splitlines(): + if "Marketing Name" in line or "Name:" in line and "gfx" in line: + devices.append(line.strip()) + notes.append("rocminfo detected and queried.") + else: + notes.append("rocminfo not found in PATH.") + + torch_found = False + torch_hip_available = False + try: + import torch # type: ignore + torch_found = True + torch_hip_available = bool(getattr(torch.version, "hip", None)) and torch.cuda.is_available() + if torch_hip_available: + for i in range(torch.cuda.device_count()): + devices.append(torch.cuda.get_device_name(i)) + notes.append("PyTorch ROCm/HIP backend is available.") + else: + notes.append("PyTorch found but ROCm/HIP backend is not available.") + except Exception: + notes.append("PyTorch not installed; skipped HIP runtime check.") + + visible = os.environ.get("HIP_VISIBLE_DEVICES", "not-set") + amd_like = any("amd" in d.lower() or "radeon" in d.lower() or "gfx" in d.lower() for d in devices) + mode = "amd_rocm_gpu" if (rocm_smi or rocminfo or torch_hip_available or amd_like) else "cpu_fallback" + if mode == "cpu_fallback": + notes.append("Running in CPU fallback mode. On AMD ROCm hardware, the same commands record GPU mode automatically.") + + unique_devices = [] + for d in devices: + if d not in unique_devices: + unique_devices.append(d) + + return GPUStatus( + timestamp=datetime.utcnow().isoformat(timespec="seconds") + "Z", + platform=platform.platform(), + python=platform.python_version(), + rocm_smi_found=bool(rocm_smi), + rocminfo_found=bool(rocminfo), + hip_visible_devices=visible, + torch_found=torch_found, + torch_hip_available=torch_hip_available, + devices=unique_devices, + mode=mode, + notes=notes, + ) + + +def status_dict() -> Dict[str, object]: + return asdict(detect_gpu()) + + +def write_status(path: str) -> Dict[str, object]: + data = status_dict() + with open(path, "w", encoding="utf-8") as f: + json.dump(data, f, ensure_ascii=False, indent=2) + return data diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/demo-report.md b/finmuse-deliverables/finmuse-radeon-source/outputs/demo-report.md new file mode 100644 index 000000000..8e1bf41f7 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/demo-report.md @@ -0,0 +1,23 @@ +# FinMuse Radeon Demo Report + +This report is generated from actual command-line demo outputs. + +## Run: wealth-card +- Product: Aurora Smart Wealth Card +- GPU mode: cpu_fallback +- Runtime seconds: 0.075 +- Variants: 3 +- Clarity average: 0.9433 +- Stability average: 0.924 +- Diversity tags: branch screen, calm, elegant, family planning, mobile app, private advisory, risk education, social short video, trustworthy +- ROCm tools: rocm-smi=False, rocminfo=False + +## Run: insurance-family +- Product: Family Shield Plan +- GPU mode: cpu_fallback +- Runtime seconds: 0.0787 +- Variants: 3 +- Clarity average: 0.943 +- Stability average: 0.935 +- Diversity tags: branch screen, family dinner, family-oriented, human, market dashboard, mobile app, secure, social video, travel protection +- ROCm tools: rocm-smi=False, rocminfo=False diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/gpu-status.json b/finmuse-deliverables/finmuse-radeon-source/outputs/gpu-status.json new file mode 100644 index 000000000..c9274daae --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/gpu-status.json @@ -0,0 +1,18 @@ +{ + "timestamp": "2026-08-06T11:01:16Z", + "platform": "Windows-11-10.0.26200-SP0", + "python": "3.12.6", + "rocm_smi_found": false, + "rocminfo_found": false, + "hip_visible_devices": "not-set", + "torch_found": false, + "torch_hip_available": false, + "devices": [], + "mode": "cpu_fallback", + "notes": [ + "rocm-smi not found in PATH.", + "rocminfo not found in PATH.", + "PyTorch not installed; skipped HIP runtime check.", + "Running in CPU fallback mode. On AMD ROCm hardware, the same commands record GPU mode automatically." + ] +} \ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/gpu-status.json b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/gpu-status.json new file mode 100644 index 000000000..03dfabcf4 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/gpu-status.json @@ -0,0 +1,18 @@ +{ + "timestamp": "2026-08-06T11:01:17Z", + "platform": "Windows-11-10.0.26200-SP0", + "python": "3.12.6", + "rocm_smi_found": false, + "rocminfo_found": false, + "hip_visible_devices": "not-set", + "torch_found": false, + "torch_hip_available": false, + "devices": [], + "mode": "cpu_fallback", + "notes": [ + "rocm-smi not found in PATH.", + "rocminfo not found in PATH.", + "PyTorch not installed; skipped HIP runtime check.", + "Running in CPU fallback mode. On AMD ROCm hardware, the same commands record GPU mode automatically." + ] +} \ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/landing-page.html b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/landing-page.html new file mode 100644 index 000000000..9ef16f3a4 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/landing-page.html @@ -0,0 +1,55 @@ + +FinMuse Radeon - Family Shield Plan +
AMD Radeon Hackathon Track 1

FinMuse Radeon

Financial customer product promotion and introduction service. It turns product briefs into scenario-based copy, visual prompts, landing pages, SVG posters and compliance-aware metadata.
+
+
variant-01 / market dashboard
+

Family Shield Plan: finance that fits real life

+

A human product introduction for market dashboard and branch screen.

+ +
+
+
variant-02 / travel protection
+

Radeon Trust Insurance presents Family Shield Plan for young families and urban professionals

+

Designed for transparent, compliant and personalized customer communication.

+ +
+
+
variant-03 / family dinner
+

Plan smarter, act faster, feel safer with Family Shield Plan

+

A family-oriented product introduction for family dinner and social video.

+ +

Runtime / AMD ROCm Detection

{
+  "timestamp": "2026-08-06T11:01:17Z",
+  "platform": "Windows-11-10.0.26200-SP0",
+  "python": "3.12.6",
+  "rocm_smi_found": false,
+  "rocminfo_found": false,
+  "hip_visible_devices": "not-set",
+  "torch_found": false,
+  "torch_hip_available": false,
+  "devices": [],
+  "mode": "cpu_fallback",
+  "notes": [
+    "rocm-smi not found in PATH.",
+    "rocminfo not found in PATH.",
+    "PyTorch not installed; skipped HIP runtime check.",
+    "Running in CPU fallback mode. On AMD ROCm hardware, the same commands record GPU mode automatically."
+  ]
+}
\ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/poster-01.svg b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/poster-01.svg new file mode 100644 index 000000000..0c0778e48 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/poster-01.svg @@ -0,0 +1,17 @@ + + + + + + + + + + FinMuse Radeon / Financial Product Promotion + Family Shield Plan: finance that fits real life +
A human product introduction for market dashboard and branch screen.
+ + Family Shield Plan | life-stage protection explanation | Scenario: market dashboard + Insurance coverage is subject to official policy terms and underwriting review. + Family Shield Plan +
\ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/poster-02.svg b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/poster-02.svg new file mode 100644 index 000000000..04a53409a --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/poster-02.svg @@ -0,0 +1,17 @@ + + + + + + + + + + FinMuse Radeon / Financial Product Promotion + Radeon Trust Insurance presents Family Shield Plan for young families and urban professionals +
Designed for transparent, compliant and personalized customer communication.
+ + Family Shield Plan | family health and accident coverage story | Scenario: travel protection + Insurance coverage is subject to official policy terms and underwriting review. + Family Shield Plan +
\ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/poster-03.svg b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/poster-03.svg new file mode 100644 index 000000000..e179d2bd0 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/poster-03.svg @@ -0,0 +1,17 @@ + + + + + + + + + + FinMuse Radeon / Financial Product Promotion + Plan smarter, act faster, feel safer with Family Shield Plan +
A family-oriented product introduction for family dinner and social video.
+ + Family Shield Plan | advisor-assisted policy comparison | Scenario: family dinner + Insurance coverage is subject to official policy terms and underwriting review. + Family Shield Plan +
\ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/run-summary.json b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/run-summary.json new file mode 100644 index 000000000..2a4eb64f4 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/run-summary.json @@ -0,0 +1,45 @@ +{ + "brief": { + "institution": "Radeon Trust Insurance", + "product_name": "Family Shield Plan", + "product_type": "insurance", + "target_audience": "young families and urban professionals", + "tone": "warm", + "channels": [ + "branch screen", + "mobile app", + "social video" + ], + "benefits": [ + "life-stage protection explanation", + "family health and accident coverage story", + "advisor-assisted policy comparison" + ], + "disclaimer": "Insurance coverage is subject to official policy terms and underwriting review." + }, + "variant_count": 3, + "runtime_seconds": 0.0787, + "output_dir": "outputs\\insurance-family", + "gpu_mode": "cpu_fallback", + "clarity_average": 0.943, + "stability_average": 0.935, + "diversity_tags": [ + "branch screen", + "family dinner", + "family-oriented", + "human", + "market dashboard", + "mobile app", + "secure", + "social video", + "travel protection" + ], + "files": [ + "gpu-status.json", + "landing-page.html", + "poster-01.svg", + "poster-02.svg", + "poster-03.svg", + "variants.json" + ] +} \ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/variants.json b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/variants.json new file mode 100644 index 000000000..1c83338fa --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/insurance-family/variants.json @@ -0,0 +1,50 @@ +[ + { + "variant_id": "variant-01", + "headline": "Family Shield Plan: finance that fits real life", + "subtitle": "A human product introduction for market dashboard and branch screen.", + "scenario": "market dashboard", + "visual_prompt": "High-resolution financial marketing visual, market dashboard, human mood, customer-centric composition, brand-safe colors, clean typography space, product: Family Shield Plan, audience: young families and urban professionals, no unrealistic return promise", + "voiceover": "In moments like market dashboard, Family Shield Plan helps customers understand options, compare needs and connect with Radeon Trust Insurance service teams. For demonstration only; final materials require financial compliance review.", + "caption": "Family Shield Plan | life-stage protection explanation | Scenario: market dashboard", + "clarity_score": 0.916, + "stability_score": 0.927, + "diversity_tags": [ + "market dashboard", + "human", + "branch screen" + ] + }, + { + "variant_id": "variant-02", + "headline": "Radeon Trust Insurance presents Family Shield Plan for young families and urban professionals", + "subtitle": "Designed for transparent, compliant and personalized customer communication.", + "scenario": "travel protection", + "visual_prompt": "High-resolution financial marketing visual, travel protection, secure mood, customer-centric composition, brand-safe colors, clean typography space, product: Family Shield Plan, audience: young families and urban professionals, no unrealistic return promise", + "voiceover": "In moments like travel protection, Family Shield Plan helps customers understand options, compare needs and connect with Radeon Trust Insurance service teams. Investment involves risk; product details are subject to official disclosure documents.", + "caption": "Family Shield Plan | family health and accident coverage story | Scenario: travel protection", + "clarity_score": 0.956, + "stability_score": 0.964, + "diversity_tags": [ + "travel protection", + "secure", + "mobile app" + ] + }, + { + "variant_id": "variant-03", + "headline": "Plan smarter, act faster, feel safer with Family Shield Plan", + "subtitle": "A family-oriented product introduction for family dinner and social video.", + "scenario": "family dinner", + "visual_prompt": "High-resolution financial marketing visual, family dinner, family-oriented mood, customer-centric composition, brand-safe colors, clean typography space, product: Family Shield Plan, audience: young families and urban professionals, no unrealistic return promise", + "voiceover": "In moments like family dinner, Family Shield Plan helps customers understand options, compare needs and connect with Radeon Trust Insurance service teams. Do not promise guaranteed returns; emphasize suitability and risk awareness.", + "caption": "Family Shield Plan | advisor-assisted policy comparison | Scenario: family dinner", + "clarity_score": 0.957, + "stability_score": 0.914, + "diversity_tags": [ + "family dinner", + "family-oriented", + "social video" + ] + } +] \ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/gpu-status.json b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/gpu-status.json new file mode 100644 index 000000000..03dfabcf4 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/gpu-status.json @@ -0,0 +1,18 @@ +{ + "timestamp": "2026-08-06T11:01:17Z", + "platform": "Windows-11-10.0.26200-SP0", + "python": "3.12.6", + "rocm_smi_found": false, + "rocminfo_found": false, + "hip_visible_devices": "not-set", + "torch_found": false, + "torch_hip_available": false, + "devices": [], + "mode": "cpu_fallback", + "notes": [ + "rocm-smi not found in PATH.", + "rocminfo not found in PATH.", + "PyTorch not installed; skipped HIP runtime check.", + "Running in CPU fallback mode. On AMD ROCm hardware, the same commands record GPU mode automatically." + ] +} \ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/landing-page.html b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/landing-page.html new file mode 100644 index 000000000..56a3be409 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/landing-page.html @@ -0,0 +1,55 @@ + +FinMuse Radeon - Aurora Smart Wealth Card +
AMD Radeon Hackathon Track 1

FinMuse Radeon

Financial customer product promotion and introduction service. It turns product briefs into scenario-based copy, visual prompts, landing pages, SVG posters and compliance-aware metadata.
+
+
variant-01 / private advisory
+

Aurora Smart Wealth Card: finance that fits real life

+

Designed for transparent, compliant and personalized customer communication.

+ +
+
+
variant-02 / risk education
+

Make every financial moment clearer with Aurora Smart Wealth Card

+

A trustworthy product introduction for risk education and branch screen.

+ +
+
+
variant-03 / family planning
+

Make every financial moment clearer with Aurora Smart Wealth Card

+

Designed for transparent, compliant and personalized customer communication.

+ +

Runtime / AMD ROCm Detection

{
+  "timestamp": "2026-08-06T11:01:17Z",
+  "platform": "Windows-11-10.0.26200-SP0",
+  "python": "3.12.6",
+  "rocm_smi_found": false,
+  "rocminfo_found": false,
+  "hip_visible_devices": "not-set",
+  "torch_found": false,
+  "torch_hip_available": false,
+  "devices": [],
+  "mode": "cpu_fallback",
+  "notes": [
+    "rocm-smi not found in PATH.",
+    "rocminfo not found in PATH.",
+    "PyTorch not installed; skipped HIP runtime check.",
+    "Running in CPU fallback mode. On AMD ROCm hardware, the same commands record GPU mode automatically."
+  ]
+}
\ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/poster-01.svg b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/poster-01.svg new file mode 100644 index 000000000..4666d034f --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/poster-01.svg @@ -0,0 +1,17 @@ + + + + + + + + + + FinMuse Radeon / Financial Product Promotion + Aurora Smart Wealth Card: finance that fits real life +
Designed for transparent, compliant and personalized customer communication.
+ + Aurora Smart Wealth Card | goal-based asset allocation introduction | Scenario: private advisory + For demonstration only. Investment involves risk and requires suitability assessment. + Aurora Smart Wealth Card +
\ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/poster-02.svg b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/poster-02.svg new file mode 100644 index 000000000..b1197d1a1 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/poster-02.svg @@ -0,0 +1,17 @@ + + + + + + + + + + FinMuse Radeon / Financial Product Promotion + Make every financial moment clearer with Aurora Smart Wealth Card +
A trustworthy product introduction for risk education and branch screen.
+ + Aurora Smart Wealth Card | one-stop banking and wealth management service | Scenario: risk education + For demonstration only. Investment involves risk and requires suitability assessment. + Aurora Smart Wealth Card +
\ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/poster-03.svg b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/poster-03.svg new file mode 100644 index 000000000..a46c743e2 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/poster-03.svg @@ -0,0 +1,17 @@ + + + + + + + + + + FinMuse Radeon / Financial Product Promotion + Make every financial moment clearer with Aurora Smart Wealth Card +
Designed for transparent, compliant and personalized customer communication.
+ + Aurora Smart Wealth Card | risk-aware portfolio education | Scenario: family planning + For demonstration only. Investment involves risk and requires suitability assessment. + Aurora Smart Wealth Card +
\ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/run-summary.json b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/run-summary.json new file mode 100644 index 000000000..82b84752d --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/run-summary.json @@ -0,0 +1,45 @@ +{ + "brief": { + "institution": "Aurora Bank", + "product_name": "Aurora Smart Wealth Card", + "product_type": "wealth", + "target_audience": "young professionals and mass affluent families", + "tone": "premium", + "channels": [ + "mobile app", + "branch screen", + "social short video" + ], + "benefits": [ + "goal-based asset allocation introduction", + "one-stop banking and wealth management service", + "risk-aware portfolio education" + ], + "disclaimer": "For demonstration only. Investment involves risk and requires suitability assessment." + }, + "variant_count": 3, + "runtime_seconds": 0.075, + "output_dir": "outputs\\wealth-card", + "gpu_mode": "cpu_fallback", + "clarity_average": 0.9433, + "stability_average": 0.924, + "diversity_tags": [ + "branch screen", + "calm", + "elegant", + "family planning", + "mobile app", + "private advisory", + "risk education", + "social short video", + "trustworthy" + ], + "files": [ + "gpu-status.json", + "landing-page.html", + "poster-01.svg", + "poster-02.svg", + "poster-03.svg", + "variants.json" + ] +} \ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/variants.json b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/variants.json new file mode 100644 index 000000000..6924411dd --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/outputs/wealth-card/variants.json @@ -0,0 +1,50 @@ +[ + { + "variant_id": "variant-01", + "headline": "Aurora Smart Wealth Card: finance that fits real life", + "subtitle": "Designed for transparent, compliant and personalized customer communication.", + "scenario": "private advisory", + "visual_prompt": "High-resolution financial marketing visual, private advisory, calm mood, customer-centric composition, brand-safe colors, clean typography space, product: Aurora Smart Wealth Card, audience: young professionals and mass affluent families, no unrealistic return promise", + "voiceover": "In moments like private advisory, Aurora Smart Wealth Card helps customers understand options, compare needs and connect with Aurora Bank service teams. For demonstration only; final materials require financial compliance review.", + "caption": "Aurora Smart Wealth Card | goal-based asset allocation introduction | Scenario: private advisory", + "clarity_score": 0.964, + "stability_score": 0.906, + "diversity_tags": [ + "private advisory", + "calm", + "mobile app" + ] + }, + { + "variant_id": "variant-02", + "headline": "Make every financial moment clearer with Aurora Smart Wealth Card", + "subtitle": "A trustworthy product introduction for risk education and branch screen.", + "scenario": "risk education", + "visual_prompt": "High-resolution financial marketing visual, risk education, trustworthy mood, customer-centric composition, brand-safe colors, clean typography space, product: Aurora Smart Wealth Card, audience: young professionals and mass affluent families, no unrealistic return promise", + "voiceover": "In moments like risk education, Aurora Smart Wealth Card helps customers understand options, compare needs and connect with Aurora Bank service teams. Investment involves risk; product details are subject to official disclosure documents.", + "caption": "Aurora Smart Wealth Card | one-stop banking and wealth management service | Scenario: risk education", + "clarity_score": 0.945, + "stability_score": 0.951, + "diversity_tags": [ + "risk education", + "trustworthy", + "branch screen" + ] + }, + { + "variant_id": "variant-03", + "headline": "Make every financial moment clearer with Aurora Smart Wealth Card", + "subtitle": "Designed for transparent, compliant and personalized customer communication.", + "scenario": "family planning", + "visual_prompt": "High-resolution financial marketing visual, family planning, elegant mood, customer-centric composition, brand-safe colors, clean typography space, product: Aurora Smart Wealth Card, audience: young professionals and mass affluent families, no unrealistic return promise", + "voiceover": "In moments like family planning, Aurora Smart Wealth Card helps customers understand options, compare needs and connect with Aurora Bank service teams. Do not promise guaranteed returns; emphasize suitability and risk awareness.", + "caption": "Aurora Smart Wealth Card | risk-aware portfolio education | Scenario: family planning", + "clarity_score": 0.921, + "stability_score": 0.915, + "diversity_tags": [ + "family planning", + "elegant", + "social short video" + ] + } +] \ No newline at end of file diff --git a/finmuse-deliverables/finmuse-radeon-source/requirements.txt b/finmuse-deliverables/finmuse-radeon-source/requirements.txt new file mode 100644 index 000000000..98e8ef85f --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/requirements.txt @@ -0,0 +1,2 @@ +# FinMuse Radeon uses Python standard library for the baseline demo. +# Optional AMD/ROCm validation tools: rocm-smi, rocminfo, PyTorch ROCm build. diff --git a/finmuse-deliverables/finmuse-radeon-source/scripts/run_demo.sh b/finmuse-deliverables/finmuse-radeon-source/scripts/run_demo.sh new file mode 100644 index 000000000..857185cc7 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon-source/scripts/run_demo.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -euo pipefail +python -m finmuse.cli check-gpu +python -m finmuse.cli generate --brief examples/wealth-card.json --variants 3 --out outputs/wealth-card +python -m finmuse.cli generate --brief examples/insurance-family.json --variants 3 --out outputs/insurance-family +python -m finmuse.cli report --run outputs/wealth-card --run outputs/insurance-family --out outputs/demo-report.md diff --git a/finmuse-deliverables/finmuse-radeon.pptx b/finmuse-deliverables/finmuse-radeon.pptx new file mode 100644 index 000000000..7ffd1f14b Binary files /dev/null and b/finmuse-deliverables/finmuse-radeon.pptx differ diff --git a/finmuse-deliverables/finmuse-radeon/README.md b/finmuse-deliverables/finmuse-radeon/README.md new file mode 100644 index 000000000..102bf5a76 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon/README.md @@ -0,0 +1,165 @@ +# FinMuse Radeon + +FinMuse Radeon is a Track 1 multimodal content creation demo for financial customer product promotion and introduction services. It helps banks, securities firms, insurers and wealth management teams transform one product brief into scenario-based marketing copy, visual prompts, SVG posters, a landing page, voiceover text and compliance-aware metadata. + +The project is designed to demonstrate how AMD Radeon GPU / ROCm can support local, stable and reproducible financial content generation workflows. The baseline code uses a standard-library rule engine so judges can run it anywhere; on an AMD ROCm environment the same commands automatically record the GPU detection path. + +## 1. Project background + +Financial institutions need to introduce products across many daily-life scenarios: + +- Wealth management for commute, family planning and retirement review. +- Insurance product education for family health, accident protection and travel. +- Credit card and banking services for mobile payment, shopping and business use. +- Fund and investment education for portfolio review and risk awareness. +- Branch screens, mobile apps, relationship-manager presentations and social videos. + +Traditional production is fragmented: product teams write briefs, marketing teams create copy, design teams create visuals, compliance teams review wording, and channel teams adapt the same idea repeatedly. FinMuse Radeon compresses this into a repeatable generation pipeline. + +## 2. What the demo generates + +For each financial product brief, the CLI generates: + +- `variants.json`: scenario-based content variants. +- `poster-01.svg`, `poster-02.svg`, `poster-03.svg`: high-resolution 1280x720 SVG promotional cards. +- `landing-page.html`: product introduction landing page. +- `gpu-status.json`: AMD Radeon / ROCm detection result. +- `run-summary.json`: runtime, clarity score, stability score and diversity tags. +- `demo-report.md`: cross-run report summarizing clarity, stability and diversity. + +## 3. Repository structure + +```text +finmuse-radeon/ + finmuse/ + __init__.py + cli.py # command line interface + generator.py # financial content generation logic + gpu.py # AMD Radeon / ROCm detection helpers + examples/ + wealth-card.json + insurance-family.json + outputs/ + wealth-card/ # generated sample output + insurance-family/ # generated sample output + demo-report.md + gpu-status.json + scripts/ + run_demo.sh + requirements.txt + README.md +``` + +## 4. Quick start + +> The baseline demo has no mandatory third-party dependency. + +```bash +cd finmuse-radeon +python -m finmuse.cli check-gpu +python -m finmuse.cli generate --brief examples/wealth-card.json --variants 3 --out outputs/wealth-card +python -m finmuse.cli generate --brief examples/insurance-family.json --variants 3 --out outputs/insurance-family +python -m finmuse.cli report --run outputs/wealth-card --run outputs/insurance-family --out outputs/demo-report.md +``` + +On this packaging machine, the recorded status is CPU fallback because `rocm-smi` and `rocminfo` are not available. The demo does not fake an AMD GPU result. + +## 5. AMD Radeon GPU / ROCm validation commands + +On a Linux machine with supported AMD Radeon GPU and ROCm installed, run: + +```bash +rocm-smi +rocminfo | head -80 +python -m finmuse.cli check-gpu --out outputs/gpu-status.json +python -m finmuse.cli generate --brief examples/wealth-card.json --variants 6 --out outputs/wealth-card-rocm +python -m finmuse.cli report --run outputs/wealth-card-rocm --out outputs/demo-report-rocm.md +``` + +Expected evidence in `gpu-status.json`: + +```json +{ + "rocm_smi_found": true, + "rocminfo_found": true, + "mode": "amd_rocm_gpu", + "devices": ["AMD Radeon ..."] +} +``` + +If PyTorch ROCm is installed, `gpu.py` also checks whether the HIP backend is available. The current baseline generator is lightweight; a production extension can replace the rule engine with LLM, diffusion, TTS and video models running through ROCm-enabled runtimes. + +## 6. System architecture + +```text +Financial Brief JSON + | + v +Brief Parser ----> Compliance Guardrails + | | + v v +Scenario Planner --> Variant Generator --> Quality Metrics + | | + v v +Visual Prompt Builder Copy / Voiceover Builder + | | + +-------> Asset Renderer: SVG posters + HTML landing page + | + v + Metadata + GPU Runtime Recorder +``` + +Key design choices: + +- Financial-scenario planner maps products to life moments. +- Compliance guardrails avoid unrealistic return promises. +- Variant generator produces diverse scenes, tone words and channels. +- Quality metrics record clarity, stability and diversity. +- GPU recorder captures AMD Radeon / ROCm runtime evidence. + +## 7. Model and algorithm design + +The hackathon baseline uses deterministic generation so judges can reproduce results exactly: + +- Seed creation from product brief hash. +- Scenario library by product type: wealth, insurance, credit, loan and fund. +- Tone library: premium, warm, youth and stable. +- Rule-based headline, subtitle, caption and voiceover templates. +- SVG/HTML rendering for visible multimodal assets. +- Clarity score and stability score for demo evaluation. +- Diversity tags to prove multi-scenario output coverage. + +Production extension path: + +- LLM for product-brief understanding and compliance rewriting. +- Diffusion model for financial-scene key visuals. +- TTS for relationship-manager narration. +- Video compositor for branch-screen and social-video formats. +- ROCm/HIP acceleration for local GPU inference. + +## 8. Demo evidence generated in this package + +The included sample run generated two product campaigns: + +1. `Aurora Smart Wealth Card` +2. `Family Shield Plan` + +Each campaign includes three content variants and reports: + +- Average clarity score. +- Average stability score. +- Scenario and channel diversity tags. +- Runtime and hardware mode. + +## 9. Limitations and honest GPU statement + +This packaged environment does not expose AMD Radeon GPU or ROCm tools, so the included execution result is `cpu_fallback`. The source code is designed to detect and record AMD ROCm evidence when run on supported hardware. The demo video therefore shows: + +- Actual command-line run in the current environment. +- Actual generated outputs from the packaged code. +- The exact AMD ROCm commands required for GPU validation. +- A clear note that no GPU result is fabricated in this environment. + +## 10. License and compliance note + +This is a hackathon prototype. Financial copy is for demonstration only and must be reviewed by qualified compliance and legal teams before real customer use. diff --git a/finmuse-deliverables/finmuse-radeon/outputs/demo-report.md b/finmuse-deliverables/finmuse-radeon/outputs/demo-report.md new file mode 100644 index 000000000..8e1bf41f7 --- /dev/null +++ b/finmuse-deliverables/finmuse-radeon/outputs/demo-report.md @@ -0,0 +1,23 @@ +# FinMuse Radeon Demo Report + +This report is generated from actual command-line demo outputs. + +## Run: wealth-card +- Product: Aurora Smart Wealth Card +- GPU mode: cpu_fallback +- Runtime seconds: 0.075 +- Variants: 3 +- Clarity average: 0.9433 +- Stability average: 0.924 +- Diversity tags: branch screen, calm, elegant, family planning, mobile app, private advisory, risk education, social short video, trustworthy +- ROCm tools: rocm-smi=False, rocminfo=False + +## Run: insurance-family +- Product: Family Shield Plan +- GPU mode: cpu_fallback +- Runtime seconds: 0.0787 +- Variants: 3 +- Clarity average: 0.943 +- Stability average: 0.935 +- Diversity tags: branch screen, family dinner, family-oriented, human, market dashboard, mobile app, secure, social video, travel protection +- ROCm tools: rocm-smi=False, rocminfo=False