API Nvidia-Docker для Python? - PullRequest
0 голосов
/ 04 мая 2018

В настоящее время я использую много подобных Docker-контейнеров, которые создаются и запускаются скриптом Python через официальный API. Поскольку Docker изначально не поддерживает сопоставление GPU, я протестировал Nvidia-Docker, который удовлетворяет моим требованиям, но я не уверен, как легко интегрировать его в мой скрипт.

Я пытался найти правильные вызовы API для Nvidia-Docker, используя Google и документы, но мне не удалось найти ничего полезного.

Мой текущий код выглядит примерно так:

# assemble a new container using the params obtained earlier
container_id = client.create_container(img_id, command=commands, stdin_open=True, tty=True, volumes=[folder], host_config=client.create_host_config(binds=[mountpoint,]),detach=False) 
# run it 
client.start(container_id)

Документацию по API можно найти здесь .

Из Nvidia-Dockers Github Страница:

Среда выполнения по умолчанию, используемая движком Docker®, - runc, наша среда выполнения может стать стандартной по умолчанию, настроив докер демон с --default-runtime = nvidia. Это избавит от необходимости добавьте аргумент --runtime = nvidia для запуска Docker. Это также единственный способ получить доступ к графическому процессору во время сборки докера.

По сути, я хочу добавить аргумент --runtime = nvidia-docker к моему вызову create_container, но, как кажется, его поддержка не поддерживается.

Но так как мне нужно переключаться между средами выполнения несколько раз во время выполнения скрипта (смешивая Nvidia-Docker и нативные контейнеры Docker), быстрый и грязный способ состоял бы в том, чтобы запустить команду bash с использованием подпроцесса , но я чувствую как должен быть лучший способ.

TL; DR: я ищу способ запуска контейнеров Nvidia-Docker из скрипта Python.

1 Ответ

0 голосов
/ 30 мая 2018
Методы

run() и create() имеют параметр runtime в соответствии с https://docker -py.readthedocs.io / en / stable / container.html

Что имеет смысл, потому что docker инструмент cli довольно прост, и каждая команда преобразуется в вызове службы механизма докера REST API

...