#!/bin/bash function usage(){ echo "usage: paddle [--help] []" echo "These are common paddle commands used in various situations:" echo " train Start a paddle_trainer" echo " merge_model Start a paddle_merge_model" echo " pserver Start a paddle_pserver_main" echo " version Print paddle version" echo " dump_config Dump the trainer config as proto string" echo " make_diagram Make Diagram using Graphviz" echo "" echo "'paddle train --help' 'paddle merge_model --help', 'paddle pserver --help', list more detailed usage of each command" } function version(){ echo "PaddlePaddle @PADDLE_VERSION@, compiled with" echo " with_avx: @WITH_AVX@" echo " with_gpu: @WITH_GPU@" echo " with_mkldnn: @WITH_MKLDNN" echo " with_mklml: @WITH_MKLML@" echo " with_double: @WITH_DOUBLE@" echo " with_python: @WITH_PYTHON@" echo " with_rdma: @WITH_RDMA@" echo " with_timer: @WITH_TIMER@" } function ver2num() { set -e # convert version to number. if [ -z "$1" ]; then # empty argument printf "%03d%03d%03d%03d%03d" 0 else local VERN=$(echo $1 | sed 's#v##g' | sed 's#\.# #g' \ | sed 's#a# 0 #g' | sed 's#b# 1 #g' | sed 's#rc# 2 #g') if [ `echo $VERN | wc -w` -eq 3 ] ; then printf "%03d%03d%03d%03d%03d" $VERN 999 999 else printf "%03d%03d%03d%03d%03d" $VERN fi fi set +e } PADDLE_CONF_HOME="$HOME/.config/paddle" mkdir -p ${PADDLE_CONF_HOME} if [ -z "${PADDLE_NO_STAT+x}" ]; then SERVER_VER=`curl -m 5 -X POST --data content="{ \"version\": \"@PADDLE_VERSION@\" }"\ -b ${PADDLE_CONF_HOME}/paddle.cookie \ -c ${PADDLE_CONF_HOME}/paddle.cookie \ http://api.paddlepaddle.org/version 2>/dev/null` if [ $? -eq 0 ] && [ "$(ver2num @PADDLE_VERSION@)" -lt $(ver2num $SERVER_VER) ]; then echo "Paddle release a new version ${SERVER_VER}, you can get the install package in http://www.paddlepaddle.org" fi fi MYDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" if [ ! -z "${DEBUGGER}" ]; then echo "Using debug command ${DEBUGGER}" fi CUDNN_LIB_PATH="@CUDNN_LIB_PATH@" if [ ! -z "${CUDNN_LIB_PATH}" ]; then export LD_LIBRARY_PATH=${CUDNN_LIB_PATH}:${LD_LIBRARY_PATH} fi export PYTHONPATH=${PWD}:${PYTHONPATH} # Check python lib installed or not. pip --help > /dev/null if [ $? -ne 0 ]; then echo "pip should be installed to run paddle." exit 1 fi INSTALLED_VERSION=`pip freeze 2>/dev/null | grep '^paddle' | sed 's/.*==//g'` if [ -z ${INSTALLED_VERSION} ]; then INSTALLED_VERSION="0.0.0" # not installed fi cat </dev/null) BASEDIR=$(dirname "$0") pip install ${BASEDIR}/../opt/paddle/share/wheels/*-${PYTHON_PADDLE_VERSION}-*.whl if [ $? -ne 0 ]; then echo "pip install wheels failed. " echo "Please use 'sudo paddle' at the first time you use PaddlePaddle" echo "PaddlePaddle will install some python dependencies automatically." exit 1 fi echo "Python dependencies are installed." fi case "$1" in "train") ${DEBUGGER} $MYDIR/../opt/paddle/bin/paddle_trainer ${@:2} ;; "merge_model") ${DEBUGGER} $MYDIR/../opt/paddle/bin/paddle_merge_model ${@:2} ;; "pserver") ${DEBUGGER} $MYDIR/../opt/paddle/bin/paddle_pserver_main ${@:2} ;; "dump_config") python -m paddle.utils.dump_config ${@:2} ;; "make_diagram") python -m paddle.utils.make_model_diagram ${@:2} ;; "usage") $MYDIR/../opt/paddle/bin/paddle_usage ${@:2} ;; "version") version ;; "--help") usage ;; *) usage ;; esac