Docker 19.03.0 Beta 2์์ NVIDIA GPU์ ๋ํ ์ง์์ด ์๋ก์ด CLI API --gpus์ ํํ๋ก ๋์ ๋์์ต๋๋ค. https://github.com/docker/cli/pull/1714 ๋์ด ์ง์์ ๋ํด ์ด์ผ๊ธฐํฉ๋๋ค.
์ด์ GPU ๊ฐ์ Docker ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด --gpus ์ต์ ์ ๊ฐ๋จํ ์ ๋ฌํ ์ ์์ต๋๋ค.
$ docker run -it --rm --gpus all ubuntu nvidia-smi
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
f476d66f5408: Pull complete
8882c27f669e: Pull complete
d9af21273955: Pull complete
f5029279ec12: Pull complete
Digest: sha256:d26d529daa4d8567167181d9d569f2a85da3c5ecaf539cace2c6223355d69981
Status: Downloaded newer image for ubuntu:latest
Tue May 7 15:52:15 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.116 Driver Version: 390.116 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla P4 Off | 00000000:00:04.0 Off | 0 |
| N/A 39C P0 22W / 75W | 0MiB / 7611MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
:~$
์ค๋๋ถํฐ Compose๋์ด๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. NVIDIA GPU๋ฅผ ์ง์ํ๋๋ก Compose๋ฅผ ํ์ฑํํ๊ธฐ์ํ ๊ธฐ๋ฅ ์์ฒญ์ ๋๋ค.
Docker 19.03.0 ๋ฐ nvidia-container-toolkit-1.0.0-2
์์ (ํ์ฌ) ๋ ๊ฑฐ์ 'nvidia ๋ฐํ์'์ด ๊นจ์ ธ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ค์๋๊ฐ ๋์์ก์ต๋๋ค. : https://github.com/NVIDIA/nvidia-docker/issues/1017
$ cat docker-compose.yml
version: '2.3'
services:
nvidia-smi-test:
runtime: nvidia
image: nvidia/cuda:9.2-runtime-centos7
$ docker-compose run nvidia-smi-test
Cannot create container for service nvidia-smi-test: Unknown runtime specified nvidia
์๋ํฉ๋๋ค : docker run --gpus all nvidia/cudagl:9.2-runtime-centos7 nvidia-smi
๊ทธ๋ ์ง ์์ต๋๋ค : docker run --runtime=nvidia nvidia/cudagl:9.2-runtime-centos7 nvidia-smi
์ด๊ฒ์ ๋ํ ์์ ์ด ์์ต๋๊น?
์๋ก์ด Ubuntu 18.04 LTS ์ปดํจํฐ์์ ์๋ก์ด Docker CE 19.03.0์ ์ป์์ผ๋ฉฐ ํ์ฌ์ ์ผ์นํ๋ NVIDIA Container Toolkit (nรฉe nvidia-docker2) ๋ฒ์ ์ ๊ฐ์ง๊ณ ์์ง๋ง docker-compose.yml 3.7์ด --gpus
์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์๋ํฉ๋๋ค :
docker run --gpus all nvidia/cudagl:9.2-runtime-centos7 nvidia-smi
๊ทธ๋ ์ง ์์ต๋๋ค :
docker run --runtime=nvidia nvidia/cudagl:9.2-runtime-centos7 nvidia-smi
๋น์ ์ ๊ฐ์ง๊ณ ์์ด์ผํฉ๋๋ค
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
๊ณ์ ์์
ํ๋ ค๋ฉด /etc/docker/daemon.json
์์ --runtime=nvidia
์ ์ฌ๊ธฐ์ ๋ ๋ง์ ์ ๋ณด๊ฐ
ํ @KlaasH @ulyssessouza @Goryudyuma @ chris-crone. ์ด๊ฒ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๊ธด๊ธํ ํ์์ ๋๋ค. ๋น์ ์ ๋ ธ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
์ฌ์ฉ์๊ฐ docker> = 19.03
๋ง์ด๊ทธ๋ ์ด์
ํ ํ /etc/docker/daemon.json
์๋์ผ๋ก ์ฑ์ฐ๊ณ nvidia-container-toolkit
๋์ ์ฌ์ฉํ๊ธฐ ์ํด nvidia-docker2
๋ฅผ ์ ๊ฑฐํ๋๋ก ์๋ ๋์์ต๋๊น?
์ด๊ฒ์ ๋ง์ ์ค์น๋ฅผ ๋ง๊ฐ ๋จ๋ฆฌ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํนํ --gpus
๋ compose
์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์.
์๋์, compose๊ฐ gpus ํ๋๊ทธ๋ฅผ ์ง์ํ ๋๊น์ง ํด๊ฒฐํด์ผํฉ๋๋ค.
nvidia-docker-runtime ์ค์น :
https://github.com/NVIDIA/nvidia-container-runtime#docker -engine-setup
/etc/docker/daemon.json์ ์ถ๊ฐ
{
"๋ฐํ์": {
"nvidia": {
"๊ฒฝ๋ก": "/ usr / bin / nvidia-container-runtime",
"runtimeArgs": []
}
}
}
๋์ปค ์์ฑ :
๋ฐํ์ : nvidia
ํ๊ฒฝ:
-NVIDIA_VISIBLE_DEVICES = all
"/ usr / bin / nvidia-container-runtime"๊ณผ ๊ฐ์ ๊ฒ์ ๋ ์ด์ ์์ต๋๋ค. ๋ฌธ์ ๋ ์ฌ์ ํ ์ค์ํฉ๋๋ค.
docker-compose๋ฅผ ์์ ํ ๋๊น์ง docker-compose๋ก nvidia ํ๊ฒฝ์ ์คํํ๋ ๋ฐ ๋์์ด๋ฉ๋๋ค.
nvidia-docker-runtime ์ค์น :
https://github.com/NVIDIA/nvidia-container-runtime#docker -engine-setup
/etc/docker/daemon.json์ ์ถ๊ฐ
{
"๋ฐํ์": {
"nvidia": {
"๊ฒฝ๋ก": "/ usr / bin / nvidia-container-runtime",
"runtimeArgs": []
}
}
}๋์ปค ์์ฑ :
๋ฐํ์ : nvidia
ํ๊ฒฝ:
- NVIDIA_VISIBLE_DEVICES = all
์ด๊ฒ์ ๋๋ฅผ ์ํด ์๋ํ์ง ์์ง๋ง docker-compose up
๋ฅผ ์คํํ๋ ค๊ณ ํ ๋ ์ฌ์ ํ Unsupported config option for services.myservice: 'runtime'
์ป์ต๋๋ค.
์ด๋ค ์์ด๋์ด?
์ด๊ฒ์ ๋๋ฅผ ์ํด ์๋ํ์ง ์์ง๋ง
docker-compose up
๋ฅผ ์คํํ๋ ค๊ณ ํ ๋ ์ฌ์ ํUnsupported config option for services.myservice: 'runtime'
์ป์ต๋๋ค.์ด๋ค ์์ด๋์ด?
/etc/docker/daemon.json ์์ ํ docker ์๋น์ค๋ฅผ ๋ค์ ์์ํ์ญ์์ค.
systemctl ๋ค์ ์์ ๋์ปค
Compose ํ์ 2.3์ ์ฌ์ฉํ๊ณ ๋ฐํ์ : nvidia๋ฅผ GPU ์๋น์ค์ ์ถ๊ฐํฉ๋๋ค. Docker Compose๋ ๋ฒ์ 1.19.0 ์ด์์ด์ด์ผํฉ๋๋ค.
๋์ปค ์์ฑ ํ์ผ :
๋ฒ์ : '2.3'
์๋น์ค:
nvsmi :
์ด๋ฏธ์ง : ์ฐ๋ถํฌ : 16.04
๋ฐํ์ : nvidia
ํ๊ฒฝ:
-NVIDIA_VISIBLE_DEVICES = all
๋ช
๋ น : nvidia-smi
@cheperuiz ,
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
},
}
์! ๊ฐ์ฌํฉ๋๋ค @Kwull , ๋๋ default-runtime
๋ถ๋ถ์ โโ๋์ณค์ต๋๋ค ... ๋ชจ๋ ๊ฒ์ด ์ง๊ธ ์๋ํฉ๋๋ค :)
@uderik , runtime
๋ ํ์ฌ 3.7 compose ํ์ผ ํ์ ์คํค๋ง์ ๋ ์ด์ ์กด์ฌํ์ง ์์ผ๋ฉฐ, ๊ฒฐ๊ตญ Docker 19.03๊ณผ ์ผ์นํด์ผํ๋ ๋ณด๋ฅ์ค์ธ 3.8 ๋ฒ์ ์๋ ์์ต๋๋ค : https://github.com/docker/compose/blob/ 5e587d574a94e011b029c2fb491fb0f4bdeef71c / compose / config / config_schema_v3.8.json
@johncolby runtime
์ (๋) 3.x ํ๋๊ทธ๊ฐ ์๋๋๋ค. 2.x ํธ๋ (2.3 ๋ฐ 2.4)์๋ง ์์ต๋๋ค.
์, ์๊ณ ์์ต๋๋ค. docker-compose.yml ํ์ผ์ version: '2.3'
(๊ณผ๊ฑฐ์ ์๋ ํ์)์ด ํฌํจ๋์ด ์์ง๋ง ์ต์ ๋ฒ์ ์์๋ ๋ฌด์๋๋ ๊ฒ ๊ฐ์ต๋๋ค ...
ํฅํ ํ๋ก์ ํธ์์ GPU์ ๋ํ ์ก์ธ์ค๋ฅผ ํ์ฑํ / ๋นํ์ฑํํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น? ๊ทธ๋ฅ ๊ธฐ๋ณธ + ํ๊ฒฝ ๋ณ์๋ก ๋ง๋์๊ฒ ์ต๋๊น? ์๋๋ฉด --gpus
ํ๋๊ทธ์ ๋ํ ์ง์์ด ์์ต๋๊น?
@johncolby 3.X์์ runtime
์ ๋์ฒดํ์ ๋ฌด์์
๋๊น?
@ Daniel451 ๋ฐฉ๊ธ ์ฃผ๋ณ์ ๋ฐ๋ผ ์์ง๋ง generic_resources
ํค ์๋์์๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค.
services:
my_app:
deploy:
resources:
reservations:
generic_resources:
- discrete_resource_spec:
kind: 'gpu'
value: 2
(https://github.com/docker/cli/blob/9a39a1/cli/compose/loader/full-example.yml#L71-L74์์)
๋์์ธ ๋ฌธ์ : https://github.com/docker/swarmkit/blob/master/design/generic_resources.md
๋ค์์ ์ด๋ฏธ ๋ณํฉ ๋ compose 3.8 ์คํค๋ง ์ง์๊ณผ ๊ด๋ จ๋ ์์ฑ ๋ฌธ์ ์ ๋๋ค. https://github.com/docker/compose/issues/6530
๋ฐ๋ชฌ ์ธก์์ gpu
๊ธฐ๋ฅ์ daemon.json
๋๋ dockerd
CLI (์ด์ ํ๋ ์ฝ๋ฉ ๋ ๋ฐํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌ)์ ํฌํจํ์ฌ ๋ฑ๋ก ํ ์ ์์ต๋๋ค.
/usr/bin/dockerd --node-generic-resource gpu=2
๊ทธ๋ฐ ๋ค์ NVIDIA ๋์ปค ์ ํธ๋ฆฌํฐ์ ์ฐ๊ฒฐํ์ฌ ๋ฑ๋ก๋ฉ๋๋ค.
https://github.com/moby/moby/blob/09d0f9/daemon/nvidia_linux.go
๊ธฐ๊ณ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์๋ฆฌ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฌธ์ํ ๋งํ๋ฉด๋ฉ๋๋ค.
๋ชจ๋ ์ ๋ฐ์ดํธ?
๋ํ ๊ณต์ ์์ ์ ๊น์ง bash
๊ณผ docker run --gpus
์ (๋ฅผ) ์ฌ์ฉํ์ฌ ์
๋ฐ์ดํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค ...
์ ๋ฐ์ดํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ค์ ๋๋ค.
๋ํ ์ ๋ฐ์ดํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค :)
์ข์ ... ์์ด๊ฒ ์์ง ์ด๋ ค ์๋์ง ๋ชจ๋ฅด๊ฒ ๋ค์. ์ด 3 ๊ฐ์ ์ถ๊ฐ ์ค์ ์คํค๋ง ๋ฒ์ 3.7์์ ์๋ํฉ๋๋ค. docker๊ฐ ์ฌ์ํ ์ปค๋ฎค๋ํฐ ๋ฌธ์ ์ ๋ฐ์ํ๋ค๋ ๊ฒ์ ์๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค. ๋ฐ๋ผ์์ด ์ ์ฅ์๋ฅผ ๋ณต์ ํ๊ณ ์ด ์ธ ์ค์ ์ถ๊ฐํ๊ณ python3 setup.py์์ ๋น๋ํ๊ณ ์ค์นํ๊ณ docker-compose.yml์ด ๋ฒ์ 3.7์ธ์ง ํ์ธํ์ญ์์ค.
[ruckc<strong i="6">@omnilap</strong> compose]$ git diff
diff --git a/compose/config/config_schema_v3.7.json b/compose/config/config_schema_v3.7.json
index cd7882f5..d25d404c 100644
--- a/compose/config/config_schema_v3.7.json
+++ b/compose/config/config_schema_v3.7.json
@@ -151,6 +151,7 @@
"external_links": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
"extra_hosts": {"$ref": "#/definitions/list_or_dict"},
+ "gpus": {"type": ["number", "string"]},
"healthcheck": {"$ref": "#/definitions/healthcheck"},
"hostname": {"type": "string"},
"image": {"type": "string"},
diff --git a/compose/service.py b/compose/service.py
index 55d2e9cd..71188b67 100644
--- a/compose/service.py
+++ b/compose/service.py
@@ -89,6 +89,7 @@ HOST_CONFIG_KEYS = [
'dns_opt',
'env_file',
'extra_hosts',
+ 'gpus',
'group_add',
'init',
'ipc',
@@ -996,6 +997,7 @@ class Service(object):
dns_opt=options.get('dns_opt'),
dns_search=options.get('dns_search'),
restart_policy=options.get('restart'),
+ gpus=options.get('gpus'),
runtime=options.get('runtime'),
cap_add=options.get('cap_add'),
cap_drop=options.get('cap_drop'),
์ด๋ฅผ ์ถ์ ํ๊ธฐ ์ํด ๋ด๋ถ ๋ฌธ์ ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
PR์ ํ์๋ฐ์ต๋๋ค.
์ข์ ... ์์ด๊ฒ ์์ง ์ด๋ ค ์๋์ง ๋ชจ๋ฅด๊ฒ ๋ค์. ์ด 3 ๊ฐ์ ์ถ๊ฐ ์ค์ ์คํค๋ง ๋ฒ์ 3.7์์ ์๋ํฉ๋๋ค. docker๊ฐ ์ฌ์ํ ์ปค๋ฎค๋ํฐ ๋ฌธ์ ์ ๋ฐ์ํ๋ค๋ ๊ฒ์ ์๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค. ๋ฐ๋ผ์์ด ์ ์ฅ์๋ฅผ ๋ณต์ ํ๊ณ ์ด ์ธ ์ค์ ์ถ๊ฐํ๊ณ python3 setup.py์์ ๋น๋ํ๊ณ ์ค์นํ๊ณ docker-compose.yml์ด ๋ฒ์ 3.7์ธ์ง ํ์ธํ์ญ์์ค.
[ruckc<strong i="7">@omnilap</strong> compose]$ git diff diff --git a/compose/config/config_schema_v3.7.json b/compose/config/config_schema_v3.7.json index cd7882f5..d25d404c 100644 --- a/compose/config/config_schema_v3.7.json +++ b/compose/config/config_schema_v3.7.json @@ -151,6 +151,7 @@ "external_links": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, "extra_hosts": {"$ref": "#/definitions/list_or_dict"}, + "gpus": {"type": ["number", "string"]}, "healthcheck": {"$ref": "#/definitions/healthcheck"}, "hostname": {"type": "string"}, "image": {"type": "string"}, diff --git a/compose/service.py b/compose/service.py index 55d2e9cd..71188b67 100644 --- a/compose/service.py +++ b/compose/service.py @@ -89,6 +89,7 @@ HOST_CONFIG_KEYS = [ 'dns_opt', 'env_file', 'extra_hosts', + 'gpus', 'group_add', 'init', 'ipc', @@ -996,6 +997,7 @@ class Service(object): dns_opt=options.get('dns_opt'), dns_search=options.get('dns_search'), restart_policy=options.get('restart'), + gpus=options.get('gpus'), runtime=options.get('runtime'), cap_add=options.get('cap_add'), cap_drop=options.get('cap_drop'),
์๋ฃจ์ ์ ์๋ํ์ง๋ง ํด๋น ํ๋๊ทธ์ ๋ํ ๋ง์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
ERROR: for <SERVICE_NAME> __init__() got an unexpected keyword argument 'gpus'
Traceback (most recent call last):
File "/usr/local/bin/docker-compose", line 11, in <module>
load_entry_point('docker-compose==1.25.0.dev0', 'console_scripts', 'docker-compose')()
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/cli/main.py", line 71, in main
command()
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/cli/main.py", line 127, in perform_command
handler(command, command_options)
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/cli/main.py", line 1106, in up
to_attach = up(False)
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/cli/main.py", line 1102, in up
cli=native_builder,
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/project.py", line 569, in up
get_deps,
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/parallel.py", line 112, in parallel_execute
raise error_to_reraise
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/parallel.py", line 210, in producer
result = func(obj)
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/project.py", line 555, in do
renew_anonymous_volumes=renew_anonymous_volumes,
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/service.py", line 546, in execute_convergence_plan
scale, detached, start
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/service.py", line 468, in _execute_convergence_create
"Creating"
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/parallel.py", line 112, in parallel_execute
raise error_to_reraise
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/parallel.py", line 210, in producer
result = func(obj)
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/service.py", line 466, in <lambda>
lambda service_name: create_and_start(self, service_name.number),
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/service.py", line 454, in create_and_start
container = service.create_container(number=n, quiet=True)
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/service.py", line 337, in create_container
previous_container=previous_container,
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/service.py", line 913, in _get_container_create_options
one_off=one_off)
File "/usr/local/lib/python3.6/dist-packages/docker_compose-1.25.0.dev0-py3.6.egg/compose/service.py", line 1045, in _get_container_host_config
cpu_rt_runtime=options.get('cpu_rt_runtime'),
File "/usr/local/lib/python3.6/dist-packages/docker-4.0.2-py3.6.egg/docker/api/container.py", line 590, in create_host_config
return HostConfig(*args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'gpus'
ํน์ Python docker
ํจํค์ง๊ฐ ํ์ํฉ๋๊น?
@DarioTurchi ๋ค, ์ ํํ ๋ฌธ์ ๋ฅผ ๋ง๋ฌ์ต๋๋ค. HostConfig ์ ํ๋ ์ ๋ฐ์ดํธํด์ผํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
docker-py๋ ๋ณ๊ฒฝ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ @ruckc ๊ฐ ์ค๋ช
ํ๋ ๋ณ๊ฒฝ์ผ๋ก ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ํ docker-py ๋ณ๊ฒฝ์ด ์์ง ์งํ์ค์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ๋ฅผ ๋ณด์๋ผ:
https://github.com/docker/docker-py/pull/2419
๋ณ๊ฒฝ๋ ์ง์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
https://github.com/sigurdkb/docker-py/tree/gpus_parameter
๋ฐ๋ผ์ ์ง๊ธ ํจ์น ํ๋ ค๋ฉด https://github.com/sigurdkb/docker-py/tree/gpus_parameter ์์ ์์ ๋ docker-py์ ๋ํด docker-compose๋ฅผ ๋น๋ํด์ผํฉ๋๋ค.
๋๋ ์ฌ๊ธฐ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ดํดํ์ง ๋ชปํ๋ค.
1) /etc/docker/daemon.json
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
ํ์ง๋ง runtime
ํค๋ https://github.com/docker/compose/issues/6239 ์ ๊ฐ์ด v3.x์์ ๋ ์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋๋ ๋ํ ์๋ํ๋ค :
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
๋ฐ๋ผ์ ๋ ์ด์ docker-compose
์์ GPU ์ง์์ผ๋ก ์ปจํ
์ด๋๋ฅผ ์์ํ ์ ์์ต๋๋ค.
bertserving_1 | I:VENTILATOR:[__i:_ge:222]:get devices
bertserving_1 | W:VENTILATOR:[__i:_ge:246]:no GPU available, fall back to CPU
์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋๊ธฐ ์ ์๋ ์ง๊ธ ๋ฌด์์ ํ ์ ์์ต๋๊น?
+1 docker-compose์์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋งค์ฐ ์ ์ฉํฉ๋๋ค!
์ํ?
๋ด๋ถ์ ์ผ๋ก https://docker.atlassian.net/browse/COMPOSE-82๋ก ์ถ์ ๋ฉ๋๋ค.
+1์ docker-compose์ ์ ์ฉํ ๊ธฐ๋ฅ์ ๋๋ค.
์ด ๊ธฐ๋ฅ์ docker-compose
๋ฉ์ง ์ถ๊ฐ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์
๋๋ค.
์ง๊ธ ๋ด ์๋ฃจ์
์ ๋ฐํ์์ ์ง์ํ๋ 2.3 ๋ฒ์ ์ docker-compose ํ์ผ์ ์ฌ์ฉํ๊ณ nvidia-container-runtime์ ์๋์ผ๋ก ์ค์นํ๋ ๊ฒ์
๋๋ค (๋ ์ด์ nvidia-docker์ ํจ๊ป ์ค์น๋์ง ์๊ธฐ ๋๋ฌธ์).
๋ํ /etc/docker/daemon.json์์ ๋ฐํ์ ๊ตฌ์ฑ์ ์ค์ ํ๊ณ ์์ต๋๋ค (์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐํ์๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ๋ณธ๊ฐ์ด ์๋).
์ด๋ฅผ ํตํด ๋ค์๊ณผ ๊ฐ์ ์์ฑ ํ์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
version: '2.3'
services:
test:
image: nvidia/cuda:9.0-base
runtime: nvidia
์ง๊ธ ๋ด ์๋ฃจ์ ์ ๋ฐํ์์ ์ง์ํ๋ 2.3 ๋ฒ์ ์ docker-compose ํ์ผ์ ์ฌ์ฉํ๊ณ nvidia-container-runtime์ ์๋์ผ๋ก ์ค์นํ๋ ๊ฒ์ ๋๋ค (๋ ์ด์ nvidia-docker์ ํจ๊ป ์ค์น๋์ง ์๊ธฐ ๋๋ฌธ์).
๋ํ /etc/docker/daemon.json์์ ๋ฐํ์ ๊ตฌ์ฑ์ ์ค์ ํ๊ณ ์์ต๋๋ค (์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐํ์๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ๋ณธ๊ฐ์ด ์๋).
์ด๋ฅผ ํตํด ๋ค์๊ณผ ๊ฐ์ ์์ฑ ํ์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.version: '2.3' services: test: image: nvidia/cuda:9.0-base runtime: nvidia
@arruda daemon.json
๋ฅผ) ๊ณต์ ํด ์ฃผ์๊ฒ ์ต๋๊น?
์ง๊ธ ๋ด ์๋ฃจ์ ์ ๋ฐํ์์ ์ง์ํ๋ 2.3 ๋ฒ์ ์ docker-compose ํ์ผ์ ์ฌ์ฉํ๊ณ nvidia-container-runtime์ ์๋์ผ๋ก ์ค์นํ๋ ๊ฒ์ ๋๋ค (๋ ์ด์ nvidia-docker์ ํจ๊ป ์ค์น๋์ง ์๊ธฐ ๋๋ฌธ์).
๋ํ /etc/docker/daemon.json์์ ๋ฐํ์ ๊ตฌ์ฑ์ ์ค์ ํ๊ณ ์์ต๋๋ค (์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐํ์๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ๋ณธ๊ฐ์ด ์๋).
์ด๋ฅผ ํตํด ๋ค์๊ณผ ๊ฐ์ ์์ฑ ํ์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.version: '2.3' services: test: image: nvidia/cuda:9.0-base runtime: nvidia
@arruda
daemon.json
๋ฅผ) ๊ณต์ ํด ์ฃผ์๊ฒ ์ต๋๊น?
์, ๋ฌธ์ ์์ต๋๋ค. ์ฌ๊ธฐ ์์ต๋๋ค.
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
์๋ ํ์ธ์
NVIDIA ๋๋ผ์ด๋ฒ๊ฐ ํ์ํ ์ ํ๋ฆฌ์ผ์ด์
์ด ์์ต๋๋ค. (FROM)์ ๊ธฐ๋ฐ์ผ๋ก ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์์ต๋๋ค.
nvidia / cudagl : 10.1-runtime-ubuntu18.04
์์์ ๊ถ์ฅํ๋ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋ด ์ด๋ฏธ์ง๊ฐ nvidia / cudagl : 10.1-runtime-ubuntu18.04 ์์ ํ์ ๋ ํ์๊ฐ ์์์ ์๋ฏธํฉ๋๊น? ์ฆ, ๊ฐ๋จํ (FROM) python : 3.7.3-stretch ์์ ํ์์ํฌ ์
๊ทธ๋ฆฌ๊ณ ๋ฐํ์์ ์ถ๊ฐํ์ญ์์ค : nvidia๋ฅผ docker-compose?
๊ฐ์ฌ
@rfsch ์๋์, ๊ทธ๊ฑด ๋ค๋ฅธ ๊ฒ์
๋๋ค. docker-compose์ runtime: nvidia
๋ Docker ๋ฐํ์์ ๋ํ๋
๋๋ค. ๊ทธ๋ฌ๋ฉด ์ปจํ
์ด๋์์ GPU๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉํ ์์๊ฒ๋๋ฉด ์ฌ์ฉํ ์์๋ ๋ฐฉ๋ฒ์ด ์ฌ์ ํ ํ์ํฉ๋๋ค. runtime
์ nvidia/cudagl:10.1-runtime-ubuntu18.04
๋ CUDA ๋ฐํ์ ๊ตฌ์ฑ ์์๋ฅผ ๋ํ๋
๋๋ค. ์ด๋ฅผ ํตํด CUDA๋ฅผ ์ฌ์ฉํ์ฌ GPU (Docker๊ฐ ์ปจํ
์ด๋์์ ์ ๊ณต)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ์ด๋ฏธ์ง์์ :
runtime: nvidia
๋ runc / containerd ๋ถ๋ถ์ ๋์ฒดํฉ๋๋ค. nvidia/cudagl:10.1-runtime-ubuntu18.04
๋ ์์ ํ ๊ทธ๋ฆผ ๋ฐ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค
@ Daniel451 ๋ฐฉ๊ธ ์ฃผ๋ณ์ ๋ฐ๋ผ ์์ง๋ง
generic_resources
ํค ์๋์์๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.services: my_app: deploy: resources: reservations: generic_resources: - discrete_resource_spec: kind: 'gpu' value: 2
(https://github.com/docker/cli/blob/9a39a1/cli/compose/loader/full-example.yml#L71-L74์์)
๋์์ธ ๋ฌธ์ : https://github.com/docker/swarmkit/blob/master/design/generic_resources.md๋ค์์ ์ด๋ฏธ ๋ณํฉ ๋ compose 3.8 ์คํค๋ง ์ง์๊ณผ ๊ด๋ จ๋ ์์ฑ ๋ฌธ์ ์ ๋๋ค. # 6530
๋ฐ๋ชฌ ์ธก์์
gpu
๊ธฐ๋ฅ์daemon.json
๋๋dockerd
CLI (์ด์ ํ๋ ์ฝ๋ฉ ๋ ๋ฐํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌ)์ ํฌํจํ์ฌ ๋ฑ๋ก ํ ์ ์์ต๋๋ค./usr/bin/dockerd --node-generic-resource gpu=2
๊ทธ๋ฐ ๋ค์ NVIDIA ๋์ปค ์ ํธ๋ฆฌํฐ์ ์ฐ๊ฒฐํ์ฌ ๋ฑ๋ก๋ฉ๋๋ค.
https://github.com/moby/moby/blob/09d0f9/daemon/nvidia_linux.go๊ธฐ๊ณ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์๋ฆฌ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฌธ์ํ ๋งํ๋ฉด๋ฉ๋๋ค.
์๋ ํ์ธ์, @johncolby , ์๋ํ์ง๋ง ์คํจํ์ต๋๋ค.
ERROR: The Compose file './docker-compose.yml' is invalid because:
services.nvidia-smi-test.deploy.resources.reservations value Additional properties are not allowed ('generic_resources' was unexpected)
์ด๋ค ์ ์?
๊ฐ์ฌ
๋ฐ์ด๋น๋
https://github.com/NVIDIA/nvidia-container-runtime ์์ nvidia-container-runtime 3.1.4.1
์ค์น ๋ฐ ํผํ
runtime: nvidia
https://docs.docker.com/compose/install/ ์์ ์ค์น ํ docker-compose 1.23.1
๋ฐ 1.24.1
๊ณผ ๊ฐ์ ๋ฉ์ฒญํ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ ์๋ํฉ๋๋ค.
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
๋ฐ ์๋ฅผ ๋ค์ด dockerhub์ nvidia / cudagl / 10.1-base ์ปจํ ์ด๋. cuda์ OpenGL ๋ ๋๋ง์ ์๋ํด ๋ณด์๋๋ฐ ๋ชจ๋ ๊ฑฐ์ ๊ธฐ๋ณธ ์ฑ๋ฅ์ ๋๋ค.
๋ด๋ถ์ ์ผ๋ก COMPOSE-82๋ก ์ถ์ ๋จ
์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์ผ๊ด์ฑ์ ์ํด docker stack
(https://github.com/docker/cli/blob/master/cli/compose/types/types.go#L156)์์๋ ๊ตฌํ๋์ด์ผํฉ๋๋ค.
https://github.com/NVIDIA/nvidia-container-runtime ์์
nvidia-container-runtime 3.1.4.1
์ค์น ๋ฐ ํผํruntime: nvidia
https://docs.docker.com/compose/install/ ์์ ์ค์น ํ
docker-compose 1.23.1
๋ฐ1.24.1
๊ณผ ๊ฐ์ ๋ฉ์ฒญํ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ ์๋ํฉ๋๋ค.sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
๋ฐ ์๋ฅผ ๋ค์ด dockerhub์ nvidia / cudagl / 10.1-base ์ปจํ ์ด๋. cuda์ OpenGL ๋ ๋๋ง์ ์๋ํด ๋ณด์๋๋ฐ ๋ชจ๋ ๊ฑฐ์ ๊ธฐ๋ณธ ์ฑ๋ฅ์ ๋๋ค.
docker-compose.yml์ ๊ณต์ ํ ์ ์์ต๋๊น?
์๋ ํ์ธ์, @ jdr-face,
๋ค์์ ํธ์คํธ ์ปดํจํฐ์ nvidia-container-runtime
๋ฅผ ์ค์นํ์ฌ ์ ์ํ ๋ด ํ
์คํธ์
๋๋ค.
version: '3.0'
services:
nvidia-smi-test:
runtime: nvidia
volumes:
- /tmp/.X11-unix:/tmp/.X11-unix
environment:
- NVIDIA_VISIBLE_DEVICES=0
- DISPLAY
image: vkcube
์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Unsupported config option for services.nvidia-smi-test: 'runtime'
andyneff๊ฐ ์์ ์ธ๊ธ ํ @ david-gwa :
runtime
์ (๋) 3.x ํ๋๊ทธ๊ฐ ์๋๋๋ค. 2.x ํธ๋ (2.3 ๋ฐ 2.4)์๋ง ์์ต๋๋ค.
@ david-gwa
docker-compose.yml์ ๊ณต์ ํ ์ ์์ต๋๊น?
version: '2.3'
services:
container:
image: "nvidia/cudagl/10.1-base"
runtime: "nvidia"
security_opt:
- seccomp:unconfined
privileged: true
volumes:
- $HOME/.Xauthority:/root/.Xauthority:rw
- /tmp/.X11-unix:/tmp/.X11-unix:rw
environment:
- NVIDIA_VISIBLE_DEVICES=all
ํ์์ ๋ฐ๋ผ ์ด๋ฌํ ์ต์ ์ค ์ผ๋ถ๋ ํ์ํ์ง ์์ ์ ์์ต๋๋ค. @muru๊ฐ ์์ธกํ๋ฏ์ด ํธ๋ฆญ์ ์ด์ ๋ฒ์ ์ ์ง์ ํ๋ ๊ฒ์ ๋๋ค. ์ ์ด๋ ๋ด ์ฌ์ฉ ์ฌ๋ก์์๋ ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ์๋์ง๋ง์ด ๊ตฌ์ฑ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๋ง ์ ๊ณตํฉ๋๋ค. ์ค์ ๋ก ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฅํด์ผํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค, @ jdr -face,
๊ทํ์ ์๋ฃจ์
์ด v3 compose ์ฉ์ด๋ผ๊ณ ์คํดํ์ต๋๋ค.
๊ธฐ๋ก์ ์ํด ์ ํต์ ์ผ๋ก ๋งํ๋ฉด compose v2๋ compose v3๋ณด๋ค ์ค๋๋์ง ์์์ต๋๋ค. ๊ทธ๋ค์ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค. v3์ ๋ผ๋ฅผ ํฅํ ๋ฐ๋ฉด v2๋ ๊ทธ๋ ์ง ์์ต๋๋ค. v1์ด ์ค๋๋์์ต๋๋ค.
Docker์ ๊ธฐ๋ณธ GPU ์ง์์์ํ Docker-compose ์ง์์ ๋ํ ๋ ผ์๊ฐ ์์ต๋๊น?
runtime
์ต์
์ง์์ ํฅํ GPU ์ง์์์ํ ์๋ฃจ์
์ด ์๋๋๋ค. NVIDIA๋ https://github.com/NVIDIA/nvidia-docker ์์ nvidia-docker2์ ๋ฏธ๋์ ๋ํด ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช
ํฉ๋๋ค.
Docker 19.03 ๋ฆด๋ฆฌ์ค์์๋ NVIDIA GPU๊ฐ ์ด์ Docker ๋ฐํ์์์ ์ฅ์น๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์๋๋ฏ๋ก nvidia-docker2 ํจํค์ง ์ฌ์ฉ์ด ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
ํ์ฌ GPU ์ง์์ ๋ฐํ์์ ๋ณ๊ฒฝํ์ฌ ์คํํ ์ ์์ง๋ง ์์ผ๋ก๋ ์๋ํ์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
์์งํ ๋งํด์, ์ด๊ฒ์ด ์ต์ ์ ๋ฐฉ๋ฒ์ ์๋ ์๋ ์์ง๋ง ์ด๋ป๊ฒ ๋ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์๋์ํต๋๋ค.
๊น๋ค๋ก์ด ๋ถ๋ถ์ docker swarm์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ docker-compose v3.x๋ฅผ ๊ณ ์ํด์ผํ๋ ๋ฐ๋ฉด, ์ปจํ ์ด๋์์ GPU / CUDA๋ฅผ ์ง์ํ๊ธฐ ์ํด Nvidia ๋ฐํ์์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
docker-compose ํ์ผ ๋ด์์ Nvidia ๋ฐํ์์ ๋ช
์ ์ ์ผ๋ก ์๋ฆฌ์ง ์๋๋ก /etc/docker/daemon.json
์์ Nvidia๋ฅผ ๊ธฐ๋ณธ ๋ฐํ์์ผ๋ก ์ค์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{
"default-runtime":"nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
GPU ๋จธ์ ์์ ์คํ๋๋ ๋ชจ๋ ์ปจํ ์ด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก Nvidia ๋ฐํ์์ ํ์ฑํํฉ๋๋ค.
์ด๊ฒ์ด ๋น์ทํ ์ฐจ๋จ์ ์ ์ง๋ฉด ํ ์ฌ๋์ ๋์ธ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์์งํ ๋งํด์, ์ด๊ฒ์ด ์ต์ ์ ๋ฐฉ๋ฒ์ ์๋ ์๋ ์์ง๋ง ์ด๋ป๊ฒ ๋ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์๋์ํต๋๋ค.
๊น๋ค๋ก์ด ๋ถ๋ถ์ docker swarm์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ docker-compose v3.x๋ฅผ ๊ณ ์ํด์ผํ๋ ๋ฐ๋ฉด, ์ปจํ ์ด๋์์ GPU / CUDA๋ฅผ ์ง์ํ๊ธฐ ์ํด Nvidia ๋ฐํ์์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
docker-compose ํ์ผ ๋ด์์ Nvidia ๋ฐํ์์ ๋ช ์ ์ ์ผ๋ก ์๋ฆฌ์ง ์๋๋ก
/etc/docker/daemon.json
์์ Nvidia๋ฅผ ๊ธฐ๋ณธ ๋ฐํ์์ผ๋ก ์ค์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.{ "default-runtime":"nvidia", "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } } }
GPU ๋จธ์ ์์ ์คํ๋๋ ๋ชจ๋ ์ปจํ ์ด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก Nvidia ๋ฐํ์์ ํ์ฑํํฉ๋๋ค.
์ด๊ฒ์ด ๋น์ทํ ์ฐจ๋จ์ ์ ์ง๋ฉด ํ ์ฌ๋์ ๋์ธ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐํ๋ ์ผ์ด๊ธฐ๋ํฉ๋๋ค. ์ง๊ธ์ ์๋ํ์ง๋ง ๋์๊ฒ๋ ์ฝ๊ฐ ์๋ง์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ณง ์์ ํ compose-v3 ์ง์์ ๊ธฐ๋ํฉ๋๋ค. :)
์ฌ์ฉ์๊ฐ docker> =
19.03
๋ง์ด๊ทธ๋ ์ด์ ํ ํ/etc/docker/daemon.json
์๋์ผ๋ก ์ฑ์ฐ๊ณnvidia-container-toolkit
๋์ ์ฌ์ฉํ๊ธฐ ์ํดnvidia-docker2
๋ฅผ ์ ๊ฑฐํ๋๋ก ์๋ ๋์์ต๋๊น?์ด๊ฒ์ ๋ง์ ์ค์น๋ฅผ ๋ง๊ฐ ๋จ๋ฆฌ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํนํ
--gpus
๋compose
์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์.
--gpus๋ compose์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
pycharm์ ์ฌ์ฉํ์ฌ docker๋ฅผ ์ฐ๊ฒฐํ์ฌ tensorflow-gpu๋ฅผ ์คํํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? --gpus๊ฐ ๊ณง docker-compose์์ ์ง์ ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ๋ ์ฌ๋๋ค์ ์ํด ์ฐ๋ฆฌ๊ฐ ํ ์ผ์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ํ์ผ์์ COMPOSE_API_VERSION=auto docker-compose run gpu
๋ฅผ ์คํํฉ๋๋ค.
version: '3.7'
services:
gpu:
image: 'nvidia/cuda:9.0-base'
command: 'nvidia-smi'
device_requests:
- capabilities:
- "gpu"
Docker 19.03.0 Beta 2์์ NVIDIA GPU์ ๋ํ ์ง์์ด ์๋ก์ด CLI API --gpus์ ํํ๋ก ๋์ ๋์์ต๋๋ค. docker / cli # 1714 ๋์ด ์ง์์ ๋ํด ์ด์ผ๊ธฐํฉ๋๋ค.
์ด์ GPU ๊ฐ์ Docker ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด --gpus ์ต์ ์ ๊ฐ๋จํ ์ ๋ฌํ ์ ์์ต๋๋ค.
$ docker run -it --rm --gpus all ubuntu nvidia-smi Unable to find image 'ubuntu:latest' locally latest: Pulling from library/ubuntu f476d66f5408: Pull complete 8882c27f669e: Pull complete d9af21273955: Pull complete f5029279ec12: Pull complete Digest: sha256:d26d529daa4d8567167181d9d569f2a85da3c5ecaf539cace2c6223355d69981 Status: Downloaded newer image for ubuntu:latest Tue May 7 15:52:15 2019 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 390.116 Driver Version: 390.116 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla P4 Off | 00000000:00:04.0 Off | 0 | | N/A 39C P0 22W / 75W | 0MiB / 7611MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+ :~$
์ค๋๋ถํฐ Compose๋์ด๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. NVIDIA GPU๋ฅผ ์ง์ํ๋๋ก Compose๋ฅผ ํ์ฑํํ๊ธฐ์ํ ๊ธฐ๋ฅ ์์ฒญ์ ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์๋ํด ๋ณผ ์ ์์ต๋๋ค. ๋ด csdn ๋ธ๋ก๊ทธ ์ฃผ์ : https://blog.csdn.net/u010420283/article/details/104055046
~ $ sudo apt-get install nvidia-container-runtime
~ $ sudo vim /etc/docker/daemon.json
๊ทธ๋ฐ ๋ค์์ด daemon.json ํ์ผ์ ๋ค์ ๋ด์ฉ์ ์ถ๊ฐํฉ๋๋ค.
{
"default-runtime": "nvidia"
"๋ฐํ์": {
"nvidia": {
"๊ฒฝ๋ก": "/ usr / bin / nvidia-container-runtime",
"runtimeArgs": []
}
}
}
~ $ sudo systemctl daemon-reload
~ $ sudo systemctl ๋์ปค ์ฌ์์
์์์ ์ค๋ช
ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค์ ํ๋ ค๋ ansible ์ฌ์ฉ์์ ๊ฒฝ์ฐ nvidia-container-runtime ์ ์ค์นํ๊ณ runtime: nvidia
๋ฅผ ์ฌ์ฉํ๋๋ก /etc/docker/deamon.json ์ ๊ตฌ์ฑํ๋
https://github.com/NVIDIA/ansible-role-nvidia-docker
(์ด๋ค ์ด์ ๋ก ์ฐ๋ถํฌ์ RHEL์์๋ง ์คํ๋์ง๋ง ์์ ํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค. ๋ฐ๋น์์์ ์คํํฉ๋๋ค)
๊ทธ๋ฐ ๋ค์ docker-compose.yml์์ :
version: "2.4"
services:
test:
image: "nvidia/cuda:10.2-runtime-ubuntu18.04"
command: "nvidia-smi"
GPU๋ฅผ ์ง์ํ๋ ๊ณต์ 3.x ๋ฒ์ ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์ฐ๋ฆฌ๋ ๋ฌด๋ฆฌ์ ํ์ํฉ๋๋ค :)
์ด ๊ธฐ๋ฅ์ ์ถ๊ฐ ํ ๊ณํ์ด ์์ต๋๊น?
์ด ๊ธฐ๋ฅ์ ๊ตฌํ ๊ณ ์ ํ์๊ธฐ - ํ์ ๋ฐ๋ผ device_requests
๋ฌด์ ๋งค๊ฐ ๋ณ์๋ฅผ --gpus
๋ก ๋ณํํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ์ํ ์ฌ๋ฌ ํ ์์ฒญ์ด์์์ต๋๋ค (https://github.com/docker/docker-py/pull/2419, https://github.com/docker/docker-py/pull/2465, https : / /github.com/docker/docker-py/pull/2471) ๊ทธ๋ฌ๋ ๊ด๋ฆฌ์์ ๋ฐ์์ด ์์ต๋๋ค. # 7124๋ https://github.com/docker/docker-py/pull/2471 ์ ์ฌ์ฉํ์ฌ Compose์์ ์ ๊ณตํ์ง๋ง ์ฌ์ ํ ์๋ฌด๋ ์๋ตํ์ง ์์ต๋๋ค.
# 7124์์ ์ธ๊ธํ๋ฏ์ด PR์๋ณด๋ค ์ค์ํ๊ฒ ๋ง๋๋ ๊ฒ์ด ๊ธฐ์ฉ๋๋ค.ํ์ง๋ง ๊ด์ฌ์ ๊ฑฐ์๋ฐ์ง ์์๊ธฐ ๋๋ฌธ์ ๋ณํฉ๋์ง ์์ ์ผ์ ์๊ฐ์ ๋ญ๋นํ๊ณ ์ถ์ง ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ญ์์ค. ๋ฉ์ง ๊ฒ์ ๋๋ค!
์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ญ์์ค! daemon.json์์ ๋ฐํ์์ ๋ณ๊ฒฝํ ์์๋ ์ด์ nevidia-docker2์ ๋ ๋ง์กฑํ์ต๋๋ค. ์ด๊ฑธ ๋ค์ ๊ฐ์ง๊ณ ์์ผ๋ฉด ๋งค์ฐ ์ข์ ๊ฒ์ ๋๋ค.
์ ๋ฐ ํ์ ํด์. ์ ๋ง ํ์ํฉ๋๋ค : /
์ด ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค!
๊ธฐ๋ณธ ๋ฐํ์ ํดํน์ด ์๋ํ์ง ์๋๋ก ๋์ผํ ์ปดํจํฐ์์ CPU์ GPU ์ปจํ ์ด๋๋ฅผ ๋ชจ๋ ์คํํด์ผํฉ๋๋ค. ์ด๊ฒ์ด ์ธ์ compose์์ ์๋ํ ์ง ์ ์ ์์ต๋๊น? compose์ ๋ฐํ์ ํ๋๊ทธ๊ฐ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ์ด๊ฒ์ ์ฌ๊ฐํ ๊ธฐ๋ฅ ํ๊ท๋ฅผ ๋ํ๋ ๋๋ค. ๊ทธ๋ ์ง ์์ต๋๊น? ์ด ์์ ์ ์ํํ๋ ค๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด์ผํฉ๋๋ค.
๊ธฐ๋ณธ ๋ฐํ์ ํดํน์ด ์๋ํ์ง ์๋๋ก ๋์ผํ ์ปดํจํฐ์์ CPU์ GPU ์ปจํ ์ด๋๋ฅผ ๋ชจ๋ ์คํํด์ผํฉ๋๋ค. ์ด๊ฒ์ด ์ธ์ compose์์ ์๋ํ ์ง ์ ์ ์์ต๋๊น? compose์ ๋ฐํ์ ํ๋๊ทธ๊ฐ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ์ด๊ฒ์ ์ฌ๊ฐํ ๊ธฐ๋ฅ ํ๊ท๋ฅผ ๋ํ๋ ๋๋ค. ๊ทธ๋ ์ง ์์ต๋๊น? ์ด ์์ ์ ์ํํ๋ ค๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด์ผํฉ๋๋ค.
๋น์ ์ docker cli๋ก ํ ์ ์์ต๋๋ค (docker run --gpu ....), ๋๋ ์ด๋ฐ ์ข ๋ฅ์ ํธ๋ฆญ์ ๊ฐ์ง๊ณ ์์ต๋๋ค (ํ๋ก์๋ฅผ ์ถ๊ฐํ์ฌ ๋ผ์ ๋ค๋ฅธ ๋ ธ๋์์ ์คํ๋๋ ๋ค๋ฅธ ์ปจํ ์ด๋์ ํต์ ํ ์ ์์ต๋๋ค). ๋์ปค ์๋น์ค ๋ช ๋ น (๋ด๊ฐ ์๋ ๋ฐ์ ๊ฐ์ด)์ด๋ ์์ฑ์ผ๋ก ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ๋ชจ๋ ๋ผ์์ ์คํํ ์์๋ ๊ธฐ๋ฅ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
@dottgonzo . ๊ธ์, ์ ;-). ๋๋ ์ด๊ฒ์ ์๊ณ ๋ฐ๋ผ์ ์คํฌ๋ฆฝํธ์ ๋ํ ์ฐธ์กฐ๋ฅผ ์๊ณ ์์ต๋๋ค. ํ์ง๋ง ์ด๊ฒ์ ๋งค์ฐ ๋์ฐํ๊ณ ์ด์์ฑ์ด์๋ ๋ฐฉ๋ฒ์ด๋ฏ๋ก ์ข ๋ ๋์ ์ธ ๋ฐฉ๋ฒ์ผ๋กํ๊ณ ์ถ์ต๋๋ค. ๋ด๊ฐ ๋งํ๋ฏ์ด ์ด๊ฒ์ ๊ธฐ๋ฅ ์์ฒญ์ด ์๋๋ผ ํ๊ท๋ฅผ ๋ํ๋ ๋๋ค.
COMPOSE_API_VERSION=auto docker-compose run gpu
@ggregoire ์ด๋์์ ์คํํฉ๋๊น? COMPOSE_API_VERSION = auto docker-compose run gpu?
์์ @joehoeller ๋ ๋ค๋ฅธ ๋ช ๋ น์ ๋ํด ์ํ
์ง๊ธ ์ฐ๋ฆฌ๋ 3.x ๊ธฐ๋ฅ์ด ํ์ํ์ง ๋๋ GPU ์ต์ ์ด ์ฌ์ ํ ์ง์๋๋ docker-compose 2.x๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ๋ชจ๋ ํ๋ก์ ํธ์ ๋ํด ๊ฒฐ์ ํ๊ณ ์์ต๋๋ค. Dockerfile์์ ๋ค๋จ๊ณ ๋์ ์คํ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ GPU๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ฌํ๊ฒ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ค์ ์ถ๊ฐํ์ญ์์ค!
docker-compose์์ ์์ง / ๋ ์ด์ ์ง์๋์ง ์๋ --gpus=all
์ ๊ฐ์ ํ๋๊ทธ๋ฅผ docker start / run ๋ช
๋ น์ ์ถ๊ฐ ํ ์์๋ docker-compose์ ๋ํ "์ถ๊ฐ ์ต์
"ํ๋์ ๊ฐ์ ๊ฒ์ ์ถ์ฒํ๊ณ ์ถ์ต๋๋ค. ํ์ง๋ง ์ต์ ๋์ปค ๋ฒ์ ์
๋๋ค. ์ด๋ ๊ฒํ๋ฉด compose ์ฌ์ฉ์๋ ์์ง ์ง์๋์ง ์๋ ์๋ก์ด docker ๊ธฐ๋ฅ์ด ํ์ํ ๊ฒฝ์ฐ docker-compose๊ฐ ๋ฐ๋ผ ์ก์ ๋๊น์ง ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค.
ํ๋ก๋์ ํ๊ฒฝ์ ์ํด Docker Swarm์์์ด๋ฅผ ์คํํ๋ ค๋ฉด ์ฌ์ ํ ํ์ํฉ๋๋ค. Docker Swarm์ด ์ ์ฉํ ๊น์?
@sebastianfelipe compose๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌด๋ฆฌ์ ๋ฐฐํฌํ๋ ค๋ ๊ฒฝ์ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๋น๊ต:
docker service create --generic-resource "gpu=1" --replicas 10 \
--name sparkWorker <image_name> \"service ssh start && \
/opt/spark/bin/spark-class org.apache.spark.deploy.worker.Worker spark://<spark_master_ip>:7077\"
์ด๋ฐ ์์ผ๋ก
docker stack deploy --compose-file docker-compose.yml stackdemo
@sebastianfelipe compose๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌด๋ฆฌ์ ๋ฐฐํฌํ๋ ค๋ ๊ฒฝ์ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๋น๊ต:
docker service create --generic-resource "gpu=1" --replicas 10 \ --name sparkWorker <image_name> \"service ssh start && \ /opt/spark/bin/spark-class org.apache.spark.deploy.worker.Worker spark://<spark_master_ip>:7077\"
์ด๋ฐ ์์ผ๋ก
docker stack deploy --compose-file docker-compose.yml stackdemo
์ฃ์กํฉ๋๋ค. ์ด๋ฏธ docker-compose yaml ํ์ผ์ ์ฌ์ฉํ์ฌ Docker Swarm๊ณผ ํจ๊ป ์๋ํ๊ณ ์์ต๋๊น? ํ์คํ๊ฒ : O. ๊ฐ์ฌ!
docker compose 2.x ์ ์ฉ
์ด ๋ฌธ์ ์ ์์ ์ docker-compose 3+์ ๋ํ nvidia-docker GPU ์ง์์ ์์ฒญํ๋ ๊ฒ์ ๋๋ค.
์๋ ์๋ขฐ๋ฅผ๋ฐ์ ์ง ๊ฑฐ์ 1 ๋ ! ์ ์ง์ฐ ?? ์ด๊ฑธ ์์ผ๋ก ๋์๊ฐ ์ ์์๊น์?
ํ @KlaasH @ulyssessouza @Goryudyuma @ chris-crone. ์ด๊ฒ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ๋ ์ฌ๋๋ค์ ์ํด ์ฐ๋ฆฌ๊ฐ ํ ์ผ์ด ์์ต๋๋ค.
- ์ด PR์์ docker-py ์ค์น : docker / docker-py # 2471
- ์ด PR์์ docker-compose ์ค์น : # 7124
๊ทธ๋ฆฌ๊ณ ๋ค์ ํ์ผ์์
COMPOSE_API_VERSION=auto docker-compose run gpu
๋ฅผ ์คํํฉ๋๋ค.version: '3.7' services: gpu: image: 'nvidia/cuda:9.0-base' command: 'nvidia-smi' device_requests: - capabilities: - "gpu"
์ ์ฒ๋ผ ์ฐธ์์ฑ์ด์๋ ๋ถ๋ค์ ์ํด ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ด pip install
๋ฒ์ ์ด ์์ต๋๋ค.
pip install git+https://github.com/docker/docker-py.git@refs/pull/2471/merge
pip install git+https://github.com/docker/compose.git@refs/pull/7124/merge
pip install python-dotenv
@yoanisgil์ ๋ํ ์์ฒญ๋ ๋ช
์ฑ!
์ฌ์ ํ ๊ณต์ ํจ์น๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๋ชจ๋ PR์ด ์ ์๋ฆฌ์ ์์ผ๋ฉด ์ด๋ค ํ์ค์์๋ ์ด๋ ต์ง ์์ต๋๋ค.
ํ @KlaasH @ulyssessouza @Goryudyuma @ chris-crone. ์ด๊ฒ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์๋์, ์ ์ ํ๋ฅผ ๋ฐ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ด๋ป๊ฒํด์ผํ๋์ง ๋งํด ์ฃผ์
จ์ผ๋ฉด ํด์?
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ค, ์ด์ 1 ๋ ์ด ๋์์ต๋๋ค ... ์ ๊ทธ๋ค์ด docker-py์ ํฉ๋ณ๋์ง ์๋ ๊ฑฐ์ฃ ...
์ ์ ๋ ๊ตฌํ์ด Compose ํ์์ ์ ํฉํ ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ข์ ์์์ ์ฐ๋ฆฌ๊ฐ ์ด์ ๊ฐ์ ๊ฒ์ ์ถ๊ฐ ํ ์๋๋ก ์์ฑ ํ์ ์ฌ์์ ์ด์๋ค๋ ๊ฒ์ ๋๋ค. ์ฌ์์ https://github.com/compose-spec ์์ ์ฐพ์ ์ ์์ต๋๋ค
์ ๊ฐ ์ ์ํ๊ณ ์ถ์ ๊ฒ์ ์ฌ์์ ๋ฌธ์ ๋ฅผ ์ถ๊ฐ ํ ๋ค์ ๊ณง์์ Compose ์ปค๋ฎค๋ํฐ ํ์ ์ค ํ๋์์ ๋ ผ์ํ๋ ๊ฒ์ ๋๋ค ( ์ด ํ์ด์ง ํ๋จ์์๋ ์ด๋ ๋งํฌ).
์๋ํฉ๋๋ค :
docker run --gpus all nvidia/cudagl:9.2-runtime-centos7 nvidia-smi
๊ทธ๋ ์ง ์์ต๋๋ค :docker run --runtime=nvidia nvidia/cudagl:9.2-runtime-centos7 nvidia-smi
๋น์ ์ ๊ฐ์ง๊ณ ์์ด์ผํฉ๋๋ค
{ "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } }
๊ณ์ ์์ ํ๋ ค๋ฉด
/etc/docker/daemon.json
์์--runtime=nvidia
์ ์ฌ๊ธฐ์ ๋ ๋ง์ ์ ๋ณด๊ฐ
Dockerd๋์ด ๋ฐ๋ชฌ์ผ๋ก ์์ํ์ง ์์ต๋๋ค.
์ธ์์, ์ด๊ฒ์ ๋ช ๋ ์ด ๊ฑธ๋ฆด ๊ฒ์ ๋๋ค : @
์๋ํฉ๋๋ค :
docker run --gpus all nvidia/cudagl:9.2-runtime-centos7 nvidia-smi
@deniswal : ์, ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์๊ณ ์์ง๋ง ์์ฑ ๊ธฐ๋ฅ์ ๋ํด ๋ฌป๊ณ ์์ต๋๋ค.
@ chris-crone : ํผ๋ ์ค๋ฝ์ต๋๋ค : ์ด๊ฒ์ ์ด์ ๋์์์ ํ๊ท๋ฅผ ๋ํ๋ ๋๋ค. ์ ์๋ก์ด ๊ธฐ๋ฅ ์ฌ์์ด ํ์ํฉ๋๊น? ์ผ๋ถ๋ GPU๋ฅผ ์ฌ์ฉํ๊ณ ์ผ๋ถ๋ ๋์ผํ ๋ฌผ๋ฆฌ์ ์์์์ CPU๋ฅผ ์ฌ์ฉํ๋ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง ์์ต๋๊น?
๊ณ ๋ คํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
@ vk1z AFAIK Docker Compose๋ GPU๋ฅผ ์ง์ํ์ง ์์์ผ๋ฏ๋ก ํ๊ท๊ฐ ์๋๋๋ค. ๋์์ธ์ ํ์๋กํ๋ ๋ถ๋ถ์ ์์ฑ์ GPU (๋๋ ๋ค๋ฅธ ์ฅ์น) ํฌ๋งทํ ๋ฐ ํนํ ๊ฐ์ ๋ณํ์ ๋ํ ์๋น์ค์ ํ์ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ด๋ค ์ด . ๊ทธ ํ์๋ ๋ฐฑ์๋๋ก ์ฐ๊ฒฐ๋์ด์ผํฉ๋๋ค.
์๋
ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ฌ๊ธฐ์์ ์ ์ ๋ ๋ช ๊ฐ์ง ์๋ฃจ์
์ ์๋ํ์ง๋ง ์๋ฌด๋ฐ ํจ๊ณผ๊ฐ ์์์ต๋๋ค. ์๋ฅผ ๋ค์ด @miriaford ๊ฐ ์ ๊ฒฝ์ฐ์๋ ์๋ํ์ง ์์๊ณ GPU๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด Docker ์ปจํ
์ด๋๋ฅผ ์คํํ ์์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
16GB ๋จ์ i7์ ์ฌ์ฉํ๊ณ ์์ง๋ง ์ผ๋ถ ํ๋ก์ ํธ์ ๋น๋๋ฅผ ์๋ฃํ๋ ๋ฐ ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ์ ๋ชฉํ๋ GPU ์ฑ๋ฅ์ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค ์๋๋ฅผ ๋์ด๋ ๊ฒ์
๋๋ค. ๊ฐ๋ฅํฉ๋๊น? ๊ฐ์ฌ!
@ chris-crone : ๋ค์ ๋งํ์ง๋ง, 2.4 ๊ตฌ์ฑ ํ ๋ฐํ์ : ๋งค๊ฐ ๋ณ์๊ฐ compose์์ ์ฌ๋ผ์ก๊ธฐ ๋๋ฌธ์ ์์ ๋์ง ์์์ต๋๊น? ๊ทธ๊ฒ์ด ํ๊ท๋ผ๊ณ ๋๊ผ๋ ์ด์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ์๋, ์ด์จ๋ ์ฐ๋ฆฌ ๋ชจ๋ 3.x์ ์์ด์ผํ๋ฏ๋ก ์ง๊ธ์ ์ค์ํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ์ ์ถํ๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค. ์ฌ์ ์ ์ฅ์์ ์ฌ์์ ๋ํด ๊ทธ๋ ๊ฒํ๋์?
2.4 ๊ตฌ์ฑ ํ ๋ฐํ์ : ๋งค๊ฐ ๋ณ์๊ฐ compose์์ ์ฌ๋ผ์ก๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ์ง ์์ต๋๊น? ๊ทธ๊ฒ์ด ํ๊ท๋ผ๊ณ ๋๊ผ๋ ์ด์ ์ ๋๋ค.
๋ค, ๋ง์ต๋๋ค. Docker-compose ํ์ผ์์ runtime: nvidia
์ฌ์ฉ์ ์์กดํ๋ ํ๋ก์ ํธ๊ฐ ๋ช ๊ฐ ์๋๋ฐ,์ด ๋ฌธ์ ๋ GPU๋ฅผ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ 3.x๋ก ์
๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ ์ฐจ๋จํฉ๋๋ค.
์๋
ํ์ธ์, ์ ๋ฐ, ์ ๋ฐ ๊ณ ์ณ์ฃผ์ธ์.
๋ฏธ์
ํฌ๋ฆฌํฐ์ปฌ ์ฐ์ ์์ -20์ผ๋ก ํ์๋์ด์ผํฉ๋๋ค.
๋ค์ ๋งํ์ง๋ง, 2.4 ๊ตฌ์ฑ ํ ๋ฐํ์ : ๋งค๊ฐ ๋ณ์๊ฐ compose์์ ์ฌ๋ผ์ก๊ธฐ ๋๋ฌธ์ ์์ ๋์ง ์์์ต๋๊น? ๊ทธ๊ฒ์ด ํ๊ท๋ผ๊ณ ๋๊ผ๋ ์ด์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ์๋, ์ด์จ๋ ์ฐ๋ฆฌ ๋ชจ๋ 3.x์ ์์ด์ผํ๋ฏ๋ก ์ง๊ธ์ ์ค์ํฉ๋๋ค.
๋ณ๊ฒฝ ์ฌํญ์ด์์ ๋ ์ฌ๊ธฐ์ ์์๊ธฐ ๋๋ฌธ์ ์ญ์ ๋ ์ด์ ๋ฅผ 100 % ํ์ ํ ์ ์์ต๋๋ค. ๋ ์ด์ GPU๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด NVIDIA ๋ฐํ์์ด ํ์ํ์ง ์์ผ๋ฉฐ ๋จ์ผ ๋ฒ์ ์ ์ฌ์์ ๋ง๋ค๋ ค๋ ์๋๋ก ์ฌ๊ธฐ ์์ Compose v3 ์ฌ์์ ๋ฐ์ ์ํค๊ณ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ์ด๋ ์ผ๋ถ v2 ๊ธฐ๋ฅ์ v3๋ก ์ด๋ํ๋ ๊ฒ์ ์๋ฏธ ํ ์ ์์ต๋๋ค.
runtime
ํ๋์ ๊ด๋ จํ์ฌ ๋จ์ผ ๋
ธ๋์์ ์คํํ๋ ๋ฐ ๋งค์ฐ ๊ตฌ์ฒด์ ์ด๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด Compose ์ฌ์์ ์ถ๊ฐ๋์ด์ผํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์ด์์ ์ผ๋ก๋ ์ํฌ๋ก๋์ ๊ธฐ๊ธฐ ์๊ตฌ ์ฌํญ (์ : GPU, TPU, ๋ค์์ ์ค๋ ๋ชจ๋ ํญ๋ชฉ)์ด ์์์ ์ง์ ํ ๋ค์ ์ค์ผ ์คํธ๋ ์ดํฐ๊ฐ ํด๋น ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋
ธ๋์ ์ํฌ๋ก๋๋ฅผ ํ ๋น ํ ์์๋ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค.
์ด ํ ๋ก ์ Python Docker Compose์ ๊ด๋ จ์ด ์๊ธฐ ๋๋ฌธ์ ์ฌ์์ ๋ํด ์ด๋ฃจ์ด์ ธ์ผํฉ๋๋ค.
@ chris-crone : ๋๋ ๋๋ถ๋ถ ๋น์ ์ ์ง์ ์ ๋์ํฉ๋๋ค. ๋จ๊ธฐ ํดํน์ ์ถ๊ฐํ๋ ๊ฒ์ ์์ฒด ๋ฐํ์์ด์๋ ์์ง ์ฅ์น๊ฐ ๊ธ์ฆํ๊ธฐ ๋๋ฌธ์์ด๋ฅผ ์ํํ๋ ์๋ชป๋ ๋ฐฉ๋ฒ ์ผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Pi์ TPU (Google), VPU (Intel) ๋ฐ ARM GPU๊ฐ ์์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ ์์ ํ ์ด์ผ๊ธฐ๊ฐ ํ์ํฉ๋๋ค.
์ค๋ ์ฌ์์ ๋ํ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๊ณ ์์ ์ ๋ง์น๋ฉด์ด ์ค๋ ๋๋ฅผ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค. ํ์ง๋ง ์ ๋ ์ค์ผ ์คํธ๋ ์ดํฐ๊ฐ ๋ ๋ฆฝ์ ์ด์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด Kube๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ทธ๋ ๊ฒ ํ ์ ์์ด์ผํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๋ฒ์์ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋๋ GPUs ๋ฌธ ์ฌ์ฉ์ ๋์ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ compose์์ ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ์ ๋ถ์ ๋๋ค. ํ์ง๋ง ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ํด๊ฒฐํ๊ณ ์ถ์ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์ดํดํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@ chris-crone : ์ ์ถ ๋ docker-compose ์ฌ์ ๋ฌธ์ ๋ฅผ ์ฐธ์กฐํ์ธ์. ๋๋ ์ง๊ธ๋ถํฐ ๊ทธ ๋ฌธ์ ์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๋ฅผ ๊ฒ์ ๋๋ค.
๋จ์ํ extra_docker_run_args
์ ๊ฐ์ ์ต์
์ ์ถ๊ฐํ์ฌ ๊ธฐ๋ณธ docker run
์ธ์๋ฅผ ์ง์ ์ ๋ฌํ ์ ์์ต๋๊น? ์ด๊ฒ์ ํ์ฌ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ฟ๋ง ์๋๋ผ ๋ฏธ๋์๋ ๋ณด์ฅ๋ฉ๋๋ค. docker๊ฐ "XPU", โโ"YPU"๋๋ ๋ฏธ๋์ ๋์ฌ ๋ค๋ฅธ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ์ง์์ ์ถ๊ฐํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
docker๊ฐ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐ ํ ๋๋ง๋ค ๊ธด ์๋ค๋ก ๋
ผ์ํด์ผํ๋ ๊ฒฝ์ฐ ๋งค์ฐ ๋นํจ์จ์ ์ด๋ฉฐ docker-compose
์ docker
์
๋ฐ์ดํธ ์ฌ์ด์ ๋ถ๊ฐํผํ ์ง์ฐ (๋ถํ์ํ ํผ๋)์ด ๋ฐ์ํ ๊ฒ์
๋๋ค. ์ธ์ ์์์ ์ง์ํ๋ฉด ํฅํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํด์ด ๋ฐ๋ณต์ ์ธ ๋ฌธ์ ๋ฅผ ์ผ์์ ์ผ๋ก ์ํ ํ ์ ์์ต๋๋ค.
@miriaford ํด์๋์ง ์์ blob์ ์ ๋ฌํ๋ ๊ฒ์ด ์ ์ธ์ ์ด๋ผ๋ ์์ฑ ๊ฐ๋ ์ ์ง์ํ๋์ง ํ์คํ์ง ์์ต๋๋ค. ์ด์ ๋ฐํ์ ํ๊ทธ๋ ์ ์ด๋ ๋ฐํ์๊ณผ ๊ด๋ จ์ด ์์์ ๋ํ๋ ๋๋ค. ๋ ์ปค๊ฐ ์ ํํ๋ ๋ฐฉํฅ (docker-apps)์ ๊ฐ์ํ ๋ ์ค์ผ ์คํธ๋ ์ดํฐ๊ฐ ์์์ blob์ ๊ตฌ๋ฌธ ๋ถ์ํด์ผํ๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒํ๋ฉด ์ ์ธ์ ๋ฐฐํฌ๊ฐ ๋ ์ด๋ ค์ ์ง ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ฌ๋ ๋๋ compose์ docker ๊ฐ ๋๊ธฐํ ํด์ผ ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค (์ฃผ์ ๋ฆด๋ฆฌ์ค ์์๋ ๋ถ๊ตฌํ๊ณ ).
@ vk1z ๋์ํฉ๋๋ค- compose
์ docker
์ฌ์ด์ ํจ์ฌ ๋ ๋์ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ด ์์ด์ผํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ฉ์ปค๋์ฆ์ด ์กฐ๋ง๊ฐ ์ค๊ณ ๋ ๊ฒ์ด๋ผ๊ณ ๋ ์๊ฐํ์ง ์์ต๋๋ค. ํํธ, ์์ค ์ฝ๋๋ฅผ ๊น์์ด ํดํนํ์ง ์๊ณ ์์ฒด ๋๊ธฐํ๋ฅผ ์ํ ํ ์์๋ ์์ ๋ฐฉ๋ฒ๋ ํ์ํฉ๋๋ค.
์ธ์ ์์ ์ ์์ด ์ ํ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๋ ๋ฌด์์ ์ ์ํฉ๋๊น? ์์ ํด๊ฒฐ์ฑ ์ด ์๋๋ผ๋ ๋ฐ ๋์ํ์ง๋ง์ด ํด๊ฒฐ ๋ฐฉ๋ฒ๋ณด๋ค ์ ์ด๋ _ ํจ์ฌ _ ๋ซ์ง ์์ต๋๊น? https://github.com/docker/compose/issues/6691#issuecomment -616984053
@miriaford docker-compose๋ ์ธ์๋ก docker Executive๋ฅผ ํธ์ถํ์ง ์์ผ๋ฉฐ ์ค์ ๋ก docker ๋ฐ๋ชฌ์ http API๋ฅผ ์ฌ์ฉํ๋ docker_py๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ "๊ธฐ๋ณธ docker run
"๋ช
๋ น์ด ์์ต๋๋ค. Docker CLI๋ API๊ฐ ์๋๋ฉฐ ์์ผ ์ฐ๊ฒฐ์ API ์ ์ ์
๋๋ค. ์ด๊ฒ์ด ํญ์ ๊ทธ๋ ๊ฒ ์ฌ์ด ๊ฒ์ ์๋๋๋ค.
๊ณผ๋ํ๊ฒ ๋จ์ํํ๊ธฐ ์ํด ๋์ปค๋ฅผ ์คํํ๋ ๊ณผ์ ์์ ๋ ๊ฐ์ง ์ฃผ์ ํธ์ถ์ด ์์ต๋๋ค. ํ๋๋ ์ปจํ
์ด๋๋ฅผ ์์ฑํ๊ณ ํ๋๋ ์์ํ๋ ํธ์ถ์
๋๋ค. ๋๋ ์ฐ๋ฆฌ๊ฐ docker
CLI๋ฅผ ์๋ ๊ฒฝํฅ์ด์๋ ๊ฒ ๊ฐ์ง ์์ต๋๋ค. docker_py ํธ์ถ์ ์ถ๊ฐ ์ธ์๋ฅผ ์ถ๊ฐ ํ ์์๋ ๊ฒ์ด ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ ์ธํ๊ณ ์๊ฐ๋งํผ ์ ์ฉ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์ํฉ์ ๋์ฑ ์ด๋ ต๊ฒ ๋ง๋ค๊ธฐ ์ํด ๋๋๋ก docker_py ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ API ๋ค์ ์์ผ๋ฉฐ ํ์ํ ๋ชจ๋ ๊ฒ์ด ์ฆ์ ํฌํจ๋์ง ์๊ณ ์
๋ฐ์ดํธ ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผํฉ๋๋ค. ์ง๊ธ๊น์ง extra_docker_run_args
๋ ๋จ์ํ ํด๊ฒฐ์ฑ
์ด ์๋๋๋ค.
@andyneff ์ค๋ช ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ค์ ๋ก ์ ๋ Docker์ ๋ด๋ถ ์๋์ ๋๋ฌด ์ต์ํ์ง ์์ต๋๋ค. ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ค๋ฉด ์๋ก์ด ๊ธฐ๋ฅ ์ ๋ฐ์ดํธ๋ฅผ ์ํด ์๋์ผ๋ก ๋๊ธฐํํด์ผํ๋ 4 ๊ฐ์ API ๊ฐ ์์ต๋๋ค.
docker_py
์ด๊ฒ์ ์ ์๋ (๋๋ ์ ์ด๋ ๋ฐ์๋) ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ด ์๋๊ฐ? 4 ๊ฐ์ API์ ์๋ก์ด ๊ธฐ๋ฅ ์ ๋ฐ์ดํธ๋ฅผ ์๋์ผ๋ก ์ ํํ๋ ๊ฒ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ๊ณ ์ง์ฐ๋๊ธฐ ์ฌ์ฐ ๋ฉฐ ํผ๋์ค๋ฌ์ ๋ณด์ ๋๋ค.
์ถ์ : ์๋ ๋๊ธฐํ๋ฅผํ๋ ๊ฒ์ด _ ๊ฐ๋จํ _ ์์ ์ด๋ผ๋ ๋ง์ ์๋์ง๋ง, ๋ฏธ๋์ ์ถ์ ๋ ์ฝ๊ฒ ๋ง๋ค ์์๋ ์์ ์ด ์์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด์ ์ข ํํ์ ๋น ์ ธ๋ค๊ณ ์์ด์ ...ํ์ง๋ง ์ ๊ฐ ์ค๋ช ํ๊ฒ ์ง๋ง ...
socat
์ฌ์ฉํ๋ ๊ฒ์ ์์) ์ผ ์๋ ์์ต๋๋ค.docker
CLI๋์ด API๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ฉ์ง ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.๊ทธ๋ ์ต๋๋ค.
๋๋ docker_py ๋๋ compose์ ๋ํด ๋งํ ์ ์์ง๋ง ๊ทธ๋ค์ด ๊ทธ๊ฒ์ ๊ธฐ์ฌํ๋ ์ฌ๋ ์๊ฐ์ด ์ ํ๋์ด ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ docker๊ฐ ์ง์์ ์ผ๋ก ์ถ๊ฐํ๋ ๋ฏธ์น ๋ฏธ์น ๋์ปค ๊ธฐ๋ฅ์ ๋ชจ๋ ๋ฐ๋ผ ์ก๊ธฐ๊ฐ ๋ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ฌ๋ docker๋ go ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ํ์ด์ฌ ์ง์์ (ํ์ฌ) ์ผ๋ฅ ์๋ฏผ์ด ์๋๋๋ค. ๋ ํ๋ก์ ํธ๊ฐ ๋ชจ๋ ๋์ปค ์ฐ์ฐ ์๋ ์๋ค๋ ๊ฒ์ด ์ข์ง๋ง ์ ์ด๋ github ์กฐ์ง ๊ด์ ์์ ๋ณผ ๋.
๊ทธ๋์ ๋ชจ๋ ๋งํ๋ฉด ... ์ ๋ ๋๋ฑํ --gpus
์ง์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ผ๋ฉฐ, ๋์ ์ ์ด์ runtime: nvidia
๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค. ์ต์ํ ์ด๋ ๊ฒฝ๋ก๋ฅผ "a"์ ๊ณต ํ ๊ฒ์
๋๋ค. docker-compose 2.x์์ ์์ผ๋ก.
@andyneff ์ฐธ๊ณ ๋ก ์ต์ docker-compose์ Docker CLI ์ง์์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋น๋ ํท์ ์ฌ์ฉํ ์ ์์ต๋๋ค. https://www.docker.com/blog/faster-builds-in-compose-thanks-to-buildkit-support/
@andyneff ์ด๊ฒ์ ๋งค์ฐ ์ ์ฉํ ๊ฐ์์ ๋๋ค! ๋ค์ ํ ๋ฒ ๊ฐ์ฌํฉ๋๋ค
@lig ๊ต์ฅํฉ๋๋ค! ์์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ ๋ ์ค์ ๋ก "๋น๋ ํท์ด์ด ๋ชจ๋ ๊ฒ์ ์ด๋ป๊ฒ ๋ค์ด ๋ง์๊น"๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
๋ด๊ฐ ์กฐ๊ธ ๋๋ ๊ฒ์ docker-compose๊ฐ ์๋ก์ด docker-app ํ๋ ์ ์ํฌ์ ๋งค์ฐ ๋ณธ์ง์ ์ธ ๋ถ๋ถ์ด๋ฉฐ ์ ์ด๋ ๊ทธ ์ด์ ๋๋ฌธ์ docker-compose์ docker๋ฅผ ๋๊ธฐํํ๊ณ ์ถ์ดํ๋ค๋ ๊ฒ์ ๋๋ค. ์ฐจ๋จ๊ธฐ๊ฐ ์ค์ ๋ก ๋ฌด์์ธ์ง ๊ถ๊ธํฉ๋๋ค. ํ์ด์ฌ ๋์ญํญ์ด ์ถฉ๋ถํ์ง ์์ต๋๊น? ์กฐ๊ธ ๋ฏฟ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด Docker Swarm์ @andyneff๊ฐ ๋ฐฉ๊ธ ์ค๋ช
ํ ๊ตฌ์กฐ์ ์ด๋ป๊ฒ ๋ง์ต๋๊น? Swarm์ compose ํ์ผ ํ์ ๋ฒ์ 3 ( "compose"ํ๋ก์ ํธ์์ ์ ์?)์ ์ฌ์ฉํ์ง๋ง docker
?
์ด ํน์ ๋ฌธ์ ์ ๋ํด ์ฃผ์ ๋ฅผ ๋ฒ์ด๋ ๊ฒฝ์ฐ ์ฌ๊ณผ๋๋ฆฝ๋๋ค. ๋๋ ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์ถ์ ํ์ง ๋ชปํ์ง๋ง, ํน์ ๋ฐํ์์ ์ฌ์ฉํด์ผํ๋ค๋ ๊ฒ์ ๋ผ์์ ์คํ๋๋ ์๋น์ค์ ์๋ฆฌ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ฅด๊ธฐ ์์ํ์ต๋๋ค. compose-file ์ฌ์์ v2์์๋ง ๊ฐ๋ฅํฉ๋๋ค. ์ฆ, v3์ด ํ์ํ Swarm์์๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ฆ, docker-compose CLI๊ฐ ์ํํ๋ ์์ ์๋ ์ค์ ๋ก ๊ด์ฌ์ด ์์ง๋ง docker swarm์์ ์ฌ์ฉํ๋ docker-compose.yml ํ์ผ์ ๋ํด ์ ์ ๋ ์ฌ์์๋ง ๊ด์ฌ์ด ์์ต๋๋ค.
์ค ๋ผ, ๋๋ง์น ์ฌ๋ ... (๋ด๊ฒ์). ๋ถํํ๋ ๊ทธ๊ฒ์ BOT์ ์ํด ๋ซํ # 6239์ ๋๋ค. :( ๋๊ตฐ๊ฐ # 6240์์ ์๋ํ์ง๋ง ...
@miriaford , ๋๊ธฐํ์ ๋ํ PR์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค! # 6642 ?! (v3 ์ ์ฉ์ธ๊ฐ์ ???)
๋ฐ๋ผ์ ์ค์์ ํน์ฑ์ผ๋ก ์ธํด ์ค์ ๋ ธ๋์์ ์ํํ๋ ์์ ๊ณผํ์ง ์๋ ์์ ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ Docker API๋ ์ผ๋ฐ์ ์ธ ์คํ๊ณผ ๊ฐ์ด ๋ฌด๋ฆฌ ์คํ์์ ํญ์ ๋์ผํ ์ต์ ์ ์ํํ๋๋ก ํ์ฉํ์ง ์์ต๋๋ค. ๋ฐํ์์ด ์ด๋ฌํ ์์ ์ค ํ๋์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์ด๊ฒ์ด ์ข ์ข v3 (์ค์ ํธํ ๋ฒ์ )์์ ์์ ์ ์ํ ํ ์์๊ณ v2 (์ค์ ํธํ ๋ฒ์ ์ด ์๋ ๋ฒ์ )์์๋ ํ ์์๋ ์ด์ ์ ๋๋ค.
์ด ๊ธ์ ์ฝ๋ ์ฌ๋์ ๋ํฌ๋ค์ด ๋ฌด์จ ๋ง์ํ๋์ง ๋ชจ๋ฅธ๋ค.
์ฐ๋ฆฌ ๋ชจ๋๋ ํ๋์จ์ด ๊ฐ์ ๊ธฐ๋ฅ์ด์๋ jellyfin์ ๋ฐฐํฌํ๋ ค๊ณ ํฉ๋๋ค.
์ฌ๋ฌ๋ถ์ด์ด ๋ฌธ์ ๋ฅผ ์๋๋๋ก ๋๋๋ฆฌ๊ธฐ ์ ๊น์ง๋ ์๋น์ค๋ผ๊ณ ํ ๋ 3.x๋ ์ข์ง ์์ต๋๋ค.
๊ทธ๊ฒ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
์๋น์ค๋ฅผ ์ํด 2.4๋ฅผ ์
๋ ฅํด์ผํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ jellyfin, ez์ ํ๋์จ์ด ๊ฐ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์, ์ฌ๋ฌ๋ถ, ์ด๊ฒ์ ๋ํ ETA๋ 1 ๋ , 2 ๋ ?
@KlaasH @ulyssessouza @Goryudyuma @ chris-crone ์๋ ํ์ธ์, ์ ๋์ด ๋ฌธ์ ์ ๋ํด ์์ ์ค์ ๋๋ค. "docker-py"์์ ์ง์์ด ๋๋ฝ๋์์์ ๋ฐ๊ฒฌํ์ต๋๋ค. ํด๋น ๋ถ๋ถ์์ ์์ ํ์ต๋๋ค. ์ด์ ์๋ํ๊ฒํ๋ ค๋ฉด docker-compose.yml ํ์ผ์ ํตํด ๊ตฌ์ฑ์ ์ ๋ฌํด์ผํฉ๋๋ค. ์คํค๋ง๋ฅผ ๋์ ์ค ์ ์์ต๋๊น? ์ฆ, ์ถ๊ฐํ๋ ค๋ฉด ์ ์คํค๋ง์ ์ถ๊ฐํด์ผํ๊ฑฐ๋ ๊ตฌ์ฑ์ ์ ๋ฌํ ์์๋ ์์น๊ฐ ์์ด์ผํฉ๋๋ค.
@fakabbir ๋๋ ์ด๊ฒ์ ์ํด COMPOSE_DOCKER_CLI_BUILD
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ด์ฐฎ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. docker run
์ธ์์ ์์ ๋ชฉ๋ก์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ฉด ํฅํ ์ ์ฌํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ ์๋ ์์ต๋๋ค.
@lig ํ๋์ ์๋น์ค ๋ง GPU์ ์ก์ธ์ค
@lig AFAICS compose๋ docker-py
docker run
cli ๋์ docker-py
์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ์์์ docker run
์ธ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ docker-py
์ง์ํ์ง ์๋ ํ ์๋ํ์ง ์์ต๋๋ค.
์ฐธ์กฐ : https://github.com/docker/compose/issues/6691#issuecomment -585199425
์ด ํ๋์ ๊ฒ์ ๋ง์ ์ฌ๋๋ค์๊ฒ docker-compose์ ์ ์ฉ์ฑ์ ํฌ๊ฒ ๋จ์ด ๋จ๋ฆฝ๋๋ค. ํนํ ์ค๋๋ docker-compose์์ ์๋ํ์ ๋ ๋ง์ ๊ด์ฌ๊ณผ ์๊ตฌ๋ฅผ ๋ณด์ง ๋ชปํ๋ค๋ ๊ฒ์ ๋งค์ฐ ๋๋์ต๋๋ค.
ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์์์ docker --run ์ธ์๋ฅผ docker-compose ํ์ผ์ ์ ๊ณตํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ ๋ค์ --gpus all ์๋ฅผ ๋ค์ด docker์ ์ ๋ฌํ ์ ์์ต๋๋ค.
๋๋ ํน์ ํ ๋ฐฉ์์ผ๋ก ๊ทธ๊ฒ์ํ๊ณ ์ถ์ดํ๋ ์ฒ ํ์ ๋๋ ๊ธฐ์ ์ ์ด์ ๊ฐ์์ ์ ์์์ ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์ ๋ป์ง ์๊ณ ์ด๋ค ์ ์ผ๋ก๋ ๊ทธ๊ฒ์ํ๋ ๊ฒ์ ๋ง์์ ๋นํ ๊ฑฐ๋ฆฌ๊ฒํฉ๋๋ค.
@lig ํ๋์ ์๋น์ค ๋ง GPU์ ์ก์ธ์ค
ํ๊ฒฝ ๋ณ์ NVIDIA_VISIBLE_DEVICES๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ด ํ ์ ์์ต๋๋ค.
์ด ํ๋์ ๊ฒ์ ๋ง์ ์ฌ๋๋ค์๊ฒ docker-compose์ ์ ์ฉ์ฑ์ ํฌ๊ฒ ๋จ์ด ๋จ๋ฆฝ๋๋ค. ํนํ ์ค๋๋ docker-compose์์ ์๋ํ์ ๋ ๋ง์ ๊ด์ฌ๊ณผ ์๊ตฌ๋ฅผ ๋ณด์ง ๋ชปํ๋ค๋ ๊ฒ์ ๋งค์ฐ ๋๋์ต๋๋ค.
ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์์์ docker --run ์ธ์๋ฅผ docker-compose ํ์ผ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ --gpus all ์๋ฅผ ๋ค์ด docker์ ์ ๋ฌํ ์ ์์ต๋๋ค.
๋๋ docker --run
args ์ ๋ฌ์ ํ์ฉํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. compose
๋ ์ค์ ๋ก docker
์์ฒด๋ฅผ ํธ์ถํ์ง ์๊ณ ๋์ docker-py
ํฉ๋๋ค.
๋๋ ํน์ ํ ๋ฐฉ์์ผ๋ก ๊ทธ๊ฒ์ํ๊ณ ์ถ์ดํ๋ ์ฒ ํ์ ๋๋ ๊ธฐ์ ์ ์ด์ ๊ฐ์์ ์ ์์์ ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์ ๋ป์ง ์๊ณ ์ด๋ค ์ ์ผ๋ก๋ ๊ทธ๊ฒ์ํ๋ ๊ฒ์ ๋ง์์ ๋นํ ๊ฑฐ๋ฆฌ๊ฒํฉ๋๋ค.
์ด์ ๋ํ PR์ด ์ด๋ ค ์์ต๋๋ค : https://github.com/docker/compose/pull/7124. "์์ ์ก์ผ์ญ์์ค".
๋๋ docker compose spec์ ๋ณ๊ฒฝ์ ๋ฐ๋ผ compose 2.4์ ๋ฐ๋ผ ์ด์ ํธํ์ฑ์ผ๋ก ๊ณง ๋์์์ผํ๋ฉฐ nvidia ๋ฐํ์์ด ์๋ํ๋ค๊ณ ๋ฏฟ์ต๋๋ค. ๋ถ๋ช ํ TPU ๋๋ ๊ธฐํ ๊ฐ์๊ธฐ์์๋ ์๋ํ์ง ์์ต๋๋ค. ๋งค์ฐ ์ํ๊น์ง๋ง (๋น์ผ) nvidia gpus๋ฅผ ์คํํ๋ ค๋ ์ฌ๋๋ค์๊ฒ๋ ์๋ํฉ๋๋ค.
๋ฐ๋ผ์ docker-py์ ๋ น์ PR์ด ๋ณํฉ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. https://github.com/docker/docker-py/pull/2471
๋ค! docker-py์ PR์ด ์น์ธ๋์์ต๋๋ค! https://github.com/docker/docker-py/pull/2471
์ฌ๊ธฐ์ ๋ค์ ๋จ๊ณ๋ ๋ฌด์์
๋๊น?
์ฌ๊ธฐ์ ๋ญ๊ฐ ์์ด์? docker-compose์์ nvidia ๋ฐํ์์ ์ง์ํ ์ ์์ผ๋ฉด ๋ฉ์ง ๊ฒ์ ๋๋ค.
https://github.com/docker/docker-py/pull/2471 ์ด ๋ณํฉ๋์์ต๋๋ค.
docker / docker-py # 2471 ์ด ๋ณํฉ๋์์ผ๋ฏ๋ก master์์ docker-py๋ฅผ ์ค์นํ ์ ์์ต๋๋ค. ํ์ง๋ง docker-compose๊ฐ @yoanisgil ์ ๋ฉ์ง [PR] (https://github.com/docker/compose/pull/7124) (Kudos!) ์ดํ๋ก ๋ณ๊ฒฝ
์ด์ ๋๊ธ์ ๋ณด์ง ์๊ณ ์ฌ๊ธฐ์ ์จ ์ฌ๋๋ค์ ์ํด :
pip install git+https://github.com/docker/docker-py.git
pip install git+https://github.com/yoanisgil/compose.git@device-requests
๊ทธ๋ฐ ๋ค์ ์์ฑ ํ์ผ์์ ๋ค์ ํ ํ๋ฆฟ์ ์ฌ์ฉํฉ๋๋ค. (์ถ์ฒ : ์๊ฒฌ ) :
๊ทธ๋ฆฌ๊ณ ๋ค์ ํ์ผ๋ก
COMPOSE_API_VERSION=auto docker-compose run gpu
๋ฅผ ์คํํฉ๋๋ค.version: '3.7' services: gpu: image: 'nvidia/cuda:9.0-base' command: 'nvidia-smi' device_requests: - capabilities: - "gpu"
์ด๊ฒ์ด ๋ด ๋ก์ปฌ ์ปดํจํฐ์์ ์๋ํ๋์ง ํ์ธํฉ๋๋ค. Swarm๊ณผ ํจ๊ป ์๋ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
ํ๋ก๋์
์์ docker-compose์ ํน์ ์ปค๋ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค. # 7124๋ฅผ ๋ฆฌ๋ฒ ์ด์คํด์ผํฉ๋๊น? ์๋๋ฉด ์๋ก์ด docker-py
๋ฅผ ํตํฉ ํ ๋ค๋ฅธ PR์ด ์์ต๋๊น?
์๋ ํ์ธ์ @bkakilli ,
๋์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๋ฐฉ๊ธ ์ ์์ ์๋ํ์ง๋ง docker-compose๋ฅผ ์คํํ๋ ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
ERROR: The Compose file './docker-compose.yml' is invalid because:
Unsupported config option for services.analysis: 'device_requests'
_ ๋ด ์ปจํ ์ด๋ ์ด๋ฆ์ด๋๋ ๋ถ์ _
docker-compose.yml
๋ณ๊ฒฝ :
version: '2.3'
services:
analysis:
container_name: analysis
image: analysis:${TAG}
runtime: nvidia
restart: always
ports:
- "8000:80"
์:
version: '3.7'
services:
analysis:
container_name: analysis
image: analysis:${TAG}
device_requests:
- capabilities:
- "gpu"
restart: always
ports:
- "8000:80"
์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๊ธฐ ์ํด pip install git+
์ธ์ ๋ค๋ฅธ ๊ฒ์ด ์์ต๋๊น? ์๋๋ฉด ๊ตฌ์ฑ ํ์ผ์ ์๋ชป ํธ์ง ํ์ต๋๊น?
@frgfm ์ฌ๋ฐ๋ฅธ ๋งํฌ์์ compose ๋ฐ docker-py๋ฅผ ์ค์นํ๊ณ ์๋์ง ํ์ธํ์ญ์์ค. yoanisgil์ ํฌํฌ (๋ฐ ๋ธ๋์น) ๋์ docker-compose์ ์์ฒด ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ ์ ์์ต๋๋ค. ๋ค์ ๋งํฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ์ญ์์ค.
pip install git+https://github.com/yoanisgil/compose.git@device-requests
--upgrade
๋งค๊ฐ ๋ณ์๋ฅผ pip ์ค์น์ ๋ฃ์ด๋ณด์ญ์์ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฐ์ ํ๊ฒฝ ์ค์ ์ด ์์ฌ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ค๋ฅธ docker-compose ์ค์น๊ฐ ์์ต๋๊น? ์๋ฅผ ๋ค์ด https://docs.docker.com/compose/install/ ์์ "Linux"์ง์นจ์ ๋ฐ๋ผ ์์คํ
์ ์ค์นํ์ ์ ์์ต๋๋ค
์๋
ํ์ธ์!
๋ชจ๋ ์ ๋ณด์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. @bkakilli ๋ฐ docker-compose build
์ ๊ทผ ๋ฐฉ์์ ์คํํ๋ ค๊ณ ํ์ง๋ง docker-compose up
์คํํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
docker.errors.InvalidVersion: device_requests param is not supported in API versions < 1.40
๋ด docker_compose.yml์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
version: '3.7'
networks:
isolation-network:
driver: bridge
services:
li_t5_service:
build: .
ports:
- "${GRAPH_QL_API_PORT}:5001"
device_requests:
- capabilities:
- "gpu"
environment:
- SSH_PRIVATE_KEY=${SSH_PRIVATE_KEY}
- PYTHONUNBUFFERED=${PYTHONUNBUFFERED}
networks:
- isolation-network
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
@ugmSorcero ํ๊ฒฝ ๋ณ์ COMPOSE_API_VERSION=1.40
ํ ๋ค์ ๋ช
๋ น์ ๋ค์ ์คํํ์ญ์์ค.
@ugmSorcero ๊ทธ ์ค๋ฅ๋ฅผ ๊ณ ์ณค์ต๋๊น? @EpicWink @bkakilli pip ์ค์น์์ ๋ช
์๋ ๋ฒ์ ์ ์คํํ๊ณ ์์ง๋ง ์ด๋ฌํ ๋ณ์๋ฅผ 1.40์ผ๋ก ๋ด๋ณด๋ด๋ device_requests param is not supported in API versions < 1.40
๋ํ ์ค๋ฅ๊ฐ ๊ณ์ ๋ฐ์ํฉ๋๋ค.
์ฃผ์ด์ง ์์ฑ ํ์ผ์ ๊ฒฝ์ฐ
version: "3.7"
services:
spam:
image: nvidia/cuda:10.1-cudnn7-runtime
command: nvidia-smi
device_requests:
- capabilities:
- gpu
์์ ๊ฐ์ด ์ค์น๋ docker-compose
๋ฒ์ ์ ์ฌ์ฉํ์ฌ Linux์ Bash์์ ๋ค์ ๋ช
๋ น์ด ์ฑ๊ณตํฉ๋๋ค.
COMPOSE_API_VERSION=1.40 docker-compose up
๋ค์ ๋ช ๋ น์ด ์คํจํฉ๋๋ค.
docker-compose up
์ค๋ฅ ์ถ๋ ฅ์ด ์์ต๋๋ค.
ERROR: for tmp_spam_1 device_requests param is not supported in API versions < 1.40
...
docker.errors.InvalidVersion: device_requests param is not supported in API versions < 1.40
@EpicWink ๋๋จํ ๊ฐ์ฌํฉ๋๋ค. ๋๋ docker-compose up
์ด ๊ทธ๋ ๊ฒ ์คํ๋์ด์ผํ๋ค๋ ๊ฒ์ ๋ชฐ๋๋ค. ๋จผ์ COMPOSE_API_VERSION
๋ณ๋๋ก ๋ด ๋ณด๋ธ 2 ๋จ๊ณ๋ก ์ทจํ์ต๋๋ค. ํจ๊ป ์คํํ๋ฉด ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. :)
๊ทธ๋๋ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. COMPOSE_API_VERSION=1.40 docker-compose run nvidiatest
๋ฅผ ์คํํ๋ฉด nvidia-smi
๊ฐ ๊ฒฝ๋ก์์๋ ๋ฐ๋ฉด ์ด๋ฏธ์ง์์ ์ง์ ์คํํ๋ฉด ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ด๊ฐ ๊ทธ๊ฒ์ ์ฌํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
docker-compose ๋ก์ปฌ ํ์ผ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
nvidiatest:
image: nvidia/cuda:10.0-base
device_requests:
- capabilities:
- gpu
command: nvidia-smi
ํ์ฌ ์ค์ (api ๋ฒ์ auto ๋ฐ 1.40 ๋ชจ๋)์ ์คํํ๋ฉด ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
COMPOSE_API_VERSION=auto docker-compose -f docker-compose.yml -f docker-compose.local.yml run nvidiatest
Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"nvidia-smi\": executable file not found in $PATH": unknown
๋์ฒด ํ์ผ ์ฌ์ฉ๊ณผ ๊ด๋ จ์ด์์ ์ ์์ต๋๊น? Docker๋ก cuda ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์คํํ๋ฉด nvidia-smi
์์ ์ถ๋ ฅ์ ์ป๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
docker run --gpus all nvidia/cuda:10.0-base nvidia-smi
Mon Aug 24 11:40:04 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.100 Driver Version: 440.100 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 2070 Off | 00000000:29:00.0 On | N/A |
| 0% 46C P8 19W / 175W | 427MiB / 7974MiB | 2% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
๊ณต์ ๋ฌธ์์์ ์ค์น๋ ๋ฒ์ ์ ์ ๊ฑฐํ ํ git์์ ์์ ์ง์นจ์ ๋ฐ๋ผ docker-compose
๋ฅผ ์ค์นํ์ต๋๋ค. ์ค์น๋ ๋ฒ์ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
pip3 show --verbose docker-compose
Name: docker-compose
Version: 1.26.0.dev0
Summary: Multi-container orchestration for Docker
Home-page: https://www.docker.com/
Author: Docker, Inc.
Author-email: None
License: Apache License 2.0
Location: /home/jurugu/.local/lib/python3.8/site-packages
Requires: docopt, docker, requests, PyYAML, texttable, websocket-client, six, dockerpty, jsonschema, cached-property
Required-by:
Metadata-Version: 2.1
Installer: pip
Classifiers:
Development Status :: 5 - Production/Stable
Environment :: Console
Intended Audience :: Developers
License :: OSI Approved :: Apache Software License
Programming Language :: Python :: 2
Programming Language :: Python :: 2.7
Programming Language :: Python :: 3
Programming Language :: Python :: 3.4
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
Entry-points:
[console_scripts]
docker-compose = compose.cli.main:main
๋ด๊ฐ ๋์น ๊ฒ์ด ์์ต๋๊น? ๋์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
@jjrugui ์ด๊ฒ์ ์ฃผ์ ์์ ๋ฒ์ด๋
@EpicWink ๋ ๋ฌธ์ ๊ฐ ์๋๋ฉฐ ์ฃผ์ ์์
๋๊ตฐ๊ฐ ๋ค๋ฅธ PR์์ ์์
์ค์ด๊ฑฐ๋ PR์ ์ค๋นํ๊ธฐ ์ํด device-requests
๋ธ๋์น๋ฅผ ๋๋ฒ๊น
ํ๊ณ ์์ต๋๊น?
PR์ด ๋ฉ์ถ ์ํ์์ ์ข
์์ฑ ๋ฑ์ ๋ง์ถ๊ธฐ ์ํด # 7124์์ master
๋ธ๋์น์ ์ต์ ๋ฒ์ ์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ์ด์ํ์ต๋๋ค.- https : pip install git+https://github.com/beehiveai/compose.git
์ค์นํ ์ ์์ต๋๋ค. docker-compose.yml
์ ๋ฒ์ ์ 3.8
:
version: "3.8"
services:
gpu-test:
image: nvidia/cuda:10.2-runtime
command: nvidia-smi
device_requests:
- capabilities:
- gpu
์ด ์ค์ ์์๋ ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํฉ๋๋ค.
์ด์ compose-spec ๊ฑฐ๋ฒ๋์ค ํ์ ์์ deploy
์น์
์์ ์ด๋ฏธ ์ฌ์ฉํ ์์๋ generic_resouces
๊ทผ์ ํ ์์๋ # 7124์ ๋น์ทํ ๊ฒ์ ์ฑํํ๊ธฐ์ํ ์ ์ ์์
์ ์์ํ ๊ฒ์
๋๋ค.
@ndeloof ๋๋จํฉ๋๋ค! ๊ฐ๋ฅํ๋ค๋ฉด ์ฌ๊ธฐ์ ์ ์ ๋งํฌ๋ฅผ ๊ฒ์ํ์ญ์์ค. GPU ์ง์์ด ๋ฅ ๋ฌ๋ ๋ฐฐํฌ์ ์ค์ํ๊ธฐ ๋๋ฌธ์ ๋ง์ ์ฌ๋๋ค์ด ๊ธฐ๊บผ์ด ๊ธฐ์ฌํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@ndeloof ์ญ์ฌ์ ์ผ๋ก ์ด์์์ํ๊ฐ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๋ฐ ์ผ๋ง๋ ๊ฑธ๋ฆฌ๋์? 6 ๊ฐ์, 1 ๋ ?
+1
+1
@visheratin ์ฌ๋ฌ compose yml ํ์ผ์ ์ฌ์ฉํ ๋ ์๋ํ๋๋ก ์์ ์ฌํญ์ ๊ฐ์ ํ ์ ์์ต๋๊น? ๋น nvidia ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ docker-compose.yml์ด ์๋๋ฐ, GPU๊ฐ์์ ๋ nvidia ์ปจํ ์ด๋๋ก ์ฌ์ ์ํ๊ณ ์ถ์ง๋ง "- f ","device_requests "ํ๋๊ฐ ๊ตฌ์ฑ์์ ์ ์ธ๋ฉ๋๋ค.
@proximous "๊ตฌ์ฑ์์ ์ ์ธ"๋ ๋ฌด์์ ์๋ฏธํฉ๋๊น? ๋ชจ๋ ์์ฑ ํ์ผ์ ๋ฒ์ 3.8์ด ์์ต๋๊น? ๋ ์ฝ๊ฒ ์ฌํ ํ ์ ์๋๋ก ์์ ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๊น?
docker-compose up๊ณผ ํจ๊ป --scale ์ต์ ์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ compose / service.py์ ์ฝ๋์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ง์๋์ง ์์ต๋๊น?
์ญ ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง) :
ํ์ผ "/ usr / local / bin / docker-compose", 11 ํ, in
load_entry_point ( 'docker-compose == 1.27.0.dev0', 'console_scripts', 'docker-compose') ()
์ฃผ ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/cli/main.py", 67 ํ
๋ช
๋ น()
perform_command์ ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/cli/main.py", 123 ํ
ํธ๋ค๋ฌ (๋ช
๋ น, ๋ช
๋ น _ ์ต์
)
ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/cli/main.py", 1067 ํ, ์๋ก
to_attach = up (False)
ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/cli/main.py", 1063 ํ, ์๋ก
cli = native_builder,
ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/project.py", 648 ํ, ์๋ก
get_deps,
"/usr/local/lib/python3.6/site-packages/compose/parallel.py"ํ์ผ, 108 ํ, parallel_execute
error_to_reraise ๋ฐ์
์์ฐ์์ ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/parallel.py", 206 ํ
๊ฒฐ๊ณผ = func (obj)
ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/project.py", 634 ํ, do
override_options = override_options,
execute_convergence_plan์ ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/service.py", 579 ํ
renew_anonymous_volumes,
_execute_convergence_recreate์ ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/service.py", 509 ํ
์ค์ผ์ผ-len (์ปจํ
์ด๋), ๋ถ๋ฆฌ๋จ, ์์
_execute_convergence_create์ ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/service.py", 479 ํ
"๋ง๋ค๊ธฐ"
"/usr/local/lib/python3.6/site-packages/compose/parallel.py"ํ์ผ, 108 ํ, parallel_execute
error_to_reraise ๋ฐ์
์์ฐ์์ ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/parallel.py", 206 ํ
๊ฒฐ๊ณผ = func (obj)
ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/service.py", 477 ํ
๋๋ค service_name : create_and_start (self, service_name.number),
"/usr/local/lib/python3.6/site-packages/compose/service.py"ํ์ผ, 456 ํ, create_and_start
์ปจํ
์ด๋ = service.create_container (number = n, quiet = True)
create_container์ ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/service.py", 333 ํ
previous_container = ์ด์ _ ์ปจํ
์ด๋,
_get_container_create_options์ ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/service.py", 936 ํ
one_off = one_off)
_get_container_host_config์ ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/service.py", 1014 ํ
device_request [ 'capabilities']]์ ์์์ ๋ํ element.split ( ',')
ํ์ผ "/usr/local/lib/python3.6/site-packages/compose/service.py", 1014 ํ
device_request [ 'capabilities']]์ ์์์ ๋ํ element.split ( ',')
AttributeError : 'list'๊ฐ์ฒด์ 'split'์์ฑ์ด ์์ต๋๋ค.
์ถ๊ฐ ๋๋ฒ๊น ํ --scale์ ์ฌ์ฉํ ๋ ์ด๋ค ์ด์ ๋ก ํ ์ธ์คํด์ค์ [ 'gpu']๋ก device_requests [ 'capabilities']๊ฐ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์์๋๋ ๋ค๋ฅธ ๋ชจ๋ ์ปจํ ์ด๋์ ๊ฒฝ์ฐ device_request [ 'capabilities']๋ ๋์ [[ 'gpu']]์ฒ๋ผ ๋ณด์ ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด compose / service.py์ 1010 ํ์์ ์ปจํ ์ด๋๋ฅผ ์์ํ๊ณ ์คํํ๊ธฐ ์ํด ๋ก์ปฌ์์ ์์ ์์ ์ํ์ต๋๋ค.
```
device_requests์ device_request์ ๊ฒฝ์ฐ :
device_request์ 'capabilities'๊ฐ์๋ ๊ฒฝ์ฐ :
๊ณ์ํ๋ค
if type (device_request [ 'capabilities'] [0]) == ๋ชฉ๋ก :
device_request [ 'capabilities'] = [
device_request [ 'capabilities'] [0]]์ ์์์ ๋ํ element.split ( '.')
๊ทธ๋ฐ์:
device_request [ 'capabilities'] = [
device_request [ 'capabilities']]์ ์์์ ๋ํ element.split ( '.')
````
@proximous "๊ตฌ์ฑ์์ ์ ์ธ"๋ ๋ฌด์์ ์๋ฏธํฉ๋๊น? ๋ชจ๋ ์์ฑ ํ์ผ์ ๋ฒ์ 3.8์ด ์์ต๋๊น? ๋ ์ฝ๊ฒ ์ฌํ ํ ์ ์๋๋ก ์์ ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๊น?
@visheratin ์ด ์์ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ํ๋ ๊ฒ์ด ์๋ชป์ ๋๊น?
docker-compose.nogpu.yml :
version: '3.8'
services:
df:
build: miniconda-image.Dockerfile
docker-compose.gpu.yml :
version: '3.8'
services:
df:
build: nvidia-image.Dockerfile
device_requests:
- capabilities:
- gpu
nogpu.yml ๋ง ์ฌ์ฉํ์ญ์์ค.
$ docker-compose -f docker-compose.nogpu.yml config
services:
df:
build:
context: /home/jerry/gpu-test/miniconda-image.Dockerfile
version: '3'
gpu.yml ๋ง ์ฌ์ฉํ์ญ์์ค.
$ docker-compose -f docker-compose.gpu.yml config
services:
df:
build:
context: /home/jerry/gpu-test/nvidia-image.Dockerfile
device_requests:
- capabilities:
- gpu
version: '3'
GPU๊ฐ ์๋ yml๋ก ์์ํ๋ ์ฒด์ธ ๊ตฌ์ฑ yml (์ฐธ๊ณ ... ๋ฐํ์ ๋๋ฝ) :
$ docker-compose -f docker-compose.nogpu.yml -f docker-compose.gpu.yml config
services:
df:
build:
context: /home/jerry/gpu-test/nvidia-image.Dockerfile
version: '3'
์์ ์ถ๋ ฅ :
$ docker-compose -f docker-compose.nogpu.yml -f docker-compose.gpu.yml config
services:
df:
build:
context: /home/jerry/gpu-test/nvidia-image.Dockerfile
device_requests:
- capabilities:
- gpu
version: '3'
(๋ถ๋ช ํ ๋๋ โโ์ข ๋ ์ ๊ตํ ๊ฒ์ ์๋ํ๊ณ ์์ผ๋ฉฐ ์ด๊ฒ์ ์์์น ๋ชปํ ํ๋์ ๊ฐ์กฐํ๊ธฐ์ํ ๋จ์ํ ์ฌ๋ก ์ผ๋ฟ์ ๋๋ค.)
@jlaule @proximous ์ด ์ค๋ ๋๋ฅผ ์ฃผ์ ๋ก ์ ์งํ๊ธฐ ์ํด ๋ถ๊ธฐ ๋ ์ ์ฅ์์ ๋ฌธ์ ๋ฅผ ์์ฑํ์ญ์์ค. ์๊ฐ์ด์์ ๋ ์กฐ์ฌํ๊ฒ ์ต๋๋ค.
๊ธฐ๋ค๋ฆฌ๋ ๋์ ๋ฌด์ธ๊ฐ๊ฐ ํ์ํ ์ฌ๋๋ค์ ์ํด ์ปจํ
์ด๋ ๋ฐํ์์ผ๋ก docker๋ฅผ ์ฌ์ฉํ์ฌ 30 ๋ถ ์์ GPU ์ง์์ผ๋ก K3S (Kubernetes์ ์์ง ๋ฒ์ )๋ฅผ ์ค์ ํ์ต๋๋ค (์ : ์ค์น ์คํฌ๋ฆฝํธ์ --docker
์ต์
์ฌ์ฉ). https://github.com/NVIDIA/k8s-device-plugin ์ ํ๋ก์ฐํ์ฌ Nvidia ์ฅ์น ํ๋ฌ๊ทธ์ธ์ด ์๋ํ๋๋กํฉ๋๋ค.
๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@EpicWink ๋ ๋ฌธ์ ๊ฐ ์๋๋ฉฐ ์ฃผ์ ์์
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ์ต๋๊น?
"/ usr / bin / nvidia-container-runtime"๊ณผ ๊ฐ์ ๊ฒ์ ๋ ์ด์ ์์ต๋๋ค. ๋ฌธ์ ๋ ์ฌ์ ํ ์ค์ํฉ๋๋ค.
์ฌ๊ธฐ์ ์ค๋ช ๋๋๋ก nvidia-docker2๋ฅผ ์ค์นํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ต๊ทผ์ ๋ค๋ฃจ๊ณ ์๋ ์ด๋์ ๋์ ์ ๊ทผ ๋ฐฉ์์ ๊ณต์ ํ๊ณ ์์ต๋๋ค.
๋ด ๋ฌธ์ ๋ Docker ์คํ ๋ฐฐํฌ๊ฐ ํ์ํ๊ณ ๋ฃ๊ณ ์ถ์ง ์์๋ค๋ ๊ฒ์
๋๋ค. docker compose ๋๋ docker api ๋ฒ์ ํดํน์ผ๋ก ์์
ํ์ง๋ง ์ณ๋ค๊ณ ๋๋ผ์ง ์์๊ณ ์คํ ๋ฐฐํฌ๋ ์๊ด์์ด ์๋ํ์ง ์์ต๋๋ค.
๊ทธ๋์ ๋ด docker compose์์ ๋ฐํ์ pr ์ฅ์น ์์ฒญ์ ์ค์ ํ์ง ์๊ณ This๋ฅผ ๋ด ๋ฐ๋ชฌ์ ์ถ๊ฐํ์ต๋๋ค.
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia",
"node-generic-resources": [
"NVIDIA-GPU=0"
]
}
GPU- {first part of gpu guid}๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ ์ฌ์ ๋ค. NV ์ปจํ
์ด๋ ํดํท์ ์ ์ธํ๊ณ pip + ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ ์ค์นํ ํ์๊ฐ ์์ต๋๋ค. ๋งค๋ ฅ์ฒ๋ผ ๋ฐฐ์น๋๊ณ ์๋ํฉ๋๋ค.
Tks ๋ง์ด @haviduck , ๋ฐฉ๊ธ ๋ด ์ปดํจํฐ (Ubuntu 20.04, docker CE 19.03.8)์์ ์๋ํ์ผ๋ฉฐ ๋งค๋ ฅ์ฒ๋ผ ์๋ํ์ต๋๋ค.
๊ธฐํ : ๋์ปค ๋ฐ๋ชฌ์ ๋ค์ ์์ํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค.
@pommedeterresautee ์ ์ ๋๋ฌด ๊ธฐ๋ป์ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ํด ์ผํ์ต๋๋ค! ์ฌ ์ฅ์ ์ ์ธ๊ธ ํ์ด์ผํ์ต๋๋ค.
3 ์ฃผ๊ฐ ๋ ผ์คํฑ dockering im ๊ฝค ๋นํฉ์ค๋ฌ์์ ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์๋ ๊ฒ ๊ฐ๋ค ..
@haviduck : ๊ฐ์ฌํฉ๋๋ค! ๋ง์ง๋ง์ผ๋ก ์๋ํ๋ ๊ฐ๋จํ ์๋ฃจ์ ์ ๋๋ค. ๋๋ ํฌ๊ธฐํ ์ฅ์น ๋ฑ์ ์ถ๊ฐํ๋ ๋ฐ ๋๋ฌด ๋ง์ ์๊ฐ์ ๋ณด๋์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๊ฒ์ด ์์ ์๋ํ๊ณ ๋ช ๋ถ ํ์ Plex์์ ํ๋์จ์ด ์ฝ๋ ๋ณํ์ด ์๋ํฉ๋๋ค.
๋๋์ด ๋ฌธ์ ์ 2 ์ผํธ๋ฅผ ๋ํ ๊ฒ์ด๋ค. ๋๋ ๋ง์ ํฌ์คํธ๋ฅผ ์ฝ์๊ณ ๋ง์นจ๋ด ํด๊ฒฐ์ฑ ์ ๋งค์ฐ ๊ฐ๋จํ๋ค.
๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค : (์กฐ๊ธ ๋ ๋ฎ์์ ์๋ ์์ต๋๋ค-์ ํ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค ...)
docker-compose ๋ฒ์ 1.27.4, ๋น๋ 40524192
๊ทธ๊ฒ ๋ค์ผ!
YML์ ์ฌ์ฉํ์ฌ ๋ฐฐํฌํ๋ฉด docker-compose์์ GPU ์ง์์ด ์ ๊ณต๋ฉ๋๋ค.
5. in your docker-compose YML you should add: **runtime: nvidia**
์ค,์ด ์ ์ฒด ์ค๋ ๋๋ ๋ฐํ์์ด์๋ ๋ฒ์ 3์ ๊ดํ ๊ฒ์ ๋๋ค.
๋ฆด๋ฆฌ์ค 1.27.0 ์ด์ ์๋ v2 / v3 ํ์ผ ํ์์ด ๋ณํฉ๋์์ผ๋ฏ๋ก ์ด์ ์ด๋์์๋ runtime
์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ ์ก์
๋ฌ๋ ์ดํฐ์ ๋ํ ์ฌ์๋ ์์ง docker-compose
์์ ๊ตฌํ๋์ง ์์์ง๋ง (https://github.com/compose-spec/compose-spec/pull/100) ๋์ฐฉํ์ต๋๋ค.
๋๋์ด ๋ฌธ์ ์ 2 ์ผํธ๋ฅผ ๋ํ ๊ฒ์ด๋ค. ๋๋ ๋ง์ ํฌ์คํธ๋ฅผ ์ฝ์๊ณ ๋ง์นจ๋ด ํด๊ฒฐ์ฑ ์ ๋งค์ฐ ๊ฐ๋จํ๋ค.
๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค : (์กฐ๊ธ ๋ ๋ฎ์์ ์๋ ์์ต๋๋ค-์ ํ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค ...)
docker-compose ๋ฒ์ 1.27.4, ๋น๋ 4052419
- ๋์ปค ํธ์คํธ ์ปดํจํฐ์์ nvidia-container-toolkit ๋ฐ nvidia-container-runtime ํจํค์ง๋ฅผ ์ค์นํ์ญ์์ค.
- ๋์ปค ํธ์คํธ ์ปดํจํฐ์์ : ์ ํ
nvidia-smi ๋ฅผ ํด๋ฆญํ๊ณ ์ค๋ฅธ์ชฝ์ ๋ํ๋๋ CUDA ๋ฒ์ ์ ํ์ธํฉ๋๋ค.- ๋์ปค ํธ์คํธ ์ปดํจํฐ์์ : ๋ค์์ ์ ๋ ฅํฉ๋๋ค : (์ค์น ํ ๋ฒ์ ์ผ๋ก cuda ๋ฒ์ ์ ๋์ฒดํฉ๋๋ค)
docker run --rm --gpus all nvidia / cuda : 10.1-base nvidia-smi
ํธ์คํธ ์ปดํจํฐ์์ nvidia-smi๋ฅผ ์คํํ ๋์ ๋์ผํ ์ถ๋ ฅ์ ์ป์ด์ผํฉ๋๋ค.- /etc/docker/daemon.json ํ์ผ์์ ๋ค์์ ์ค์ ํด์ผํฉ๋๋ค.
"runtimes": { "nvidia": { "path": "/ usr / bin / nvidia-container-runtime", "runtimeArgs": []}}- docker-compose YML์ ๋ค์์ ์ถ๊ฐํด์ผํฉ๋๋ค.
๋ฐํ์ : nvidia๊ทธ๊ฒ ๋ค์ผ!
YML์ ์ฌ์ฉํ์ฌ ๋ฐฐํฌํ๋ฉด docker-compose์์ GPU ์ง์์ด ์ ๊ณต๋ฉ๋๋ค.
์ฐธ๊ณ ๋ก, nvidia-smi
์ ์ถ๋ ฅ์์ โโ๋ณผ ์์๋ cuda ๋ฒ์ ์ nvidia cuda ๋๋ผ์ด๋ฒ ๋ฒ์ (์ผ๋ช
nvidia ๋๋ผ์ด๋ฒ)์ ๋ํ๋
๋๋ค (ํผ๋ ์ค๋ฝ์ง๋ง cuda๋ผ๊ณ ๋ ํจ). docker ์ด๋ฏธ์ง์ ๋ฒ์ ๋ฒํธ (์ : nvidia/cuda:10.1-base nvidia-smi
๋ nvidia ํดํท ๋ฒ์ ์ ๋ํ๋
๋๋ค (๋ค์ ๋งํ์ง๋ง, ๋์ผํ ๋ฒ์ ๋ฒํธ ์์คํ
, ๋ค๋ฅธ ์ง์น).
๋๋ผ์ด๋ฒ๋ ํดํท๊ณผ ์ญ ํธํ๋๋ฏ๋ก <version>
์ด ๋๋ผ์ด๋ฒ ๋ฒ์ ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด ์ํ๋ nvidia/cuda:<version>-base nvidia-smi
๋ฅผ ์คํํ ์ ์์ต๋๋ค.
์์ธํ ์ ๋ณด : https://stackoverflow.com/questions/53422407/different-cuda-versions-shown-by-nvcc-and-nvidia-smi
ARM ๊ธฐ๋ฐ ์์คํ ์ ์ฌ์ฉํ ์์๋ Docker Compose 1.27.4 ๋ฐ์ด๋๋ฆฌ๊ฐ ํ์๋์ง ์์ต๋๋ค.
pip install docker-compose
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: docker-compose in /usr/local/lib/python3.6/dist-packages (1.26.2)
์๋ ํ์ธ์ @collabnix!
pip --version
์ ๊ฒฐ๊ณผ๋ ๋ฌด์์
๋๊น?
Compose 1.27์ Python 2์ ๋ํ ์ง์์ ์ค๋จํ๋ฏ๋ก ์์คํ ์ Python 2๊ฐ์๋ ๊ฒฝ์ฐ 1.27.x ๋ฆด๋ฆฌ์ค๊ฐ ํ์๋์ง ์์ ์ ์์ต๋๋ค.
@collabnix ๋ ์ด๋ฏธ compose๋ฅผ ์ค์นํ๊ธฐ ๋๋ฌธ์
๋๋ค. pip install --upgrade docker-compose
์๋
์ด์ 1.27.4๋ก ์
๊ทธ๋ ์ด๋ ํ ์ ์์ต๋๋ค. pip ์
๊ทธ๋ ์ด๋๊ฐ ํธ๋ฆญ์ ์ํํ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค @kshcherban & @ chris-crone
๋ด๊ฐ ๊ณผ๊ฑฐ์ ์์
ํ๊ณ Python 2.7์ ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ํ๋ก์ ํธ๋ฅผ ์ค์ ๋ก ์
๊ทธ๋ ์ด๋ํด์ผํ๋ ๊ฒ์ ๋ณด๋ ๊ฒ์ ๋ฏธ์น ์ง์
๋๋ค.
docker-compose๋ฅผ 1.27.4๋ก ์
๊ทธ๋ ์ด๋ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
(๋์ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 1.19.3์ผ๋ก ์
๊ทธ๋ ์ด๋ ํ ์ ์์)
$ cat /etc/docker/daemon.json
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
version: '3.5'
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
image: 'detectme'
ipc: 'host'
tty: true
stdin_open: true
$ sudo docker-compose up -d --build
ERROR: The Compose file './docker-compose.yml' is invalid because:
Unsupported config option for services.engine: 'runtime'
$ docker-compose --version
docker-compose version 1.17.1, build unknown
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo rm /usr/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ sudo docker-compose up -d --build
docker-compose๋ก ์ ์คํํ์ญ์์ค.
ํธ์คํธ ์ปดํจํฐ์์ nvidia-smi๊ฐ ์ฌ์ฉํ๋ GPU๋ฅผ ํ์ธํ์ญ์์ค.
@ bttung-2020
๋ฟก
docker-hub์์ dokcer-nvidia-devel (๋ฐํ์ ์๋) : nvidia / cuda : 10.1-cudnn7-devel-ubuntu18.04 ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
์๋ํฉ๋๊น? docker-compose.yaml ํ์ผ์ ์ด๋ป๊ฒ ํธ์งํด์ผํฉ๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ธด๊ธํ ํ์์ ๋๋ค. ๋น์ ์ ๋ ธ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!