본문으로 건너뛰기
cccskills
무료GitHub에 공개

cuopt-server-api-python

cuOpt REST server — start server, endpoints, Python/curl client examples. Use when the user is deploying or calling the REST API.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Docker
설치 방법 보기

포함된 파일(16)

  • SKILL.md5.8 KB
  • assets/lp_basic/client.py2.9 KB
  • assets/lp_basic/README.md368 B
  • assets/milp_basic/client.py2.8 KB
  • assets/milp_basic/README.md360 B
  • assets/pdp_basic/client.py3.3 KB
  • assets/pdp_basic/README.md287 B
  • assets/README.md608 B
  • assets/vrp_basic/client.py3.5 KB
  • assets/vrp_basic/README.md376 B
  • assets/vrp_simple/client.py3.2 KB
  • assets/vrp_simple/README.md254 B
  • BENCHMARK.md8.8 KB
  • evals/evals.json8.5 KB
  • skill-card.md4.2 KB
  • skill.oms.sig7.0 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

cuOpt Server — Deploy and client (Python/curl)

This skill covers starting the server and client examples (curl, Python). Server has no separate C API (clients can be any language).

Purpose

Use this skill when the user is deploying the cuOpt REST server or writing a client against it — choosing a deployment target, mapping a problem onto the HTTP endpoints, translating between Python-API and REST field names, or debugging a rejected payload.

Prerequisites

  • An NVIDIA GPU with a working CUDA driver (the server requires one; --gpus all for Docker).
  • cuopt-server installed, or Docker with the NVIDIA Container Toolkit. See the install skill.
  • Python clients need requests. No API key or auth token is required by the server itself.

Problem types supported

Problem typeSupported
Routing✓
LP✓
MILP✓
QP✗

Required questions

Ask these if not already clear:

  1. Problem type — Routing or LP/MILP? (QP not available via REST.)
  2. Deployment — Local, Docker, Kubernetes, or cloud?
  3. Client — Which language or tool will call the API (e.g. Python, curl, another service)?

Start server

# Development
python -m cuopt_server.cuopt_service --ip 0.0.0.0 --port 8000

# Docker — pick the tag matching your CUDA major version
docker run --gpus all -d -p 8000:8000 -e CUOPT_SERVER_PORT=8000 \
  nvidia/cuopt:latest-cu13

Use latest-cu12 or latest-cu13 to match your driver's CUDA major version (latest-cu13-ubi10 for a UBI10 base).

For production, pin rather than float: latest-* tags are mutable and can silently move to a different image. Use a full release tag (nvidia/cuopt:<release>-cu<cuda-major>) or an immutable digest (nvidia/cuopt@sha256:<digest>). Check the nvidia/cuopt registry for available tags.

Verify

Confirm the server is up by requesting GET /cuopt/health on the local port (e.g. http://localhost:8000/cuopt/health) — a healthy server returns HTTP 200.

Instructions

  1. POST to /cuopt/request → get reqId
  2. Poll /cuopt/solution/{reqId} until solution ready
  3. Parse response

Treat reqId as untrusted input: validate it (e.g. re.fullmatch(r"[A-Za-z0-9_-]{1,64}", req_id)) before interpolating it into the polling URL, and set an explicit timeout on every request.

Examples

import requests, time
SERVER = "http://localhost:8000"
HEADERS = {"Content-Type": "application/json", "CLIENT-VERSION": "custom"}
payload = {
    "cost_matrix_data": {"data": {"0": [[0,10,15],[10,0,12],[15,12,0]]}},
    "travel_time_matrix_data": {"data": {"0": [[0,10,15],[10,0,12],[15,12,0]]}},
    "task_data": {"task_locations": [1, 2], "demand": [[10, 20]], "task_time_windows": [[0,100],[0,100]], "service_times": [5, 5]},
    "fleet_data": {"vehicle_locations": [[0, 0]], "capacities": [[50]], "vehicle_time_windows": [[0, 200]]},
    "solver_config": {"time_limit": 5}
}
r = requests.post(f"{SERVER}/cuopt/request", json=payload, headers=HEADERS, timeout=30)
req_id = r.json()["reqId"]
# Poll: GET /cuopt/solution/{req_id}

Terminology: REST vs Python API

Python APIREST
order_locationstask_locations
set_order_time_windows()task_time_windows
service_timesservice_times

Use travel_time_matrix_data (not transit_time_matrix_data). Capacities: [[50, 50]] not [[50], [50]].

Troubleshooting

ErrorCauseSolution
422 Unprocessable ContentField name not in the schemaCheck names against the OpenAPI spec at /cuopt.yaml. Most common: transit_time_matrix_data → travel_time_matrix_data
422 on fleet_dataCapacities nested per vehicle instead of per dimensionUse [[50, 50]] (one inner list per capacity dimension), not [[50], [50]]
Connection refusedServer not up, or bound to a different interface/portcurl http://localhost:8000/cuopt/health; start with --ip 0.0.0.0 --port 8000
Docker container exits immediatelyNo GPU visible to the containerRun with --gpus all and confirm the NVIDIA Container Toolkit is installed
Polling never returns a solutionSolve exceeds the client's poll budgetRaise solver_config.time_limit and the poll loop count together

Capture the reqId and the full response body for any failed request — both are needed to diagnose server-side rejections.

Limitations

  • QP is not exposed over REST. Use the Python or C API for quadratic objectives.
  • The server ships no authentication or TLS. Anything that can reach the port can submit jobs. Put it behind a gateway and treat --server/base URLs as trusted-network endpoints only.
  • Solutions are retrieved by polling; there is no push/webhook delivery.
  • One request is solved at a time per server process; concurrency requires multiple replicas.

Runnable assets

Run from each asset directory (server must be running; scripts exit 0 if server unreachable). All use Python requests and accept --server (default http://localhost:8000):

See assets/README.md for overview.

Escalate

For contribution or build-from-source, see the developer skill.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Modify, build, test, debug, and contribute to NVIDIA cuOpt (C++/CUDA, Python, server, CI). Use for solver internals, PRs, DCO, and code conventions.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NVIDIA/cuopt1.1천2026년 10월 17일 업데이트

Install cuOpt for Python, C, or server via pip, conda, or Docker; verify the install. For building cuOpt from source, see cuopt-developer.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NVIDIA/cuopt1.1천2026년 10월 17일 업데이트

Trace, complete, and interpret the Pareto frontier across competing objectives using repeated single-objective cuOpt solves (weighted-sum and ε-constraint).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NVIDIA/cuopt1.1천2026년 10월 17일 업데이트

LP, MILP, and QP (beta) with cuOpt — Python, C, and CLI. Use when the user is solving LP, MILP, or QP with any cuOpt interface.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NVIDIA/cuopt1.1천2026년 10월 17일 업데이트

LP, MILP, QP — concepts, problem-text parsing, and formulation patterns (parameters, constraints, decisions, objective). Concepts only; no API.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NVIDIA/cuopt1.1천2026년 10월 17일 업데이트

Vehicle routing (VRP, TSP, PDP) with cuOpt — Python API only. Use when the user is building or solving routing in Python.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

NVIDIA/cuopt1.1천2026년 10월 17일 업데이트

NVIDIA의 스킬 모두 보기

이 스킬의 문제 신고