serving_build.sh 5.1 KB
Newer Older
W
wangjiawei04 已提交
1
#!/usr/bin/env bash
G
guru4elephant 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

function init() {
    source /root/.bashrc
    set -v
    #export http_proxy=http://172.19.56.199:3128
    #export https_proxy=http://172.19.56.199:3128
    export PYTHONROOT=/usr
    cd Serving
}

function check_cmd() {
    eval $@
    if [ $? -ne 0 ]; then
        exit 1
    fi
}

function build_client() {
    local TYPE=$1
    local DIRNAME=build-client-$TYPE
    mkdir $DIRNAME && cd $DIRNAME
    case $TYPE in
        CPU|GPU)
            cmake -DPYTHON_INCLUDE_DIR=$PYTHONROOT/include/python2.7/ \
                  -DPYTHON_LIBRARIES=$PYTHONROOT/lib64/libpython2.7.so \
                  -DPYTHON_EXECUTABLE=$PYTHONROOT/bin/python \
                  -DCLIENT_ONLY=ON ..
            check_cmd "make -j2 >/dev/null"
            pip install python/dist/paddle_serving_client* >/dev/null
            ;;
        *)
            echo "error type"
            exit 1
            ;;
    esac
    echo "build client $TYPE part finished as expected."
    cd ..
    rm -rf $DIRNAME
}

function build_server() {
    local TYPE=$1
    local DIRNAME=build-server-$TYPE
    mkdir $DIRNAME && cd $DIRNAME
    case $TYPE in
        CPU)
            cmake -DPYTHON_INCLUDE_DIR=$PYTHONROOT/include/python2.7/ \
                  -DPYTHON_LIBRARIES=$PYTHONROOT/lib64/libpython2.7.so \
                  -DPYTHON_EXECUTABLE=$PYTHONROOT/bin/python \
                  -DCLIENT_ONLY=OFF ..
W
wangjiawei04 已提交
52
            check_cmd "make -j2 >/dev/null && make install -j2 >/dev/null"
G
guru4elephant 已提交
53 54 55 56 57 58 59 60
            pip install python/dist/paddle_serving_server* >/dev/null
            ;;
        GPU)
            cmake -DPYTHON_INCLUDE_DIR=$PYTHONROOT/include/python2.7/ \
                  -DPYTHON_LIBRARIES=$PYTHONROOT/lib64/libpython2.7.so \
                  -DPYTHON_EXECUTABLE=$PYTHONROOT/bin/python \
                  -DCLIENT_ONLY=OFF \
                  -DWITH_GPU=ON ..
W
wangjiawei04 已提交
61
            check_cmd "make -j2 >/dev/null && make install -j2 >/dev/null"
G
guru4elephant 已提交
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
            pip install python/dist/paddle_serving_server* >/dev/null
            ;;
        *)
            echo "error type"
            exit 1
            ;;
    esac
    echo "build server $TYPE part finished as expected."
    cd ..
    rm -rf $DIRNAME
}

function python_test_fit_a_line() {
    cd fit_a_line
    sh get_data.sh
    local TYPE=$1
W
wangjiawei04 已提交
78
    echo $TYPE
G
guru4elephant 已提交
79 80 81 82 83 84 85 86
    case $TYPE in
        CPU)
            # test rpc
            check_cmd "python test_server.py uci_housing_model/ > /dev/null &"
            sleep 5
            check_cmd "python test_client.py uci_housing_client/serving_client_conf.prototxt > /dev/null"
            ps -ef | grep "paddle_serving_server" | grep -v grep | awk '{print $2}' | xargs kill
            # test web
G
guru4elephant 已提交
87
            check_cmd "python -m paddle_serving_server.serve --model uci_housing_model/ --name uci --port 9399 --name uci > /dev/null &"
G
guru4elephant 已提交
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
            sleep 5
            check_cmd "curl -H \"Content-Type:application/json\" -X POST -d '{\"x\": [0.0137, -0.1136, 0.2553, -0.0692, 0.0582, -0.0727, -0.1583, -0.0584, 0.6283, 0.4919, 0.1856, 0.0795, -0.0332], \"fetch\":[\"price\"]}' http://127.0.0.1:9399/uci/prediction"
            ps -ef | grep "paddle_serving_server" | grep -v grep | awk '{print $2}' | xargs kill
            ;;
        GPU)
            echo "not support yet"
            exit 1
            ;;
        *)
            echo "error type"
            exit 1
            ;;
    esac
    echo "test fit_a_line $TYPE part finished as expected."
    rm -rf image kvdb log uci_housing* work*
    cd ..
}

W
wangjiawei04 已提交
106 107
function python_run_criteo_ctr_with_cube() {
    TYPE="CPU"
108
    yum install -y bc >/dev/null
W
wangjiawei04 已提交
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
    cd criteo_ctr_with_cube
    check_cmd "wget https://paddle-serving.bj.bcebos.com/unittest/ctr_cube_unittest.tar.gz"
    check_cmd "tar xf ctr_cube_unittest.tar.gz"
    check_cmd "mv models/ctr_client_conf ./"
    check_cmd "mv models/ctr_serving_model_kv ./"
    check_cmd "mv models/data ./cube/"
    check_cmd "mv models/ut_data ./"
    cp ../../../build-server-$TYPE/output/bin/cube* ./cube/ 
    sh cube_prepare.sh &
    check_cmd "mkdir work_dir1 && cp cube/conf/cube.conf ./work_dir1/"    
    python test_server.py ctr_serving_model_kv &
    check_cmd "python test_client.py ctr_client_conf/serving_client_conf.prototxt ./ut_data >score"
    AUC=$(tail -n 2  score | awk 'NR==1')
    VAR2="0.70"
    RES=$( echo "$AUC>$VAR2" | bc )
    if [[ $RES -eq 0 ]]; then
        echo "error with criteo_ctr_with_cube inference auc test, auc should > 0.70"
        exit 1
    fi
128
    echo "criteo_ctr_with_cube inference auc test success"
W
wangjiawei04 已提交
129 130 131 132
    ps -ef | grep "paddle_serving_server" | grep -v grep | awk '{print $2}' | xargs kill
    ps -ef | grep "cube" | grep -v grep | awk '{print $2}' | xargs kill
}

G
guru4elephant 已提交
133 134 135 136 137 138
function python_run_test() {
    cd python/examples
    local TYPE=$1
    # Frist time run, downloading PaddleServing components ...
    python -c "from paddle_serving_server import Server; server = Server(); server.download_bin()"
    python_test_fit_a_line $TYPE
W
wangjiawei04 已提交
139
    python_run_criteo_ctr_with_cube
G
guru4elephant 已提交
140 141 142 143 144 145 146 147 148
    echo "test python $TYPE part finished as expected."
    cd ../..
}

function main() {
    local TYPE=$1
    init
    build_client $TYPE
    build_server $TYPE
W
wangjiawei04 已提交
149
    cd Serving/
G
guru4elephant 已提交
150 151 152 153 154
    python_run_test $TYPE
    echo "serving $TYPE part finished as expected."
}

main $@