arshjaved's picture
normal Model Upload (teja)
f9f1a35 verified
#!/bin/bash -e
# Copyright 2017 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# At least one GPU is considered available iff COLAB_GPU=1.
export COLAB_GPU="$([[ -c /dev/nvidiactl ]] && echo 1)"
/usr/local/colab/bin/oom_monitor.sh &
# Start the Colab proxy to the Jupyter kernel manager.
# TODO(b/267667580): Evaluate use of tcmalloc here and possibly other places.
( while true; do
GCE_METADATA_HOST="${VM_GCE_METADATA_HOST}" \
LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libtcmalloc.so.4' \
/usr/colab/bin/kernel_manager_proxy \
--listen_port="${KMP_LISTEN_PORT}" \
--target_port="${KMP_TARGET_PORT}" \
${KMP_EXTRA_ARGS} || true
sleep 1
done & )
# Start fresh to isolate user-initiated actions from VM build & startup events.
for f in /var/log/apt/history.log /var/log/pip.log; do
mv "$f" "${f}.bak-run.sh" 2>/dev/null || true # Ignore missing files.
done
# Warm disk buffers for modules we need for kernel startup. (cf: b/116536906)
if [[ "${COLAB_WARMUP_DEFAULTS}" == "1" ]]; then
python3 -c "import google.colab._kernel"
python3 -c "import matplotlib"
# importing tensorflow on a TPU VM causes the process to acquire the TPU for
# the duration of the import. This makes the TPU effectively unacquirable for
# the duration of the warmup, which can break things like probers.
if [[ "${COLAB_TPU_1VM}" == "1" ]]; then
python3 -c "import tensorflow"
else
python3 -c "import tensorflow" &
fi
fi
# Start the server to handle /files and /api/contents requests.
/usr/local/bin/colab-fileshim.py ${COLAB_FILESHIM_EXTRA_ARGS} &
# Link NVidia tools from a read-only volume mount.
for f in $(ls /opt/bin/.nvidia 2>/dev/null); do
ln -st /opt/bin "/opt/bin/.nvidia/${f}"
ln -st /usr/bin "/opt/bin/.nvidia/${f}"
done
cd /
# Start the node server.
if [[ "${COLAB_HUMAN_READABLE_NODE_LOGS}" == "1" ]]; then
PIPE=/tmp/.node.out
if ! [[ -p "${PIPE}" ]]; then
mkfifo "${PIPE}"
fi
/datalab/web/node_modules/bunyan/bin/bunyan \
-l "${COLAB_NODE_LOG_LEVEL:-info}" < "${PIPE}" &
exec >& "${PIPE}"
fi
exec /tools/node/bin/node /datalab/web/app.js