Последние версии docker (или любая версия nvidia-docker) разрешают прямой (?) Доступ к GPU хоста из контейнеров докеров с полным доступом к API CUDA. Это очень удобно при развертывании сложных серверов логического вывода машинного обучения.
Однако, насколько я могу судить, в настоящее время поддерживаются только хосты Linux.
Почему Microsoft и Apple не могут активизировать свою игру и обеспечить такой же уровень поддержки? То есть, какой трюк используется в Linux, который, по-видимому, трудно воспроизвести в других операционных системах?
Docker в Linux напрямую использует ядро хостинга, но Docker в Windows фактически работает на виртуальной машине (размещенной на Hyper-V в Windows), потому что в Windows нет ядра Linux, с которым Docker мог бы напрямую взаимодействовать. Таким образом, для доступа к хост-GPU из контейнера докеров в Windows требуется выход из контейнера докеров на гостевой виртуальной машине в хостинговую ОС Windows для связи с драйверами графического процессора. Для правильной поддержки всего этого требуется множество специальных разработок от Microsoft и производителя графического процессора.
С февраля 2020 года доступ к графическому процессору через контейнер Windows возможен для Dx и вычислений на основе Dx. Вы можете узнать больше на https://github.com/MicrosoftDocs/Virtualization-Documentation/tree/master/windows-container-samples/directx, в частности, раздел ниже:
демонстрирует контейнеризацию и запуск рабочей нагрузки DirectX с ускорением графического процессора. В частности, мы используем приложение вывода машинного обучения WinMLRunner.
Контейнеры Windows с сопровождающим обновлением Docker, как указано в [https://techcommunity.microsoft.com/t5/containers/bringing-gpu-acceleration-to-windows-containers/ba-p/393939], добавьте «изоляцию процесса» режим, который не требует и не использует виртуальную машину.
Что касается доступа CUDA, дождитесь будущих обновлений о том, какие дополнительные API поддерживаются помимо Dx.
Обновление 29Jun2020 - CUDA теперь доступна из WSL2 в Windows. https://docs.microsoft.com/en-us/windows/wsl/tutorials/gpu-compute https://developer.nvidia.com/cuda/wsl
Это потребует сквозной передачи графического процессора (например, DDA), которая доступна только в Windows Server 2016.