What You Will Do
You will:- Select an AMD GPU class and a compatible, versioned ROCm-enabled PyTorch image.
- Deploy one SaladCloud replica for an initial diagnostic test.
- Confirm the GPU device and PyTorch ROCm backend, then complete a deterministic matrix multiplication on the GPU.
- Record the combination and test the real workload across multiple allocations.
Prerequisites
- A SaladCloud organization and project.
- Portal access, or a SaladCloud API key for the optional API workflow.
- Access to an AMD GPU class in that organization. Current inventory and capacity can vary.
- A versioned
rocm/pytorchimage compatible with the AMD architecture you intend to use. - Enough credits to run the validation and any multi-replica follow-up.
- For the API workflow,
curlandjqon your local machine.
1. Select a GPU and Image
Use the Portal or List GPU Classes API to find the AMD classes available to your organization and retrieve the current class ID. Do not reuse a class UUID from an unrelated example. After choosing the class and container resources, use the GPU Availability API before a multi-replica test. The result is an estimate, so plan for capacity to change as nodes enter and leave the network. Use the class’s GPU model to review AMD’s current PyTorch compatibility documentation and PyTorch on ROCm for WSL instructions. Choose a versionedrocm/pytorch tag whose ROCm, PyTorch, Python, operating system, and compiled architectures fit your
application. If you cannot match the Salad class to AMD’s compatibility information, confirm the combination with Salad
support rather than assuming compatibility.
WSL compatibility matrix
describes AMD’s upstream WSL support. Treat upstream compatibility as a starting point and validate the selected image
and workload on SaladCloud before deploying it to production.
Do not use the mutable latest tag as a production pin. Preserve the exact versioned tag and, when your image workflow
exposes it, the resolved image digest.
Treat these values as one compatibility set:
Changing one of these values creates a new combination that needs to be validated again.
2. Deploy Through the Portal
- Open the SaladCloud Portal and select your organization and project.
- Click Deploy a Container Group, then choose Custom.
- Enter a name for the validation group and set Image Source to the versioned
rocm/pytorchimage you selected. - Set Replicas to
1for the initial diagnostic test. - Under Hardware, select only the AMD GPU class you are validating.
- Select CPU, RAM, and storage for the image and workload you intend to test. A small matrix test does not establish production resource requirements.
- If the image’s default process exits, configure a keepalive command. For a PyTorch image with
python3, enterpython3as the command,-cas the first argument, andimport time; time.sleep(2147483647)as the second argument. Do not include quotes around the arguments. See Specifying a command. - No Container Gateway is required for this terminal-based test.
- Deploy the group and wait for its instance to reach Running. If it repeatedly exits or reallocates, inspect System Events before changing the ROCm stack.
- Open the running instance and select the Terminal tab. See SSH and terminal access.
3. Verify PyTorch ROCm
Confirm that the GPU device is present:/dev/dxg is missing.
Next, show whether the container configuration explicitly restricts GPU visibility:
torch.cuda namespace and cuda device strings. The separate torch.version.hip
check prevents a CUDA build on an NVIDIA GPU from passing this ROCm test. See
PyTorch HIP semantics.
Interpret the Result
The test passes when:ROCm/HIPcontains a version andCUDA buildis normallyNone.GPU availableisTrueandGPU countis at least1.- The reported GPU matches the AMD class selected for the container group.
- The result device is
cuda:0, the shape is(1024, 1024), and the result check is1024.0.
Optional rocminfo Diagnostics
When the image includes rocminfo, use it to identify the GPU’s gfx target:
amdgpu kernel module expected by AMD SMI. Do not run a suggested modprobe command inside SaladCloud; use rocminfo
and the PyTorch operation as the device checks.
Diagnostic executables are supplied by the image, not added automatically by GPU selection. A missing utility identifies
an image-inventory issue; it does not by itself override a passing PyTorch GPU test.
4. Validate the Real Workload
After the smoke test passes, run the exact production path. Include:- The real model and representative input sizes.
- Every precision, quantization format, attention backend, and custom operator you will enable.
- Model loading, warm-up, and peak GPU and system-memory use.
- Any compiled PyTorch extension, checked for the detected
gfxtarget. - Application startup and readiness behavior after a fresh allocation.
- Sustained latency and throughput under the expected concurrency.
Record the Result and Clean Up
Save enough information to reproduce the result:
When validation is complete, stop or delete the test container group in the Portal so it does not continue consuming
credits.
Optional API Deployment
The Portal’s Copy Configuration action is the simplest way to obtain an API payload that matches a configuration you have already reviewed. The following path performs class discovery and creates the same one-replica validation group without embedding a sample GPU UUID. Set the SaladCloud identifiers first:python3 exists in the selected
image before deploying it:
Troubleshooting
The Instance Does Not Stay Running
Review Container Logs and System Events. Check the selected GPU vendor, the image’s default process or command override, and the configured CPU, RAM, and storage before changing ROCm or PyTorch versions. Confirm that any keepalive command exists in the selected image.PyTorch Fails to Import
An import-time shared-library or glibc error can indicate that the image’s operating-system ABI is incompatible with the SaladCloud runtime libraries. Choose a compatible base image or rebuild the application image; do not replace the SaladCloud runtime libraries from inside the container./dev/dxg Is Missing
SaladCloud AMD instances use the WSL2 GPU path. If /dev/dxg is missing, collect the class name and ID, image tag,
Container Logs, and System Events for Salad support. Do not try to create or mount the device from inside the container,
and do not substitute native Linux ROCm device nodes.
ROCm/HIP Is Empty
The installed PyTorch build is not ROCm-enabled. Confirm the image reference and inspect any dependency-install step
that might have replaced the image’s ROCm build of PyTorch. Rebuild from a PyTorch version listed for the selected ROCm
release in AMD’s compatibility documentation.
PyTorch Cannot Access an AMD GPU
Confirm that the instance received the intended AMD class. InspectROCR_VISIBLE_DEVICES, HIP_VISIBLE_DEVICES, and
CUDA_VISIBLE_DEVICES for unexpected restrictions. If torch.version.hip is populated but no device is available,
collect the class name and ID, image tag and digest, PyTorch output, Container Logs, and System Events for Salad
support.
rocminfo Is Missing
The utility is not included in the image or is not on PATH. Add the required user-space diagnostic package while
building the image. SaladCloud manages the GPU runtime; do not try to replace it from the container.
AMD SMI Reports That amdgpu Is Not Loaded
SaladCloud’s environment does not expose the native Linux amdgpu kernel module expected by AMD SMI. Do not run
sudo modprobe amdgpu inside the container. Use rocminfo and the PyTorch GPU operation as the acceptance checks.
hipErrorNoBinaryForGPU
A PyTorch dependency or custom extension lacks compatible code for the current GPU. Identify the gfx target with
rocminfo when it is available, check the compiled targets as described in AMD’s PyTorch installation guide, rebuild
the affected code, and retest. Do not use an architecture override as a generic workaround.
The Smoke Test Passes but the Application Fails
Isolate the failing model feature, precision, quantization format, or compiled extension. Confirm upstream ROCm support for that exact feature, then validate it on the same Salad class and image. A generic PyTorch operation cannot establish application compatibility. For additional diagnosis, see AMD GPU troubleshooting and Salad Container Engine troubleshooting.Next Steps
- Build a custom image from the versioned ROCm base and install dependencies at image-build time.
- Add application readiness checks that load the model and complete a representative GPU operation.
- Preserve the validation record with the image source and deployment configuration.
- Review the AMD GPU production best practices before increasing replicas or adding another AMD class.