Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix usage of vertcat #52

Open
MihaiSurdeanu opened this issue Jan 2, 2024 · 7 comments
Open

Fix usage of vertcat #52

MihaiSurdeanu opened this issue Jan 2, 2024 · 7 comments
Assignees

Comments

@MihaiSurdeanu
Copy link
Contributor

Hi @kwalcock ,

I started the branch revert-to-concat, which does what the name says.
However, it crashes on the usage of Math.vertcat in org.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!

@MihaiSurdeanu
Copy link
Contributor Author

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

@kwalcock
Copy link
Member

kwalcock commented Jan 3, 2024

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.

@MihaiSurdeanu
Copy link
Contributor Author

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

@kwalcock
Copy link
Member

kwalcock commented Jan 3, 2024

FWIW this is on the multiply. A long and short matrix are getting combined.

@kwalcock
Copy link
Member

kwalcock commented Jan 3, 2024

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?

@MihaiSurdeanu
Copy link
Contributor Author

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.

@kwalcock
Copy link
Member

kwalcock commented Jan 3, 2024

I had imagined someone needing to work on it before the models were published and available as resources.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants