From f42a37989646b1e7e7df52bde428ff70c59b46e7 Mon Sep 17 00:00:00 2001 From: Marica Antonacci <marica.antonacci@ba.infn.it> Date: Tue, 23 Oct 2018 11:13:32 +0200 Subject: [PATCH 1/2] Import Mesos docs --- docs/mesos-cluster/.DS_Store | Bin 0 -> 8196 bytes docs/mesos-cluster/enable-gpu-support.md | 579 +++++++++++++++++++++++ docs/mesos-cluster/images/7274930.png | Bin 0 -> 36351 bytes docs/mesos-cluster/images/7274931.png | Bin 0 -> 28789 bytes 4 files changed, 579 insertions(+) create mode 100644 docs/mesos-cluster/.DS_Store create mode 100644 docs/mesos-cluster/enable-gpu-support.md create mode 100755 docs/mesos-cluster/images/7274930.png create mode 100755 docs/mesos-cluster/images/7274931.png diff --git a/docs/mesos-cluster/.DS_Store b/docs/mesos-cluster/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d99acfa90cfd45f7d8ff021364d062996c8afaea GIT binary patch literal 8196 zcmeHMTWl3Y82<l5f!T%9DFW>tE<I8zC`Ee+wA{qg8&WHQa9Uc*rR+Jol#ScndUnq# zP-?1)#0P`%l9-4_Lwu_VPb9_{6Yo*uB{troKIn^&Mx%*O`p?XsMh-O57nQJ+%=|O| zKmX3mH{Z^je-8j)N6|_H)B^ycEF@n<#dVUfi+oK=M4Bp+Nd5pe1iA5GEa&>UYkJ3u z7=ajp7=ajp7=ajp{{sSaXN$z<xc8McE@K2@1a3+M#QBh-EMz8<Q%cICg9;e}kQ5<+ zOjM^hK>DO2nTh0-lG2r)siFsrTrmnUP`Q&mCAyQ$L~=?=<qoLa0i%&IicnCFPJSub z9WbM0T*e5*2waPRczqUt1EXNVNJaeqes0Wlg0Q9K3rx(bn!jKnV>;8T^<&vn{&+St z!(z~37LJJ40W&<6i|T#8@6OiE+#$yvALh$CeJ?Z}&n`%3$Fix*(E-P^{P7OI=vje$ zPF5Kh)0j5Qjfsh^ZJV1@t?9PO=F~)bOUst#)Yfh3$w`gXHKp(FIWc<X?8Ldrhn`al z!{~5;nu>*9tX!oVlseT{io~<!Reo7srKT@3dhYAhhxyVHO@9Aa==ff6$SwpVhj~pv z3+~DL-hqNG>;rk<EslD@Ft5#<ZocT6q22DfS?8=B42JgUP}GJ3zYuoHj)M;Q3f(a0 z#lSvjlY>*TyT~ozs7)_kzIyF#8(X&SxTkBTdPxnhU8?Itgo_tCCmp-cKkiuJsl#TF zw>``8Mg~ew;N)Dp&of8u+Qe~9n^{p;Uu`6fRb^A93*(J!u$XfmEIQ$t8NQ^ZT5m9J z)%X>5)S_AJ^DQxwB`rpS(Ztvhq3<l%R9bRU>o*vBUqFlCCex&*d6Ta9JwO}E1Db-E zczUyL^t)!xcDbc7scLQ0je(LvlJ`c+ox5~nFz=6!(h`GOY$mmslhJN;GX5SrF2=s! z48r|mwkL+Kt6$OGU>JvmzTL8Hi!s)i*`W4Z!qAv$Q7w(G6$9?1OJpw`C3=s+8F(Bn zz!Pv0UWUtX1zv}D;Y0WsK7mi+Yxo|1grDIT_!WMGKain@i*PX-xE3369k$?h+>IG* z#}4ep19%X#*oVh3k2apf5gfzQcorw{96pK{@JW0MpT_6$1$+@-!prz7zJYJzTlhA9 zgrDIzYJ!O}W%sFexx{a&cGZhXl#M>DC5~T@vdQi}_x?we{c5q|=`G8auW8({X>;4I z_SyZc*uB3JN%BV#L=vY=47r6@Gm#i=Bv<OI=VEj}@y<TY1bO(v8G{(okV+=GpbwMH zbxqVv5W|^xI}H7fB=s~IpC_BiyYw_8lJfb=x<zl*h{n81S-0yu8L^cwP}bdgMiVa@ z2l;5NDXG(W^^X~N38vvScn3Zp=6w#|!4L2g{EmnVu@>vF9#`TjT!ZWJcHD@~xCvWv z8}7iJxC^^+5AMYt;$R>4;{Xog5OL6w9CWaN0T!`DTznWGAts*3$09C1LtMOs(-q9? zDRWLqe5I0krEI}-eQ$*HWwu`J61Q$h1m>w(*NgbSd+zW5H{{ylNyiAp2>d++u&OKD z)j@sdI^9LAouYh#vPh!el#<eg3K@=*l;JqZ**^@ao}#Y8ClkpjB}qf+U;hxG?(q2j PpZ(<--~W<`H(Bu~B$3|E literal 0 HcmV?d00001 diff --git a/docs/mesos-cluster/enable-gpu-support.md b/docs/mesos-cluster/enable-gpu-support.md new file mode 100644 index 0000000..63609c7 --- /dev/null +++ b/docs/mesos-cluster/enable-gpu-support.md @@ -0,0 +1,579 @@ + +Introduction +------------ + +<span>Mesos 1.0.0 added first-class support for Nvidia GPUs. The minimum required Nvidia driver version is </span>`340.29` + +Enabling GPU support in a Mesos cluster is really straightforward (as stated in the official project documentation and as documented in this page). It consists in the following steps: + +1. configuring the agent nodes in order to expose the available gpus as resources to be advertised to the master nodes; +2. enabling the framework <span style="color: rgb(199,37,78);">GPU\_RESOURCES </span>capability so that the master includes the GPUs in the resource offers sent to the frameworks.  + +<span>Mesos exposes GPUs as a simple </span>`SCALAR`<span> resource in the same way it always has for CPUs, memory, and disk.</span> + +An important remark is that **currently the GPU support is available for the** **Mesos containerizer and not for the Docker containerizer. **Anyway the Mesos containerizer is now able to run docker images natively through the **<a href="http://mesos.apache.org/documentation/latest/container-image" class="external-link">Universal Container Runtime</a> (UCR)**. ****  + +<img src="assets/images/icons/emoticons/warning.png" title="(warning)" alt="(warning)" class="emoticon emoticon-warning" />The following limitations can, on the other hand, have impacts on the deployment of Long-Running services (Marathon) requiring GPUs: + +- The UCR does not support the following: runtime privileges, Docker options, force pull, named ports, numbered ports, bridge networking, port mapping. + +It is important to remember that the task definition must be properly written in order to specify the right containerizer (type=MESOS). + +For Marathon: + +``` syntaxhighlighter-pre +{ + "id": "test", + "cpus": 2, + "mem": 2048, + [...] + "container": { + "type": "MESOS", + "docker": { + "image": "tensorflow/tensorflow" + } + } +} +``` + +See also <a href="https://mesosphere.github.io/marathon/docs/native-docker.html#provisioning-containers-with-the-ucr" class="uri" class="external-link">https://mesosphere.github.io/marathon/docs/native-docker.html#provisioning-containers-with-the-ucr</a> + +For Chronos: + +``` syntaxhighlighter-pre +{ + "name": "test-gpu", + "command": "", + "cpus": 1, + "mem": 4096, + [...] + "container": { + "type": "MESOS", + "image": "tensorflow/tensorflow" + }, + "schedule": "..." +} +``` + + + +The GPU support is fully implemented and officially documented in Mesos and Marathon Framework whereas Chronos Framework does not support GPU resources yet. Anyway there is a <a href="https://github.com/mesos/chronos/pull/810" class="external-link">pull request</a> (still open) that seems in good shape and we have decided to give it a try. + +Testbed Setup +------------- + +### Nodes characteristics + +| Node | Description | +|--------------|----------------------------------------------------------------------------| +| Mesos Master | VM 4vCPU, 16GB RAM + + SO: Ubuntu 16.04 | +| Mesos Slave | baremetal + + 40 CPUs, 250GB RAM + + 82:00.0 3D controller: NVIDIA Corporation GK110BGL \[Tesla K40m\] (rev a1) + Model name: Intel(R) Xeon(R) CPU E5-2650L v2 @ 1.70GHz + + SO: Ubuntu 16.04 | + +### Tested Components Versions + +| Component | Version | Notes | +|--------------|-------------------|-----------------------------------------------------| +| Mesos Master | 1.5.0 | docker container indigodatacloud/mesos-master:1.5.0 | +| Mesos Slave | 1.5.0 | package mesos from mesosphere repo | +| Chronos | tag 3.0.2 + patch | | +| Marathon | 1.5.6 | docker container indigodatacloud/marathon:1.5.6 | + +Prepare the agent (slave) node +------------------------------ + +Download the driver repo from <a href="http://www.nvidia.com/Download/index.aspx?lang=en-us" class="uri" class="external-link">http://www.nvidia.com/Download/index.aspx?lang=en-us</a> choosing the proper version. + +<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img src="assets/images/7274714/7274930.png" class="confluence-embedded-image" height="250" /></span> + +<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img src="assets/images/7274714/7274931.png" class="confluence-embedded-image" height="217" /></span> + +Install the downloaded .deb file (repo), install the driver and reboot: + +``` syntaxhighlighter-pre +dpkg -i nvidia-diag-driver-local-repo-ubuntu1604-390.30_1.0-1_amd64.deb +apt-key add /var/nvidia-diag-driver-local-repo-390.30/7fa2af80.pub +apt-get update +apt-get install nvidia-390 +reboot +``` + +Alternatively you can enable the graphics-drivers PPA. Currently, it supports Ubuntu 18.04 LTS, 17.10, 17.04, 16.04 LTS, and 14.04 LTS operating systems (still under testing phase): + +``` syntaxhighlighter-pre +add-apt-repository ppa:graphics-drivers/ppa +apt update +apt install nvidia-390 +``` + +### Verify the nvidia-driver installation + +Launch the command: + + nvidia-smi + +Output: + +``` syntaxhighlighter-pre ++-----------------------------------------------------------------------------+ +| NVIDIA-SMI 390.30 Driver Version: 390.30 | +|-------------------------------+----------------------+----------------------+ +| 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 K40m Off | 00000000:82:00.0 Off | 0 | +| N/A 21C P8 18W / 235W | 0MiB / 11441MiB | 0% Default | ++-------------------------------+----------------------+----------------------+ + ++-----------------------------------------------------------------------------+ +| Processes: GPU Memory | +| GPU PID Type Process name Usage | +|=============================================================================| +| No running processes found | ++-----------------------------------------------------------------------------+ +``` + +### Mesos slave configuration + +``` syntaxhighlighter-pre +export MESOS_MASTER="zk://<master>:2181/mesos" +export MESOS_ZK="zk://<master>:2181/mesos" +export MESOS_EXECUTOR_REGISTRATION_TIMEOUT="10mins" +export MESOS_CONTAINERIZERS="mesos,docker" +export MESOS_LOG_DIR="/var/log/mesos" +export MESOS_IP="<agent-ip>" +export MESOS_WORK_DIR="/var/lib/mesos" +export MESOS_HOSTNAME="<agent-hostname>" +export MESOS_ISOLATION="docker/runtime,filesystem/linux,cgroups/devices,gpu/nvidia" +export MESOS_IMAGE_PROVIDERS="docker" +``` + +(Re)start the mesos agent. In the log you will see the available GPU as resource offered by the agent node: + +Feb 26 23:10:07 hpc-09-02 mesos-slave\[1713\]: I0226 23:10:07.155503 1745 slave.cpp:533\] Agent resources: gpus(\*):1; cpus(\*):40; mem(\*):256904; disk(\*):3489713; ports(\*):\[31000-32000\] + +### Testing GPU support in Mesos + +Verify that Mesos is able to launch a task consuming GPUs: + +``` syntaxhighlighter-pre +mesos-execute --master=mesos-m0.recas.ba.infn.it:5050 --name=gpu-test --docker_image=nvidia/cuda --command="nvidia-smi" --framework_capabilities="GPU_RESOURCES" --resources="gpus:1" +I0305 15:22:38.346174 4443 scheduler.cpp:188] Version: 1.5.0 +I0305 15:22:38.349104 4459 scheduler.cpp:311] Using default 'basic' HTTP authenticatee +I0305 15:22:38.349442 4462 scheduler.cpp:494] New master detected at master@172.20.0.38:5050 +Subscribed with ID 6faa9a75-d48b-4dc6-96ee-73c35997706b-0017 +Submitted task 'gpu-test' to agent 'd33d527c-8d1f-4e53-b65d-e2b2c67c0889-S2' +Received status update TASK_STARTING for task 'gpu-test' + source: SOURCE_EXECUTOR +Received status update TASK_RUNNING for task 'gpu-test' + source: SOURCE_EXECUTOR +Received status update TASK_FINISHED for task 'gpu-test' + message: 'Command exited with status 0' + source: SOURCE_EXECUTOR +``` + +Look into the task sandbox. The stdout should report the following: + +``` syntaxhighlighter-pre +Marked '/' as rslave +Prepared mount '{"flags":20480,"source":"\/var\/lib\/mesos\/slaves\/d33d527c-8d1f-4e53-b65d-e2b2c67c0889-S2\/frameworks\/6faa9a75-d48b-4dc6-96ee-73c35997706b-0017\/executors\/gpu-test\/runs\/5ebbfaf3-3b8b-4c32-9337-740a85feef75","target":"\/var\/lib\/mesos\/provisioner\/containers\/5ebbfaf3-3b8b-4c32-9337-740a85feef75\/backends\/overlay\/rootfses\/e56d62ea-4334-4582-a820-2b9406e2b7f8\/mnt\/mesos\/sandbox"}' +Prepared mount '{"flags":20481,"source":"\/var\/run\/mesos\/isolators\/gpu\/nvidia_390.30","target":"\/var\/lib\/mesos\/provisioner\/containers\/5ebbfaf3-3b8b-4c32-9337-740a85feef75\/backends\/overlay\/rootfses\/e56d62ea-4334-4582-a820-2b9406e2b7f8\/usr\/local\/nvidia"}' +Prepared mount '{"flags":20513,"target":"\/var\/lib\/mesos\/provisioner\/containers\/5ebbfaf3-3b8b-4c32-9337-740a85feef75\/backends\/overlay\/rootfses\/e56d62ea-4334-4582-a820-2b9406e2b7f8\/usr\/local\/nvidia"}' +Changing root to /var/lib/mesos/provisioner/containers/5ebbfaf3-3b8b-4c32-9337-740a85feef75/backends/overlay/rootfses/e56d62ea-4334-4582-a820-2b9406e2b7f8 +Mon Mar 5 14:23:41 2018 ++-----------------------------------------------------------------------------+ +| NVIDIA-SMI 390.30 Driver Version: 390.30 | +|-------------------------------+----------------------+----------------------+ +| 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 K40m Off | 00000000:82:00.0 Off | 0 | +| N/A 21C P8 18W / 235W | 0MiB / 11441MiB | 0% Default | ++-------------------------------+----------------------+----------------------+ + ++-----------------------------------------------------------------------------+ +| Processes: GPU Memory | +| GPU PID Type Process name Usage | +|=============================================================================| +| No running processes found | ++-----------------------------------------------------------------------------+ +``` + +Testing Chronos patch for GPU support +------------------------------------- + +Patch available on github: <a href="https://github.com/mesos/chronos/pull/810" class="uri" class="external-link">https://github.com/mesos/chronos/pull/810</a> + +### Patch compilation + +The following steps are needed to test the patch: + +1. Get the patched code: + + ``` syntaxhighlighter-pre + git clone https://github.com/mesos/chronos.git -b v3.0.2 + cd chronos + git fetch origin pull/810/head:chronos + git checkout chronos + ``` + +2. Compile: + + ``` syntaxhighlighter-pre + docker run -v `pwd`:/chronos --entrypoint=/bin/sh maven:3-jdk-8 -c "\ + curl -sL https://deb.nodesource.com/setup_7.x | bash - \ + && apt-get update && apt-get install -y --no-install-recommends nodejs \ + && ln -sf /usr/bin/nodejs /usr/bin/node \ + && cd /chronos \ + && mvn clean \ + && mvn versions:set -DnewVersion=3.0.2-1 \ + && mvn package -DskipTests" + ``` + + The jar **chronos-3.0.2-1.jar **will be created in the folder ./target/ + +3. Create the docker image + **Dockerfile:** + + ``` syntaxhighlighter-pre + FROM ubuntu:16.04 + ENV DEBIAN_FRONTEND noninteractive + RUN apt-key adv --keyserver keyserver.ubuntu.com --recv E56151BF && \ + echo deb http://repos.mesosphere.io/ubuntu trusty main > /etc/apt/sources.list.d/mesosphere.list && \ + apt-get update && \ + apt-get -y install --no-install-recommends mesos openjdk-8-jre-headless && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + ADD chronos-3.0.2-1.jar / + COPY entrypoint.sh / + ENTRYPOINT ["/entrypoint.sh"] + ``` + + **File entrypoint.sh: + ** + + ``` syntaxhighlighter-pre + #!/bin/sh + CMD="java -Xmx512m -cp chronos-3.0.2-1.jar org.apache.mesos.chronos.scheduler.Main" + # Parse environment variables + for k in `set | grep ^CHRONOS_ | cut -d= -f1`; do + eval v=\$$k + CMD="$CMD --`echo $k | cut -d_ -f2- | tr '[:upper:]' '[:lower:]'` $v" + done + # authentication + PRINCIPAL=${PRINCIPAL:-root} + if [ -n "$SECRET" ]; then + touch /tmp/secret + chmod 600 /tmp/secret + echo -n "$SECRET" > /tmp/secret + CMD="$CMD --mesos_authentication_principal $PRINCIPAL --mesos_authentication_secret_file /tmp/secret" + fi + echo $CMD + if [ $# -gt 0 ]; then + exec "$@" + fi + exec $CMD + ``` + +**Start the patched Chronos Framework:** + +Using the docker image described above you can run Chronos as follows: + +``` syntaxhighlighter-pre +docker run --name chronos -d --net host --env-file /etc/chronos/.chronosenv chronos:3.0.2_gpu +``` + +with the following environment: + +``` syntaxhighlighter-pre +LIBPROCESS_IP=172.20.0.38 +CHRONOS_HOSTNAME=172.20.0.38 +CHRONOS_HTTP_PORT=4400 +CHRONOS_MASTER=zk://172.20.0.38:2181/mesos +CHRONOS_ZK_HOSTS=zk://172.20.0.38:2181 +CHRONOS_ZK_PATH=/chronos/state +CHRONOS_MESOS_FRAMEWORK_NAME=chronos +CHRONOS_HTTP_CREDENTIALS=admin:****** +CHRONOS_ENABLE_FEATURES=gpu_resources +``` + +### Testing + +Approach: submit a batch-like job that uses the tensorflow docker image, downloads the code available <a href="https://github.com/aymericdamien/TensorFlow-Examples" class="external-link">here</a> and runs <span style="color: rgb(50,58,78);">the convolutional network example</span> + +``` syntaxhighlighter-pre +apt-get update; apt-get install -y git + +git clone https://github.com/aymericdamien/TensorFlow-Examples + +cd TensorFlow-Examples/examples/3_NeuralNetworks; + +time python convolutional_network.py +``` + +The test is based on the <a href="https://mesosphere.com/blog/tutorial-deep-learning-with-tensorflow-nvidia-and-apache-mesos-dcos-part-1/" class="external-link">tutorial</a> provided by mesosphere DC/OS + +Two different versions of the tensorflow docker image will be used in order to verify the correct execution of the job regardless of the version of CUDA and cuDNN used to build the binaries inside the docker image: + +| Docker tag | CUDA & cuDNN version | Test id | +|------------|----------------------|---------| +| latest-gpu + + (1.6.0) | CUDA 9.0, cuDNN 7 | \#1 | +| 1.4.0-gpu | CUDA 8.0, cuDNN 6 | \#2 | + +#### Test \#1: + +Job definition: + +``` syntaxhighlighter-pre +{ + "name": "test-gpu", + "command": "cd $MESOS_SANDBOX && /bin/bash gpu_demo.sh", + "shell": true, + "retries": 2, + "cpus": 4, + "disk": 256, + "mem": 4096, + "gpus": 1, + "uris": [ + "https://gist.githubusercontent.com/maricaantonacci/1a7f02903513e7bba91f451e0f4f5ead/raw/78c737fd0e2a288a2040c192368f6c4ecf8eb88a/gpu_demo.sh" + ], + "environmentVariables": [], + "arguments": [], + "runAsUser": "root", + "container": { + "type": "MESOS", + "image": "tensorflow/tensorflow:latest-gpu" + }, + "schedule": "R/2018-03-05T23:00:00.000Z/PT24H" +} +``` + +The job is correctly run. The following relevant info were retrieved from the stderr file in the job sandbox: + +``` syntaxhighlighter-pre +Cloning into 'TensorFlow-Examples'... +/usr/local/lib/python2.7/dist-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`. + from ._conv import register_converters as _register_converters +WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmpLLDDDs +2018-03-05 14:38:59.059890: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1212] Found device 0 with properties: +name: Tesla K40m major: 3 minor: 5 memoryClockRate(GHz): 0.745 +pciBusID: 0000:82:00.0 +totalMemory: 11.17GiB freeMemory: 11.09GiB +2018-03-05 14:38:59.059989: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1312] Adding visible gpu devices: 0 +2018-03-05 14:38:59.496393: I tensorflow/core/common_runtime/gpu/gpu_device.cc:993] Creating TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 10757 MB memory) -> physical GPU (device: 0, name: Tesla K40m, pci bus id: 0000:82:00.0, compute capability: 3.5) +2018-03-05 14:39:23.210323: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1312] Adding visible gpu devices: 0 +2018-03-05 14:39:23.210672: I tensorflow/core/common_runtime/gpu/gpu_device.cc:993] Creating TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 260 MB memory) -> physical GPU (device: 0, name: Tesla K40m, pci bus id: 0000:82:00.0, compute capability: 3.5) + +real 0m32.394s +user 0m35.192s +sys 0m12.204s +I0305 15:39:25.630180 4680 executor.cpp:938] Command exited with status 0 (pid: 4716) +``` + +#### Test \#2 + +Job definition: + +``` syntaxhighlighter-pre +{ + "name": "test2-gpu", + "command": "cd $MESOS_SANDBOX && /bin/bash gpu_demo.sh", + "shell": true, + "retries": 2, + "cpus": 4, + "disk": 256, + "mem": 4096, + "gpus": 1, + "uris": [ + "https://gist.githubusercontent.com/maricaantonacci/1a7f02903513e7bba91f451e0f4f5ead/raw/78c737fd0e2a288a2040c192368f6c4ecf8eb88a/gpu_demo.sh" + ], + "environmentVariables": [], + "arguments": [], + "runAsUser": "root", + "container": { + "type": "MESOS", + "image": "tensorflow/tensorflow:1.4.0-gpu" + }, + "schedule": "R/2018-03-05T23:00:00.000Z/PT24H" +} +``` + +As you can see, the only difference wrt Test\#1 is the docker image: here we are using the tag 1.4.0-gpu of the tensorflow docker image that has been built using a different CUDA and cuDNN version. + +Also in this case the job is correcly run: + +``` syntaxhighlighter-pre +Cloning into 'TensorFlow-Examples'... +WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmpomIcq9 +2018-03-05 16:36:24.518455: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX +2018-03-05 16:36:25.261578: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties: +name: Tesla K40m major: 3 minor: 5 memoryClockRate(GHz): 0.745 +pciBusID: 0000:82:00.0 +totalMemory: 11.17GiB freeMemory: 11.09GiB +2018-03-05 16:36:25.261658: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: Tesla K40m, pci bus id: 0000:82:00.0, compute capability: 3.5) +2018-03-05 16:36:52.299346: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: Tesla K40m, pci bus id: 0000:82:00.0, compute capability: 3.5) + +real 0m35.273s +user 0m37.828s +sys 0m13.164s +I0305 17:36:54.803642 7405 executor.cpp:938] Command exited with status 0 (pid: 7439) +``` + +**Additional note:** + +Running the job without gpu (using the image tensorflow/tensorflow:latest and "gpus": 0) we got for the same script: + +``` syntaxhighlighter-pre +real 2m15.647s +user 22m33.384s +sys 15m51.164s +``` + +Testing GPU support in Marathon +------------------------------- + +In order to enable GPU support in Marathon, you need to start the framework with the commandline option <span style="color: rgb(255,0,0);">--enable\_features=gpu\_resources</span> (or using the env variable <span style="color: rgb(255,0,0);">MARATHON\_ENABLE\_FEATURES</span>): + +**Start Marathon Framework:** + +``` syntaxhighlighter-pre +docker run -d --name marathon --net host --env-file /etc/marathon/.marathonenv indigodatacloud/marathon:1.5.6 +``` + +with the following enviroment: + +``` syntaxhighlighter-pre +LIBPROCESS_IP=<mesos-master-ip> +MARATHON_HOSTNAME=<mesos-master-fqdn/ip> +MARATHON_HTTP_ADDRESS=<mesos-master-ip> +MARATHON_HTTP_PORT=8080 +MARATHON_MASTER=zk://<mesos-master>:2181/mesos +MARATHON_ZK=zk://<mesos-master>:2181/marathon +MARATHON_FRAMEWORK_NAME=marathon +MARATHON_HTTP_CREDENTIALS=admin:****** +MARATHON_ENABLE_FEATURES=gpu_resources +``` + +**Test:** + +The following application has been submitted to Marathon: + +``` syntaxhighlighter-pre +{ + "id": "tensorflow-gpus", + "cpus": 4, + "gpus": 1, + "mem": 2048, + "disk": 0, + "instances": 1, + "container": { + "type": "MESOS", + "docker": { + "image": "tensorflow/tensorflow:latest-gpu" + } + } +} +``` + + +<span> Running tensorflow docker container</span> +------------------------------------------------- + +<span>1) Using "DOCKER" containerizer on a Mesos cluster without GPUs</span> + +<span>Submit to Marathon the following application:</span> + +``` syntaxhighlighter-pre +{ + "id": "/tensorflow-app", + "cmd": "PORT=8888 /run_jupyter.sh --allow-root", + "cpus": 2, + "mem": 4096, + "instances": 1, + "container": { + "type": "DOCKER", + "docker": { + "image": "tensorflow/tensorflow:latest", + "network": "BRIDGE", + "portMappings": [ + { + "containerPort": 8888, + "hostPort": 0, + "servicePort": 10000, + "protocol": "tcp" + } + ], + "privileged": false, + "forcePullImage": true + } + }, + "env": { + "PASSWORD": "s3cret" + }, + "labels": { + "HAPROXY_GROUP": "external" + } +} +``` + +<span> +</span> + +<span>Then you can access the service through the cluster LB on port 10000 (servicePort)</span> + +<span> +</span> + +<span>2) Using "MESOS" containerizer on a Mesos cluster with GPUs</span> + +``` syntaxhighlighter-pre +{ + "id": "tensorflow-gpus", + "cpus": 4, + "gpus": 1, + "mem": 2048, + "disk": 0, + "instances": 1, + "container": { + "type": "MESOS", + "docker": { + "image": "tensorflow/tensorflow:latest-gpu" + } + }, + "portDefinitions": [ + {"port": 10000, "name": "http"} + ], + "networks": [ { "mode": "host" } ], + "labels":{ + "HAPROXY_GROUP":"external" + }, + "env": { + "PASSWORD":"s3cret" + } +} +``` + +Then you can access the service through the cluster LB on port 10000. + +If the "port" field in portDefinitions is set to 0 then Marathon will assign a random service port (that you can know with a GET request to /v2/apps/<app-name>) + +<span> +</span> + +<span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span> + +References +---------- + + + diff --git a/docs/mesos-cluster/images/7274930.png b/docs/mesos-cluster/images/7274930.png new file mode 100755 index 0000000000000000000000000000000000000000..6afb724470addcd947da8ae75f98d6a58dd97cb7 GIT binary patch literal 36351 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 Y|E34;KgMilX9ghfboFyt=akR{0FtbnhyVZp literal 0 HcmV?d00001 diff --git a/docs/mesos-cluster/images/7274931.png b/docs/mesos-cluster/images/7274931.png new file mode 100755 index 0000000000000000000000000000000000000000..0d37dbf4901acfe0420e683be416325e84abd21c GIT binary patch literal 28789 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 HZW8oAox|q{ literal 0 HcmV?d00001 -- GitLab From 631cf8c557924afa4194be1963833cda23b2018b Mon Sep 17 00:00:00 2001 From: Marica Antonacci <marica.antonacci@ba.infn.it> Date: Tue, 23 Oct 2018 11:22:51 +0200 Subject: [PATCH 2/2] Update enable-gpu-support.md --- docs/mesos-cluster/enable-gpu-support.md | 32 ++++++++---------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/docs/mesos-cluster/enable-gpu-support.md b/docs/mesos-cluster/enable-gpu-support.md index 63609c7..81533fc 100644 --- a/docs/mesos-cluster/enable-gpu-support.md +++ b/docs/mesos-cluster/enable-gpu-support.md @@ -11,9 +11,9 @@ Enabling GPU support in a Mesos cluster is really straightforward (as stated in <span>Mesos exposes GPUs as a simple </span>`SCALAR`<span> resource in the same way it always has for CPUs, memory, and disk.</span> -An important remark is that **currently the GPU support is available for the** **Mesos containerizer and not for the Docker containerizer. **Anyway the Mesos containerizer is now able to run docker images natively through the **<a href="http://mesos.apache.org/documentation/latest/container-image" class="external-link">Universal Container Runtime</a> (UCR)**. ****  +An important remark is that currently the GPU support is available for the Mesos containerizer and not for the Docker containerizer. Anyway the Mesos containerizer is now able to run docker images natively through the <a href="http://mesos.apache.org/documentation/latest/container-image" class="external-link">Universal Container Runtime</a> (UCR). -<img src="assets/images/icons/emoticons/warning.png" title="(warning)" alt="(warning)" class="emoticon emoticon-warning" />The following limitations can, on the other hand, have impacts on the deployment of Long-Running services (Marathon) requiring GPUs: +The following limitations can, on the other hand, have impacts on the deployment of Long-Running services (Marathon) requiring GPUs: - The UCR does not support the following: runtime privileges, Docker options, force pull, named ports, numbered ports, bridge networking, port mapping. @@ -66,17 +66,8 @@ Testbed Setup | Node | Description | |--------------|----------------------------------------------------------------------------| -| Mesos Master | VM 4vCPU, 16GB RAM - - SO: Ubuntu 16.04 | -| Mesos Slave | baremetal - - 40 CPUs, 250GB RAM - - 82:00.0 3D controller: NVIDIA Corporation GK110BGL \[Tesla K40m\] (rev a1) - Model name: Intel(R) Xeon(R) CPU E5-2650L v2 @ 1.70GHz - - SO: Ubuntu 16.04 | +| Mesos Master | VM 4vCPU, 16GB RAM <br> SO: Ubuntu 16.04 | +| Mesos Slave | baremetal <br> 40 CPUs, 250GB RAM <br> 82:00.0 3D controller: NVIDIA Corporation GK110BGL \[Tesla K40m\] (rev a1) <br> Model name: Intel(R) Xeon(R) CPU E5-2650L v2 @ 1.70GHz <br>SO: Ubuntu 16.04 | ### Tested Components Versions @@ -92,9 +83,9 @@ Prepare the agent (slave) node Download the driver repo from <a href="http://www.nvidia.com/Download/index.aspx?lang=en-us" class="uri" class="external-link">http://www.nvidia.com/Download/index.aspx?lang=en-us</a> choosing the proper version. -<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img src="assets/images/7274714/7274930.png" class="confluence-embedded-image" height="250" /></span> +<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img src="images/7274930.png" class="confluence-embedded-image" height="250" /></span> -<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img src="assets/images/7274714/7274931.png" class="confluence-embedded-image" height="217" /></span> +<span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img src="images/7274931.png" class="confluence-embedded-image" height="217" /></span> Install the downloaded .deb file (repo), install the driver and reboot: @@ -238,7 +229,7 @@ The following steps are needed to test the patch: && mvn package -DskipTests" ``` - The jar **chronos-3.0.2-1.jar **will be created in the folder ./target/ + The jar **chronos-3.0.2-1.jar** will be created in the folder ./target/ 3. Create the docker image **Dockerfile:** @@ -257,8 +248,8 @@ The following steps are needed to test the patch: ENTRYPOINT ["/entrypoint.sh"] ``` - **File entrypoint.sh: - ** + **File entrypoint.sh**: + ``` syntaxhighlighter-pre #!/bin/sh @@ -325,9 +316,7 @@ Two different versions of the tensorflow docker image will be used in order to v | Docker tag | CUDA & cuDNN version | Test id | |------------|----------------------|---------| -| latest-gpu - - (1.6.0) | CUDA 9.0, cuDNN 7 | \#1 | +| latest-gpu (1.6.0) | CUDA 9.0, cuDNN 7 | \#1 | | 1.4.0-gpu | CUDA 8.0, cuDNN 6 | \#2 | #### Test \#1: @@ -570,7 +559,6 @@ If the "port" field in portDefinitions is set to 0 then Marathon will assign a r <span> </span> -<span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span> References ---------- -- GitLab