From 581fe06a9b98c12e0acbb7a95cec8980f99b91bc Mon Sep 17 00:00:00 2001 From: tqchen Date: Mon, 9 Feb 2015 20:46:38 -0800 Subject: [PATCH] add mocktest --- rabit-learn/linear/Makefile | 3 ++- rabit-learn/linear/README.md | 4 ++++ rabit-learn/linear/run-linear-mock.sh | 15 +++++++++++++++ rabit-learn/solver/lbfgs.h | 16 ++++++++++++---- 4 files changed, 33 insertions(+), 5 deletions(-) create mode 100755 rabit-learn/linear/run-linear-mock.sh diff --git a/rabit-learn/linear/Makefile b/rabit-learn/linear/Makefile index c77b8cbd5..88f0a2c1a 100644 --- a/rabit-learn/linear/Makefile +++ b/rabit-learn/linear/Makefile @@ -1,6 +1,6 @@ # specify tensor path BIN = linear.rabit -MOCKBIN= +MOCKBIN= linear.mock MPIBIN = # objectives that makes up rabit library OBJ = linear.o @@ -11,3 +11,4 @@ CFLAGS+=-fopenmp linear.o: linear.cc ../../src/*.h linear.h ../solver/*.h # dependenies here linear.rabit: linear.o lib +linear.mock: linear.o lib diff --git a/rabit-learn/linear/README.md b/rabit-learn/linear/README.md index d96d1c2bf..e94868155 100644 --- a/rabit-learn/linear/README.md +++ b/rabit-learn/linear/README.md @@ -8,6 +8,10 @@ Parameters All the parameters can be set by param=value #### Important Parameters +* objective [default = logistic] + - can be linear or logistic +* base_score [default = 0.5] + - global bias, recommended set to mean value of label * reg_L1 [default = 0] - l1 regularization co-efficient * reg_L2 [default = 1] diff --git a/rabit-learn/linear/run-linear-mock.sh b/rabit-learn/linear/run-linear-mock.sh new file mode 100755 index 000000000..ec7d3789f --- /dev/null +++ b/rabit-learn/linear/run-linear-mock.sh @@ -0,0 +1,15 @@ +#!/bin/bash +if [[ $# -lt 1 ]] +then + echo "Usage: nprocess" + exit -1 +fi + +rm -rf mushroom.row* *.model +k=$1 + +# split the lib svm file into k subfiles +python splitrows.py ../data/agaricus.txt.train mushroom $k + +# run xgboost mpi +../../tracker/rabit_demo.py -n $k linear.mock mushroom.row\%d "${*:2}" reg_L1=1 mock=0,1,1,0 mock=1,1,1,0 mock=0,2,1,1 diff --git a/rabit-learn/solver/lbfgs.h b/rabit-learn/solver/lbfgs.h index 1f3e3ddd6..27493540d 100644 --- a/rabit-learn/solver/lbfgs.h +++ b/rabit-learn/solver/lbfgs.h @@ -119,7 +119,9 @@ class LBFGSSolver { int version = rabit::LoadCheckPoint(&gstate, &hist); if (version == 0) { gstate.num_dim = gstate.obj->InitNumDim(); - } + } else { + printf("restart from version=%d\n", version); + } { // decide parameter partition size_t nproc = rabit::GetWorldSize(); @@ -216,7 +218,7 @@ class LBFGSSolver { int n = static_cast(hist.num_useful()); if (n < m) { utils::Assert(hist.num_useful() == gstate.num_iteration, - "BUG2"); + "BUG2, n=%d, it=%d", n, gstate.num_iteration); } else { utils::Assert(n == m, "BUG3"); } @@ -592,7 +594,10 @@ class LBFGSSolver { } // load the shift array virtual void Load(rabit::IStream &fi) { - fi.Read(this, sizeof(size_t) * 4); + fi.Read(&num_col_, sizeof(num_col_)); + fi.Read(&stride_, sizeof(stride_)); + fi.Read(&size_memory_, sizeof(size_memory_)); + fi.Read(&num_useful_, sizeof(num_useful_)); this->Init(num_col_, size_memory_); for (size_t i = 0; i < num_useful_; ++i) { fi.Read((*this)[i], num_col_ * sizeof(DType)); @@ -601,7 +606,10 @@ class LBFGSSolver { } // save the shift array virtual void Save(rabit::IStream &fi) const { - fi.Write(this, sizeof(size_t) * 4); + fi.Write(&num_col_, sizeof(num_col_)); + fi.Write(&stride_, sizeof(stride_)); + fi.Write(&size_memory_, sizeof(size_memory_)); + fi.Write(&num_useful_, sizeof(num_useful_)); for (size_t i = 0; i < num_useful_; ++i) { fi.Write((*this)[i], num_col_ * sizeof(DType)); fi.Write((*this)[i + size_memory_], num_col_ * sizeof(DType));