From 588b8307826a09e42eab0b460ec5b66bf719db62 Mon Sep 17 00:00:00 2001 From: Mihai Surdeanu Date: Fri, 11 Sep 2020 21:43:03 -0700 Subject: [PATCH 01/17] Started Keith's parallel implementation --- .../clulab/processors/ProcessorShell.scala | 2 +- .../examples/ParallelProcessorExample.scala | 2 +- .../FastNLPProcessorWithSemanticRoles.scala | 2 +- main/build.sbt | 2 +- .../scala/org/clulab/dynet/CnnExample.scala | 2 +- .../org/clulab/dynet/CoNLLSRLToMetal.scala | 2 +- .../clulab/dynet/ConstEmbeddingsGlove.scala | 2 +- .../scala/org/clulab/dynet/DyNetSync.scala | 6 -- .../org/clulab/dynet/EmbeddingLayer.scala | 55 +++++++++-------- .../main/scala/org/clulab/dynet/Layers.scala | 60 ++++++++----------- .../main/scala/org/clulab/dynet/Metal.scala | 4 +- .../main/scala/org/clulab/dynet/Utils.scala | 35 ++++++----- .../org/clulab/processors/clu/CluShell.scala | 2 +- .../clulab/sequences/LexiconNERShell.scala | 2 +- .../dynet/TestConstEmbeddingsGlove.scala | 2 +- .../clulab/processors/TestCluProcessor.scala | 2 +- .../TestEnhancedSemanticRoles.scala | 2 +- .../TestUniversalEnhancedDependencies.scala | 2 +- 18 files changed, 90 insertions(+), 96 deletions(-) delete mode 100644 main/src/main/scala/org/clulab/dynet/DyNetSync.scala diff --git a/corenlp/src/main/scala/org/clulab/processors/ProcessorShell.scala b/corenlp/src/main/scala/org/clulab/processors/ProcessorShell.scala index a0abfecc3..d07fc351b 100644 --- a/corenlp/src/main/scala/org/clulab/processors/ProcessorShell.scala +++ b/corenlp/src/main/scala/org/clulab/processors/ProcessorShell.scala @@ -67,7 +67,7 @@ object ProcessorShell extends App { case ":clu" => reader.setPrompt("(clu)>>> ") println("Preparing CluProcessor...\n") - Utils.initializeDyNet() + Utils.initializeDyNet(train = false) proc = clu proc.annotate("initialize me!") diff --git a/corenlp/src/main/scala/org/clulab/processors/examples/ParallelProcessorExample.scala b/corenlp/src/main/scala/org/clulab/processors/examples/ParallelProcessorExample.scala index bb547db78..a0463e081 100644 --- a/corenlp/src/main/scala/org/clulab/processors/examples/ParallelProcessorExample.scala +++ b/corenlp/src/main/scala/org/clulab/processors/examples/ParallelProcessorExample.scala @@ -118,7 +118,7 @@ object ParallelProcessorExample { // Parallelizing by file results in a quick crash. val parFiles = parallelize(files, threads) - Utils.initializeDyNet() + Utils.initializeDyNet(train = false) val processor: Processor = new CluProcessor() val documentSerializer = new DocumentSerializer diff --git a/corenlp/src/main/scala/org/clulab/processors/fastnlp/FastNLPProcessorWithSemanticRoles.scala b/corenlp/src/main/scala/org/clulab/processors/fastnlp/FastNLPProcessorWithSemanticRoles.scala index 73bb02173..aac1581c8 100644 --- a/corenlp/src/main/scala/org/clulab/processors/fastnlp/FastNLPProcessorWithSemanticRoles.scala +++ b/corenlp/src/main/scala/org/clulab/processors/fastnlp/FastNLPProcessorWithSemanticRoles.scala @@ -17,7 +17,7 @@ class FastNLPProcessorWithSemanticRoles(tokenizerPostProcessor:Option[TokenizerS /** Used for SRL */ lazy val cluProcessor = { - Utils.initializeDyNet() + Utils.initializeDyNet(train = false) new CluProcessor() } diff --git a/main/build.sbt b/main/build.sbt index f993d686a..b757e3bfb 100644 --- a/main/build.sbt +++ b/main/build.sbt @@ -27,7 +27,7 @@ libraryDependencies ++= { // for machine learning "de.bwaldvogel" % "liblinear" % "2.30", "tw.edu.ntu.csie" % "libsvm" % "3.23", - "org.clulab" %% "fatdynet" % "0.2.5", // "0-cuda.2.6-SNAPSHOT", // "0.2.5" + "org.clulab" %% "fatdynet" % "0.2.6-SNAPSHOT", // "0-cuda.2.6-SNAPSHOT", // "0.2.5" // NLP tools used by CluProcessor "org.antlr" % "antlr4-runtime" % "4.6", // for tokenization diff --git a/main/src/main/scala/org/clulab/dynet/CnnExample.scala b/main/src/main/scala/org/clulab/dynet/CnnExample.scala index 4e88cdc32..f374fa217 100644 --- a/main/src/main/scala/org/clulab/dynet/CnnExample.scala +++ b/main/src/main/scala/org/clulab/dynet/CnnExample.scala @@ -8,7 +8,7 @@ import edu.cmu.dynet.{Dim, Expression, ParameterCollection, UnsignedVector} // https://github.com/neubig/nn4nlp-code/blob/970d91a51664b3d91a9822b61cd76abea20218cb/05-cnn/cnn-class.py#L45 // object CnnExample extends App { - Utils.initializeDyNet() + Utils.initializeDyNet(train = true) val pc = new ParameterCollection() val embSize = 3 diff --git a/main/src/main/scala/org/clulab/dynet/CoNLLSRLToMetal.scala b/main/src/main/scala/org/clulab/dynet/CoNLLSRLToMetal.scala index f7202e372..bd9276258 100644 --- a/main/src/main/scala/org/clulab/dynet/CoNLLSRLToMetal.scala +++ b/main/src/main/scala/org/clulab/dynet/CoNLLSRLToMetal.scala @@ -363,7 +363,7 @@ object CoNLLSRLToMetal { def main(args: Array[String]): Unit = { assert(args.length == 2) - Utils.initializeDyNet() + Utils.initializeDyNet(train = false) val file = new File(args(0)) val reader = new CoNLLSRLToMetal diff --git a/main/src/main/scala/org/clulab/dynet/ConstEmbeddingsGlove.scala b/main/src/main/scala/org/clulab/dynet/ConstEmbeddingsGlove.scala index 198d40149..db2b04426 100644 --- a/main/src/main/scala/org/clulab/dynet/ConstEmbeddingsGlove.scala +++ b/main/src/main/scala/org/clulab/dynet/ConstEmbeddingsGlove.scala @@ -70,7 +70,7 @@ object ConstEmbeddingsGlove { def apply(matrixResourceName: String, isResource: Boolean): ConstEmbeddingsGlove = { - DyNetSync.synchronized { + this.synchronized { // these objects are read-only and they use a lot of RAM, so let's reuse them if they exist if(SINGLETON.isEmpty) { SINGLETON = Some(new ConstEmbeddingsGlove(matrixResourceName, isResource)) diff --git a/main/src/main/scala/org/clulab/dynet/DyNetSync.scala b/main/src/main/scala/org/clulab/dynet/DyNetSync.scala deleted file mode 100644 index fb06ea107..000000000 --- a/main/src/main/scala/org/clulab/dynet/DyNetSync.scala +++ /dev/null @@ -1,6 +0,0 @@ -package org.clulab.dynet - -/** Use this object for synchronized statements in DyNet */ -object DyNetSync { - -} diff --git a/main/src/main/scala/org/clulab/dynet/EmbeddingLayer.scala b/main/src/main/scala/org/clulab/dynet/EmbeddingLayer.scala index ca12f3443..0b4ae103d 100644 --- a/main/src/main/scala/org/clulab/dynet/EmbeddingLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/EmbeddingLayer.scala @@ -17,33 +17,40 @@ import scala.util.Random * This layer takes a sequence of words and produces a sequence of Expression that stores the words' full embeddings * @author Mihai */ -class EmbeddingLayer (val parameters:ParameterCollection, - val w2i:Map[String, Int], // word to index - val w2f:Counter[String], // word to frequency - val c2i:Map[Char, Int], // character to index - val tag2i:Option[Map[String, Int]], // POS tag to index - val ne2i:Option[Map[String, Int]], // NE tag to index - val learnedWordEmbeddingSize: Int, // size of the learned word embedding - val charEmbeddingSize: Int, // size of the character embedding - val charRnnStateSize: Int, // size of each one of the char-level RNNs - val posTagEmbeddingSize: Int, // size of the POS tag embedding - val neTagEmbeddingSize: Int, // size of the NE tag embedding - val distanceEmbeddingSize: Int, - val distanceWindowSize: Int, // window considered for distance values (relative to predicate) - val positionEmbeddingSize: Int, - val useIsPredicate: Boolean, // if true, add a Boolean bit to indicate if current word is the predicate - val wordLookupParameters:LookupParameter, - val charLookupParameters:LookupParameter, - val charFwRnnBuilder:RnnBuilder, // RNNs for the character representation - val charBwRnnBuilder:RnnBuilder, - val posTagLookupParameters:Option[LookupParameter], - val neTagLookupParameters:Option[LookupParameter], - val distanceLookupParameters:Option[LookupParameter], - val positionLookupParameters:Option[LookupParameter], - val dropoutProb: Float) extends InitialLayer { +case class EmbeddingLayer (parameters:ParameterCollection, + w2i:Map[String, Int], // word to index + w2f:Counter[String], // word to frequency + c2i:Map[Char, Int], // character to index + tag2i:Option[Map[String, Int]], // POS tag to index + ne2i:Option[Map[String, Int]], // NE tag to index + learnedWordEmbeddingSize: Int, // size of the learned word embedding + charEmbeddingSize: Int, // size of the character embedding + charRnnStateSize: Int, // size of each one of the char-level RNNs + posTagEmbeddingSize: Int, // size of the POS tag embedding + neTagEmbeddingSize: Int, // size of the NE tag embedding + distanceEmbeddingSize: Int, + distanceWindowSize: Int, // window considered for distance values (relative to predicate) + positionEmbeddingSize: Int, + useIsPredicate: Boolean, // if true, add a Boolean bit to indicate if current word is the predicate + wordLookupParameters:LookupParameter, + charLookupParameters:LookupParameter, + charFwRnnBuilder:RnnBuilder, // RNNs for the character representation + charBwRnnBuilder:RnnBuilder, + posTagLookupParameters:Option[LookupParameter], + neTagLookupParameters:Option[LookupParameter], + distanceLookupParameters:Option[LookupParameter], + positionLookupParameters:Option[LookupParameter], + dropoutProb: Float) extends InitialLayer { lazy val constEmbedder: ConstEmbeddings = ConstEmbeddingsGlove() + override def clone(): EmbeddingLayer = { + copy( + charFwRnnBuilder = charFwRnnBuilder.clone.asInstanceOf[RnnBuilder], + charBwRnnBuilder = charBwRnnBuilder.clone.asInstanceOf[RnnBuilder] + ) + } + override def forward(sentence: AnnotatedSentence, doDropout: Boolean): ExpressionVector = { setCharRnnDropout(doDropout) diff --git a/main/src/main/scala/org/clulab/dynet/Layers.scala b/main/src/main/scala/org/clulab/dynet/Layers.scala index a32747b14..9b6bd9094 100644 --- a/main/src/main/scala/org/clulab/dynet/Layers.scala +++ b/main/src/main/scala/org/clulab/dynet/Layers.scala @@ -203,29 +203,27 @@ object Layers { sentence: AnnotatedSentence): IndexedSeq[IndexedSeq[String]] = { val labelsPerTask = new ArrayBuffer[IndexedSeq[String]]() - DyNetSync.synchronized { // DyNet's computation graph is a static variable, so this block must be synchronized - ComputationGraph.renew() + ComputationGraph.renew() - // layers(0) contains the shared layers - if(layers(0).nonEmpty) { - val sharedStates = layers(0).forward(sentence, doDropout = false) - - for (i <- 1 until layers.length) { - val states = layers(i).forwardFrom(sharedStates, sentence.headPositions, doDropout = false) - val emissionScores: Array[Array[Float]] = Utils.emissionScoresToArrays(states) - val labels = layers(i).finalLayer.get.inference(emissionScores) - labelsPerTask += labels - } + // layers(0) contains the shared layers + if(layers(0).nonEmpty) { + val sharedStates = layers(0).forward(sentence, doDropout = false) + + for (i <- 1 until layers.length) { + val states = layers(i).forwardFrom(sharedStates, sentence.headPositions, doDropout = false) + val emissionScores: Array[Array[Float]] = Utils.emissionScoresToArrays(states) + val labels = layers(i).finalLayer.get.inference(emissionScores) + labelsPerTask += labels } + } - // no shared layer - else { - for (i <- 1 until layers.length) { - val states = layers(i).forward(sentence, doDropout = false) - val emissionScores: Array[Array[Float]] = Utils.emissionScoresToArrays(states) - val labels = layers(i).finalLayer.get.inference(emissionScores) - labelsPerTask += labels - } + // no shared layer + else { + for (i <- 1 until layers.length) { + val states = layers(i).forward(sentence, doDropout = false) + val emissionScores: Array[Array[Float]] = Utils.emissionScoresToArrays(states) + val labels = layers(i).finalLayer.get.inference(emissionScores) + labelsPerTask += labels } } @@ -261,14 +259,11 @@ object Layers { def predict(layers: IndexedSeq[Layers], taskId: Int, sentence: AnnotatedSentence): IndexedSeq[String] = { - val labelsForTask = - DyNetSync.synchronized { // DyNet's computation graph is a static variable, so this block must be synchronized - ComputationGraph.renew() + ComputationGraph.renew() - val states = forwardForTask(layers, taskId, sentence, doDropout = false) - val emissionScores: Array[Array[Float]] = Utils.emissionScoresToArrays(states) - layers(taskId + 1).finalLayer.get.inference(emissionScores) - } + val states = forwardForTask(layers, taskId, sentence, doDropout = false) + val emissionScores: Array[Array[Float]] = Utils.emissionScoresToArrays(states) + val labelsForTask = layers(taskId + 1).finalLayer.get.inference(emissionScores) labelsForTask } @@ -276,14 +271,11 @@ object Layers { def predictWithScores(layers: IndexedSeq[Layers], taskId: Int, sentence: AnnotatedSentence): IndexedSeq[IndexedSeq[(String, Float)]] = { - val labelsForTask = - DyNetSync.synchronized { // DyNet's computation graph is a static variable, so this block must be synchronized - ComputationGraph.renew() + ComputationGraph.renew() - val states = forwardForTask(layers, taskId, sentence, doDropout = false) - val emissionScores: Array[Array[Float]] = Utils.emissionScoresToArrays(states) - layers(taskId + 1).finalLayer.get.inferenceWithScores(emissionScores) - } + val states = forwardForTask(layers, taskId, sentence, doDropout = false) + val emissionScores: Array[Array[Float]] = Utils.emissionScoresToArrays(states) + val labelsForTask = layers(taskId + 1).finalLayer.get.inferenceWithScores(emissionScores) labelsForTask } diff --git a/main/src/main/scala/org/clulab/dynet/Metal.scala b/main/src/main/scala/org/clulab/dynet/Metal.scala index e058435e3..0b070d16e 100644 --- a/main/src/main/scala/org/clulab/dynet/Metal.scala +++ b/main/src/main/scala/org/clulab/dynet/Metal.scala @@ -409,9 +409,9 @@ object Metal { def main(args: Array[String]): Unit = { val props = StringUtils.argsToProperties(args) - initializeDyNet() // autoBatch = true, mem = "2048,2048,2048,2048") // mem = "1660,1664,2496,1400") if(props.containsKey("train")) { + initializeDyNet(train = true) // autoBatch = true, mem = "2048,2048,2048,2048") // mem = "1660,1664,2496,1400") assert(props.containsKey("conf")) val configName = props.getProperty("conf") val config = ConfigFactory.load(configName) @@ -424,6 +424,7 @@ object Metal { } else if(props.containsKey("test")) { + initializeDyNet(train = false) assert(props.containsKey("conf")) val configName = props.getProperty("conf") val config = ConfigFactory.load(configName) @@ -435,6 +436,7 @@ object Metal { } else if(props.containsKey("shell")) { + initializeDyNet(train = false) val modelName = props.getProperty("shell") val mtl = Metal(modelName) val shell = new MetalShell(mtl) diff --git a/main/src/main/scala/org/clulab/dynet/Utils.scala b/main/src/main/scala/org/clulab/dynet/Utils.scala index 85c633478..fa2a3f149 100644 --- a/main/src/main/scala/org/clulab/dynet/Utils.scala +++ b/main/src/main/scala/org/clulab/dynet/Utils.scala @@ -6,6 +6,7 @@ import edu.cmu.dynet.Expression.{concatenate, input, logSumExp, lookup, pick, pi import edu.cmu.dynet._ import org.clulab.embeddings.WordEmbeddingMap import org.clulab.fatdynet.utils.BaseTextLoader +import org.clulab.fatdynet.utils.Initializer import org.clulab.struct.{Counter, MutableNumber} import org.clulab.utils.Serializer import org.slf4j.{Logger, LoggerFactory} @@ -31,28 +32,26 @@ object Utils { val LOG_MIN_VALUE: Float = -10000 - val DEFAULT_DROPOUT_PROBABILITY = 0f // no dropout by default + val DEFAULT_DROPOUT_PROBABILITY = 0f // no dropout by default' - private var IS_DYNET_INITIALIZED = false + def initializeDyNetForInference(): Unit = { + initializeDyNet(train = false) + } - def initializeDyNet(autoBatch: Boolean = false, mem: String = ""): Unit = { - DyNetSync.synchronized { - if (!IS_DYNET_INITIALIZED) { - logger.debug("Initializing DyNet...") + def initializeDyNet(train: Boolean, autoBatch: Boolean = false, mem: String = ""): Unit = { + logger.debug("Initializing DyNet...") - val params = new mutable.HashMap[String, Any]() - params += "random-seed" -> RANDOM_SEED - params += "weight-decay" -> WEIGHT_DECAY - if (autoBatch) { - params += "autobatch" -> 1 - params += "dynet-mem" -> mem - } + val map = Map( + Initializer.RANDOM_SEED -> RANDOM_SEED, + Initializer.WEIGHT_DECAY -> WEIGHT_DECAY, + Initializer.FORWARD_ONLY -> { if (train) 0 else 1 }, + Initializer.AUTOBATCH -> { if(autoBatch) 1 else 0 }, + Initializer.DYNAMIC_MEM -> ! train, + Initializer.DYNET_MEM -> { if(mem != null && mem.length > 0) mem else "2048" } + ) - Initialize.initialize(params.toMap) - logger.debug("DyNet initialization complete.") - IS_DYNET_INITIALIZED = true - } - } + Initializer.initialize(map) + logger.debug("DyNet initialization complete.") } def fromIndexToString(s2i: Map[String, Int]): Array[String] = { diff --git a/main/src/main/scala/org/clulab/processors/clu/CluShell.scala b/main/src/main/scala/org/clulab/processors/clu/CluShell.scala index 6b7f7e868..67853f2e2 100644 --- a/main/src/main/scala/org/clulab/processors/clu/CluShell.scala +++ b/main/src/main/scala/org/clulab/processors/clu/CluShell.scala @@ -25,7 +25,7 @@ class CluShell extends Shell { object CluShell { def main(args:Array[String]): Unit = { - Utils.initializeDyNet() + Utils.initializeDyNet(train = false) val sh = new CluShell sh.shell() } diff --git a/main/src/main/scala/org/clulab/sequences/LexiconNERShell.scala b/main/src/main/scala/org/clulab/sequences/LexiconNERShell.scala index e9499080c..8c1422726 100644 --- a/main/src/main/scala/org/clulab/sequences/LexiconNERShell.scala +++ b/main/src/main/scala/org/clulab/sequences/LexiconNERShell.scala @@ -21,7 +21,7 @@ class LexiconNERShell(val lexiconNer: LexiconNER) extends Shell { } object LexiconNERShell extends App { - Utils.initializeDyNet() + Utils.initializeDyNet(train = false) val kb = args(0) // pass the KB file name as the first argument val lexiconNer = LexiconNER(Seq(kb)) val shell = new LexiconNERShell(lexiconNer) diff --git a/main/src/test/scala/org/clulab/dynet/TestConstEmbeddingsGlove.scala b/main/src/test/scala/org/clulab/dynet/TestConstEmbeddingsGlove.scala index a00889d9d..4a07139fd 100644 --- a/main/src/test/scala/org/clulab/dynet/TestConstEmbeddingsGlove.scala +++ b/main/src/test/scala/org/clulab/dynet/TestConstEmbeddingsGlove.scala @@ -5,7 +5,7 @@ import org.scalatest.{FlatSpec, Matchers} class TestConstEmbeddingsGlove extends FlatSpec with Matchers { lazy val embeddings = { - Utils.initializeDyNet() + Utils.initializeDyNet(train = false) ConstEmbeddingsGlove("/test_vectors.txt", true) } diff --git a/main/src/test/scala/org/clulab/processors/TestCluProcessor.scala b/main/src/test/scala/org/clulab/processors/TestCluProcessor.scala index dc604bccc..0a98b8cfc 100644 --- a/main/src/test/scala/org/clulab/processors/TestCluProcessor.scala +++ b/main/src/test/scala/org/clulab/processors/TestCluProcessor.scala @@ -11,7 +11,7 @@ import org.scalatest.{FlatSpec, Matchers} */ class TestCluProcessor extends FlatSpec with Matchers { val proc = { - Utils.initializeDyNet() + Utils.initializeDyNet(train = false) new CluProcessor() } diff --git a/main/src/test/scala/org/clulab/processors/TestEnhancedSemanticRoles.scala b/main/src/test/scala/org/clulab/processors/TestEnhancedSemanticRoles.scala index 13040c721..73218124a 100644 --- a/main/src/test/scala/org/clulab/processors/TestEnhancedSemanticRoles.scala +++ b/main/src/test/scala/org/clulab/processors/TestEnhancedSemanticRoles.scala @@ -6,7 +6,7 @@ import org.scalatest.{FlatSpec, Matchers} class TestEnhancedSemanticRoles extends FlatSpec with Matchers { val proc = { - Utils.initializeDyNet() + Utils.initializeDyNet(train = false) new CluProcessor() } diff --git a/main/src/test/scala/org/clulab/processors/TestUniversalEnhancedDependencies.scala b/main/src/test/scala/org/clulab/processors/TestUniversalEnhancedDependencies.scala index aca3ec93a..36cebb66f 100644 --- a/main/src/test/scala/org/clulab/processors/TestUniversalEnhancedDependencies.scala +++ b/main/src/test/scala/org/clulab/processors/TestUniversalEnhancedDependencies.scala @@ -6,7 +6,7 @@ import org.scalatest.{FlatSpec, Matchers} class TestUniversalEnhancedDependencies extends FlatSpec with Matchers { val proc = { - Utils.initializeDyNet() + Utils.initializeDyNet(train = false) new CluProcessor() } From a57592dc4367959103098f9ee9d06b4a385391a3 Mon Sep 17 00:00:00 2001 From: Mihai Surdeanu Date: Sat, 12 Sep 2020 17:30:49 -0700 Subject: [PATCH 02/17] Added cloneBuilder() --- .../main/scala/org/clulab/dynet/EmbeddingLayer.scala | 4 ++-- main/src/main/scala/org/clulab/dynet/Utils.scala | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/main/src/main/scala/org/clulab/dynet/EmbeddingLayer.scala b/main/src/main/scala/org/clulab/dynet/EmbeddingLayer.scala index 0b4ae103d..3abc25923 100644 --- a/main/src/main/scala/org/clulab/dynet/EmbeddingLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/EmbeddingLayer.scala @@ -46,8 +46,8 @@ case class EmbeddingLayer (parameters:ParameterCollection, override def clone(): EmbeddingLayer = { copy( - charFwRnnBuilder = charFwRnnBuilder.clone.asInstanceOf[RnnBuilder], - charBwRnnBuilder = charBwRnnBuilder.clone.asInstanceOf[RnnBuilder] + charFwRnnBuilder = cloneBuilder(charFwRnnBuilder), + charBwRnnBuilder = cloneBuilder(charBwRnnBuilder), ) } diff --git a/main/src/main/scala/org/clulab/dynet/Utils.scala b/main/src/main/scala/org/clulab/dynet/Utils.scala index fa2a3f149..9dbaa2a93 100644 --- a/main/src/main/scala/org/clulab/dynet/Utils.scala +++ b/main/src/main/scala/org/clulab/dynet/Utils.scala @@ -845,6 +845,16 @@ object Utils { expression } } + + def cloneBuilder(builder: RnnBuilder): RnnBuilder = { + if(builder.isInstanceOf[LstmBuilder]) { + builder.asInstanceOf[LstmBuilder].clone() + } else if(builder.isInstanceOf[GruBuilder]) { + builder.asInstanceOf[GruBuilder].clone() + } else { + throw new RuntimeException(s"ERROR: don't know how to clone a builder of type ${builder.getClass}!") + } + } } class Utils From 9ae1135e10171d05038a1c722cea94d1f569f5f9 Mon Sep 17 00:00:00 2001 From: Mihai Surdeanu Date: Sat, 12 Sep 2020 20:22:35 -0700 Subject: [PATCH 03/17] Added THreadable --- .../scala/org/clulab/dynet/InitialLayer.scala | 2 +- .../org/clulab/dynet/IntermediateLayer.scala | 2 +- .../scala/org/clulab/dynet/RnnLayer.scala | 27 ++++++++++++------- .../scala/org/clulab/dynet/Threadable.scala | 14 ++++++++++ 4 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 main/src/main/scala/org/clulab/dynet/Threadable.scala diff --git a/main/src/main/scala/org/clulab/dynet/InitialLayer.scala b/main/src/main/scala/org/clulab/dynet/InitialLayer.scala index 4a9c85270..5f28a6d22 100644 --- a/main/src/main/scala/org/clulab/dynet/InitialLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/InitialLayer.scala @@ -5,7 +5,7 @@ import edu.cmu.dynet.ExpressionVector /** * First layer that occurs in a sequence modeling architecture: goes from words to Expressions */ -trait InitialLayer extends Saveable { +trait InitialLayer extends Saveable with Cloneable { def forward(sentence: AnnotatedSentence, doDropout: Boolean): ExpressionVector diff --git a/main/src/main/scala/org/clulab/dynet/IntermediateLayer.scala b/main/src/main/scala/org/clulab/dynet/IntermediateLayer.scala index 82aedd697..85b1bce39 100644 --- a/main/src/main/scala/org/clulab/dynet/IntermediateLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/IntermediateLayer.scala @@ -5,7 +5,7 @@ import edu.cmu.dynet.ExpressionVector /** * Intermediate layer in a sequence modeling architecture: goes from ExpressionVector to ExpressionVector */ -trait IntermediateLayer extends Saveable { +trait IntermediateLayer extends Saveable with Cloneable { def forward(inputExpressions: ExpressionVector, doDropout: Boolean): ExpressionVector diff --git a/main/src/main/scala/org/clulab/dynet/RnnLayer.scala b/main/src/main/scala/org/clulab/dynet/RnnLayer.scala index b70747259..c63c15148 100644 --- a/main/src/main/scala/org/clulab/dynet/RnnLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/RnnLayer.scala @@ -8,19 +8,28 @@ import scala.collection.mutable.ArrayBuffer import org.clulab.dynet.Utils._ import org.clulab.utils.Configured +import scala.collection.mutable + /** * This layer applies a biLSTM over the sequence of Expressions produced by a previous layer * @author Mihai */ -class RnnLayer (val parameters:ParameterCollection, - val inputSize: Int, - val numLayers: Int, - val rnnStateSize: Int, - val useHighwayConnections: Boolean, - val rnnType: String, // "gru" or "lstm" - val wordFwRnnBuilder:RnnBuilder, - val wordBwRnnBuilder:RnnBuilder, - val dropoutProb: Float) extends IntermediateLayer { +case class RnnLayer (parameters:ParameterCollection, + inputSize: Int, + numLayers: Int, + rnnStateSize: Int, + useHighwayConnections: Boolean, + rnnType: String, // "gru" or "lstm" + wordFwRnnBuilder:RnnBuilder, + wordBwRnnBuilder:RnnBuilder, + dropoutProb: Float) extends IntermediateLayer { + + override def clone(): RnnLayer = { + copy( + wordFwRnnBuilder = cloneBuilder(wordFwRnnBuilder), + wordBwRnnBuilder = cloneBuilder(wordBwRnnBuilder) + ) + } override def forward(inputExpressions: ExpressionVector, doDropout: Boolean): ExpressionVector = { setRnnDropout(wordFwRnnBuilder, dropoutProb, doDropout) diff --git a/main/src/main/scala/org/clulab/dynet/Threadable.scala b/main/src/main/scala/org/clulab/dynet/Threadable.scala new file mode 100644 index 000000000..48f8795c1 --- /dev/null +++ b/main/src/main/scala/org/clulab/dynet/Threadable.scala @@ -0,0 +1,14 @@ +package org.clulab.dynet + +import scala.collection.mutable + +/** + * Produces a thread-safe pointer to an object, by cloning a reference object once per thread + */ +class Threadable[T <: Cloneable](val reference: T) { + val objectsPerThread = new mutable.HashMap[Long, T]() + + def get: T = this.synchronized { + objectsPerThread.getOrElseUpdate(Thread.currentThread().getId, reference.clone().asInstanceOf[T]) + } +} From aaa46b75a4c13b7954d53ea6858fdcc850269b8d Mon Sep 17 00:00:00 2001 From: Mihai Surdeanu Date: Tue, 15 Sep 2020 17:46:21 -0700 Subject: [PATCH 04/17] added clone() everywhere. does not compile --- .../scala/org/clulab/dynet/FinalLayer.scala | 2 +- .../scala/org/clulab/dynet/ForwardLayer.scala | 24 +++++++++++-------- .../org/clulab/dynet/GreedyForwardLayer.scala | 24 ++++++++++--------- .../main/scala/org/clulab/dynet/Layers.scala | 21 +++++++++++++--- .../org/clulab/dynet/LayersSupplier.scala | 9 +++++++ .../scala/org/clulab/dynet/Threadable.scala | 14 ----------- .../main/scala/org/clulab/dynet/Utils.scala | 20 ++++++++++------ .../clulab/dynet/ViterbiForwardLayer.scala | 24 ++++++++++--------- 8 files changed, 81 insertions(+), 57 deletions(-) create mode 100644 main/src/main/scala/org/clulab/dynet/LayersSupplier.scala delete mode 100644 main/src/main/scala/org/clulab/dynet/Threadable.scala diff --git a/main/src/main/scala/org/clulab/dynet/FinalLayer.scala b/main/src/main/scala/org/clulab/dynet/FinalLayer.scala index 3d21d6cc5..24d055e07 100644 --- a/main/src/main/scala/org/clulab/dynet/FinalLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/FinalLayer.scala @@ -2,7 +2,7 @@ package org.clulab.dynet import edu.cmu.dynet.{Expression, ExpressionVector} -trait FinalLayer extends Saveable { +trait FinalLayer extends Saveable with Cloneable { def forward(inputExpressions: ExpressionVector, headPositionsOpt: Option[IndexedSeq[Int]], doDropout: Boolean): ExpressionVector diff --git a/main/src/main/scala/org/clulab/dynet/ForwardLayer.scala b/main/src/main/scala/org/clulab/dynet/ForwardLayer.scala index a8ecfb176..15af25665 100644 --- a/main/src/main/scala/org/clulab/dynet/ForwardLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/ForwardLayer.scala @@ -7,16 +7,20 @@ import org.clulab.dynet.Utils.{ByLineIntBuilder, fromIndexToString, mkTransition import org.clulab.struct.Counter import org.clulab.utils.Configured -abstract class ForwardLayer (val parameters:ParameterCollection, - val inputSize: Int, - val isDual: Boolean, - val t2i: Map[String, Int], - val i2t: Array[String], - val H: Parameter, - val rootParam: Parameter, - val nonlinearity: Int, - val dropoutProb: Float) - extends FinalLayer { +abstract class ForwardLayer extends FinalLayer { + + // + // all these accessor methods will be redefined as vals in the children classes + // + def parameters:ParameterCollection + def inputSize: Int + def isDual: Boolean + def t2i: Map[String, Int] + def i2t: Array[String] + def H: Parameter + def rootParam: Parameter + def nonlinearity: Int + def dropoutProb: Float def forward(inputExpressions: ExpressionVector, headPositionsOpt: Option[IndexedSeq[Int]], diff --git a/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala b/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala index 0837a52ff..dffb6e1ee 100644 --- a/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala @@ -4,21 +4,23 @@ import java.io.PrintWriter import edu.cmu.dynet.{Dim, Expression, ExpressionVector, Parameter, ParameterCollection} import org.clulab.dynet.ForwardLayer.TYPE_GREEDY -import org.clulab.dynet.Utils.{ByLineFloatBuilder, ByLineIntBuilder, ByLineStringMapBuilder, fromIndexToString, save} +import org.clulab.dynet.Utils.{ByLineFloatBuilder, ByLineIntBuilder, ByLineStringMapBuilder, cloneBuilder, fromIndexToString, save} import ForwardLayer._ import scala.collection.mutable.ArrayBuffer -class GreedyForwardLayer (parameters:ParameterCollection, - inputSize: Int, - isDual: Boolean, - t2i: Map[String, Int], - i2t: Array[String], - H: Parameter, - rootParam: Parameter, - nonlinearity: Int, - dropoutProb: Float) - extends ForwardLayer(parameters, inputSize, isDual, t2i, i2t, H, rootParam, nonlinearity, dropoutProb) { +case class GreedyForwardLayer (override val parameters:ParameterCollection, + override val inputSize: Int, + override val isDual: Boolean, + override val t2i: Map[String, Int], + override val i2t: Array[String], + override val H: Parameter, + override val rootParam: Parameter, + override val nonlinearity: Int, + override val dropoutProb: Float) + extends ForwardLayer { + + override def clone(): GreedyForwardLayer = copy() override def loss(finalStates: ExpressionVector, goldLabelStrings: IndexedSeq[String]): Expression = { val goldLabels = Utils.toIds(goldLabelStrings, t2i) diff --git a/main/src/main/scala/org/clulab/dynet/Layers.scala b/main/src/main/scala/org/clulab/dynet/Layers.scala index 9b6bd9094..a08780691 100644 --- a/main/src/main/scala/org/clulab/dynet/Layers.scala +++ b/main/src/main/scala/org/clulab/dynet/Layers.scala @@ -12,9 +12,24 @@ import scala.collection.mutable.ArrayBuffer /** * A sequence of layers that implements a complete NN architecture for sequence modeling */ -class Layers (val initialLayer: Option[InitialLayer], - val intermediateLayers: IndexedSeq[IntermediateLayer], - val finalLayer: Option[FinalLayer]) extends Saveable { +case class Layers (initialLayer: Option[InitialLayer], + intermediateLayers: IndexedSeq[IntermediateLayer], + finalLayer: Option[FinalLayer]) extends Saveable with Cloneable { + + override def clone(): Layers = { + val clonedInitialLayer:Option[InitialLayer] = + initialLayer.map(_.clone().asInstanceOf[InitialLayer]) + val clonedIntermediateLayers:IndexedSeq[IntermediateLayer] = + intermediateLayers.map(_.clone().asInstanceOf[IntermediateLayer]) + val clonedFinalLayer: Option[FinalLayer] = + finalLayer.map(_.clone().asInstanceOf[FinalLayer]) + + copy( + initialLayer = clonedInitialLayer, + intermediateLayers = clonedIntermediateLayers, + finalLayer = clonedFinalLayer + ) + } def outDim: Option[Int] = { if(finalLayer.nonEmpty) { diff --git a/main/src/main/scala/org/clulab/dynet/LayersSupplier.scala b/main/src/main/scala/org/clulab/dynet/LayersSupplier.scala new file mode 100644 index 000000000..529fc4d23 --- /dev/null +++ b/main/src/main/scala/org/clulab/dynet/LayersSupplier.scala @@ -0,0 +1,9 @@ +package org.clulab.dynet + +import java.util.function.Supplier + +class LayersSupplier(val referenceLayers: IndexedSeq[Layers]) extends Supplier[IndexedSeq[Layers]] { + override def get(): IndexedSeq[Layers] = { + referenceLayers.map(_.clone()) + } +} diff --git a/main/src/main/scala/org/clulab/dynet/Threadable.scala b/main/src/main/scala/org/clulab/dynet/Threadable.scala deleted file mode 100644 index 48f8795c1..000000000 --- a/main/src/main/scala/org/clulab/dynet/Threadable.scala +++ /dev/null @@ -1,14 +0,0 @@ -package org.clulab.dynet - -import scala.collection.mutable - -/** - * Produces a thread-safe pointer to an object, by cloning a reference object once per thread - */ -class Threadable[T <: Cloneable](val reference: T) { - val objectsPerThread = new mutable.HashMap[Long, T]() - - def get: T = this.synchronized { - objectsPerThread.getOrElseUpdate(Thread.currentThread().getId, reference.clone().asInstanceOf[T]) - } -} diff --git a/main/src/main/scala/org/clulab/dynet/Utils.scala b/main/src/main/scala/org/clulab/dynet/Utils.scala index 9dbaa2a93..01038dab9 100644 --- a/main/src/main/scala/org/clulab/dynet/Utils.scala +++ b/main/src/main/scala/org/clulab/dynet/Utils.scala @@ -847,13 +847,19 @@ object Utils { } def cloneBuilder(builder: RnnBuilder): RnnBuilder = { - if(builder.isInstanceOf[LstmBuilder]) { - builder.asInstanceOf[LstmBuilder].clone() - } else if(builder.isInstanceOf[GruBuilder]) { - builder.asInstanceOf[GruBuilder].clone() - } else { - throw new RuntimeException(s"ERROR: don't know how to clone a builder of type ${builder.getClass}!") - } + val newBuilder = + if(builder.isInstanceOf[LstmBuilder]) { + builder.asInstanceOf[LstmBuilder].clone() + } else if(builder.isInstanceOf[GruBuilder]) { + builder.asInstanceOf[GruBuilder].clone() + } else { + throw new RuntimeException(s"ERROR: don't know how to clone a builder of type ${builder.getClass}!") + } + + // this will be called in a new thread, so we might need to reset the builder with the new computation graph + newBuilder.newGraph() // TODO: is this needed? Test it! + + newBuilder } } diff --git a/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala b/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala index 4ec1d274d..16a7ab4a9 100644 --- a/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala @@ -6,17 +6,19 @@ import edu.cmu.dynet.{Dim, Expression, ExpressionVector, FloatVector, LookupPara import org.clulab.dynet.Utils.{ByLineFloatBuilder, ByLineIntBuilder, ByLineStringMapBuilder, LOG_MIN_VALUE, START_TAG, STOP_TAG, fromIndexToString, mkTransitionMatrix, save} import ForwardLayer._ -class ViterbiForwardLayer(parameters:ParameterCollection, - inputSize: Int, - isDual: Boolean, - t2i: Map[String, Int], - i2t: Array[String], - H: Parameter, - val T: LookupParameter, // transition matrix for Viterbi; T[i][j] = transition *to* i *from* j, one per task - rootParam: Parameter, - nonlinearity: Int, - dropoutProb: Float) - extends ForwardLayer(parameters, inputSize, isDual, t2i, i2t, H, rootParam, nonlinearity, dropoutProb) { +case class ViterbiForwardLayer(override val parameters:ParameterCollection, + override val inputSize: Int, + override val isDual: Boolean, + override val t2i: Map[String, Int], + override val i2t: Array[String], + override val H: Parameter, + T: LookupParameter, // transition matrix for Viterbi; T[i][j] = transition *to* i *from* j, one per task + override val rootParam: Parameter, + override val nonlinearity: Int, + override val dropoutProb: Float) + extends ForwardLayer { + + override def clone(): ViterbiForwardLayer = copy() // call this *before* training a model, but not on a saved model def initializeTransitions(): Unit = { From 0e910b51367652386709f0bad55c540601cdbf44 Mon Sep 17 00:00:00 2001 From: Mihai Surdeanu Date: Tue, 15 Sep 2020 20:54:42 -0700 Subject: [PATCH 05/17] Added support for parallelism. Fixed a few bugs in the enhanced semantic roles. --- .../clulab/dynet/ConstEmbeddingsGlove.scala | 1 + .../scala/org/clulab/dynet/FinalLayer.scala | 2 ++ .../scala/org/clulab/dynet/ForwardLayer.scala | 2 +- .../scala/org/clulab/dynet/InitialLayer.scala | 2 ++ .../org/clulab/dynet/IntermediateLayer.scala | 2 ++ .../main/scala/org/clulab/dynet/Layers.scala | 13 ++++----- .../main/scala/org/clulab/dynet/Metal.scala | 23 ++++++++++------ .../utils/ToEnhancedSemanticRoles.scala | 19 +++++++++---- .../TestEnhancedSemanticRoles.scala | 27 ++++++++++++++++++- 9 files changed, 70 insertions(+), 21 deletions(-) diff --git a/main/src/main/scala/org/clulab/dynet/ConstEmbeddingsGlove.scala b/main/src/main/scala/org/clulab/dynet/ConstEmbeddingsGlove.scala index db2b04426..1e02b4c5f 100644 --- a/main/src/main/scala/org/clulab/dynet/ConstEmbeddingsGlove.scala +++ b/main/src/main/scala/org/clulab/dynet/ConstEmbeddingsGlove.scala @@ -34,6 +34,7 @@ class ConstEmbeddingsGlove(matrixResourceName: String, isResource:Boolean = true override def dim: Int = lookupParameters.dim().get(0).toInt + /** Read-only access to the embedding for this word */ def get(word:String): Expression = { if(w2i.contains(word)) { Expression.constLookup(lookupParameters, w2i(word)) diff --git a/main/src/main/scala/org/clulab/dynet/FinalLayer.scala b/main/src/main/scala/org/clulab/dynet/FinalLayer.scala index 24d055e07..ee1da39ea 100644 --- a/main/src/main/scala/org/clulab/dynet/FinalLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/FinalLayer.scala @@ -15,4 +15,6 @@ trait FinalLayer extends Saveable with Cloneable { def inference(emissionScores: Array[Array[Float]]): IndexedSeq[String] def inferenceWithScores(emissionScores: Array[Array[Float]]): IndexedSeq[IndexedSeq[(String, Float)]] + + override def clone(): FinalLayer = ??? } diff --git a/main/src/main/scala/org/clulab/dynet/ForwardLayer.scala b/main/src/main/scala/org/clulab/dynet/ForwardLayer.scala index 15af25665..05271198c 100644 --- a/main/src/main/scala/org/clulab/dynet/ForwardLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/ForwardLayer.scala @@ -95,7 +95,7 @@ abstract class ForwardLayer extends FinalLayer { } object ForwardLayer { - val logger: Logger = LoggerFactory.getLogger(classOf[ViterbiForwardLayer]) + val logger: Logger = LoggerFactory.getLogger(classOf[ForwardLayer]) val DEFAULT_DROPOUT_PROB: Float = Utils.DEFAULT_DROPOUT_PROBABILITY diff --git a/main/src/main/scala/org/clulab/dynet/InitialLayer.scala b/main/src/main/scala/org/clulab/dynet/InitialLayer.scala index 5f28a6d22..933e623a8 100644 --- a/main/src/main/scala/org/clulab/dynet/InitialLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/InitialLayer.scala @@ -10,4 +10,6 @@ trait InitialLayer extends Saveable with Cloneable { doDropout: Boolean): ExpressionVector def outDim:Int // output dimension + + override def clone(): InitialLayer = ??? } diff --git a/main/src/main/scala/org/clulab/dynet/IntermediateLayer.scala b/main/src/main/scala/org/clulab/dynet/IntermediateLayer.scala index 85b1bce39..aa752f465 100644 --- a/main/src/main/scala/org/clulab/dynet/IntermediateLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/IntermediateLayer.scala @@ -11,4 +11,6 @@ trait IntermediateLayer extends Saveable with Cloneable { def inDim: Int def outDim: Int + + override def clone(): IntermediateLayer = ??? } diff --git a/main/src/main/scala/org/clulab/dynet/Layers.scala b/main/src/main/scala/org/clulab/dynet/Layers.scala index a08780691..4b415fb2f 100644 --- a/main/src/main/scala/org/clulab/dynet/Layers.scala +++ b/main/src/main/scala/org/clulab/dynet/Layers.scala @@ -6,6 +6,7 @@ import edu.cmu.dynet.{ComputationGraph, Expression, ExpressionVector, ParameterC import org.clulab.struct.Counter import org.clulab.utils.Configured import org.clulab.dynet.Utils._ +import org.slf4j.{Logger, LoggerFactory} import scala.collection.mutable.ArrayBuffer @@ -17,12 +18,10 @@ case class Layers (initialLayer: Option[InitialLayer], finalLayer: Option[FinalLayer]) extends Saveable with Cloneable { override def clone(): Layers = { - val clonedInitialLayer:Option[InitialLayer] = - initialLayer.map(_.clone().asInstanceOf[InitialLayer]) - val clonedIntermediateLayers:IndexedSeq[IntermediateLayer] = - intermediateLayers.map(_.clone().asInstanceOf[IntermediateLayer]) - val clonedFinalLayer: Option[FinalLayer] = - finalLayer.map(_.clone().asInstanceOf[FinalLayer]) + Layers.logger.debug(s"Cloning layers: $toString...") + val clonedInitialLayer:Option[InitialLayer] = initialLayer.map(_.clone()) + val clonedIntermediateLayers:IndexedSeq[IntermediateLayer] = intermediateLayers.map(_.clone()) + val clonedFinalLayer: Option[FinalLayer] = finalLayer.map(_.clone()) copy( initialLayer = clonedInitialLayer, @@ -130,6 +129,8 @@ case class Layers (initialLayer: Option[InitialLayer], } object Layers { + val logger: Logger = LoggerFactory.getLogger(classOf[Layers]) + def apply(config: Configured, paramPrefix: String, parameters: ParameterCollection, diff --git a/main/src/main/scala/org/clulab/dynet/Metal.scala b/main/src/main/scala/org/clulab/dynet/Metal.scala index 0b070d16e..e76b3b8e8 100644 --- a/main/src/main/scala/org/clulab/dynet/Metal.scala +++ b/main/src/main/scala/org/clulab/dynet/Metal.scala @@ -24,10 +24,17 @@ import Metal._ */ class Metal(val taskManagerOpt: Option[TaskManager], val parameters: ParameterCollection, - modelOpt: Option[IndexedSeq[Layers]]) { + modelOpt: Option[IndexedSeq[Layers]], + val multiThreaded: Boolean) { // One Layers object per task; model(0) contains the Layers shared between all tasks (if any) protected lazy val model: IndexedSeq[Layers] = modelOpt.getOrElse(initialize()) + // Model to be used only during inference, and only if the configuration indicates multi-threaded execution + protected lazy val multiThreadedModel: ThreadLocal[IndexedSeq[Layers]] = + ThreadLocal.withInitial(new LayersSupplier(model)) + + protected def getInferenceModel: IndexedSeq[Layers] = if(multiThreaded) multiThreadedModel.get() else model + // Use this carefully. That is, only when taskManagerOpt.isDefined def taskManager: TaskManager = { assert(taskManagerOpt.isDefined) @@ -287,7 +294,7 @@ class Metal(val taskManagerOpt: Option[TaskManager], val sentence = as._1 val goldLabels = as._2 - val preds = Layers.predict(model, taskId, sentence) + val preds = Layers.predict(getInferenceModel, taskId, sentence) val sc = SeqScorer.f1(goldLabels, preds) scoreCountsByLabel.incAll(sc) @@ -314,15 +321,15 @@ class Metal(val taskManagerOpt: Option[TaskManager], // this only supports basic tasks for now def predictJointly(sentence: AnnotatedSentence): IndexedSeq[IndexedSeq[String]] = { - Layers.predictJointly(model, sentence) + Layers.predictJointly(getInferenceModel, sentence) } def predict(taskId: Int, sentence: AnnotatedSentence): IndexedSeq[String] = { - Layers.predict(model, taskId, sentence) + Layers.predict(getInferenceModel, taskId, sentence) } def predictWithScores(taskId: Int, sentence: AnnotatedSentence): IndexedSeq[IndexedSeq[(String, Float)]] = { - Layers.predictWithScores(model, taskId, sentence) + Layers.predictWithScores(getInferenceModel, taskId, sentence) } def test(): Unit = { @@ -396,14 +403,14 @@ object Metal { def apply(modelFilenamePrefix: String, taskManager: TaskManager): Metal = { val parameters = new ParameterCollection() val model = Metal.load(parameters, modelFilenamePrefix) - val mtl = new Metal(Some(taskManager), parameters, Some(model)) + val mtl = new Metal(Some(taskManager), parameters, Some(model), multiThreaded = false) mtl } def apply(modelFilenamePrefix: String): Metal = { val parameters = new ParameterCollection() val model = Metal.load(parameters, modelFilenamePrefix) - val mtl = new Metal(None, parameters, Some(model)) + val mtl = new Metal(None, parameters, Some(model), multiThreaded = true) mtl } @@ -419,7 +426,7 @@ object Metal { val taskManager = new TaskManager(config) val modelName = props.getProperty("train") - val mtl = new Metal(Some(taskManager), parameters, None) + val mtl = new Metal(Some(taskManager), parameters, None, multiThreaded = false) mtl.train(modelName) } diff --git a/main/src/main/scala/org/clulab/utils/ToEnhancedSemanticRoles.scala b/main/src/main/scala/org/clulab/utils/ToEnhancedSemanticRoles.scala index 7919b54b9..98de1fd61 100644 --- a/main/src/main/scala/org/clulab/utils/ToEnhancedSemanticRoles.scala +++ b/main/src/main/scala/org/clulab/utils/ToEnhancedSemanticRoles.scala @@ -76,8 +76,8 @@ object ToEnhancedSemanticRoles { for(leftRole <- leftRoles) { val modifier = leftRole.destination val label = leftRole.relation - val e = Edge(right, modifier, label) - if(! rightRoles.contains(e)) { + if(! contains(rightRoles, right, label)) { + val e = Edge(right, modifier, label) toAdd += e } } @@ -86,8 +86,8 @@ object ToEnhancedSemanticRoles { for(rightRole <- rightRoles) { val modifier = rightRole.destination val label = rightRole.relation - val e = Edge(left, modifier, label) - if(! leftRoles.contains(e)) { + if(! contains(leftRoles, left, label)) { + val e = Edge(left, modifier, label) toAdd += e } } @@ -96,8 +96,17 @@ object ToEnhancedSemanticRoles { for(e <- toAdd) rolesIndex.addEdge(e.source, e.destination, e.relation) } + private def contains(roles: Set[Edge[String]], head: Int, label: String): Boolean = { + for(role <- roles) { + if(role.source == head && role.relation == label) { + return true + } + } + false + } + /** - * Propagates conjoined subjects and objects to same verb (works for SD and UD) + * Propagates conjoined subjects and objects to same verb * Paul and Mary are reading a book => A0 from 4 to 0 and from 4 to 2 * John is reading a book and a newspaper => A1 from 2 to 4 and from 2 to 7 */ diff --git a/main/src/test/scala/org/clulab/processors/TestEnhancedSemanticRoles.scala b/main/src/test/scala/org/clulab/processors/TestEnhancedSemanticRoles.scala index 73218124a..262f2bcbc 100644 --- a/main/src/test/scala/org/clulab/processors/TestEnhancedSemanticRoles.scala +++ b/main/src/test/scala/org/clulab/processors/TestEnhancedSemanticRoles.scala @@ -35,7 +35,7 @@ class TestEnhancedSemanticRoles extends FlatSpec with Matchers { doc.sentences.head.enhancedSemanticRoles.get.hasEdge(3, 6, "A1") should be(true) } - it should "propagate subjects and objects in conjoined predicates" in { + it should "propagate subjects and objects in conjoined predicates (1)" in { val doc = proc.annotate("The store buys and sells cameras.") doc.sentences.head.enhancedSemanticRoles.get.hasEdge(2, 1, "A0") should be(true) @@ -44,6 +44,31 @@ class TestEnhancedSemanticRoles extends FlatSpec with Matchers { doc.sentences.head.enhancedSemanticRoles.get.hasEdge(4, 5, "A1") should be(true) } + it should "propagate subjects and objects in conjoined predicates (2)" in { + val doc = proc.annotate("John and Mary eat cake and drink wine.") + + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(3, 0, "A0") should be(true) + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(3, 2, "A0") should be(true) + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(6, 0, "A0") should be(true) + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(6, 2, "A0") should be(true) + + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(3, 4, "A1") should be(true) + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(3, 7, "A1") should be(false) + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(6, 4, "A1") should be(false) + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(6, 7, "A1") should be(true) + } + + it should "propagate subjects and objects in conjoined predicates (3)" in { + val doc = proc.annotate("The store buys pizzas and sells cameras.") + + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(2, 1, "A0") should be(true) + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(2, 3, "A1") should be(true) + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(5, 1, "A0") should be(true) + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(5, 6, "A1") should be(true) + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(2, 6, "A1") should be(false) + doc.sentences.head.enhancedSemanticRoles.get.hasEdge(5, 3, "A1") should be(false) + } + it should "apply the deterministic predicate corrections" in { val doc = proc.annotate("The price of water trucking.") From fbb43bdb8ed39fa958ab55205adaef3edcbcbb9f Mon Sep 17 00:00:00 2001 From: Mihai Surdeanu Date: Tue, 15 Sep 2020 21:01:39 -0700 Subject: [PATCH 06/17] CHANGES --- CHANGES.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 8733f3b25..4d3a48661 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,6 @@ # Changes -+ **8.2.1** - Improvements to the generation of enhanced semantic roles. ++ **8.2.1** - Added support for proper multi-threaded execution of CluProcessor by cloning parameters in each thread. ++ **8.2.1** - Improvements and bug fixes to the generation of enhanced semantic roles. + **8.2.0** - Added simple lexicon-based sentiment analyzer, using Bing Liu's lexicon. + **8.2.0** - Added support for enhanced semantic roles to CluProcessor. + **8.2.0** - Added support for basic and enhanced universal dependencies in CluProcessor. From 61b5e5411d3bbd27cdc26a98aee06637a84e41e9 Mon Sep 17 00:00:00 2001 From: Mihai Surdeanu Date: Tue, 15 Sep 2020 21:02:59 -0700 Subject: [PATCH 07/17] CHANGES --- CHANGES.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 4d3a48661..7de8728ac 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,7 @@ # Changes -+ **8.2.1** - Added support for proper multi-threaded execution of CluProcessor by cloning parameters in each thread. -+ **8.2.1** - Improvements and bug fixes to the generation of enhanced semantic roles. ++ **8.2.2** - Added support for proper multi-threaded execution of CluProcessor by cloning parameters in each thread. ++ **8.2.2** - Bug fixes in the generation of enhanced semantic roles. ++ **8.2.1** - Improvements in the generation of enhanced semantic roles. + **8.2.0** - Added simple lexicon-based sentiment analyzer, using Bing Liu's lexicon. + **8.2.0** - Added support for enhanced semantic roles to CluProcessor. + **8.2.0** - Added support for basic and enhanced universal dependencies in CluProcessor. From 881fc9098b8cc2806183817ee1276cdbfe192dbd Mon Sep 17 00:00:00 2001 From: Mihai Surdeanu Date: Tue, 15 Sep 2020 21:04:58 -0700 Subject: [PATCH 08/17] fixed comment --- main/src/main/scala/org/clulab/dynet/Layers.scala | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/main/src/main/scala/org/clulab/dynet/Layers.scala b/main/src/main/scala/org/clulab/dynet/Layers.scala index 4b415fb2f..393730b2e 100644 --- a/main/src/main/scala/org/clulab/dynet/Layers.scala +++ b/main/src/main/scala/org/clulab/dynet/Layers.scala @@ -251,9 +251,7 @@ object Layers { sentence: AnnotatedSentence, doDropout: Boolean): ExpressionVector = { // - // make sure this code is: - // (a) called inside a synchronized block, and - // (b) called after the computational graph is renewed (see predict below for correct usage) + // make sure this code is called after the computational graph is renewed (see predict below for correct usage) // val states = { From 667bec3895b67edcbe40a193b3de14f9ba5f4a16 Mon Sep 17 00:00:00 2001 From: Keith Alcock Date: Wed, 16 Sep 2020 11:16:42 -0700 Subject: [PATCH 09/17] Empty copy() to this Do away with a few casts --- .../org/clulab/dynet/GreedyForwardLayer.scala | 2 +- main/src/main/scala/org/clulab/dynet/Utils.scala | 16 ++++++++-------- .../org/clulab/dynet/ViterbiForwardLayer.scala | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala b/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala index dffb6e1ee..ae814c4a4 100644 --- a/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala @@ -20,7 +20,7 @@ case class GreedyForwardLayer (override val parameters:ParameterCollection, override val dropoutProb: Float) extends ForwardLayer { - override def clone(): GreedyForwardLayer = copy() + override def clone(): GreedyForwardLayer = this // copy() override def loss(finalStates: ExpressionVector, goldLabelStrings: IndexedSeq[String]): Expression = { val goldLabels = Utils.toIds(goldLabelStrings, t2i) diff --git a/main/src/main/scala/org/clulab/dynet/Utils.scala b/main/src/main/scala/org/clulab/dynet/Utils.scala index 01038dab9..96434c6c8 100644 --- a/main/src/main/scala/org/clulab/dynet/Utils.scala +++ b/main/src/main/scala/org/clulab/dynet/Utils.scala @@ -847,14 +847,14 @@ object Utils { } def cloneBuilder(builder: RnnBuilder): RnnBuilder = { - val newBuilder = - if(builder.isInstanceOf[LstmBuilder]) { - builder.asInstanceOf[LstmBuilder].clone() - } else if(builder.isInstanceOf[GruBuilder]) { - builder.asInstanceOf[GruBuilder].clone() - } else { - throw new RuntimeException(s"ERROR: don't know how to clone a builder of type ${builder.getClass}!") - } + val newBuilder = builder.clone() +// if(builder.isInstanceOf[LstmBuilder]) { +// builder.asInstanceOf[LstmBuilder].clone() +// } else if(builder.isInstanceOf[GruBuilder]) { +// builder.asInstanceOf[GruBuilder].clone() +// } else { +// throw new RuntimeException(s"ERROR: don't know how to clone a builder of type ${builder.getClass}!") +// } // this will be called in a new thread, so we might need to reset the builder with the new computation graph newBuilder.newGraph() // TODO: is this needed? Test it! diff --git a/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala b/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala index 16a7ab4a9..6a1762923 100644 --- a/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala @@ -18,7 +18,7 @@ case class ViterbiForwardLayer(override val parameters:ParameterCollection, override val dropoutProb: Float) extends ForwardLayer { - override def clone(): ViterbiForwardLayer = copy() + override def clone(): ViterbiForwardLayer = this // copy() // call this *before* training a model, but not on a saved model def initializeTransitions(): Unit = { From 57cf778661b28da8da94cda566eddc3f4efc00a9 Mon Sep 17 00:00:00 2001 From: Mihai Surdeanu Date: Wed, 16 Sep 2020 11:44:10 -0700 Subject: [PATCH 10/17] clone returns this for Greedy --- main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala b/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala index dffb6e1ee..764c92046 100644 --- a/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala @@ -20,7 +20,7 @@ case class GreedyForwardLayer (override val parameters:ParameterCollection, override val dropoutProb: Float) extends ForwardLayer { - override def clone(): GreedyForwardLayer = copy() + override def clone(): GreedyForwardLayer = this override def loss(finalStates: ExpressionVector, goldLabelStrings: IndexedSeq[String]): Expression = { val goldLabels = Utils.toIds(goldLabelStrings, t2i) From 51916646c098ed8dcde192abd7d2a3dfafd326a0 Mon Sep 17 00:00:00 2001 From: Mihai Surdeanu Date: Wed, 16 Sep 2020 12:43:55 -0700 Subject: [PATCH 11/17] clone for viterbi --- main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala b/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala index 16a7ab4a9..0ac204a81 100644 --- a/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala @@ -18,7 +18,7 @@ case class ViterbiForwardLayer(override val parameters:ParameterCollection, override val dropoutProb: Float) extends ForwardLayer { - override def clone(): ViterbiForwardLayer = copy() + override def clone(): ViterbiForwardLayer = this // call this *before* training a model, but not on a saved model def initializeTransitions(): Unit = { From d28b7026b8e4391acb6bb8ac1ef3d2b23d3b24a1 Mon Sep 17 00:00:00 2001 From: Keith Alcock Date: Wed, 16 Sep 2020 20:39:47 -0700 Subject: [PATCH 12/17] Match other changes --- main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala | 2 +- main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala b/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala index ae814c4a4..764c92046 100644 --- a/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/GreedyForwardLayer.scala @@ -20,7 +20,7 @@ case class GreedyForwardLayer (override val parameters:ParameterCollection, override val dropoutProb: Float) extends ForwardLayer { - override def clone(): GreedyForwardLayer = this // copy() + override def clone(): GreedyForwardLayer = this override def loss(finalStates: ExpressionVector, goldLabelStrings: IndexedSeq[String]): Expression = { val goldLabels = Utils.toIds(goldLabelStrings, t2i) diff --git a/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala b/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala index 6a1762923..0ac204a81 100644 --- a/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala +++ b/main/src/main/scala/org/clulab/dynet/ViterbiForwardLayer.scala @@ -18,7 +18,7 @@ case class ViterbiForwardLayer(override val parameters:ParameterCollection, override val dropoutProb: Float) extends ForwardLayer { - override def clone(): ViterbiForwardLayer = this // copy() + override def clone(): ViterbiForwardLayer = this // call this *before* training a model, but not on a saved model def initializeTransitions(): Unit = { From 6106001c17ea3331f7aedffa150b2f431daf635e Mon Sep 17 00:00:00 2001 From: Keith Alcock Date: Wed, 16 Sep 2020 20:43:06 -0700 Subject: [PATCH 13/17] Update fatdynet version --- main/build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/build.sbt b/main/build.sbt index b757e3bfb..3e97083b4 100644 --- a/main/build.sbt +++ b/main/build.sbt @@ -27,7 +27,7 @@ libraryDependencies ++= { // for machine learning "de.bwaldvogel" % "liblinear" % "2.30", "tw.edu.ntu.csie" % "libsvm" % "3.23", - "org.clulab" %% "fatdynet" % "0.2.6-SNAPSHOT", // "0-cuda.2.6-SNAPSHOT", // "0.2.5" + "org.clulab" %% "fatdynet" % "0.2.6", // "0-cuda.2.6-SNAPSHOT", // "0.2.5" // NLP tools used by CluProcessor "org.antlr" % "antlr4-runtime" % "4.6", // for tokenization From e566d27670e85f5a8fb8e9f4ebb730b7d73dd77b Mon Sep 17 00:00:00 2001 From: Keith Alcock Date: Wed, 16 Sep 2020 21:05:53 -0700 Subject: [PATCH 14/17] Remove comments --- main/src/main/scala/org/clulab/dynet/Utils.scala | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/main/src/main/scala/org/clulab/dynet/Utils.scala b/main/src/main/scala/org/clulab/dynet/Utils.scala index 96434c6c8..5ee9ba97f 100644 --- a/main/src/main/scala/org/clulab/dynet/Utils.scala +++ b/main/src/main/scala/org/clulab/dynet/Utils.scala @@ -848,17 +848,8 @@ object Utils { def cloneBuilder(builder: RnnBuilder): RnnBuilder = { val newBuilder = builder.clone() -// if(builder.isInstanceOf[LstmBuilder]) { -// builder.asInstanceOf[LstmBuilder].clone() -// } else if(builder.isInstanceOf[GruBuilder]) { -// builder.asInstanceOf[GruBuilder].clone() -// } else { -// throw new RuntimeException(s"ERROR: don't know how to clone a builder of type ${builder.getClass}!") -// } - - // this will be called in a new thread, so we might need to reset the builder with the new computation graph - newBuilder.newGraph() // TODO: is this needed? Test it! + newBuilder.newGraph() newBuilder } } From 8473aba87594e2fc3a84a6e53f86f31f273188f7 Mon Sep 17 00:00:00 2001 From: Mihai Surdeanu Date: Fri, 18 Sep 2020 20:55:31 -0700 Subject: [PATCH 15/17] Fixed bug in issue #424 --- .../clulab/processors/clu/CluProcessor.scala | 21 ++++++++++++------- .../clulab/processors/clu/ProcessFile.scala | 14 +++++++++++++ 2 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 main/src/main/scala/org/clulab/processors/clu/ProcessFile.scala diff --git a/main/src/main/scala/org/clulab/processors/clu/CluProcessor.scala b/main/src/main/scala/org/clulab/processors/clu/CluProcessor.scala index 24c929112..725a7dcbd 100644 --- a/main/src/main/scala/org/clulab/processors/clu/CluProcessor.scala +++ b/main/src/main/scala/org/clulab/processors/clu/CluProcessor.scala @@ -196,16 +196,21 @@ class CluProcessor (val config: Config = ConfigFactory.load("cluprocessor")) ext // pick the prediction with the highest score, which makes sense for the current sentence var done = false for(hi <- predictionsForThisWord.indices if ! done) { - val relativeHead = predictionsForThisWord(hi)._1.toInt - if(relativeHead == 0) { // this is the root - heads += -1 - done = true - } else { - val headPosition = wi + relativeHead - if(headPosition >= 0 && headPosition < words.size) { - heads += headPosition + try { + val relativeHead = predictionsForThisWord(hi)._1.toInt + if (relativeHead == 0) { // this is the root + heads += -1 done = true + } else { + val headPosition = wi + relativeHead + if (headPosition >= 0 && headPosition < words.size) { + heads += headPosition + done = true + } } + } catch { + // some valid predictions may not be integers, e.g., "" may be predicted by the sequence model + case e: NumberFormatException => done = false } } if(! done) { diff --git a/main/src/main/scala/org/clulab/processors/clu/ProcessFile.scala b/main/src/main/scala/org/clulab/processors/clu/ProcessFile.scala new file mode 100644 index 000000000..fe1bfacf3 --- /dev/null +++ b/main/src/main/scala/org/clulab/processors/clu/ProcessFile.scala @@ -0,0 +1,14 @@ +package org.clulab.processors.clu + +import org.clulab.dynet.Utils + +object ProcessFile extends App { + val fileName = args(0) + lazy val proc = new CluProcessor() + val text = io.Source.fromFile(fileName).mkString + //println(text) + + Utils.initializeDyNetForInference() + val doc = proc.mkDocument(text) + proc.annotate(doc) +} From 55e8c3d4f56f133dfe6f43c920b185c21ca81455 Mon Sep 17 00:00:00 2001 From: Keith Alcock Date: Mon, 5 Oct 2020 12:21:34 -0700 Subject: [PATCH 16/17] Modify example program --- .../examples/ParallelProcessorExample.scala | 31 +++++++++++++++--- processors.jfr | Bin 0 -> 1106136 bytes version.sbt | 2 +- 3 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 processors.jfr diff --git a/corenlp/src/main/scala/org/clulab/processors/examples/ParallelProcessorExample.scala b/corenlp/src/main/scala/org/clulab/processors/examples/ParallelProcessorExample.scala index a0463e081..94a4acb85 100644 --- a/corenlp/src/main/scala/org/clulab/processors/examples/ParallelProcessorExample.scala +++ b/corenlp/src/main/scala/org/clulab/processors/examples/ParallelProcessorExample.scala @@ -13,6 +13,8 @@ import org.clulab.dynet.Utils import org.clulab.processors.Document import org.clulab.processors.Processor import org.clulab.processors.clu.CluProcessor +import org.clulab.processors.fastnlp.FastNLPProcessor +import org.clulab.processors.fastnlp.FastNLPProcessorWithSemanticRoles import org.clulab.serialization.DocumentSerializer import scala.collection.parallel.ForkJoinTaskSupport @@ -96,7 +98,7 @@ object ParallelProcessorExample { forkJoinPoolConstructor.newInstance(threads.asInstanceOf[Integer]) // For the record, this is the standard version - //new ForkJoinPool(threads) + // new ForkJoinPool(threads) } val forkJoinPool = newForkJoinPool(threads) @@ -113,22 +115,33 @@ object ParallelProcessorExample { val outputDir = args(1) val extension = args(2) val threads = args(3).toInt + val parallel = true val files = findFiles(inputDir, extension) + val sortedFiles = files.sortBy(-_.length) // Parallelizing by file results in a quick crash. - val parFiles = parallelize(files, threads) + val parFiles = parallelize(sortedFiles, threads) - Utils.initializeDyNet(train = false) + val startupTimer = new Timer("This is how long it takes to start up") + startupTimer.start() + + Utils.initializeDyNet(train = !parallel) val processor: Processor = new CluProcessor() +// val processor: Processor = new FastNLPProcessor() +// val processor: Processor = new FastNLPProcessorWithSemanticRoles() + val documentSerializer = new DocumentSerializer val untimed = processor.annotate("I am happy to join with you today in what will go down in history as the greatest demonstration for freedom in the history of our nation.") + startupTimer.stop() + println(startupTimer.toString) + val timer = new Timer(s"$threads threads processing ${parFiles.size} files") timer.start() - parFiles.foreach { file => + (if (parallel) parFiles else files).foreach { file => println(s"Processing ${file.getName}...") val text = { @@ -140,7 +153,15 @@ object ParallelProcessorExample { } val outputFile = new File(outputDir + "/" + file.getName) - val document = processor.annotate(text) + val document = try { + val document = processor.annotate(text) + document + } + catch { + case throwable: Throwable => + println(s"Threw exception for ${file.getName}") + throw throwable + } val printedDocument = { val stringWriter = new StringWriter val printWriter = new PrintWriter(stringWriter) diff --git a/processors.jfr b/processors.jfr new file mode 100644 index 0000000000000000000000000000000000000000..c67608c14113fec4ca327826973a21ca5042dc4c GIT binary patch literal 1106136 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¬oR~1Cj0w0Ye+)-|7$EwX{3qaAuB6(>%%Oe|Rm9LqxH+7; z+FV6hqBF%xPZclxXylDFlyK3ffL-A*w@N@SiYdcga-~jN4#SjDV|-u+7|mq|A2pFt zL6AI=i#uJfkPA!GBhs|^KrU|JxaumMJN>qtpqK(u(?`>XDIx}+g1ZJ#P&O_IEbGlF zH4zEgy!f@ulN{XNdYvcF4JDCSYvDD-d>V8&T$QM3f$by4R)d>&O;QPn+>;+cNSsF- zJt9*b4imMtrS=dU4;Ghn#w>Rb+xBQ<75vOy1w-eIG%rCv;R6AlX`sQkV6 zx@B3P0e Date: Fri, 6 Nov 2020 10:00:15 -0700 Subject: [PATCH 17/17] Fix merge --- .../test/scala/org/clulab/processors/TestDepGraphSizes.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/src/test/scala/org/clulab/processors/TestDepGraphSizes.scala b/main/src/test/scala/org/clulab/processors/TestDepGraphSizes.scala index 6796cdd81..0510e1da9 100644 --- a/main/src/test/scala/org/clulab/processors/TestDepGraphSizes.scala +++ b/main/src/test/scala/org/clulab/processors/TestDepGraphSizes.scala @@ -9,7 +9,7 @@ import org.scalatest.{FlatSpec, Matchers} /** Makes sure that CluProcessor produces dependency graphs of correct sizes */ class TestDepGraphSizes extends FlatSpec with Matchers { lazy val proc = { - Utils.initializeDyNet() + Utils.initializeDyNet(train = false) new CluProcessor() }