Search in sources :

Example 6 with AkkaActorInputMessage

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);
}
Also used : AkkaActorInputMessage(ml.shifu.shifu.message.AkkaActorInputMessage)

Example 7 with AkkaActorInputMessage

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);
    }
}
Also used : AkkaActorInputMessage(ml.shifu.shifu.message.AkkaActorInputMessage) Scanner(java.util.Scanner) ExceptionMessage(ml.shifu.shifu.message.ExceptionMessage) ColumnConfig(ml.shifu.shifu.container.obj.ColumnConfig) StatsResultMessage(ml.shifu.shifu.message.StatsResultMessage) ScanEvalDataMessage(ml.shifu.shifu.message.ScanEvalDataMessage) PathFinder(ml.shifu.shifu.fs.PathFinder) File(java.io.File)

Example 8 with AkkaActorInputMessage

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);
    }
}
Also used : AkkaActorInputMessage(ml.shifu.shifu.message.AkkaActorInputMessage) Scanner(java.util.Scanner) ExceptionMessage(ml.shifu.shifu.message.ExceptionMessage) TrainResultMessage(ml.shifu.shifu.message.TrainResultMessage) ScanStatsRawDataMessage(ml.shifu.shifu.message.ScanStatsRawDataMessage)

Example 9 with AkkaActorInputMessage

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);
    }
}
Also used : AkkaActorInputMessage(ml.shifu.shifu.message.AkkaActorInputMessage) Scanner(java.util.Scanner) ExceptionMessage(ml.shifu.shifu.message.ExceptionMessage) ScanTrainDataMessage(ml.shifu.shifu.message.ScanTrainDataMessage) TrainResultMessage(ml.shifu.shifu.message.TrainResultMessage)

Example 10 with AkkaActorInputMessage

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);
}
Also used : AkkaActorInputMessage(ml.shifu.shifu.message.AkkaActorInputMessage)

Aggregations

AkkaActorInputMessage (ml.shifu.shifu.message.AkkaActorInputMessage)12 Scanner (java.util.Scanner)6 ExceptionMessage (ml.shifu.shifu.message.ExceptionMessage)6 File (java.io.File)2 ColumnConfig (ml.shifu.shifu.container.obj.ColumnConfig)2 PathFinder (ml.shifu.shifu.fs.PathFinder)2 ScanEvalDataMessage (ml.shifu.shifu.message.ScanEvalDataMessage)2 ScanStatsRawDataMessage (ml.shifu.shifu.message.ScanStatsRawDataMessage)2 StatsResultMessage (ml.shifu.shifu.message.StatsResultMessage)2 TrainResultMessage (ml.shifu.shifu.message.TrainResultMessage)2 EvalResultMessage (ml.shifu.shifu.message.EvalResultMessage)1 NormResultDataMessage (ml.shifu.shifu.message.NormResultDataMessage)1 ScanNormInputDataMessage (ml.shifu.shifu.message.ScanNormInputDataMessage)1 ScanTrainDataMessage (ml.shifu.shifu.message.ScanTrainDataMessage)1