use of ml.shifu.shifu.message.AkkaActorInputMessage in project shifu by ShifuML.
the class AkkaSystemExecutor method submitNormalizeJob.
/**
* Submit job to normalize training data
*
* @param modelConfig
* - configuration for model
* @param columnConfigList
* - configurations for columns
* @param scanners
* - scanners of training data
*/
public void submitNormalizeJob(final ModelConfig modelConfig, final List<ColumnConfig> columnConfigList, List<Scanner> scanners) {
actorSystem = ActorSystem.create("ShifuActorSystem");
final AkkaExecStatus akkaStatus = new AkkaExecStatus(true);
log.info("Create Akka system to normalize data");
ActorRef dataNormalizeRef = actorSystem.actorOf(new Props(new UntypedActorFactory() {
private static final long serialVersionUID = -2123098236012879296L;
public UntypedActor create() throws IOException {
return new NormalizeDataActor(modelConfig, columnConfigList, akkaStatus);
}
}), "data-normalizer");
dataNormalizeRef.tell(new AkkaActorInputMessage(scanners), dataNormalizeRef);
// wait for termination
actorSystem.awaitTermination();
checkAkkaStatus(akkaStatus);
}
use of ml.shifu.shifu.message.AkkaActorInputMessage in project shifu by ShifuML.
the class PostTrainActor method onReceive.
/* (non-Javadoc)
* @see akka.actor.UntypedActor#onReceive(java.lang.Object)
*/
@Override
public void onReceive(Object message) throws Exception {
if (message instanceof AkkaActorInputMessage) {
resultCnt = 0;
AkkaActorInputMessage msg = (AkkaActorInputMessage) message;
List<Scanner> scanners = msg.getScanners();
log.debug("Num of Scanners: " + scanners.size());
int streamId = 0;
for (Scanner scanner : scanners) {
dataLoadRef.tell(new ScanEvalDataMessage(streamId++, scanners.size(), scanner), getSelf());
}
} else if (message instanceof StatsResultMessage) {
StatsResultMessage statsRstMsg = (StatsResultMessage) message;
ColumnConfig columnConfig = statsRstMsg.getColumnConfig();
columnConfigList.set(columnConfig.getColumnNum(), columnConfig);
resultCnt++;
log.debug("Received " + resultCnt + " messages, expected message count is:" + expectedResultCnt);
if (resultCnt == expectedResultCnt) {
log.info("Finished post-train.");
PathFinder pathFinder = new PathFinder(modelConfig);
JSONUtils.writeValue(new File(pathFinder.getColumnConfigPath()), columnConfigList);
getContext().system().shutdown();
}
} else if (message instanceof ExceptionMessage) {
// since some children actors meet some exception, shutdown the system
ExceptionMessage msg = (ExceptionMessage) message;
getContext().system().shutdown();
// and wrapper the exception into Return status
addExceptionIntoCondition(msg.getException());
} else {
unhandled(message);
}
}
use of ml.shifu.shifu.message.AkkaActorInputMessage in project shifu by ShifuML.
the class TrainDtModelActor method onReceive.
/* (non-Javadoc)
* @see akka.actor.UntypedActor#onReceive(java.lang.Object)
*/
@Override
public void onReceive(Object message) throws Exception {
if (message instanceof AkkaActorInputMessage) {
resultCnt = 0;
AkkaActorInputMessage msg = (AkkaActorInputMessage) message;
List<Scanner> scanners = msg.getScanners();
log.debug("Num of Scanners: " + scanners.size());
for (Scanner scanner : scanners) {
dataLoadRef.tell(new ScanStatsRawDataMessage(scanners.size(), scanner), getSelf());
}
} else if (message instanceof TrainResultMessage) {
resultCnt++;
if (resultCnt == trainerCnt) {
log.info("Received " + resultCnt + " finish message. Close System.");
Encog.getInstance().shutdown();
getContext().system().shutdown();
}
} else if (message instanceof ExceptionMessage) {
// since some children actors meet some exception, shutdown the system
ExceptionMessage msg = (ExceptionMessage) message;
getContext().system().shutdown();
// and wrapper the exception into Return status
addExceptionIntoCondition(msg.getException());
} else {
unhandled(message);
}
}
use of ml.shifu.shifu.message.AkkaActorInputMessage in project shifu by ShifuML.
the class TrainModelActor method onReceive.
/* (non-Javadoc)
* @see akka.actor.UntypedActor#onReceive(java.lang.Object)
*/
@Override
public void onReceive(Object message) throws Exception {
if (message instanceof AkkaActorInputMessage) {
resultCnt = 0;
AkkaActorInputMessage msg = (AkkaActorInputMessage) message;
List<Scanner> scanners = msg.getScanners();
log.debug("Num of Scanners: " + scanners.size());
for (Scanner scanner : scanners) {
dataLoadRef.tell(new ScanTrainDataMessage(scanners.size(), isDryRun, scanner), getSelf());
}
} else if (message instanceof TrainResultMessage) {
resultCnt++;
if (resultCnt == trainerCnt) {
log.info("Received " + resultCnt + " finish message. Close System.");
Encog.getInstance().shutdown();
getContext().system().shutdown();
}
} else if (message instanceof ExceptionMessage) {
// since some children actors meet some exception, shutdown the system
ExceptionMessage msg = (ExceptionMessage) message;
getContext().system().shutdown();
// and wrapper the exception into Return status
addExceptionIntoCondition(msg.getException());
} else {
unhandled(message);
}
}
use of ml.shifu.shifu.message.AkkaActorInputMessage in project shifu by ShifuML.
the class AkkaSystemExecutor method submitStatsCalJob.
/**
* Submit job to calculate column stats
* Column stats including:
* - Binning of value range
* - max/min/average
* - ks/iv
*
* @param modelConfig
* - configuration for model
* @param columnConfigList
* - configurations for columns
* @param scanners
* - scanners of training data
*/
public void submitStatsCalJob(final ModelConfig modelConfig, final List<ColumnConfig> columnConfigList, List<Scanner> scanners) {
actorSystem = ActorSystem.create("ShifuActorSystem");
final AkkaExecStatus akkaStatus = new AkkaExecStatus(true);
log.info("Create Akka system to calculate stats");
ActorRef statsCalRef = actorSystem.actorOf(new Props(new UntypedActorFactory() {
private static final long serialVersionUID = -1437127862571741369L;
public UntypedActor create() {
return new CalculateStatsActor(modelConfig, columnConfigList, akkaStatus);
}
}), "stats-calculator");
statsCalRef.tell(new AkkaActorInputMessage(scanners), statsCalRef);
// wait for termination and check the status
actorSystem.awaitTermination();
checkAkkaStatus(akkaStatus);
}
Aggregations