@Override
      public void addInput(Page page) {
        Block block = page.getBlock(labelChannel);
        for (int position = 0; position < block.getPositionCount(); position++) {
          if (labelIsLong) {
            labels.add((double) BIGINT.getLong(block, position));
          } else {
            labels.add(DOUBLE.getDouble(block, position));
          }
        }

        block = page.getBlock(featuresChannel);
        for (int position = 0; position < block.getPositionCount(); position++) {
          FeatureVector featureVector =
              ModelUtils.jsonToFeatures(VARCHAR.getSlice(block, position));
          rowsSize += featureVector.getEstimatedSize();
          rows.add(featureVector);
        }

        if (params == null) {
          block = page.getBlock(paramsChannel);
          params = LibSvmUtils.parseParameters(VARCHAR.getSlice(block, 0).toStringUtf8());
        }
      }