Open MihaiSurdeanu opened 8 months ago
Running the TokenClassifierExampleApp
produces this exception:
[info] Words: Ras1, has, phosphorylated, Mek2, .
[info] The top label per token per task:
[error] Exception in thread "main" java.lang.AssertionError: assertion failed
[error] at scala.Predef$.assert(Predef.scala:208)
[error] at org.clulab.scala_transformers.encoder.math.EjmlMath$.vertcat(EjmlMath.scala:87)
[error] at org.clulab.scala_transformers.encoder.LinearLayer.$anonfun$concatenateModifiersAndHeads$1(LinearLayer.scala:101)
[error] at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:158)
[error] at org.clulab.scala_transformers.encoder.LinearLayer.concatenateModifiersAndHeads(LinearLayer.scala:90)
[error] at org.clulab.scala_transformers.encoder.LinearLayer.$anonfun$predictDual$2(LinearLayer.scala:162)
[error] at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:286)
[error] at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
[error] at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
[error] at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:198)
[error] at scala.collection.TraversableLike.map(TraversableLike.scala:286)
[error] at scala.collection.TraversableLike.map$(TraversableLike.scala:279)
[error] at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:198)
[error] at org.clulab.scala_transformers.encoder.LinearLayer.predictDual(LinearLayer.scala:160)
[error] at org.clulab.scala_transformers.encoder.LinearLayer.predict(LinearLayer.scala:51)
[error] at org.clulab.scala_transformers.encoder.LinearLayer.predict(LinearLayer.scala:44)
[error] at org.clulab.scala_transformers.encoder.TokenClassifier.$anonfun$predict$3(TokenClassifier.scala:147)
[error] at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:158)
[error] at org.clulab.scala_transformers.encoder.TokenClassifier.predict(TokenClassifier.scala:145)
[error] at org.clulab.scala_transformers.apps.TokenClassifierExampleApp$.delayedEndpoint$org$clulab$scala_transformers$apps$TokenClassifierExampleApp$1(TokenClassifierExampleApp.scala:22)
[error] at org.clulab.scala_transformers.apps.TokenClassifierExampleApp$delayedInit$body.apply(TokenClassifierExampleApp.scala:5)
[error] at scala.Function0.apply$mcV$sp(Function0.scala:39)
[error] at scala.Function0.apply$mcV$sp$(Function0.scala:39)
[error] at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
[error] at scala.App.$anonfun$main$1$adapted(App.scala:80)
[error] at scala.collection.immutable.List.foreach(List.scala:431)
[error] at scala.App.main(App.scala:80)
[error] at scala.App.main$(App.scala:78)
[error] at org.clulab.scala_transformers.apps.TokenClassifierExampleApp$.main(TokenClassifierExampleApp.scala:5)
[error] at org.clulab.scala_transformers.apps.TokenClassifierExampleApp.main(TokenClassifierExampleApp.scala)
[error] Nonzero exit code returned from runner: 1
I'm pushing a fix momentarily. At one time the code was
val concatState = DenseVector.vertcat(modHiddenState.t, headHiddenState.t).t
bit it was changed later to
val concatState = Math.horcat(modHiddenState, headHiddenState)
so I think the vertcat
just needs to be changed to horcat
.
After merging, the error changes:
[info] Words: Ras1, has, phosphorylated, Mek2, .
[info] The top label per token per task:
[error] Exception in thread "main" org.ejml.MatrixDimensionException: 1536 != 768 The 'A' and 'B' matrices do not have compatible dimensions
[error] at org.ejml.UtilEjml.assertShape(UtilEjml.java:705)
[error] at org.ejml.dense.row.mult.MatrixMatrixMult_FDRM.mult_reorder(MatrixMatrixMult_FDRM.java:68)
[error] at org.ejml.dense.row.CommonOps_FDRM.mult(CommonOps_FDRM.java:86)
[error] at org.ejml.simple.ops.SimpleOperations_FDRM.mult(SimpleOperations_FDRM.java:86)
[error] at org.ejml.simple.ops.SimpleOperations_FDRM.mult(SimpleOperations_FDRM.java:43)
[error] at org.ejml.simple.SimpleBase.mult(SimpleBase.java:189)
[error] at org.clulab.scala_transformers.encoder.math.EjmlMath$.mul(EjmlMath.scala:67)
[error] at org.clulab.scala_transformers.encoder.LinearLayer.$anonfun$forward$1(LinearLayer.scala:29)
[error] at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:286)
[error] at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
[error] at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
[error] at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:198)
[error] at scala.collection.TraversableLike.map(TraversableLike.scala:286)
[error] at scala.collection.TraversableLike.map$(TraversableLike.scala:279)
[error] at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:198)
[error] at org.clulab.scala_transformers.encoder.LinearLayer.forward(LinearLayer.scala:27)
[error] at org.clulab.scala_transformers.encoder.LinearLayer.$anonfun$predictDual$2(LinearLayer.scala:164)
[error] at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:286)
[error] at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
[error] at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
[error] at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:198)
[error] at scala.collection.TraversableLike.map(TraversableLike.scala:286)
[error] at scala.collection.TraversableLike.map$(TraversableLike.scala:279)
[error] at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:198)
[error] at org.clulab.scala_transformers.encoder.LinearLayer.predictDual(LinearLayer.scala:160)
[error] at org.clulab.scala_transformers.encoder.LinearLayer.predict(LinearLayer.scala:51)
[error] at org.clulab.scala_transformers.encoder.LinearLayer.predict(LinearLayer.scala:44)
[error] at org.clulab.scala_transformers.encoder.TokenClassifier.$anonfun$predict$3(TokenClassifier.scala:147)
[error] at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:158)
[error] at org.clulab.scala_transformers.encoder.TokenClassifier.predict(TokenClassifier.scala:145)
[error] at org.clulab.scala_transformers.apps.TokenClassifierExampleApp$.delayedEndpoint$org$clulab$scala_transformers$apps$TokenClassifierExampleApp$1(TokenClassifierExampleApp.scala:22)
[error] at org.clulab.scala_transformers.apps.TokenClassifierExampleApp$delayedInit$body.apply(TokenClassifierExampleApp.scala:5)
[error] at scala.Function0.apply$mcV$sp(Function0.scala:39)
[error] at scala.Function0.apply$mcV$sp$(Function0.scala:39)
[error] at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
[error] at scala.App.$anonfun$main$1$adapted(App.scala:80)
[error] at scala.collection.immutable.List.foreach(List.scala:431)
[error] at scala.App.main(App.scala:80)
[error] at scala.App.main$(App.scala:78)
[error] at org.clulab.scala_transformers.apps.TokenClassifierExampleApp$.main(TokenClassifierExampleApp.scala:5)
[error] at org.clulab.scala_transformers.apps.TokenClassifierExampleApp.main(TokenClassifierExampleApp.scala)
[error] Nonzero exit code returned from runner: 1
[error] (apps / Compile / runMain) Nonzero exit code returned from runner: 1
[error] Total time: 17 s, completed Jan 3, 2024 8:27:42 AM
FWIW this is on the multiply. A long and short matrix are getting combined.
By default it is looking for a local model.
val tokenClassifier = TokenClassifier.fromFiles("../microsoft-deberta-v3-base-mtl/avg_export")
Does it coincide with the setting for USE_CONCAT?
Yes... You're right. I thought it's getting the model from the jar (which is correct). The local one is not... I'll fix this locally.
I had imagined someone needing to work on it before the models were published and available as resources.
Hi @kwalcock ,
I started the branch
revert-to-concat
, which does what the name says. However, it crashes on the usage ofMath.vertcat
inorg.clulab.scala_transformers.encoder.LinearLayer
(there are 2 calls). Can you please take a look? It may be that one of the vectors needs to transposed, but I'm not sure. Thank you!