Big news for virtualization: macOS 27.3 lets Core AI in Mac VMs use the host’s GPU and Neural Engine.
In some tests, the new paravirtualized paths can run Core AI tasks up to 7× faster¹ than the guest CPU, achieving 50 to nearly 100% of the host’s native speed.
The new Core AI accelerator currently requires private APIs and a restricted entitlement.
Here's how to set it up:
• Install macOS 27.3 on the host and guest.
• Build a VM host app with com\.apple.security.virtualization and com\.apple.private.virtualization entitlements. You’ll need to relax AMFI for the second entitlement.
• On VZVirtualMachineConfiguration, add the accelerators using _setAcceleratorDevices with:
• _VZMacCoreAIDeviceConfiguration (GPU, adds PVAIDevice)
• _VZMacNeuralEngineDeviceConfiguration (existing ANE accelerator, adds Neural Engine for Core AI)
On the guest, enable the feature flag:
sudo mkdir -p /Library/Preferences/FeatureFlags/Domain && \
sudo defaults write /Library/Preferences/FeatureFlags/Domain/ParavirtualizedCoreAI enable_pv_delegate -dict Enabled -bool true
and restart the guest. You can now call Core AI on the guest. If set up properly, ComputeUnitKind.availableKinds should list gpu and neuralEngine.
——
There's a second, currently disabled host-side feature flag (ParavirtualizedCoreAIHost/enable_save_restore). When enabled, the Core AI accelerator advertises support for saving and restoring VM state.
——
1. Tested on a Mac with an M4 Max chip using public models (YOLO, CLIP, Depth Anything) and matmul/convolution benchmarks. Crossing the VM boundary adds ~1 ms per inference call.
Qwen3-0.6B in Apple’s llm-benchmark ran at about 10% of host speed. Core AI’s paravirtualized path repeatedly sets up host access to large shared KV-cache buffers for each generated token.