Using Mocked Accelerators
For developers who do not have access to physical accelerator devices such as CUDA GPUs, we provide a mock-up plugin to simulate the system configuration with such devices, allowing development and testing of accelerator-related features in various components including the web UI.
Configuring the mock-accelerator plugin
Check out the examples in the configs/accelerator
directory.
Here are the description of each field:
slot_name
: The resource slot’s main key name. The plugin’s resource slot name has the form of"<slot_name>.<subtype>"
, where the subtype may be something such asdevice
(default),shares
(for the fractional allocation mode). For CUDA MIG devices, it becomes a string including the slice size from the device memory size such as10g-mig
.To configure the fractional allocation mode, you should also specify the etcd accelerator plugin configuration like the following JSON, where
unit_mem
andunit_proc
is used as the divisor to calculate 1.0 fraction:{ "config": { "plugins": { "accelerator": { "<slot_name>": { "allocation_mode": "fractional", "unit_mem": 1073741824, "unit_proc": 10 } } } } }
In the above example, the 10 subprocessors and 1 GiB of device memory is regarded as 1.0 fractional device. You may store it as a JSON file and put in the etcd configuration tree like:
$ ./backend.ai mgr etcd put-json '' mydevice-fractional-mode.json
device_plugin_name
: The class name to use as the actual implementation. Currently there are two:CUDADevice
andMockDevice
.formats.<subtype>
: The tables for per-subtype formatting detailsdisplay_icon
: The device icon type displayed in the UI.display_unit
: The resource slot unit displayed in the UI, alongside the amount numbers.human_readable_name
: The device name displayed in the UI.description
: The device description displayed in the UI.number_format
: The number formatting string used for the UI.binary
: A boolean flag to indicate whether to use the binary suffixes (divided by 2^(10n) instead of 10^(3n))round_length
: The length of fixed points to wrap the numeric value of this resource slot. If zero, the number is treated as an integer.
devices
: The list of mocked device declarationsmother_uuid
: The unique ID of the device, which may be random-generatedmodel_name
: The model name to report to the manager as metadatanuma_node
: The NUMA node index to place this device.subproc_count
: The number of sub-processing cores (e.g., the number of streaming multi-processors of CUDA GPUs)memory_size
: The size of on-device memory represented as human-readable binary sizesis_mig_devices
: (CUDA-specific) whether this device is a MIG slice or a full device
Activating the mock-accelerator plugin
Add "ai.backend.accelerator.mock"
to the agent.toml
’s [agent].allowed-compute-plugins
field.
Then restart the agent.