Replies: 1 comment
|
Here is what is happening and how to properly configure your runner for concurrent test containers: 1. Does the RTX A2000 support NVIDIA MIG?No. Multi-Instance GPU (MIG) is only supported on enterprise Hopper/Ampere datacenter architectures (such as the A100, A30, and H100). The RTX A2000 (GA106 silicon) does not have hardware MIG support, so hardware partitioning is not an option here. 2. Root Cause of
|
Uh oh!
There was an error while loading. Please reload this page.
🏷️ Discussion Type
Question
💬 Feature/Topic Area
ARC (Actions Runner Controller)
Discussion Details
Hi everyone,
We are configuring a self-hosted GitHub Actions runner (Ubuntu 22.04 LTS, NVIDIA RTX A2000, Docker v24.0.7) to run automated regression and liveness-detection test suites for our on-prem face recognition SDK
pipeline.
During the integration test step across a matrix of 4 concurrent test workers, the runner intermittently fails to mount the GPU container layer, throwing this exit code:
text
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: device error: unknown device id: gpu0: unknown
Error: Process completed with exit code 1.
Here is a stripped-down snippet from our .github/workflows/sdk-integration.yml:
yaml
jobs:
run-liveness-suite:
runs-on: [self-hosted, linux, x64, gpu]
strategy:
matrix:
worker-id: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v4
- name: Run Test Container with NVIDIA Runtime
run: |
docker run --rm --gpus all
-v ${{ github.workspace }}/fixtures:/data/test-faces:ro
sdk-tester:local --worker-id ${{ matrix.worker-id }}
When jobs run sequentially (matrix.max-parallel: 1), everything passes without issue. However, running them concurrently causes nvidia-container-runtime to choke on resource allocation.
Has anyone encountered similar GPU isolation flaps on self-hosted runners when running multiple parallel Docker containers? Would partitioning via NVIDIA MIG or binding explicit NVIDIA_VISIBLE_DEVICES per runner instance be the recommended approach here?
All reactions