How to verify if process is truly running in parallel?

rlleras
rlleras New Altair Community Member
edited November 5 in Community Q&A
Hello,

This may be a silly question, but I have setup a process that is supposed to take advantage of the Parallel Processing Extension, but I don't see any way to determine if it is actually doing so properly. I'm looking at the number of cores being used by my machine and I don't see all of them working. I know in previous versions of RapidMiner, if I used the X-Val (Parallel) process, the display would show parallel processes as being separated with a "|" character, ie: ForwardSelection>>[1]Xval(Parallel) | [2]XVal(Parallel) | [3]XVal (Parallel), etc.  Here is my process:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<process version="5.3.008">
  <context>
    <input/>
    <output/>
    <macros/>
  </context>
  <operator activated="true" class="process" compatibility="5.3.008" expanded="true" name="Process">
    <process expanded="true">
      <operator activated="true" class="retrieve" compatibility="5.3.008" expanded="true" height="60" name="Retrieve BELBIN transposed data all 82 HN cancer cases" width="90" x="246" y="30">
        <parameter key="repository_entry" value="../data/BELBIN transposed data all 82 HN cancer cases"/>
      </operator>
      <operator activated="true" class="set_role" compatibility="5.3.008" expanded="true" height="76" name="Set Role" width="90" x="447" y="30">
        <parameter key="attribute_name" value="Final N Stage"/>
        <parameter key="target_role" value="label"/>
        <list key="set_additional_roles"/>
      </operator>
      <operator activated="true" class="wrapper_x_validation" compatibility="5.3.008" expanded="true" height="76" name="ForwardXVal" width="90" x="648" y="30">
        <parameter key="leave_one_out" value="true"/>
        <parameter key="parallelize_attribute_weighting" value="true"/>
        <parameter key="parallelize_model_building" value="true"/>
        <parameter key="parallelize_model_evaluation" value="true"/>
        <process expanded="true">
          <operator activated="true" class="optimize_selection_forward" compatibility="5.3.008" expanded="true" height="94" name="Forward Selection" width="90" x="45" y="30">
            <parameter key="maximal_number_of_attributes" value="700"/>
            <parameter key="speculative_rounds" value="5"/>
            <parameter key="parallelize_learning_process" value="true"/>
            <process expanded="true">
              <operator activated="true" class="x_validation" compatibility="5.3.008" expanded="true" height="130" name="FSValidation" width="90" x="246" y="30">
                <parameter key="leave_one_out" value="true"/>
                <process expanded="true">
                  <operator activated="true" class="support_vector_machine_linear" compatibility="5.3.008" expanded="true" height="76" name="SVM (Linear)" width="90" x="112" y="30">
                    <parameter key="balance_cost" value="true"/>
                  </operator>
                  <connect from_port="training" to_op="SVM (Linear)" to_port="training set"/>
                  <connect from_op="SVM (Linear)" from_port="model" to_port="model"/>
                  <portSpacing port="source_training" spacing="0"/>
                  <portSpacing port="sink_model" spacing="0"/>
                  <portSpacing port="sink_through 1" spacing="0"/>
                  <portSpacing port="sink_through 2" spacing="0"/>
                </process>
                <process expanded="true">
                  <operator activated="true" class="apply_model" compatibility="5.3.008" expanded="true" height="76" name="Apply Model" width="90" x="45" y="30">
                    <list key="application_parameters"/>
                  </operator>
                  <operator activated="true" class="performance_classification" compatibility="5.3.008" expanded="true" height="76" name="Performance" width="90" x="179" y="30">
                    <parameter key="main_criterion" value="accuracy"/>
                    <parameter key="classification_error" value="true"/>
                    <parameter key="kappa" value="true"/>
                    <parameter key="correlation" value="true"/>
                    <list key="class_weights"/>
                  </operator>
                  <operator activated="true" class="performance_min_max" compatibility="5.3.008" expanded="true" height="60" name="Performance (2)" width="90" x="313" y="30">
                    <parameter key="minimum_weight" value="0.5"/>
                  </operator>
                  <connect from_port="model" to_op="Apply Model" to_port="model"/>
                  <connect from_port="test set" to_op="Apply Model" to_port="unlabelled data"/>
                  <connect from_port="through 1" to_port="averagable 2"/>
                  <connect from_op="Apply Model" from_port="labelled data" to_op="Performance" to_port="labelled data"/>
                  <connect from_op="Performance" from_port="performance" to_op="Performance (2)" to_port="performance vector"/>
                  <connect from_op="Performance (2)" from_port="performance vector" to_port="averagable 1"/>
                  <portSpacing port="source_model" spacing="0"/>
                  <portSpacing port="source_test set" spacing="0"/>
                  <portSpacing port="source_through 1" spacing="0"/>
                  <portSpacing port="source_through 2" spacing="0"/>
                  <portSpacing port="sink_averagable 1" spacing="0"/>
                  <portSpacing port="sink_averagable 2" spacing="0"/>
                  <portSpacing port="sink_averagable 3" spacing="0"/>
                </process>
              </operator>
              <connect from_port="example set" to_op="FSValidation" to_port="training"/>
              <connect from_op="FSValidation" from_port="averagable 1" to_port="performance"/>
              <portSpacing port="source_example set" spacing="0"/>
              <portSpacing port="sink_performance" spacing="0"/>
            </process>
          </operator>
          <connect from_port="weighting set source" to_op="Forward Selection" to_port="example set"/>
          <connect from_op="Forward Selection" from_port="attribute weights" to_port="attribute weights sink"/>
          <portSpacing port="source_weighting set source" spacing="0"/>
          <portSpacing port="sink_attribute weights sink" spacing="0"/>
        </process>
        <process expanded="true">
          <operator activated="true" class="support_vector_machine_linear" compatibility="5.3.008" expanded="true" height="76" name="SVM (2)" width="90" x="45" y="30">
            <parameter key="balance_cost" value="true"/>
          </operator>
          <connect from_port="train set source" to_op="SVM (2)" to_port="training set"/>
          <connect from_op="SVM (2)" from_port="model" to_port="model sink"/>
          <portSpacing port="source_train set source" spacing="0"/>
          <portSpacing port="sink_model sink" spacing="0"/>
        </process>
        <process expanded="true">
          <operator activated="true" class="apply_model" compatibility="5.3.008" expanded="true" height="76" name="Apply Model (2)" width="90" x="45" y="30">
            <list key="application_parameters"/>
          </operator>
          <operator activated="true" class="performance_classification" compatibility="5.3.008" expanded="true" height="76" name="Performance (3)" width="90" x="179" y="30">
            <parameter key="main_criterion" value="accuracy"/>
            <parameter key="classification_error" value="true"/>
            <parameter key="kappa" value="true"/>
            <parameter key="correlation" value="true"/>
            <list key="class_weights"/>
          </operator>
          <connect from_port="test set source" to_op="Apply Model (2)" to_port="unlabelled data"/>
          <connect from_port="model source" to_op="Apply Model (2)" to_port="model"/>
          <connect from_op="Apply Model (2)" from_port="labelled data" to_op="Performance (3)" to_port="labelled data"/>
          <connect from_op="Performance (3)" from_port="performance" to_port="performance vector sink"/>
          <portSpacing port="source_test set source" spacing="0"/>
          <portSpacing port="source_model source" spacing="0"/>
          <portSpacing port="sink_performance vector sink" spacing="0"/>
        </process>
      </operator>
      <operator activated="true" class="select_by_weights" compatibility="5.3.008" expanded="true" height="94" name="Select by Weights" width="90" x="782" y="165">
        <parameter key="weight_relation" value="greater"/>
        <parameter key="weight" value="0.0"/>
      </operator>
      <operator activated="true" class="wrapper_x_validation" compatibility="5.3.008" expanded="true" height="76" name="BackwardXVal" width="90" x="916" y="165">
        <parameter key="leave_one_out" value="true"/>
        <parameter key="parallelize_attribute_weighting" value="true"/>
        <parameter key="parallelize_model_building" value="true"/>
        <parameter key="parallelize_model_evaluation" value="true"/>
        <process expanded="true">
          <operator activated="true" class="optimize_selection_backward" compatibility="5.3.008" expanded="true" height="94" name="Backward Elimination" width="90" x="45" y="30">
            <parameter key="maximal_number_of_eliminations" value="36"/>
            <parameter key="speculative_rounds" value="10"/>
            <parameter key="parallelize_learning_process" value="true"/>
            <process expanded="true">
              <operator activated="true" class="x_validation" compatibility="5.3.008" expanded="true" height="130" name="FSValidation (2)" width="90" x="45" y="30">
                <parameter key="leave_one_out" value="true"/>
                <process expanded="true">
                  <operator activated="true" class="support_vector_machine_linear" compatibility="5.3.008" expanded="true" height="60" name="SVM (3)" width="90" x="271" y="30">
                    <parameter key="balance_cost" value="true"/>
                  </operator>
                  <connect from_port="training" to_op="SVM (3)" to_port="training set"/>
                  <connect from_op="SVM (3)" from_port="model" to_port="model"/>
                  <portSpacing port="source_training" spacing="0"/>
                  <portSpacing port="sink_model" spacing="0"/>
                  <portSpacing port="sink_through 1" spacing="0"/>
                  <portSpacing port="sink_through 2" spacing="0"/>
                </process>
                <process expanded="true">
                  <operator activated="true" class="apply_model" compatibility="5.3.008" expanded="true" height="60" name="Apply Model (3)" width="90" x="45" y="30">
                    <list key="application_parameters"/>
                  </operator>
                  <operator activated="true" class="performance_classification" compatibility="5.3.008" expanded="true" height="60" name="Performance (4)" width="90" x="180" y="30">
                    <parameter key="main_criterion" value="accuracy"/>
                    <parameter key="classification_error" value="true"/>
                    <parameter key="kappa" value="true"/>
                    <parameter key="correlation" value="true"/>
                    <list key="class_weights"/>
                  </operator>
                  <operator activated="true" class="performance_min_max" compatibility="5.3.008" expanded="true" height="60" name="Performance (5)" width="90" x="466" y="30">
                    <parameter key="minimum_weight" value="0.5"/>
                  </operator>
                  <connect from_port="model" to_op="Apply Model (3)" to_port="model"/>
                  <connect from_port="test set" to_op="Apply Model (3)" to_port="unlabelled data"/>
                  <connect from_port="through 1" to_port="averagable 2"/>
                  <connect from_op="Apply Model (3)" from_port="labelled data" to_op="Performance (4)" to_port="labelled data"/>
                  <connect from_op="Performance (4)" from_port="performance" to_op="Performance (5)" to_port="performance vector"/>
                  <connect from_op="Performance (5)" from_port="performance vector" to_port="averagable 1"/>
                  <portSpacing port="source_model" spacing="0"/>
                  <portSpacing port="source_test set" spacing="0"/>
                  <portSpacing port="source_through 1" spacing="0"/>
                  <portSpacing port="source_through 2" spacing="0"/>
                  <portSpacing port="sink_averagable 1" spacing="0"/>
                  <portSpacing port="sink_averagable 2" spacing="0"/>
                  <portSpacing port="sink_averagable 3" spacing="0"/>
                </process>
              </operator>
              <connect from_port="example set" to_op="FSValidation (2)" to_port="training"/>
              <connect from_op="FSValidation (2)" from_port="averagable 1" to_port="performance"/>
              <portSpacing port="source_example set" spacing="0"/>
              <portSpacing port="sink_performance" spacing="0"/>
            </process>
          </operator>
          <connect from_port="weighting set source" to_op="Backward Elimination" to_port="example set"/>
          <connect from_op="Backward Elimination" from_port="attribute weights" to_port="attribute weights sink"/>
          <portSpacing port="source_weighting set source" spacing="0"/>
          <portSpacing port="sink_attribute weights sink" spacing="0"/>
        </process>
        <process expanded="true">
          <operator activated="true" class="support_vector_machine_linear" compatibility="5.3.008" expanded="true" height="76" name="SVM (4)" width="90" x="102" y="30">
            <parameter key="balance_cost" value="true"/>
          </operator>
          <connect from_port="train set source" to_op="SVM (4)" to_port="training set"/>
          <connect from_op="SVM (4)" from_port="model" to_port="model sink"/>
          <portSpacing port="source_train set source" spacing="0"/>
          <portSpacing port="sink_model sink" spacing="0"/>
        </process>
        <process expanded="true">
          <operator activated="true" class="apply_model" compatibility="5.3.008" expanded="true" height="76" name="Apply Model (4)" width="90" x="45" y="30">
            <list key="application_parameters"/>
          </operator>
          <operator activated="true" class="performance_classification" compatibility="5.3.008" expanded="true" height="76" name="Performance (6)" width="90" x="176" y="30">
            <parameter key="main_criterion" value="accuracy"/>
            <parameter key="classification_error" value="true"/>
            <parameter key="kappa" value="true"/>
            <parameter key="correlation" value="true"/>
            <list key="class_weights"/>
          </operator>
          <connect from_port="test set source" to_op="Apply Model (4)" to_port="unlabelled data"/>
          <connect from_port="model source" to_op="Apply Model (4)" to_port="model"/>
          <connect from_op="Apply Model (4)" from_port="labelled data" to_op="Performance (6)" to_port="labelled data"/>
          <connect from_op="Performance (6)" from_port="performance" to_port="performance vector sink"/>
          <portSpacing port="source_test set source" spacing="0"/>
          <portSpacing port="source_model source" spacing="0"/>
          <portSpacing port="sink_performance vector sink" spacing="0"/>
        </process>
      </operator>
      <connect from_op="Retrieve BELBIN transposed data all 82 HN cancer cases" from_port="output" to_op="Set Role" to_port="example set input"/>
      <connect from_op="Set Role" from_port="example set output" to_op="ForwardXVal" to_port="example set in"/>
      <connect from_op="Set Role" from_port="original" to_op="Select by Weights" to_port="example set input"/>
      <connect from_op="ForwardXVal" from_port="performance vector out" to_port="result 1"/>
      <connect from_op="ForwardXVal" from_port="attribute weights out" to_op="Select by Weights" to_port="weights"/>
      <connect from_op="Select by Weights" from_port="example set output" to_op="BackwardXVal" to_port="example set in"/>
      <connect from_op="BackwardXVal" from_port="performance vector out" to_port="result 2"/>
      <connect from_op="BackwardXVal" from_port="attribute weights out" to_port="result 3"/>
      <portSpacing port="source_input 1" spacing="0"/>
      <portSpacing port="sink_result 1" spacing="0"/>
      <portSpacing port="sink_result 2" spacing="0"/>
      <portSpacing port="sink_result 3" spacing="0"/>
      <portSpacing port="sink_result 4" spacing="0"/>
    </process>
  </operator>
</process>

Cheers,

Roberto
Tagged:

Answers

  • MariusHelf
    MariusHelf New Altair Community Member
    Hi Roberto,

    unfortunately the Wrapper-X-Validation is not yet parallelized. You can, however, integrate the Feature Selection into a normal X-Validation (parallel) as depicted in the process below.

    Best regards,
    Marius
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <process version="5.3.008">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="5.3.008" expanded="true" name="Process">
        <process expanded="true">
          <operator activated="true" class="parallel:x_validation_parallel" compatibility="5.3.000" expanded="true" height="112" name="Validation" width="90" x="112" y="30">
            <process expanded="true">
              <operator activated="true" class="optimize_selection_forward" compatibility="5.3.008" expanded="true" height="94" name="Forward Selection (2)" width="90" x="45" y="30">
                <parameter key="maximal_number_of_attributes" value="700"/>
                <parameter key="speculative_rounds" value="5"/>
                <parameter key="parallelize_learning_process" value="true"/>
                <process expanded="true">
                  <operator activated="true" class="x_validation" compatibility="5.3.008" expanded="true" name="FSValidation (3)">
                    <parameter key="leave_one_out" value="true"/>
                    <process expanded="true">
                      <operator activated="true" class="support_vector_machine_linear" compatibility="5.3.008" expanded="true" name="SVM (5)">
                        <parameter key="balance_cost" value="true"/>
                      </operator>
                      <connect from_port="training" to_op="SVM (5)" to_port="training set"/>
                      <connect from_op="SVM (5)" from_port="model" to_port="model"/>
                      <portSpacing port="source_training" spacing="0"/>
                      <portSpacing port="sink_model" spacing="0"/>
                      <portSpacing port="sink_through 1" spacing="0"/>
                      <portSpacing port="sink_through 2" spacing="0"/>
                    </process>
                    <process expanded="true">
                      <operator activated="true" class="apply_model" compatibility="5.3.008" expanded="true" name="Apply Model (5)">
                        <list key="application_parameters"/>
                      </operator>
                      <operator activated="true" class="performance_classification" compatibility="5.3.008" expanded="true" name="Performance (7)">
                        <parameter key="main_criterion" value="accuracy"/>
                        <parameter key="classification_error" value="true"/>
                        <parameter key="kappa" value="true"/>
                        <parameter key="correlation" value="true"/>
                        <list key="class_weights"/>
                      </operator>
                      <operator activated="true" class="performance_min_max" compatibility="5.3.008" expanded="true" name="Performance (8)">
                        <parameter key="minimum_weight" value="0.5"/>
                      </operator>
                      <connect from_port="model" to_op="Apply Model (5)" to_port="model"/>
                      <connect from_port="test set" to_op="Apply Model (5)" to_port="unlabelled data"/>
                      <connect from_port="through 1" to_port="averagable 2"/>
                      <connect from_op="Apply Model (5)" from_port="labelled data" to_op="Performance (7)" to_port="labelled data"/>
                      <connect from_op="Performance (7)" from_port="performance" to_op="Performance (8)" to_port="performance vector"/>
                      <connect from_op="Performance (8)" from_port="performance vector" to_port="averagable 1"/>
                      <portSpacing port="source_model" spacing="0"/>
                      <portSpacing port="source_test set" spacing="0"/>
                      <portSpacing port="source_through 1" spacing="0"/>
                      <portSpacing port="source_through 2" spacing="0"/>
                      <portSpacing port="sink_averagable 1" spacing="0"/>
                      <portSpacing port="sink_averagable 2" spacing="0"/>
                      <portSpacing port="sink_averagable 3" spacing="0"/>
                    </process>
                  </operator>
                  <connect from_port="example set" to_op="FSValidation (3)" to_port="training"/>
                  <connect from_op="FSValidation (3)" from_port="averagable 1" to_port="performance"/>
                  <portSpacing port="source_example set" spacing="0"/>
                  <portSpacing port="sink_performance" spacing="0"/>
                </process>
              </operator>
              <operator activated="true" class="support_vector_machine_linear" compatibility="5.3.008" expanded="true" height="76" name="SVM (6)" width="90" x="313" y="30">
                <parameter key="balance_cost" value="true"/>
              </operator>
              <connect from_port="training" to_op="Forward Selection (2)" to_port="example set"/>
              <connect from_op="Forward Selection (2)" from_port="example set" to_op="SVM (6)" to_port="training set"/>
              <connect from_op="Forward Selection (2)" from_port="attribute weights" to_port="through 1"/>
              <connect from_op="SVM (6)" from_port="model" to_port="model"/>
              <portSpacing port="source_training" spacing="0"/>
              <portSpacing port="sink_model" spacing="0"/>
              <portSpacing port="sink_through 1" spacing="90"/>
              <portSpacing port="sink_through 2" spacing="0"/>
            </process>
            <process expanded="true">
              <operator activated="true" class="select_by_weights" compatibility="5.3.008" expanded="true" height="94" name="Select by Weights (2)" width="90" x="45" y="120"/>
              <operator activated="true" class="apply_model" compatibility="5.3.008" expanded="true" height="76" name="Apply Model (6)" width="90" x="179" y="30">
                <list key="application_parameters"/>
              </operator>
              <operator activated="true" class="performance" compatibility="5.3.008" expanded="true" height="76" name="Performance (9)" width="90" x="313" y="30"/>
              <connect from_port="model" to_op="Apply Model (6)" to_port="model"/>
              <connect from_port="test set" to_op="Select by Weights (2)" to_port="example set input"/>
              <connect from_port="through 1" to_op="Select by Weights (2)" to_port="weights"/>
              <connect from_op="Select by Weights (2)" from_port="example set output" to_op="Apply Model (6)" to_port="unlabelled data"/>
              <connect from_op="Apply Model (6)" from_port="labelled data" to_op="Performance (9)" to_port="labelled data"/>
              <connect from_op="Performance (9)" from_port="performance" to_port="averagable 1"/>
              <portSpacing port="source_model" spacing="0"/>
              <portSpacing port="source_test set" spacing="0"/>
              <portSpacing port="source_through 1" spacing="72"/>
              <portSpacing port="source_through 2" spacing="0"/>
              <portSpacing port="sink_averagable 1" spacing="0"/>
              <portSpacing port="sink_averagable 2" spacing="0"/>
            </process>
          </operator>
          <portSpacing port="source_input 1" spacing="0"/>
          <portSpacing port="sink_result 1" spacing="0"/>
        </process>
      </operator>
    </process>