Skip to main content

Quapp HPC library — Slurm integration for Quapp Platform

Project description

quapp-hpc

Python library cho Quapp HPC functions — cầu nối giữa Quapp FaaS platform và Slurm HPC cluster.

Architecture

ksvc (Docker)
├── index.py                  FastAPI server
├── quapp_hpc/
│   ├── factory/
│   │   └── hpc_handler_factory.py   Entry point cho user
│   ├── component/backend/
│   │   └── hpc_invocation.py        Orchestrates job lifecycle
│   └── model/
│       ├── provider/slurm_provider.py   Auth headers, base URL
│       └── device/slurm_device.py       Submit → Poll → S3 download
└── function/
    └── handler.py            User-defined processing() + post_processing()

Luồng thực thi

index.py nhận HTTP POST
    → HpcHandlerFactory.create_handler(event, processing_fn, post_processing_fn)
    → InvocationHandler.handle()
    → HpcInvocation.submit_job()
        1. processing_fn(invocation_input)  → bash script string
        2. SlurmDevice._create_job(script)  → POST Slurm REST API → slurm_job_id
        3. SlurmDevice._get_job_result()    → poll mỗi 30s → COMPLETED/FAILED
        4. SlurmDevice._download_s3_result()→ boto3 get s3://$S3_BUCKET/$JOB_UUID/output.json
        5. post_processing_fn(s3_result)    → final response

Environment variables (từ K8s Secret slurm-credentials)

Var Ví dụ Mô tả
SLURM_API_URL http://10.1.0.15:6820 Slurm REST API base URL
SLURM_JWT eyJ... JWT token cho Slurm auth
SLURM_USERNAME quapp-svc Slurm username
SLURM_ACCOUNT quapp Slurm account/allocation
S3_BUCKET quapp-slurm-output-dev S3 bucket cho job output
AWS_REGION ap-southeast-1 AWS region
SLURM_POLL_SEC 30 Polling interval (giây)
SLURM_TIMEOUT_SEC 21600 Max wait time (giây, default 6h)

invocation_input schema

Xem chi tiết tại ../qapp-sdk-templates/slurm-hpc/README.md.

Tóm tắt:

{
  "resources": { "partition", "nodes", "cpus_per_task", "gpus", "memory_gb", "time_limit" },
  "container": { "type": "sif"|"docker"|"none", "image": "..." },
  "job":       { "type": "script"|"command", "script"|"command": "...", "environment": {}, "input_s3_paths": [] }
}

Slurm REST API

  • Version: v0.0.40
  • Submit: POST {SLURM_API_URL}/slurm/v0.0.40/job/submit
  • Status: GET {SLURM_API_URL}/slurm/v0.0.40/job/{job_id}
  • Auth headers: X-SLURM-USER-NAME, X-SLURM-USER-TOKEN

Job state mapping

Slurm state Quapp state
PENDING, CONFIGURING, RUNNING, COMPLETING RUNNING
COMPLETED DONE
FAILED, CANCELLED, TIMEOUT, NODE_FAIL, PREEMPTED ERROR

S3 output pattern

Job script phải upload kết quả:

aws s3 cp /tmp/output.json s3://$S3_BUCKET/$JOB_UUID/output.json

$JOB_UUID$S3_BUCKET được inject tự động bởi SlurmDevice._create_job() qua Slurm environment array.

K8s Secret

# infrastructure/quapp-job-scheduler/k8s/cts/slurm-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: slurm-credentials
  namespace: quapp-functions-dev
stringData:
  SLURM_JWT: "<generate: sudo scontrol token username=quapp-svc lifespan=2592000>"
  SLURM_API_URL: "http://10.1.0.15:6820"
  SLURM_USERNAME: "quapp-svc"
  SLURM_ACCOUNT: "quapp"
  S3_BUCKET: "quapp-slurm-output-dev"
  AWS_REGION: "ap-southeast-1"

DB seed required

Chạy script trước khi deploy:

infrastructure/quapp-functions-backend/docs/db/seed_slurm_hpc.sql

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quapp_hpc-0.0.1.dev5.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quapp_hpc-0.0.1.dev5-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file quapp_hpc-0.0.1.dev5.tar.gz.

File metadata

  • Download URL: quapp_hpc-0.0.1.dev5.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for quapp_hpc-0.0.1.dev5.tar.gz
Algorithm Hash digest
SHA256 a9b16956a3db2232e1422e4cba4c3c3bf9c40ceafcd664303126f573ab3a25ef
MD5 3d13634597e0d78a317808e764bd4a13
BLAKE2b-256 32b859a79b6553a81dc2d508f4aebbf3dc7b2b6db936e91df3f995dbf2fe9273

See more details on using hashes here.

File details

Details for the file quapp_hpc-0.0.1.dev5-py3-none-any.whl.

File metadata

  • Download URL: quapp_hpc-0.0.1.dev5-py3-none-any.whl
  • Upload date:
  • Size: 16.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for quapp_hpc-0.0.1.dev5-py3-none-any.whl
Algorithm Hash digest
SHA256 4458bcff984e52f4b10e8beb63eb06a82ca331a1afafccf295eb4a2f09bacd62
MD5 5758917a307ee550d643346434b90c98
BLAKE2b-256 a4f74a4d7942856ea1f592bbf93826493bc71928136a0e86c98854942b1932c0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page